Anda di halaman 1dari 12

ALGORITMA LAINNYA

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)

Penjelasannya : angka yang akan kita faktorialkan adalah angka 4.


Maka kita perlu deret datanya, yaitu 4,3,2,1
Untuk mencari deret data itu, angka 4 itu akan dikurangi 1, dan hasil
pengurangannya akan dikurangi lagi 1 begitu seterusnya.
Setelah angka 4,3,2,1 sampai 1 telah ditemukan, maka deret ke 4 hingga
deret ke 1 akan dikalikan, seperti ini
(4x3x2x1)

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.

Dan hasil nya adalah 24

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.

Kemudian sub masalah tersebut diselesaikan masing masing dan hasilnya


digabung untuk memecahkan masalah utama.

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 :

4, 12, 7, 5, 6, 15, 8, 13, 9


Dengan menggunakan algoritma devide and qonquer, kita akan membagi array
tersebut menjadi lebih kecil sampai jumlah sub array lebih kecil atau sama dgn 2

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.

Untuk jelasnya bias lihat bagan berikut :

Anda mungkin juga menyukai