Konsep Algoritma

Sebenarnya algoritma sangat dekat dengan kehidupan kita sehari-hari. Sayangnya tidak banyak dari kita yang menyadari bahwa itu adalah bagian dari konsep algoritma dan justru terpaku pada kode program yang rumit. Sebelum kita masuk ke apa itu algoritma, ada baiknya teman-teman coba menjawab tantangan di bawah ini. Kita akan mulai membahas algoritma dari kegiatan paling dekat dengan kehidupan kita sehari-hari.

Buatlah langkah-langkah untuk memasak beras menggunakan rice cooker!


Setelah teman-teman membuat langkah-langkah tersebut. Coba amati apakah ada langkah yang hilang? Apakah langkah-langkah yang telah dibuat sudah sesuai sehingga dapat menghasilkan “nasi”? Atau ternyata harus diperbaiki?

Untuk mengetahui jawaban di atas, mari kita belajar mengenai konsep algoritma.

Algoritma

Algoritma adalah sekumpulan langkah rinci yang ditujukan untuk menyelesaikan masalah[1].

An algorithm is a procedure that takes any of the possible input instances and transforms it to the desired output [2].

Jika kita amati dua pengertian di atas, algoritma merupakan langkah sistematis yang digunakan untuk menyelesaikan masalah dengan mengambil masukkan (input) jika diperlukan untuk menghasilkan keluaran (output).

Contoh: Algoritma menanak nasi dengan rice cooker:

  1. Ambil beras dan taruhlah di sebuah tempat
  2. Cuci beras
  3. Masukkan beras ke panci rice cooker
  4. Tambah air dengan perbandingan 1 : 2. 1 cup beras : 2 cup air
  5. Masukkan panci tersebut ke rice cooker
  6. Masak

Mungkin ada teman-teman yang melakukan langkah yang sedikit berbeda seperti langkah berikut

  1. Ambil beras dan masukkan ke panci
  2. Cuci beras
  3. Tambah air dengan perbandingan 1 : 2. 1 cup beras : 2 cup air
  4. Masukkan panci ke rice cooker
  5. Masak

*) panci = inner pot

Bukankah kedua memiliki alur langkah yang berbeda? Apakah keduanya dapat disebut sebagai langkah rinci untuk menyelesaikan masalah?

Jawabnya ya. Kedua urutan langkah yang diambil merupakan algoritma, dimana terdapat langkah sistematis untuk memasak beras meskipun caranya berbeda sampai nasi berhasil dihasilkan. Perbedaan terletak di cara manakah yang lebih efisien. Selain itu dalam memasak nasi kita membutuhkan beras, air, dan listrik sebagai masukan. Sedangkan nasi merupakan hasil keluaran. Namun apakah semua langkah-langkah disebut sebagai algoritma?

Tidak Semua Urutan disebut Algoritma

Yak! Sayangnya tidak semua langkah dapat dikatakan sebagai algoritma. Menurut Donald E. Knuth algoritma setidaknya memiliki lima ciri. Berikut kelima ciri tersebut:

  1. Finiteness (Keterbatasan)
  2. Definiteness (Kepastian)
  3. Input (Masukan)
  4. Output (Keluaran)
  5. Effectiveness (Efektivitas)

Finitness (Keterbatasan)

Algoritma harus berakhir setelah menjalankan sejumlah langkah tertentu. Contoh: algoritma pencarian mahasiswa dalam daftar. Langkah-langkah sistematis akan berhenti setelah mahasiswa ditemukan atau setelah seluruh daftar diperiksa. Jika ternyata suatu langkah dilakukan terus menerus dan tidak ada kondisi berhenti, maka itu bukan algoritma yang valid. Seperti langkah “Kerjakan terus!”

Definiteness (Kepastian)

Setiap langkah dalam algoritma harus jelas dan tidak ambigu. Contoh: mahasiswa memasukkan data diri berupa nama. (Tanpa kebingungan nama itu apa, dan milik siapa yang harus dimasukkan). Contoh yang bukan merupakan langkah dari algoritma valid yaitu “Kerjakan dengan baik!”

Input (Masukan )

Algoritma dapat menerima 0 atau lebih masukan. Contoh: Pada algoritma penjumlahan dua angka, inputnya adalah dua angka yang akan dijumlahkan.

Output (Luaran)

Algoritma dapat menghasilkan 0 atau lebih keluaran. Contoh: Dalam algoritma penjumlahan dua angka, outputnya adalah hasil penjumlahan dari kedua angka tersebut.

Setidaknya, jika algoritma tidak mendapatkan masukan, algoritma tersebut dapat menghasilkan keluaran, dan sebaliknya. Algoritma dikatakan tidak valid jika tidak ada input dan output sekaligus.

Effectiveness (Efektivitas)

Susunan langkah-langkah rinci yang disusun secara runtut akan menghasilkan performa algoritma yang lebih efektif dibandingkan dengan langkah acak. Langkah yang disebutkan secara detail akan lebih baik dibandingkan langkah umum dan tidak jelas. Oleh karena itu algoritma harus diterapkan secara praktis dan efisien dengan sumber daya yang ada. Contoh: algoritma pencarian mahasiswa diterapkan secara sederhana dan sesuai dengan keluaran yang diinginkan.

bagan algoritma

Contoh Algoritma yang Memenuhi Komponen Dasar Algoritma

Masalah: Menjumlahkan dua bilangan yang diberikan.

Algoritma:
Input: Dua bilangan, misalnya a dan b.
Output: Hasil penjumlahan dari a dan b.

Langkah-langkah Algoritma:
1. Mulai
2. Ambil dua angka sebagai input: a dan b.
3. Penjumlahan: Jumlahkan kedua angka a dan b.
4. Hasil = a + b
5. Tampilkan hasil (hasil penjumlahan).
6. Selesai

Finiteness (Keterbatasan):
Memiliki jumlah langkah yang terbatas dan akan selesai setelah operasi penjumlahan selesai.

Definiteness (Kepastian):
Setiap langkah dalam algoritma ini jelas dan tidak ambigu.

Input yang Tepat:
Input yang diminta adalah dua angka (a dan b), yang jelas dan sesuai dengan masalah penjumlahan dua bilangan.

Output yang Jelas:
Output yang dihasilkan adalah hasil penjumlahan dari kedua input, yaitu a + b, yang merupakan solusi dari masalah.

Efisiensi:
Algoritma ini sangat efisien karena hanya melibatkan satu operasi aritmatika (penjumlahan), tanpa proses yang rumit/memakan waktu.

Algoritma dan Pemrograman

Nah saatnya membicarakan sedikit mengenai pemrograman. Bagaimana algoritma berkaitan dengan pemrograman?

Dalam dunia pemrograman, proses membuat program baris demi baris memerlukan logika berpikir agar kode program berjalan efektif dengan sumber daya paling minimal. Jika langkah sistematis tersebut tidak dirancang terlebih dahulu dan langsung dituangkan dalam bentuk code. Maka, tidak jarang waktu untuk menyelesaikan masalah semakin lama. Oleh karena itu, diperlukan langkah terstruktur sebelum melakukan coding yaitu dengan merancang algoritma. Hal ini bertujuan untuk:

  • Membantu merancang solusi
  • Mempermudah penulisan kode
  • Mengurangi kesalahan kode
  • Membuat program lebih efisien

Pemrograman sendiri merupakan proses teknis untuk membuat komputer menjalankan instruksi-instruksi sebagai upaya untuk menyelesaikan masalah. Terdapat tiga bentuk algoritma yang sering digunakan sebelum membuat kode program, (1) algoritma dalam bentuk deskriptif, (2) flowchart, dan (3) pseudocode. Berikut contoh flowchart dan pseudocode untuk masalah penjumlahan dua bilangan.

START
Input angka1
Input angka2
jumlah = angka1 + angka2
print “Hasil penjumlahan: “, jumlah
END

FAQ

Mungkin dari kita sangat sering bertanya atau mendapati pertanyaan ini saat belajar pemrograman. Berikut jawaban yang mungkin dapat membantu teman-teman.

Apa perbedaan algoritma dan program?
Algoritma adalah langkah logis untuk menyelesaikan masalah, sedangkan program adalah implementasi algoritma dalam bahasa pemrograman.

Apakah semua langkah disebut algoritma?
Tidak. Algoritma harus memiliki langkah yang jelas, terstruktur, dan berhingga.

Daftar Pustaka

[1] Abdul Kadir, Dasar Logika Pemrograman Komputer, Cetakan Kedua. Elexmedia Komputindo, 2013

[2] S. Skiena, Steven . The Algorithm Design Manual. Second ed., Springer, 2008

[3] Donald Ervin Knuth (2010) The art of computer programming / 4,3, Generating all combinations and partitions. Upper Saddle River, Nj ; Munich: Addison-Wesley.


Leave a Reply

Your email address will not be published. Required fields are marked *

Comments

Index