Wednesday, June 13, 2018

Algoritma

Halo, Sobat Pembelajar!

Pernah mendengar kata "Algoritma"? Jangan tertukar dengan "Logaritma", ya! Kedua-duanya sangatlah berbeda, meskipun terdengar mirip.

Apa itu Algoritma?

Dikutip dari Wikipedia, "In mathematics and computer science, an algorithm is an unambiguous specification of how to solve a class of problems". Secara sederhana, algoritma dapat diartikan sebagai langkah-langkah untuk mencapai suatu tujuan (yang biasanya menyelesaikan suatu masalah).



Semua hal yang kita lakukan memiliki suatu algoritma yang kita ikuti, secara sadar maupun tidak sadar.

Misalnya, algoritma untuk berjalan kaki ke suatu tempat:
  1. Angkat kaki kiri
  2. Gerakkan kaki kiri ke depan
  3. Turunkan kaki kiri
  4. Angkat kaki kanan
  5. Gerakkan kaki kanan ke depan
  6. Turunkan kaki kanan
  7. Ulangi 1-6 sampai mencapai tujuan

Lalu, apa tujuannya membuat algoritma?

Algoritma merupakan suatu hal yang paling mendasar di bidang computer science untuk membuat suatu program. Komputer (atau mesin lainnya) merupakan suatu alat yang dapat mengikuti instruksi apapun dengan tepat dan tanpa lelah, namun dengan syarat bahwa instruksi tersebut dapat dipahami oleh mesin tersebut.

Karena suatu mesin mengikuti instruksi dengan sangat presisi, maka bahasa manusia tidak dapat digunakan oleh mesin, karena bahasa manusia biasa bisa memiliki makna berbeda meskipun dengan kata yang sama (ambigu), dan mesin tidak dapat menebak makna yang mana yang dimaksud oleh si pembuat program.

Oleh karena itu, dalam membuat suatu program, biasanya suatu masalah/tujuan akan dipikirkan terlebih dahulu, kemudian diubah menjadi algoritma yang akan terus disederhanakan sampai tidak lagi ambigu, dan dapat ditulis sebagai instruksi (kode) dalam bahasa pemrograman tertentu.

Selain masalah ambiguitas, ada juga masalah kompleksitas. Hal-hal yang bagi kita sederhana (misalnya makan, minum, bernafas, berjalan, berbicara) sebenarnya merupakan hal yang sangat kompleks, dan tidak dapat dipahami oleh mesin secara langsung (jika bisa, tentu membuat robot yang dapat berjalan itu bukanlah sesuatu yang wah). Hal ini juga menyebabkan algoritma harus terus disederhanakan agar dapat dipahami mesin.


Sebagai contoh, algoritma yang kita ikuti jika lapar:

  1. Makan
Perintah "Makan" belumlah sederhana, maka akan disederhanakan lagi:
  1. Ambil makanan
  2. Masukkan makanan ke mulut
  3. Kunyah makanan
  4. Telan makanan
  5. Ulangi sampai selesai
Tentu, hal ini masih sangat jauh dari tingkat kesederhanaan yang dapat diterima mesin, dan masih dapat disederhanakan lagi:
  1. Ambil makanan
    1. Pegang sendok
    2. Ambil makanan menggunakan sendok
    3. Gerakkan satu sendok makanan menuju mulut
  2. Masukkan makanan ke mulut
    1. Buka mulut
    2. Gerakkan satu sendok makanan ke dalam mulut
    3. Tutup mulut
    4. Tarik sendok keluar
  3. Kunyah makanan
    1. Gerakkan makanan ke antara gigi menggunakan lidah
    2. Gerakkan rahang bawah ke atas, sampai gigi bawah bertemu gigi atas
    3. Gerakkan rahang bawah kembali turun
    4. Ulangi 1-3 sampai makanan lumat
  4. Telan makanan
    1. Gerakkan makanan menggunakan lidah menuju kerongkongan
    2. Ulangi sampai makanan habis
  5. Ulangi sampai selesai
Dan tentu saja, masih terdapat banyak masalah pada algoritma ini, misalnya:
  • "Makanan" itu ambigu, apa yang menyebabkan suatu benda bisa disebut "makanan"?
  • Menggerakkan anggota tubuh bahkan belumlah sederhana, berapa gaya yang harus diberikan dalam suatu gerakan? Kemana arah gayanya? Jika menggerakkan suatu benda, apa yang digunakan? Jika menggunakan tangan, bagaimana posisi jarinya?
  • Ulangi sampai selesai, kapan dapat dikatakan selesai? Apakah setelah makanan habis? Setelah kenyang? Bagaimana kita tahu makanan habis? Bagaimana kita tahu kita "kenyang" dan bukan "tidak lapar"?
Dan masih banyak lagi masalah-masalah lainnya. Oleh karena itu, membuat suatu algoritma terkadang sangatlah rumit, karena banyak hal-hal yang menurut kita natural, namun ternyata sangat kompleks dan sulit disederhanakan menjadi suatu perintah yang dapat diterima oleh mesin.


Sekian pembahasan mengenai Algoritma hari ini. Mulai sekarang, mulai pikirkan mengenai algoritma dalam berbagai hal yang kalian lakukan, ya!