Pengertian Algoritma
Pengertian algoritma adalah urutan dari langkah-langkah yang logis dalam menyelesaikan masalah. Pada saat kita mempunyai masalah, maka kita harus dapat menyelesaikan masalah tersebut dengan memakai berbagai langkah yang logis.Contoh dari algoritma sederhana dalam kehidupan nyata adalah memasak air. Hal-hal yang dilakukan untuk memasak air : siapkan panci, masukkan air ke dalam panci, tutup panci tersebut, letakkan panci di atas kompor, hidupkan kompor dengan api sedang, jika air sudah mendidih, matikan kompor, kemudian angkat panci dari kompor. Langkah-langkah untuk memasak air tersebut adalah algoritma memasak air. Cara memasak air tersebut mempunyai urutan langkah-langkah yang logis.
Dalam ilmu matematika dan komputer, pengertian algoritma adalah suatu prosedur dari langkah demi langkah untuk penghitungan. Algoritma digunakan untuk penghitungan, penalaran otomatis, serta pemrosesan data. Pengertian algoritma merupakan suatu metode yang efektif untuk diekspresikan sebagai rangkaian yang terbatas dari instruksi-instruksi yang telah dijelaskan dengan baik dalam menghitung fungsi.
Susunan algoritma dimulai dari kondisi awal dan input awal, instruksi tersebut adalah instruksi yang mendeskripsikan komputasi yang apabila itu dieksekusi dan kemudian diproses dengan melewati beberapa urutan kondisi terbatas yang terdefinisi dengan baik, sehingga menghasilkan output atau keluaran serta berhenti dikondisi akhir yang telah ditentukan.
Algoritma sangat dibutuhkan untuk keperluan mengolah data di komputer. Dalam sistem komputer, pengertian algoritma adalah logika yang dibuat dengan menggunakan software oleh para pembuat perangkat lunak agar membuat software menjadi lebih bagus. Algoritma berbeda dengan Logaritma. Logaritma adalah operasi di ilmu matematika untuk menghitung kebalikan eksponen dari perpangkatan.
Kata Algoritma ditemukan oleh seorang matematikawan dari persia abad ke-9 yang bernama Abu Abdullah Muhammad Ibnu Musa Al-Khwarizmi. Dari masa ke masa, kata algoritma mulai berkembang di abad ke 18.
Berikut salah satu contoh algoritma :
Algoritma untuk menghitung nilai x dari persamaan x = 7y + 9 :
1) Memulai
2) Menentukan nilai y
3) Menghitung nilai x = 7y + 9
4) Menyelesaikan
Bentuk Dasar Algoritma
Algoritma memiliki tiga bentuk dasar, antara lain :- Algoritma Sekuensial (Sequence Algorithm) Algoritma ini merupakan algoritma yang langkah-langkahnya secara urut mulai dari awal hingga akhir. Bentuk dari algoritma sekuensial seperti algoritma memasak air. Langkah demi langkah yang dijalankannya harus urut mulai dari atas sampai bawah.
- Algoritma Perulangan (Looping Algorithm) Algoritma perulangan adalah algoritma yang menjalankan langkah-langkah tertentu secara berulang-ulang (looping). Pada masalah yang dihadapi, ada pula sebuah langkah tertentu harus dilakukan secara berulang-ulang. Contohnya adalah algoritma menjemur pakaian:
- Algoritma Percabangan atau Bersyarat (Conditional Algorithm) Conditional algorithm merupakan algoritma yang menjalankan langkah berikutnya jika terdapat syarat yang sudah terpenuhi. Salah satu contoh algoritma bersyarat :
1) Siapkan jemuran.
2) Ambil 1 pakaian yang nantinya dijemur.
3) Peras pakaian tersebut.
4) Letakkan pakaian yang sudah diperas pada tiang jemuran.
5) Ulangi langkah dari 2 sampai 4 hingga pakaian yang disiapkan habis .
Dari algoritma di atas, diketahui bahwa dari langkah 2 sampai 4 harus dilakukan secara berulang-ulang hingga pakaian yang disiapkan habis.
1) Siapkan panci.
2) Masukkan air secukupnya.
3) Tutup panci.
4) Letakkan panci di atas kompor.
5) Hidupkan kompor.
6) Apabila air sudah mendidih, matikan kompor.
7) Angkat panci dari kompor.
Algoritma bersyarat terdapat pada langkah ke-6. Apabila air sudah mendidih, matikan kompor. Sehingga apabila air belum mendidih, maka kompor tidak dimatikan.
Merancang Algoritma yang Baik
Donald E. Knuth berpendapat bahwa dari pengertian algoritma dapat diketahui bahwa suatu algoritma yang baik adalah algoritma yang memiliki kriteria antara lain :- Masukan (Input) Algoritma memiliki input 0 (nol) atau lebih
- Keluaran (Output) Algoritma harus dapat menghasilkan atau mengeluarkan minimal satu output.
- Terbatas (Finite) Algoritma harus berhenti setelah melakukan langkah-langkah yang sudah diperlukan.
- Pasti (Definite) Algoritma harus jelas kapan dimulai dan berakhir. Memiliki tujuan yang jelas. Setiap langkah-langkahnya harus dijelaskan dengan jelas.
- Efisien Membuat algoritma haruslah efisien. Misalnya jika terdapat langkah seperti mencari hasil 1 + 0, maka langkah tersebut tidak efisien. Karena bilangan apapun itu jika ditambah dengan nol maka hasilnya adalah tetap bilangan itu sendiri. Sehingga langkah seperti itu tidak dimasukkan ke sebuah algoritma.
Klasifikasi Algoritma
Salah satu cara mengklasifikasikan algoritma adalah dengan cara implementasi.- Rekursi atau iterasi Algoritma rekursi adalah salah satu algoritma yang memanggil dirinya sendiri secara berulang-ulang (looping) hingga pada kondisi tertentu dapat tercapai. Algoritma rekursi adalah metode umum di dalam pemrograman fungsional. Algoritma iteratif menggunakan konstruksi berulang seperti pengulangan dan terkadang terdapat struktur data tambahan. Terdapat beberapa permasalahan secara alami yang cocok dengan satu implementasi atau yang lainnya. Contoh : Menara Hanoi dikenal dengan implementasi rekursif. Pada setiap versi rekursif terdapat kesamaan (bisa lebih ataupun kurang kompleks) dengan versi iteratif dan sebaliknya.
- Logical Algoritma dilihat sebagai logika deduksi terkontrol. Pernyataan ini dapat untuk diekspresikan sebagai : Algoritma = kontrol + logika. Komponen logika mengekspresikan aksioma yang digunakan dalam komputasi dan komponen kontrol untuk menentukan cara-cara deduksi yang dipakai pada aksioma. Hal tersebut merupakan dasar paradigma pemrograman logika. Dalam pemrograman, logika murni komponen kontrol adalah tetap dan juga algoritma yang ditentukan dengan memberikan hanya komponen logikanya. Daya tarik pendekatan logical adalah semantik elegan, suatu perubahan yang ada pada aksioma memiliki perubahan dalam algoritma.
- Serial, paralel atau terdistribusi Biasanya algoritma menjalankan satu instruksi algoritma dalam setiap waktu. Komputer tersebut disebut dengan komputer serial. Rancangan algoritma yang digunakan pada lingkungan tersebut adalah algoritma serial, terbalik dengan algoritma terdistribusi atau algoritma paralel. Sedangkan algoritma paralel menggunakan arsitektur komputer yang terdapat beberapa prosesor-prosesor yang dapat mengerjakan masalah pada waktu yang sama. Algoritma terdistribusi menggunakan banyak mesin yang dapat terhubung ke jaringan.
- Deterministik atau non-deterministik Algoritma deterministik adalah algoritma yang dapat menyelesaikan masalah dengan keputusan tepat disetiap langkah-langkah. Algoritma non-deterministik dapat untuk menyelesaikan masalah lewat penerkaan walaupun penerkaan tersebut biasanya lebih akurat dengan menggunakan heuristik.
- Tepat atau perkiraan Jika terdapat banyak algoritma yang dapat sampai ke solusi yang tepat, terdapat juga algoritma perkiraan yang mencari perkiraan terdekat dengan solusi benarnya. Adanya perkiraan tersebut dapat menggunakan strategi deterministik atau acak. Algoritma yang seperti itu memiliki nilai lebih untuk banyak permasalahan yang sulit.
- Algoritma quantum Berjalan pada model realistik dari komputasi quantum. Istilah tersebut biasanya digunakan bagi algoritma yang pada dasarnya quantum atau menggunakan berbagai fitur penting dari komputasi quantum seperti superposisi quantum atau belitan quantum.
Algoritma terdistribusi atau paralel membagi permasalahan-permasalahan ke banyak submasalah simetris ataupun asimetris serta mengumpulkan hasil yang didapat kembali. Konsumsi sumber pada algoritma tersebut tidak hanya ada pada perputaran prosesor tapi terdapat daya komunikasi antara prosesor. Algoritma pengurutan dapat untuk diparalelkan dengan efisien, namun terdapat biaya komunikasi yang mahal. Algoritma iteratif biasanya dapat diparalelkan. Ada juga permasalahan yang tidak ada pada algoritma paralelnya yang disebut dengan permasalahan serial lahiriah.
Contoh Algoritma
- Menentukan Apakah Bilangan Tersebut Ganjil atau Genap Bilangan bulat yaitu 0, 1, -1, 2, dst, sedangkan bilangan asli 1, 2, 3, 4, 5, dst. Bilangan bulat dan bilangan asli sering dipakai dalam berhitung. Himpunan bilangan bulat dalam buku teks aljabar biasanya dinyatakan dengan lambang "Z" serta himpunan bilangan asli dinyatakan dengan lambang "N". Algoritma yang digunakan untuk menentukan apakah bilangan tersebut ganjil atau genap disajikan dengan flowchart seperti dibawah ini : Bilangan genap adalah bilangan bulat yang dapat habis jika dibagi 2 (dua). Bilangan ganjil adalah bilangan bulat yang tidak habis jika dibagi 2 (dua).
- Menghitung Keliling dan Luas Lingkaran Lingkaran adalah himpunan dari semua titik-titik yang ada pada bidang dalam jarak tertentu dan disebut dengan jari-jari dari titik tertentu yang disebut dengan titik pusat. Lingkaran adalah contoh dari kurva tertutup sederhana, lingkaran membagi bidang menjadi dua bagian yaitu bagian luar dan dalam. Adapaun algoritma untuk menghitung keliling dan luas lingkaran disajikan dengan flowchart seperti dibawah ini : Baca juga artikel mengenai cara menghitung luas persegi.
- Menampilkan Bilangan Ganjil Diantara 10 sampai 30 Bilangan ganjil yang terletak diantara 10 dan 30 adalah bilangan 11,13,15, dan seterusnya. Namun yang akan ditampilkan kecuali bilangan 21 dan 27. Sehingga output/keluaran yang diharapkan dari algoritma tersebut yaitu bilangan ganjil antara 10 sampai 30 kecuali bilangan 21 dan 27. Algoritma yang digunakan untuk menampilkan bilangan ganjil antara 10 hingga 30 kecuali bilangan 21 dan 27 dapat disajikan dengan flowchart seperti dibawah ini :
- Algoritma tahun Kabisat Tahun kabisat adalah tahun yang mempunyai tambahan 1 hari yang bertujuan supaya kalender dapat sinkron dengan musim tahunan serta keadaan astronomi. Bulan Februari mempunyai 29 hari saat tahun kabisat. Adapun tahun kabisat adalah tahun yang dapat dibagi dengan 4. Algoritma yang digunakan untuk menentukan tahun kabisat dapat disajikan dengan flowchart dibawah ini :
- Menampilkan Bilangan Genap Mulai Angka 2 sampai n, Kecuali Bilangan Genap Kelipatan 4 Bilangan genap adalah bilangan bulat dapat habis dibagi 2 (dua). Deret yang akan ditampilkan dari algoritma ini adalah deret dari bilangan genap dari 2 sampai ke n, kecuali bilangan genap kelipatan 4. Algoritma tersebut dapat disajikan dengan flowchart seperti dibawah ini :
- Menghitung Harga yang Dibayar Setelah Mendapatkan Sebuah Diskon Terdapat algoritma yang bertujuan untuk menghitung jumlah biaya yang harus dibayar oleh si pembeli setelah mendapatkan diskon 10% dengan syarat jumlah total pembelian tersebut Rp.1.500.000,- Algoritma yang dapat digunakan untuk menghitung besaran biaya tersebut dapat disajikan dengan flowchart seperti dibawah ini : Jumlah barang mempunyai sifat dinamik sesuai dengan input dari user. Jika jumlah total harga tersebut kurang 1500000 maka tidak mendapatkan diskon 10%.
- Mencari Maks dan Min dari Deret Bilangan Algoritma yang bertujuan untuk mencari nilai maks dan min dari n deret bilangan yang di input oleh user. Algoritma tersebut disajikan dengan flowchart seperti dibawah ini :
- Kalkulator Sederhana dari 2 Bilangan Algoritma yang dapat digunakan sebagai kalkulator sederhana untuk operasi-operasi sederhana seperti penjumlahan, perkalian, pembagian, dan pengurangan. Kalkulator sederhana tersebut hanya dapat melakukan perhitungan dari dua bilangan yang di input oleh user. Algoritma yang dapat digunakan untuk menghitung 2 bilangan digambarkan dengan flowchart seperti dibawah ini :
- Menghitung Beberapa Angka dari Bilangan Terdapat algoritma yang dapat menghitung beberapa angka dari suatu bilangan yang dimasukkan oleh user. Adapun algoritma untuk menghitung beberapa angka dari bilangan disajikan dengan flowchart seperti dibawah ini :
- Membalik Sebuah Kalimat Algoritma juga dapat digunakan untuk menampilkan kalimat namun dengan urutan yang terbalik. Misalkan "gopengertian" dibalik menjadi "naitregnepog". Struktur data yang digunakan bernama Stack. Untuk membalik bilangan, huruf dari kalimat di input dalam stack dengan menggunakan metode Push. Setelah stack terisi, maka output kembali dengan menggunakan metode Pop.
Pada algoritma membalik kalimat, adanya penggunaan struktur data stack yang diimplementasikan ke array. Dalam implementasi ke array tersebut, kita terlebih dahulu harus menyiapkan array yang mempunyai panjang yang sama dengan jumlah huruf yang terdapat dalam kalimat yang dibalik. Seperti gambar flowchart dibawah ini, terdapat tiap huruf dari kalimat yang dimasukkan pada array dengan index ke-0 sampai ke-n dengan menggunakan metode push. Kemudian huruf tersebut akan mengeluarkan kata mulai dari index ke-n hingga index ke-0.
Itulah pengertian algoritma, klasifikasi algoritma, bentuk dasar algoritma, dan contoh algoritma. Algoritma sangat dibutuhkan untuk mengolah data pada komputer.