Merge Sort

download Merge Sort

of 15

  • date post

    02-Aug-2015
  • Category

    Documents

  • view

    3.088
  • download

    6

Embed Size (px)

Transcript of Merge Sort

RESUME ALGORITMA DAN STRUKTUR DATA [ASMASARI] H12111282 STATISTIKA A.MERGE SORT Mergesort merupakanalgoritmapengurutandalam ilmukomputer yangdirancanguntukmemenuhi kebutuhanpengurutanatassuaturangkaiandatayangtidakmemungkinkanuntukditampungdalam memori komputer karena jumlahnya yang terlalu besar. Algoritma ini ditemukan oleh John von Neumann pada tahun 1945.Algoritmapengurutandatamergesortdilakukandenganmenggunakancaradivideandconqueryaitu denganmemecahkemudianmenyelesaikansetiapbagiankemudianmenggabungkannyakembali. Pertamadatadipecahmenjadi2bagiandimanabagianpertamamerupakansetengah(jikadatagenap) atausetengahminussatu(jikadataganjil)dariseluruhdata,kemudiandilakukanpemecahankembali untuk masing-masing blok sampai hanya terdiri dari satu data tiap blok.Setelah itu digabungkan kembali denganmembandingkanpadablokyangsamaapakahdatapertamalebihbesardaripadadatake-tengah+1,jikayamakadatake-tengah+1dipindahsebagaidatapertama,kemudiandatake-pertama sampai ke-tengah digeser menjadi data ke-dua sampai ke-tengah+1, demikian seterusnya sampai menjadi satublokutuhsepertiawalnya.Sehinggametodemergesortmerupakanmetodeyangmembutuhkan fungsi rekursi untuk penyelesaiannya. PengurutanalgoritmaMergeSortmembuatpengurutandenganmembagi2dan menggabungkannya.Metodainicukupefisienuntukditerapkan.SamadenganQuickSort, algoritma Merge Sort adalah dasar pembagian dan penyelesaiannya. Pertama urutan atau elemen dataawaldiurutkandenganmembaginyamenjadi2bagian(Devide).Setengahnyadiurutkan dengan bebas (Conquer). Kemudian 2 bagian itu digabungkan dengan cara diurut sesuai dengan urutan (Combine). 1. Devide, yakni memilih masalah menjadi sub-masalah. 2. Conquer, yakni menyelesaikan sub-masalah tersebut secara rekursi. 3. Kombinasi/Penggabungan, menggabungkan solusi dari sub-masalah Divide:membagimasalahmenjadibeberapaupa-masalahyangmemilikikemiripandengan masalah semula namun berukuran lebih kecil (idealnya berukuran hampir sama), Conquer: memecahkan (menyelesaikan) masing-masing upa-masalah (secara rekursif), dan Combine:mengabungkansolusimasing-masingupa-masalahsehinggamembentuksolusi masalah semula. Obyek permasalahan yang dibagi adalah masukan (input) atau instances yang berukuran n: tabel (larik), matriks, eksponen, dan sebagainya, bergantung pada masalahnya. Tiap-tiap upa-masalah mempunyai karakteristik yang sama (the same type) dengan karakteristik masalahasal,sehinggametodeDivideandConquerlebihnaturaldiungkapkandalamskema rekursif. Contoh: Misalkan nilai array yang belum disortir adalah: 12,9,4,99,120,1,3,10 The code of the program : public class mergeSort{ public static void main(String a[]){ int i; int array[] = {12,9,4,99,120,1,3,10}; System.out.println("\n\n RoseIndia\n\n"); System.out.println(" Selection Sort\n\n"); System.out.println("Values Before the sort:\n"); for(i = 0; i < array.length; i++) System.out.print( array[i]+""); System.out.println(); mergeSort_srt(array,0, array.length-1); System.out.print("Values after the sort:\n"); for(i = 0; i = high) { return; } int middle = (low + high) / 2; mergeSort_srt(array, low, middle); mergeSort_srt(array, middle + 1, high); int end_low = middle; int start_high = middle + 1; while ((lo javac mergeSort.java C:\array\sorting>java mergeSort RoseIndia Selection Sort Values Before the sort: 1294991201310 Values after the sort: 1349101299120 PAUSE C:\array\sorting>_ PEMANGGILAN KEMBALI MERGE-SORT Untuk mengurutkan n angka Jika n=1 Pengurutan berulang 2 daftar dari angka-angka dan . Menggabungkan 2 pengurutan daftar pada(n) waktu. Strategi Pecahkan masalah dengan cara sama (sederhana) bagian masalah. Perulangan menyelesaikan bagian masalah. Kumpulkan solusi-solusi untuk memberikan jawaban. B.REKURENSI Runningtimespadaalgoritmadenganmemanggilberulangdapatdideskripsikandengan menggunakan recurrence. Rekurensiadalahsebuahpersamaanatauketaksamaanyangmendiskripsikansebuahfungsi pada syarat nilainya dalam imputan yang lebih kecil. Contoh, Merge-Sort ssss (1) if1( )2 ( / 2) ( ) if1nTnTn n nO = = +O > Penyelesaian Rekurensi Metode Subtitusi oTebak sebuah solusi oMembuktikan solusi dengan cara induksi. Metode Iterasi (pohon rekursi) oPerluasan dari recurrence oMenggambar pohon rekursi. Metode Master oSusun berdasarkan kelas berbeda dari recurrence. METODE SUBTITUSI Selesikan()(

)1). Misalkan bahwa ()(

), denganpada bentuk

2). Asumsikan ()

untukdan 3). Buktikan ()

dengan cara induksi () (

)(recurrence) ()

(hipotesa induksi =

(penyederhanaan) =

(

) (penyusunan kembali)

jikadan(memenuhi) Sehingga ()(

)! Harusnya dipilih c cukup besar untuk menagani ()()

untuk beberapa

. Mencapai batas ketatCoba tunjukkan ()(

) Asumsikan ()

() (

)()

=

untuk tidak ada pilihan dariMasalah? Kita tidak seharusnya menulis kembali persamaan ()

Menjadi ()

Dalam susunan untuk menunjukkan ketaksamaan yang kita inginkan. Kadang-kadang untuk membuktikan cara induksi, mencoba untuk memprkuat hipotesis kita. T(n)(jawaban yang diinginkan) - (something > 0) Pembetulanbukti:gagasanuntukmemperkuathipotesisinduksimengurangkansusunan menurun METODE ITERASI Gagasan utama untuk mengembangkan recurrence dan mengubah ke dalam penjumlahan. 21 221 221 221 2 221 2 2Assume( )for ( ) 4 ( / 2)4( ( / 2) ( / 2))2( ) if1Tk c k c k k nTn Tn nc n c n nc n c n nc n c n c n nc n c n cs ( )( ) ( )( ) ( ) ( )( )( )444loglog 1log 30( ) 3 / 43 / 4 3 /163 / 4 3 /16 3 / 643 / 4 9 /16 27 / 64( ) 3 / 4 9 /16 27 / 64 ... 3 (1)3 44 ( )( )niniTn n T nn n T nn n n T nn n n T nTn n n n n Tn nn o nOn== + ( = + + (( = + + + ((( = + + + ((( = + + + + +| |s + O |\ .s +s Metode iterasi kadang kali digunakan menghasilkan perkiraan untuk metode subtitusi. Sebaiknya diketahui aturan dan memiliki intuisi untuk deret aritmatika dan geometri. Matematika dapat menjadi berantakan dan susah Pusatkan pada dua parameter oberapa kali recurence perlu mengulangi untuk mencapai kondisi batas ojumlah ketentuan yang timbul dari setiap tingkat proses iterasi POHON REKURSI Pohonrekursiadalahcarayangmudahdilakukanuntukmembayangkanapayangterjadiketika recurrence diiterasi. Kontruksi pohon rekursi 2( ) ( / 4) ( / 2) Tn Tn Tn n = + + METODE MASTER Gagasan untuk menyelesaikan kelas recurrence yaitu memiliki rumus: a1 dan b > 1, dan fadalah garis lurus positif yang mendekati kurva! Berbicara secara abstrak, T(n) adalah runtime untuk algoritma dan kita tahu bahwa A bagian masalah dariukurann/b diselesaikan dengan rekursif, setiap waktu T(n/b) f(n) adalah nilai dari pembagian masalah dan gabungan dari hasil. Pada merge-sort ( ) ( / 3) (2 / 3) Tn Tn T n n = + +( ) ( / ) ( ) Tn aTnb f n = +( ) 2 ( / 2) ( ) Tn Tn n = + O Pecahkan masalah kedalam a bagian pada logbn terdapatdaun Banyak angka : Iterasi dari recurrence, mengembangkan hasil dari pohon. Pernyataanpertamaadalahbagian/penggabunganulangnilai(totalbersilangansemua tingkatan dari pohon) Pernyataankeduaadalahnilaidaripengerjaansemuabagianmasalahpadaukuran1 (total semua pekerjaan mendorong untuk daun) INTUISI METODE MASTER Tiga keadaan sama: oRunning times dipengaruhi oleh nilai pada cabang-cabang. oRunning times biasa didistribusikan pada semua bagian pohon. oRunning times dipengaruhi oleh nilai pusat (sumber). Oleh karena itu, untuk menyelesaikan recurrence, kita hanya perlu menggolongkan pernyataan yang dominan. Pada setiap keadaan membandingkan()dengan (

) METODE MASTER KASUS 1 () (

)Untuk beberapa konstanof(n) menjadi polinomial (dengan faktor

) lebih lambat daripada

Pekerjaan pada tingkat daun mendominasi oTambahan pada tingkatan pohon rekursi (

) oNilai dari semua tingkatan (

) log logb bn aa n =log logb bn aa n =2 22 2log 1 log 1 loglog 1log0( ) ( ) ( / )( ) ( / ) ( / )( ) ( / ) ( / ) ...( / ) (1)Thus,( ) ( / ) ( )b b bbbn n nna j jjTn f n aTnbf n af nb a Tnbf n af nb a Tnba f nb a TTn a f nb n == += + += + + ++ += + OoSehingga, nilai keseluruhan adalah (

) METODE MASTER KASUS 2 () (

) o()dan

adalah simtatik serupa. Pekerjaan inididistribusikan secara merata pada seluruh bagian pohon o(nilai tingkatan)(jumlah tingkatan) METODE MASTER KASUS 3 Untuk beberapa konstanoInvers dari sifat 1 of(n) menjadi polinomial (dengan faktor

) lebih cepat daripada

ojuga dibutuhkan kondisi teratur

(

) ()

Pekerjaan di akar mendominasi o()(()) RINGKASAN TEOREMA MASTER Diberikan recurrence pada rumus () (

) () 1.()(

) ()(

) 2.()(

) ()(

) 3.() (

) dan (

)(), untuk

()(()) Metode master tidak dapat menyelesaikan setiap recurrence pada rumus ini, terdapat celah antara sifat 1 dan sifat 2, baik antara sifat 2 dan sifat 3. STRATEGI Kutipan a,b, dan () dari pemberian recurrence. Tetapkan

Bandingkan garis lurus ()dan

yang mendekati kurva. Tetapkan sifat MT yang cocok, dan terapkan. Contoh Merge-sort () (

) ()

() Also () () log( ) ( )b af n nc +=OKasus 2: ()(

)( ) Contoh: () (

)

Also () ()() ()( ) () (

)

() ()(

) dengan()(

) () (

)

()() (

) (

)(

)(

)(

) ()()() () (

)

() ()(

)

tidak keduanya dari sifat 3 atau sifat 2! () (

)

()

()(

) Binary-search(A, p, r, s): q(p+r)/2 if A[q]=s then return q else if A[q]>s thenBinary-search(A, p, q-1, s) else Binary-search(A, q+1, r, s) Kasus 3: ()(

) Memeriksa kondisi keteraturan (

)()