Hari ini kita akan belajar algoritma lainnya yang digunakan sebagai
keperluan bukan hanya untuk pengurutan dan pencarian,
algoritma tersebut tidak dapat digunakan untuk semua persoalan,
melainkan hanya untuk permasalahan tertentu, berikut berberapa
algoritma lain yang dapat digunakan untuk persoalan tertentu.
1. Algoritma rekursif
Rekursif merupakan pendekatan dimana suatu fungsi/
presedur memanggil dirinya sendiri. Penjelasan mengenai
algoritma rekursif sebenarnya cukup kompleks dan sulit
dipahami karena pada saat kita memanggil suatu fungsi, maka
fungsi tersebut tidak akan langsung menghasilkan suatu nilai
sampai fungsi didalamnya yang memanggil fungsi lainnya
menghasilkan nilai. Begitu seterusnya. Sampai kita memenuhi
kondisi penghenti (basis) yang akan menghentikan rekursif
Terdapat dua bagian algoritma rekursif diantaranya sebagai berikut :
a. Basis kondisi penghenti rekursif
b. Rekursif : bagian yang akan memanggil dirinya sendiri.
CONTOH :
Anda ingin menghitung jumlah deret 4. nilai nilai untuk setiap deret adalah 4,
3, 2, 1
Perhatikan potongan kode berikut :
BASIS
REKURSIF
Pada contoh tersebut, anda membuat fungsi rekursif deret dimana terdapat
dua bagian utama, yaitu basis dan rekursif. Pada bagian basis, rekursif akan
dihentikan.
Jika angka <=1 dan mengembalikan angka 1. jika angkanya bukan 1 maka maka
akan memanggil fungsinya sendiri (angka-1)
Dan untuk mengakhiri algoritma pencarian deret angka itu kita gunakan
algoritma basis, Disini kita gunakan if(angka<=1){
Yang artinya kalau deret angkanya akan berhenti jika sudah ketemu angka 1
PERHATIKAN ILUSTRASI BERIKUT :
Deret (4) 4 – 1 = 3
4x3 = 12
Deret (3) 3 – 1 = 2
12x2 = 24
Deret (2) 2 – 1 = 1
24x1 = 24
Deret (1) 1 (karena sudah 1, maka deret akan dihentikan.
Pada ilustrasi tersebut diketahui bahwa langkah awal proses menghitung deret 4
dengan rekrusif adalah menentukan nilai-nilai deretnya terlebih dahulu. Karena
pada program utama kita akan mencari hasil deret (4) maka diurutkan terlebih
dahulu dari nilai setiap deretnya. Dan akan otomatis menghentikan proses karena
<=1 sudah masuk pada bagian hasis (proses dihentikan)
sehingga tidak ada deret 0 dan seterusnya.
ALGORITMA DEVIDE DAN CONQUER
Algoritma devide and qonquer merupakan algoritma yang memecah masalah
utama menjadi berberapa submasalah yang lebih kecil.
Sub masalah ini memiliki karakteristik yang sama dengan masalah utama, namun
dengan ukuran yang lebih kecil, biasanya ukuran dari sub masalah yang sub
masalah lainnya adalah sama walaupun tidak harus.
Tahapan umum yang dilakukan pada algoritma devide and conquer adalah
sebagai berikut.
A. Devide
Membagi masalah utama menjadi sub masalah yang lebih kecil
B. Conquer
Membuat solusi untuk menyelesaikan masalah masing masing sub masalah
secara rekrusif (berarti fungsi yang memanggil dirinya sendiri)
C. Combine
Menggabungkan solusi solusi dari sub masalah untuk memecahkan masalah utama.
Berikut contoh algoritma devide and conquer untuk mencari nilai minimum dan
maksimum dari suatu array.
Bayangkan anda punya data array sebagai berikut :
Selanjutnya kita akan mencari nilai minimum dan maksimum dari setiap sub array
Kemudian kita menggabungkan solusi dari setiap sub sub array sampai
mendapatkan hasil minimum dan maksimum untuk array utama.
algoritma devide and conquer ini sangat efisien karena dapat menyelesaikan
masalah dengan lebih cepat.