Anda di halaman 1dari 5

Algoritma dan pemrograman 2C

Pemrogram bertanggung jawab atas implementasi solusi. Pembuatan program akan menjadi lebih sederhana jika masalah dapat dipecah menjadi sub masalah - sub masalah yang dapat dikelola. Penyelesaian masalah dengan komputer berhadapan dengan 4 hal, yaitu : 1. Pemahaman keterhubungan elemen-elemen data yang relevan terhadap solusi secara menyeluruh. 2. Pengambilan keputusan mengenai operasi-operasi yang dilakukan terhadap elemen-elemen data. . Perancangan representasi elemen-elemen data di memori sehingga memenuhi kriteria berikut: a. !emenuhi keterhubungan logik antara elemen-elemen data. b. "perasi-operasi terhadap elemen-elemen data dapat dilakukan secara mudah dan e#isien. 4. Pengambilan keputusan mengenai mengenai bahasa pemrograman terbaik untuk menerjemahkan solusi persoalan menjadi program.

STRATEGI DIVIDE DAN CONQUER


!etode $trategi %ivide dan &on'uer memecah masalah menjadi submasalah-submasalah independen yang lebih kecil sehingga solusi submasalah-submasalah dapat diperoleh secara mudah, solusi submasalah-submasalah digabung menjadi solusi seluruh masalah. Skema umum algoritma divide dan conquer Procedure %(& ) i,j : integer * +ar , : integer .# $!/00 )i,j* then $"0+1 )i,j* 1lse begin , : 2 %.+.%1 )i,j* &"!3.(1 )%(&)i,k*,%(&)k41,j** 1nd i# Keterangan : 1. $!/00 adalah #ungsi yang mengirim 3""01/(, menentukan apakah ukuran telah cukup kecil sehingga solusi dapat diperoleh. 5kuran dinyatakan sebagai telah berukuran kecil bergantung masalah. 2. %.+.%1 adalah #ungsi membagi menjadi 2 bagian pada posisi ,. 3iasanya bagian berukuran sama. . &"!3.(1 adalah #ungsi menggabungkan solusi 6 dan 7 submasalah. $olusi diperoleh dengan memanggil prosedur rekursi# %(&. 8ika ukuran kedua submasalah sama, waktu komputasi %(& dideskripsikan hubungan rekuren berikut : 9)n* 2 g )n*, 2 9 )n:2* 4 # )n*, n kecil selainnya

dimana : 9)n* adalah waktu untuk %(& dengan n masukan, g)n* adalah waktu komputasi jawaban secara langsung untuk masukan kecil dan #)n* adalah waktu &"!3.(1. 5ntuk algoritma divide dan con'uer yang menghasilkan submasalah-submasalah dengan tipe masalah yang sama dengan masalah awal, sangat alami untuk mendeskripsikan algoritma secara rekursi. ,emudian untuk meningkatkan e#isiensi dilakukan penerjemahan menjadi bentuk iterasi. Pemakaian teknik %ivide dan &on'uer banyak digunakan dalam menyelesaikan berbagai macam persoalan, antara lain : 1. $earching 2. $orting ___________________________________________________________________________________________________
Algoritma Divide dan Conquer halaman 1 dari 5 halaman

Algoritma dan pemrograman 2C

Binary Search )Pencarian 3iner* dapat dilakukan jika data sudah dalam keadaan urut. %engan kata lain, apabila data belum dalam keadaan urut, pencarian biner tidak dapat dilakukan. %alam kehidupan seharihari, sebenarnya kita juga sering menggunakan pencarian biner. !isalnya saat ingin mencari suatu kata dalam kamus. Prinsip dari pencarian biner dapat dijelaskan sebagai berikut : 1. !ula-mula diambil posisi awal 2 1 dan posisi akhir 2 ( 2. &ari posisi data tengah dengan rumus )posisi awal 4 posisi akhir* : 2 . %ata yang dicari dibandingkan dengan data tengah. 4. 8ika lebih kecil, proses dilakukan kembali tetapi posisi akhir dianggap sama dengan posisi tengah ; 1. <. 8ika lebih besar, proses dilakukan kembali tetapi posisi awal dianggap sama dengan posisi tengah 4 1. =. %emikian seterusnya sampai data tengah sama dengan yang dicari . 5ntuk lebih jelasnya, perhatikan contoh berikut. !isalkan kita ingin mencari 1> pada sekumpulan data berikut :

11

12

1<

1>

<

awal 1. 2. . 4.

tengah

akhir

!ula;mula dicari data tengah, dengan rumus )14 ?* : 2 2 <. 3erarti data tengah adalah data ke-<, yaitu 1<. %ata yang dicari, yaitu 1>, dibandingkan dengan data tengah ini. ,arena 1> @ 1<, berarti proses dilanjutkan tetapi kali ini posisi awal dianggap sama dengan posisi tengah 4 1 atau =.

11

12

1<

1>

<

awal

tengah

akhir

1. %ata tengah yang baru didapat dengan rumus )= 4 ?* : 2 2 >. 3erarti data tengah yang baru adalah data ke->, yaitu 2 . 2. %ata yang dicari, yaitu 1> dibandingkan dengan data tengah ini. . ,arena 1> A 2 , berarti proses dilanjutkan tetapi kali ini posisi akhir dianggap sama dengan posisi tengah ; 1 atau =. ? 11 12 1< 1> 2 1 <

awal 2 akhir 1. %ata tengah yang baru didapat dengan rumus )= 4 =* : 2 2 =. 3erarti data tengah yang baru adalah data ke-=, yaitu 1>. 2. %ata yang dicari dibandingkan dengan data tengah ini dan ternyata sama. 8adi data ditemukan pada indeks ke-=. . 3agaimana jika data yang dicari tidak ada, misalnya 1=B 4. Pencarian biner ini akan berakhir jika data ditemukan atau posisi awal lebih besar dari posisi akhir. <. 8ika posisi awal sudah lebih besar daripada posisi akhir berarti data tidak ditemukan. ___________________________________________________________________________________________________
Algoritma Divide dan Conquer halaman 2 dari 5 halaman

Algoritma dan pemrograman 2C

5ntuk lebih jelasnya perhatikan proses pencarian 1= pada data di atas. Prosesnya hampir sama dengan pencarian 1>. 9etapi setelah posisi awal 2 posisi akhir 2 =, proses masih dilanjutkan lagi dengan posisi awal 2 = dan posisi akhir 2 < ? 11 12 1< 1> 2 1 <

akhir

awal

%isini dapat dilihat bahwa posisi awal lebih besar daripada posisi akhir, yang artinya data tidak ditemukan. $ecara umum, algoritma pencarian biner dapat dituliskan sebagai berikut : 1. l C 1. 2. r C (. . ketemu C #alse. 4. selama ) l A 2 r * dan )not ketemu* kerjakan baris < sampai dengan D. <. m C ) l 4 r * : 2 =. 8ika ) %ata EmF 2 G * maka ketemu C true. >. 8ika ) G A %ata EmF * maka r C m ; 1. D. 8ika ) G @ %ata EmF * maka l C m 4 1. ?. .# )ketemu* maka m adalah indeks dari data yang dicari, jika tidak data tidak ditemukan. 3erikut ini adalah contoh #ungsi untuk mencari data menggunakan pencarian biner. Hunction 3inary$earch )G: word* : integervar l, r, m : wordketemu : booleanbegin l : 2 1r : 2 (ketemu : 2 #alsewhile )1 A2 r * and ) not ketemu * do begin m : 2 )1 4 r * div 2i# )%ata EmF 2 G * then ,etemu :2 true else i# )G A %ata EmF * then r:2m;1 else l : 2 m 4 1endi# ) ketemu * then 3inary$earch : 2 m else 3inary$earch : 2 -1endHungsi di atas akan mengembalikan indeks dari data yang dicari. /pabila data tidak ditemukan, maka yang yang dikembalikan adalah ;1. 8umlah pembandingan minimum pada pencarian biner adalah 1 kali, yaitu bila data yang dicari tepat berada di tengah-tengah. 8umlah pembandingan maksimum yang dilakukan dengan pencarian biner dapat dicari dengan rumus logaritma, yaitu : & 2 Ilog )(*

___________________________________________________________________________________________________
Algoritma Divide dan Conquer halaman 3 dari 5 halaman

Algoritma dan pemrograman 2C

!etode Juick atau yang sering disebut juga metode partisi diperkenalkan pertama kali oleh &. /. K. Loare pada tahun 1?=2. Pada metode 'uick, jarak dari kedua elemen yang ditukarkan dibuat cukup besar dengan tujuan untuk mempertinggi e#ektivitasnya. Lal ini mengingat metode gelembung yang menggunakan jarak cukup dekat ternyata kurang e#ekti#. Proses pengurutan dengan metode 'uick dapat dijelaskan sebagai berikut : mula-mula dipilih data tertentu yang dinamakan pivot, misalnya G. Pivot ini harus diletakkan pada posisi ke-j sedemikian hingga data antara 1 sampai dengan )j ; 1* lebih kecil daripada G- sedangkan data pada posisi ke-)j41* sampai dengan ( lebih besar daripada G. &ara pengaturannya adalah menukarkan data di antara posisi 1 sampai dengan )j ; 1* yang lebih besar daripada G dengan data di antara posisi )j 4 1* sampai dengan ( yang lebih kecil daripada G. /lgoritma penyisipan langsung sendiri dapat dituliskan sebagai berikut: 1. 2. . 4. <. =. >. D. ?. 1M. 11. 12. G C %ata E) 0 4 K* : 2*F. i C 0 j C K $elama ) i A 2 j * kerjakan baris < sampai dengan 12. $elama ) %ata E i F A G * kerjakan i C i 4 1 $elama ) %ata E j F @ G * kerjakan i C j - 1 8ika )i A 2 j * maka kerjakan baris D sampai dengan 1M- jika tidak kerjakan baris 11. 9ukar %ata E i F dengan %ata E j F. i C i 4 1 j C j - 1 8ika ) 0 A j * kerjakan lagi baris 1 dengan K 2 j. 8ika ) i A K * kerjakan lagi baris 1 dengan 0 2 i. 8ika suatu barisan yang terdiri dari n elemen yang ditempatkan dalam suatu array dan urutan yang diinginkan adalah urutan yang tidak turun )non decreasing* maka dapat digunakan metode Juick $ort yang dengan teknik %ivide and &on'uer. /dapun algoritma Juick $ort tersebut terdiri dari dua prosedur yaitu prosedur P/K9.9."( dan prosedur J5.&,$"K9. 3erikut ini disajikan algoritma Juick $ort yang dimaksud, yaitu : PK"&1%5K1 J5.&,$"K9)p,'* .H p A ' then j '41 &/00 P/K9.9."()p,j* &/00 J5.&,$"K9)p,j-1* &/00 J5.&,$"K9)j41,'* 1(% .H 1(% J5.&,$"K9 PK"&1%5K1 P/K9.9."()m,p* .(91N1K m,p,i - N0"3/0 /)m-1,p* + /)m* - i m 0""P 0""P i i 4 1 5(9.0 /) i * @ 2 + K1P1/9 0""P p p - 1 5(9.0 /) p * A 2 + K1P1/9 .H i A p 9L1( &/00 .(91K&L/(N1 )/)i*,/)p** 10$1 16.9 1(% .H K1P1/9 /)m* /)p* /)p* + 1(% P/K9.9."( &ontoh : ___________________________________________________________________________________________________
Algoritma Divide dan Conquer halaman 4 dari 5 halaman

Algoritma dan pemrograman 2C

$uatu /rray / terdiri dari ? elemen, yaitu : /)1* 2 =< /)2* 2 >M /) * 2 >< /)4* 2 DM /)<* 2 D< /)=* 2 =M /)>* 2 =M /)D* 2 <M /)?* 2 4<

1lemen-elemen tersebut akan disusun secara tidak turun berdasarkan algoritma Juick $ort. 8alannya proses pada algoritma tersebut disajikan dalam bentuk tabel sebagai berikut : 1 =< =< =< =< =< 1 =< =< =< %an seterusnya 16.9 /nalisisnya : Litung jumlah dari perbandingan-perbandingan elemennya dalam hal ini disimpan dalam variable &)n* dan kita asumsikan bahwa : n elemen yang disortir berbeda, proses pembagian )partisi* elemen + dalam prosedur P/K9.9."( dilakukan dengan proses seleksi secara acak. Oorst &ase dari &)n* dinotasikan dengan &w)n*. &)n* di dalam setiap pemanggilan prosedur P/K9.9."( maksimum sebesar ) p ; ' 4 1 * kali. !isalkan r adalah jumlah kumulati# dari elemen-elemen di dalam seluruh pemanggilan prosedur P/K9.9."( pada setiap tingkat dari teknik rekursi# tersebut. Pada tingkat pertama terjadi pemanggilan prosedur P/K9.9."( sebanyak satu )1* kali yakni &/00 P/K9.9."( ) 1, n 4 1 * dan nilai r 2 n. Pada tingkat kedua terjadi pemanggilan prosedur P/K9.9."( paling banyak dua )2* kali dan nilai r 2 n ; 1, dan seterusnya dengan cara yang sama pada tingkat berikutnya. %engan demikian dari proses tersebut diperoleh &w)n* akan sama dengan jumlah seluruh tingkat )r* dan nilai r berkisar didalam interval E 2 , n F. 8adi kompleksitas waktunya )Oorst &ase* 2 &w )n * 2 " ) nI * dan /verage &ase 2 &/)n* 2 " ) n log n *. 2 4< 4< 4< <M <M <M 2 >M 4< 4< 4< 4< >< >< <M <M <M 4 << << << 4 DM DM DM << << < =M =M =M < D< D< D< D< =M = D< >M >M = =M =M =M =M D< > << << << DM DM > DM DM >< D >< >< DM D <M <M >< >< >< ? 4< >M >M >M >M ? >M D< D< 1M 1M i 2 4 < = i = > D p ? D > = < p ? D >

___________________________________________________________________________________________________
Algoritma Divide dan Conquer halaman 5 dari 5 halaman

Anda mungkin juga menyukai