Implementasi Math Summation

Bila bekerja dengan analis atau science yang menggunakan math sebagai bahasa mereka, tentu membuat developer harus juga mengerti dan menterjemahkan itu. Math adalah bahasa universal untuk memberi pengertian dan hasil secara angka.

Sayangnya abstract math kadang tidak bisa di terjemahkan ke dalam komputer begitu saja. Komputer saat ini masih belum bisa memberikan yang angka besar seperti yang minta, apalagi bila bekerja untuk Quantum Physics. Ukuran angkanya kadang masih kurang besar. ☹

Kebanyakkan Symbol yang di pakai juga tidak umum untuk Generic Programming. Oleh karena itu biasanya di terjemahkan dengan syntax yang ada. Di beberapa bahasa tertentu seperti Julia, memiliki syntax yang memudahkan meng-rangkai model math. programming-is-not-math itu yang jadi topik blog oleh Sarah Mei, tentang math dalam programming -- beberapa sisi dari math memang ada dalam programming, bicara programming itu lebih dari sekadar math. Walaupun begitu dalam menyelesaikan pekerjaan kita, model math yang ada tentu ada caranya. Di tulisan ini kita akan coba membahas tentang Summation Notation dalam .Net.

Summation Notation

Summation Notation biasanya di gambarkan dengan simbol Sigma. Sigma ( Σ ) ini asalnya dari Yunani untuk hurup S.
OOT: ini bukan Space Emperor God Sigma. ☺

Dalam math simbol itu di gunakan untuk menyingkatkan sebuah perhitungan. Summation sendiri berarti gabungan dari sejumlah perhitungan. Mirip kalau di T-SQL untuk operator SUM. Notasi ini sangat umum di gunakan dalam math, apalagi yang berurusan dengan analisa data.

Summation of n from 1 to n

Untuk membaca gambar di bawah, biasanya di baca Summation of n from 1 to n atau Total dari n dari 1 sampai n.

Kalau di terjemahkan dengan contoh n = 10 maka, summation itu akan membentuk perhitungan:
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 45

Dan kalau kenapa di mulai dari 1, maka coba perhatikan n = 1. Jadi mudah saja membaca notasi ini dan mengerti kenapa math menggunakan simbol ini.

alt text

Karena kita tahu itu hanya 'perulangan' dengan 'penambahan' maka kita bisa terjemahkan seperti gambar di bawah.

< VB.Net >
alt text

< C# >
alt text

Summation of n mod m from 1 to n

Sekarang kita coba baca model di bawah. Yup, itu kita baca Summation of n mod m from 1 to n atau Total dari n mod m dari 1 sampai n. Tentu masih banyak variasi untuk notasi ini.

alt text

Di terjemahkan dalam code akan seperti ini. Mirip dengan terjemahan di atas, kali ini dengan variasi untuk modulo.

< VB.Net >
alt text

< C# >
alt text

Persamaan

Mudah bukan menterjemahkan secara langsung Summation Notation ini? Sayangnya cara penterjemahan kita di atas kurang optimal. Apalagi kita bekerja dengan angka yang besar.

Summation of n from 1 to n (Simpler)

Math kadang bisa di baca dengan 'persamaan'-nya. Atau biasanya bisa di sederhanakan. Untuk model ini, biasanya dapat di sederhanakan dengan perhitungan di bawah.

alt text

Dengan n = 10, maka
(10 * (10 - 1)) / 2 = 45
Jauh lebih sederhana bukan?

Dengan menggunakan persamaan di atas, maka kita mendapatkan code kita seperti di bawah. Tentu ini akan lebih cepat dalam perhitungan, karena tidak tidak perlu lagi untuk menghitung sebanyak 10x (untuk n = 10). Cukup menghitung 1x untuk mendapatkan hasil yang sama.

< VB.Net >
alt text

< C# >
alt text

Di sini kita bisa melihat dengan mengunakan persamaannya code kita jauh lebih cepat. Ibaratnya, cara menterjemahkan secara langsung seperti brute-force kalau hendak memecahkan password, sedangkan cara persamaanya akan lebih mirip backdoor.

Summation of n mod m from 1 to n (Simpler)

Kalau begitu untuk model yang menggunakan modulo sama saja. Prinsip-nya hampir sama, tapi caranya agak sedikit berbeda. Untuk Summation of n mod m from 1 to n kita bisa sederhanakan seperti di bawah. Ini adalah salah satu cara penyederhanaan, cara ini di ambil agar lebih mudah di baca.

alt text

Perhitungannya memang terlihat lebih rumit. Tapi kalau di terjemahankan ke code agak mirip dengan model di atas. Dan kita bisa menghasilkan perhitungan yang jauh lebih cepat, apalagi menghitung dengan modulo yang berulang-ulang akan lambat sekali -- kalau pakai cara langsung.

< VB.Net >
alt text

< C# >
alt text

Penutup

Math model dalam programming kadang tidak harus di buat secara langsung. Kebanyakan harus di terjemahkan lebih dahulu agar kita dapat menghasilkan perhitungan yang optimal dan code yang cepat. Begitu juga dengan 'logic' bisnis, walaupun terlihat lebih 'abstrak'. Prinsip-nya hampir sama.

Referensi

Perhatian! Code yang di tampilkan dalam tulisan ini merupakan ilustrasi dari yang ingin dipaparkan dan bukan production ready code.
Sudah banyak kejadian karena asal meng-copy-and-paste tanpa mengerti code yang di ambil itu ke dalam production.
Selain itu perlu ada tambahan code dan test sebelum siap untuk di gunakan secara utuh.

Dilihat 510 kali

Is this helpful?

Share This Post