Menertawakan Sains

SSaya suka komedi. Banyak hal yang dapat dipelajari dari komedi. Saya belajar bahasa Inggris melalui komedi. Demikian pula, ada banyak cerita sejarah yang saya pelajari dari komedi juga. Sains? Matematika? Rekayasa? Semua ini dengan lawakan? Wah ini baru menarik.

Pagi hari di awal tahun 2017 ini saya membuka internet. Serius. Sehabis Subuh, sebelum matahari terbit saya membuka internet. Entah kenapa, terbuka YouTube. Yang terpampang di layar saya ada berbagai pelawak, mulai dari Johnny Carson, Jonathan Winters, dan kemudian Robin Williams. Eh, ternyata salah satunya menunjuk ke video ini.

Nampaknya ini adalah sebuah acara wawancara tentang Matematika dengan pelawak Steve Martin. Entah kenapa, Steve mengajak pelawak Robin Williams ke atas panggung. Mungkin dia tahu bahwa Robin Williams lebih tahu tentang sains (Matematika dan Fisika) lebih dari dia. Maka terjadilah berbagai adegan lucu di video itu. (Videonya dipotong menjadi beberapa video, masing-masing 10 menitan.) Gak bisa berhenti nonton video ini. Aje gile busyet dah.

Saya baru tahu bahwa Robin Williams itu ternyata cerdas banget! Dia banyak membaca dan mengerti banyak hal. Silahkan lihat videonya. Ada banyak lawakan yang terkait dengan matematika (dan fisika). Serius! Edan pisan!

Lawakan jenis ini – yang membutuhkan pendengar untuk mikir – merupakan jenis yang saya sukai. Ah, ternyata bisa juga menggabungkan lawakan dengan sains. Ini merupakan dorongan positif buat saya agar terus dapat menjelaskan konsep yang susah dengan lawakan.

Belajar ah … (dan banyak membaca tentunya).

Soal Matematika

[Soal ini sudah saya sampaikan di halaman Facebook saya dan menuai banyak komentar. Sekarang sata dokumentasikan di sini.]

Ceritanya saya diminta untuk mencari himpunan permutasi 4 bilangan x1, x2, x3, x4 yang jumlah keempatnya adalah s (misalnya 27). Rentang bilangan xn adalah 0 sampai dengan 9. Adakah algoritma yang efisien untuk mencari solusi tersebut? (Catatan: tadinya di dalam postingan saya di Facebook, saya menyebutkan kombinasi bukan permutasi.)

Di halaman facebook saya banyak solusi yang diusulkan. (Terima kasih.) Bahkan ada yang sudah menampilkan snippet kode.

Secara visual, soal ini dapat dilihat seperti gambar berikut. (Maaf kalau gambarnya kurang jelas. Maklum ini corat-coret di buku.) Siapa tahu dengan gambaran secara visual dapat diperoleh pemahaman yang lebih baik.

masalah matematika

Bayangkan jika kita harus berjalan dari sisi kiri ke sisi kanan melewati 4 lapisan. Setiap titik memiliki biaya (cost) mulai dari 9 sampai dengan 0. Kita harus mencari jalan (path) yang nilainya sesuai dengan yang kita inginkan, seperti dala contoh adalah angka 27. Salah satu jalurnya adalah {7, 7, 7, 6}.

Nah selamat mencoba.

[Catatan: masalah ini merupakan bagian dari penelitian kami tentang anonimitas dalam e-voting.]

Pangkatkan Ini

Setelah kemarin saya memberikan “pemanasan” dengan tulisan “Kalikan Bilangan Ini“, maka sekarang saya naikkan tingkat kesulitannya.

Diketahui rumus berikut: z = (x^y) mod n, dimana “mod” merupakan operasi modulus. Berapakah z untuk data berikut:

x = 622288097498926496141095869268883999563096063592498055290461

y = 610692533270508750441931226384209856405876657993997547171387

n = 2425967623052370772757633156976982469681

z = ?

Bagaimana cara Anda menyelesaikan hal ini?

Catatan: rumus yang digunakan merupakan rumus yang digunakan oleh algoritma RSA. Angka yang digunakan kebetulan hanya 60 digit. Untuk RSA yang sesungguhnya, angka yang digunakan bisa mencapai 2048-bit.

Kalikan Bilangan Ini

Diketahui dua buah bilangan bulat x dan y. Dapatkah Anda menghitung z = x * y dengan data sebagai berikut.

x = 22953686867719691230002707821868552601124472329079

y = 30762542250301270692051460539586166927291732754961

z = ?

Catatan: x dan y merupakan dua buah bilangan prima dengan 50 digit 🙂 Nanti kalau sudah berhasil, saya ambil contoh yang lebih panjang (100 digit, musalnya). hi hi hi.

Bagaimana Anda mengalikannya? Tools / software / cara / alat apa yang Anda gunakan? Saya sendiri kepikiran buat program sederhana dengan menggunakan library GMP.

Kriptografi, Matematika, dan Rekayasa

Di Minggu pagi hari ini, asyik membaca majalah IEEE. Eh, yang ini bukan majalah tetapi koran the Institute, yang diterbitkan juga oleh IEEE.

Mumpung ada kesempatan untuk membaca dengan santai. Ada banyak majalah IEEE yang belum sempat saya baca. (Hadoh kapan bacanya ya?)

Ini dia fotonya. Ada sisa roti bagelen yang belum habis. Mau? Buruan, sebelum saya sikat juga. he he he. (Mejanya bersih karena sudah dibersihkan. Tadinya sih berantakan juga.)

Ceritanya adalah penghargaan IEEE terhadap temuan public key cryptosystem sebagai milestones ke-100 di bidang rekayasa (engineering). Ada tiga orang penemu dari Inggris yang diberi penghargaan, yaitu James Ellis, Clifford Cocks, dan Malcolm Williamson.

Mereka menemukan idenya ketika sedang bekerja di agen rahasia Inggris, the Government Communications Headquarters (GCHQ), di awal tahun 1970-an. Karena mereka bekerja di instansi yang sifatnya rahasia, mereka tidak dapat memberitahukan dunia akan temuan mereka tersebut. Peneliti yang lebih banyak dikenal pada waktu itu adalah Diffie, Hellman, Merkle, atau bahkan Rivest, Shamir, dan Adleman. Baru pada tahun 1997 informasi mengenai temuan peneliti Inggris tersebut bisa dibuka ke publik. Barulah mereka mendapat penghargaan yang semestinya.

Yang menarik adalah bagian ini:

… Ellis had demonstated to the agency’s senior officials that public-key cryptography was attainable, but because he wasn’t a mathematician, he did not know how to implement his concept.

In 1973, Cocks, a mathematician, was aske to join the effort. It is said that he found a solution in just 30 minutes, but it couldn’t be used because the computers of the day weren’t advanced enough. ...”

Public-key cryptography bisa lebih mudah diterima saat ini karena kemampuan komputasi komputer sudah cukup. Selain itu ada trick dan algoritma-algoritma implementasi yang memungkinkan implementasinya. Yang ini kerjaan rekayasa dari (software) engineer.

Inilah pentingnya kolaborasi dari berbagai ilmu dan peneliti.

Dicari: algoritma x^y mod z

Saya sedang mencari algoritma untuk menghitung x^y mod z, dimana bilangan x, y, dan z semuanya besar. Saya ambil contoh bilangan yang kecil dulu ya:

123^456 mod 987 = …

Kalau kita hitung langsung, misalnya 123 dipangkatkan 456 dahulu, variabel integer sudah tidak cukup. Ini nampaknya harus diprogram dengan menggunakan big integer. Itu tidak masalah, tapi saya tetap membutuhkan algoritma yang membuatnya lebih efisien.

Sebenarnya saya sedang membaca fast exponentiation, tetapi siapa tahu ada yang punya cara lebih baik. Saya akan membuat kodenya dalam bahasa C, jika itu dibutuhkan.

Kalkulator dan Belajar Matematika

Setelah ada kalkulator, apakah kita masih perlu belajar matematika seperti mencari akar dari sebuah bilangan?

Pertanyaan tersebut keluar dalam ujian yang diberikan kepada mahasiswa kami. Memang pelajaran matematika yang mendasar, seperti tambah-tambahan dan kali-kalian, penting. Tapi, apakah perlu sampai menghafal seperti dulu waktu saya kecil … di-drill:

2×1 = 2
2×2 = 4
2×3 = 6
… dst

Kan sudah ada kalkulator. Di handphone pun sudah ada kalkulator. Tinggal tekan angkanya saja kemudian akan keluar hasilnya. Belum lagi kita bisa menggunakan komputer untuk menghitung hal-hal yang lebih rumit.

Demikian pula untuk mencari akar sebuah bilangan. Apakah memang perlu kita kerjakan secara manual? Selain mungkin tidak teliti (salah) dia juga memboroskan waktu. Bukankah waktu yang terbuang tersebut bisa digunakan untuk mempelajari hal lain yang juga sama pentingnya (maksudnya bisa menambahkan ilmu yang lain atau mempelajari masalah matematika yang lebih dalam)? Mengapa kita tidak memanfaatkan teknologi yang sudah ada saat ini?

Contoh lain. Apakah ada yang masih menggunakan tabel log atau slide rule? Mungkin dengar istilah itu juga baru sekarang ya? ha ha ha.

Pertanyaan yang lebih jauh lagi, apakah (kemajuan) teknologi akan menghapuskan skill tertentu?

Bagaimana pendapat Anda?