Matamu.Net – Pernah dengar kasus seperti ini? Bagaimanakan cara mendapatkan Air sebanyak 4 liter, jika kamu hanya diberi wadah air sebesar 3 liter dan 5 liter air?
Solusi untuk mendapatkan air 4 liter tentu saja akan mudah kecuali jika diberikan kondisi (syarat) awal yakni wadah alat ukur yang tersedia hanya berupa ember 3 liter dan 5 liter, sisanya boleh memiliki wadah apa saja tanpa ukuran.
Solusinya yang benar dan diakui harus disampaikan secara runut agar solusi (output) didapatkan tetap sesuai dengan syarat awal (Input). Mungkin akan ada banyak solusi yang diberikan dan hal tersebut bukanlah masalah, selama tidak syarat yang dilanggar dan solusi yang diinginkan terpenuhi.
Misalkan dua solusi untuk kasus ini sebagai berikut :
Metode I
- Ambil air melalui wadah 3 liter, kemudian tuangkan ke ember 5 liter.
- Ambil lagi air dengan wadah tiga liter kemudian tuangkan ke wadah 5 liter yang sudah berisi 3 liter air, maka akan ada sisa 1 liter di wadah tiga liter.
- Tumpahkan air yang ada pada ember 5 liter sampai kosong
- Tuangkan 1 liter air yang ada pada wadah 3 liter ke wadah 5 liter, sampai wadah 3 liter kosong.
- Isi kembali air wadah 3 liter, kemudian gabungkan dengan air 1 liter yang ada pada wadah 5 liter maka anda akan mendapatkan air sebanyak 5 liter
Metode II
- Ambil Air dengan wadah 5 liter, kemudian tuangkan air ke dari wadah 5 liter ke wadah 3 liter.
- Buang air dri wadah 3 liter, kemudia isi dengan 2 liter air yang ada pada wadah 5 liter.
- Isi ember air 5 liter, kemudian tuangkan air tersebut ke ember 3 liter yang sudah berisi 2 liter air, maka sisanya akan ada air 4 liter di wadah 5 liter.
Dua langkah atau solusi yang ditawarkan tersebut tentu saja sudah memenuhi syarat yang diberikan dengan hasil yang sama, namun dari kedua langkah tersebut ada metode yang boros namun ada juga metode yang hemat, disini kembali lagi kepada si pemberi solusi, namun metode yang digunakan ini selanjutnya disebut algoritma.
Daftar Isi
A. Pengertian Algoritma
Algoritma adalah sebuah prosedur runut yang digunakan untuk menyelesaikan masalah yang diberikan. Langkah-langkah harus berisi prosedur sistematis, dan logis. Dengan demikian prosedur tersebut tidak boleh melanggar syarat-syarat awal yang diberikan dengan tujuan menyelesaikan (1) proses perhitungan, (2) pemrosesa data, dan atau (3) penalaran secara otomatis.
1. Defenisi Informal
Defenisi sederhana dari berisi instruksi-instruksi yang terang dan jelas sehingga solusi yang diharapkan sesuai dengan syarat yang diinginkan. Dalam sebuah langkah-langkah tersebut, masih bisa diberikan satu proses langkah-langkah (solusi) baru selama masalah dan Langkah yang diajukan tidak saling bertentangan.
Misalnya : Pergilah ke pasar membeli indomie 2 bungkus, maka sosuli adalah ke pasar membeli indomie sesuai dengan perintah, namun jika diberikan syarat tambahan, pergilah kepasar membeli 2 bungkus indomie, jika ada telur, belilah 2 butir telur.
Perintah baru tersebut akan menghasilkan dua kemungkinan hasil yang pertama anda pulang hanya membawa 2 bungkus indomie atau anda bulang membawa dua bungkus indomie dan 2 butir telur, namun solusi yang tidak mungkin muncul adalah pulang hanya membawa 2 butir telur, karena syarat membeli telur bisa terpenuhi jika ada indomie.
Pada awalnya Algoritme diperkenalkan oleh Al-Khawarizmi untuk menyelesaikan masalah-masalah aritmatika menggunaka bilangan arab yang kebanyakan merupakan penyelesaian dari persamaan kuadrat.
Pada perkembangannya, Algoritma ini digunakan sebagai dasar pengambilan keputusan dari sebuah masalah yang ada. Metode ini dikenal sebagai algortima modern dan diperkenalkan oleh David Hilbert tahun 1928.
Perkembangan Algoritme sangat membantu dibidang komputasi dan menjadi dasar pengembangan pada bidang Komputerisasi dan dunia IT. Secara spesifik Algotime modern didefenisiskan sebagai metode praktis dan terstruktur yang digunakan untuk menyelesaikan serangkaian masalah-masalah yang menggunakan bantuan komputer.
2. Defenisi Formal Algoritma
Secara umum defenisi Algoritma yang merujuk pada rentetan langkah yang digunakan untuk menyelesaikan sebuah program hanya bersifat informal dan tidak operasional, namun ada banyak masalah yang berkaitan dengan matematika dan komputasi yang membutuhkan proses yang lebih kompleks.
Sebut saja contoh dari masalah yang menentukan bilangan pembagi terbesar dari dua integer. Masalah ini diselesaikan dengan menggunakan menggunakan Algoritme Euclid. Seperti flowchart di bawah ini :
Flowchart Algoritma Euclid |
Defenisi informal lain dari Algoritma dijelaskan oleh Boolos dan Jeffre (1999) melalui analogi berikut ini :
Tidak ada manusia yang bisa menulai dengan sangat cepat, dalam waktu yang lama, atau bagian yang kecil disertai limit tanpa batas dengan teliti, misalnya menulis bilangan dengan jumlah tidak terbatas dengan menuliskan penyebutan dari setiap bilangan tersebut. Akan tetapi manusia bisa membuat instruksi jelas untuk menentukan anggota bilangan ke-n sebuah set untuk n secara tidak terbatas dan acak. Instruksi secara eksplisit ini dihitung menggunakan bantuan mesin sedangkan manusia hanya melakukan operasi-operasi dasar dengan simbol.
Satu bilangan tidak-hingga adalah bilangan yang setiap elemenya bisa berkorespondensi dengan suku ke n bilangan ineteger. Sebuah Algoritma akan berisi instruksi yang akan menjadi penentu dari keluaran dengan nilai integer dengan nilai yang bisa saja sangat besar menurut teori. Oleh karena itu dapat disimpulkan jika persamaan aljabar seperti y = m + n, dimana m dan n adalah imput dengan variabel output y.
B. Ciri-Ciri Algoritma
Ciri-ciri dari Algoritma adalah sebagai berikut :
- Memiliki input, proses dan output.
- Memiliki instruksi yang jelas dan tidak ambigu.
- Mememiliki perintah untuk berhenti
C. Fungsi Algoritma
Fungsi Algoritma memiliki beberapa jenis manfaat seperti berikut ini :
- Menyelesaikan masalah yang rumit dan panjang terutama jika diselesaikan dengan perhitungan manual.
- Menyerdahanakan program rumit menjadi lebih sederhana.
- Mengurut penyelesaian masalah dengan logika berurut baik itu top-down, bottom-up, devide maupun conguer dengan waktu yang singkat.
- Memberikan solusi terstruktur dan rapi dengan kesimpulan yang lebih mudah diphami terutama untuk kasus-kasus deret.
- Membantu proses modifikasi persamaan jika ada program ingin diperbaiki.
D. Jenis-Jenis Algoritma
1. Devide and Conquer
2. Dynamic Programming
3. Metode serakah
Sebuah algoritma serakah mirip dengan sebuah Pemrograman dinamik, bedanya jawaban dari submasalah tidak perlu diketahui dalam setiap tahap; dan menggunakan pilihan “serakah” apa yang dilihat terbaik pada saat itu.
4. Sistem Flowchart
Sistem Flowchart adalah algoritma yang digambarkan dengan diagram alir untuk menunjukkan sebuah proses runut dan lengkap mulai dari Start-Input-Output-Decision-Looping-end. Tujuan untuk memudahkan memecahkan masalah menggunakan aturan biner yakni 1 atau 0 dari sebuah masalah. Jika masalah terdiri dari beberapa syarata maka masalah akan dirunutkan.
5. Pseudo Code (Kode Semu)
Pseudo Code (kode semu) merupakan metode yang cukup efisien untuk menggambarkan suatu algoritma . Pseudo Code dituliskan dengan menggunakan bahasa yang mudah dipahami (boleh menggunakan bahasa Indonesia) agar alur logika yang digambarkan dapat dimengeti oleh orang awam sekalipun. Flowchart Pseudo Code (kode semu) disusun dengan tujuan untuk menggambarkan tahap-tahap penyelesaian suatu masalah dengan kata-kata (teks).
Metode ini mempunyai kelemahan, dimana penyusunan algoritma dengan kode semu sangat dipengaruhi oleh tata bahasa pembuatnya, sehingga kadang-kdang sulit dipahami oleh orang lain. Oleh karena itu kemudian dikembangkan suatu metode lain yang dapat menggambarkan suatu algoritma program secara lebih mudah dan sederhana yaitu dengan menggunakan flowchart (diagram alir). Manfaat Algoritma Adapun manfaat algoritma sendiri yaitu untuk membantu seseorang dalam menyelesaikan suatu masalah berdasarkan pada pola pikirnya masing-masing.
D. Karakteristik Algoritma
Algoritma memiliki beberapa karakteristik sebagai berikut :
- Tidak terikat pada simbol, syntaks dan coding dari sebauh bahasa program
- Notasi dapat diaplikasikan ke seleuruh bahasa program
- Memiliki struktur dasar yang dibangun.