Download - Merge Sort

Transcript
Page 1: Merge Sort

[ ] H12111282 STATISTIKA

RESUME ALGORITMA DAN STRUKTUR DATA

Page 2: Merge Sort

A. MERGE SORT

Merge sort merupakan algoritma pengurutan dalam ilmu komputer yang dirancang untuk memenuhi kebutuhan pengurutan atas suatu rangkaian data yang tidak memungkinkan untuk ditampung dalam memori komputer karena jumlahnya yang terlalu besar. Algoritma ini ditemukan oleh John von Neumann pada tahun 1945.

Algoritma pengurutan data merge sort dilakukan dengan menggunakan cara divide and conquer yaitu dengan memecah kemudian menyelesaikan setiap bagian kemudian menggabungkannya kembali. Pertama data dipecah menjadi 2 bagian dimana bagian pertama merupakan setengah (jika data genap) atau setengah minus satu (jika data ganjil) dari seluruh data, kemudian dilakukan pemecahan kembali untuk masing-masing blok sampai hanya terdiri dari satu data tiap blok. Setelah itu digabungkan kembali dengan membandingkan pada blok yang sama apakah data pertama lebih besar daripada data ke-tengah+1, jika ya maka data ke-tengah+1 dipindah sebagai data pertama, kemudian data ke-pertama sampai ke-tengah digeser menjadi data ke-dua sampai ke-tengah+1, demikian seterusnya sampai menjadi satu blok utuh seperti awalnya. Sehingga metode merge sort merupakan metode yang membutuhkan fungsi rekursi untuk penyelesaiannya.

Pengurutan algoritma Merge Sort membuat pengurutan dengan membagi 2 dan menggabungkannya. Metoda ini cukup efisien untuk diterapkan. Sama dengan Quick Sort, algoritma Merge Sort adalah dasar pembagian dan penyelesaiannya. Pertama urutan atau elemen data awal diurutkan dengan membaginya menjadi 2 bagian (Devide). Setengahnya diurutkan 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: membagi masalah menjadi beberapa upa-masalah yang memiliki kemiripan dengan masalah semula namun berukuran lebih kecil (idealnya berukuran hampir sama),

Conquer: memecahkan (menyelesaikan) masing-masing upa-masalah (secara rekursif), dan

Combine: mengabungkan solusi masing-masing upa-masalah sehingga membentuk solusi masalah semula.

Obyek permasalahan yang dibagi adalah masukan (input) atau instances yang berukuran n: tabel (larik), matriks, eksponen, dan sebagainya, bergantung pada masalahnya.

Page 3: Merge Sort

Tiap-tiap upa-masalah mempunyai karakteristik yang sama (the same type) dengan karakteristik masalah asal, sehingga metode Divide and Conquer lebih natural diungkapkan dalam skema rekursif.

Contoh:Misalkan nilai array yang belum disortir adalah:12,9,4,99,120,1,3,10

Page 4: Merge Sort

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 <array.length; i++)  System.out.print(array[i]+"  ");  System.out.println();  System.out.println("PAUSE");  }

  public static void mergeSort_srt(int array[],int lo, int n){  int low = lo;  int high = n;  if (low >= 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 <= end_low) && (start_high <= high)) {  if (array[low] < array[start_high]) {  low++;  } else {  int Temp = array[start_high];  for (int k = start_high- 1; k >= low; k--) {  array[k+1] = array[k];  }  array[low] = Temp;  low++;  end_low++;  start_high++;  }  }  }  

}

Output of the example:

C:\array\sorting>javac mergeSort.javaC:\array\sorting>java mergeSort RoseIndia

Page 5: Merge Sort

Selection SortValues Before the sort:12 9 4 99 120 1 3 10Values after the sort:1 3 4 9 10 12 99 120PAUSEC:\array\sorting>_

PEMANGGILAN KEMBALI MERGE-SORT

Untuk mengurutkan n angka

Jika n=1 Pengurutan berulang 2 daftar dari angka-angka ⌊n/2 ⌋ dan ⌈ n/2 ⌉. 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

Merge-Sort(A, p, r): if p < r then q¬(p+r)/2 Merge-Sort(A, p, q) Merge-Sort(A, q+1, r) Merge(A, p, q, r)

Merge-Sort(A, p, r): if p < r then q¬(p+r)/2 Merge-Sort(A, p, q) Merge-Sort(A, q+1, r) Merge(A, p, q, r)

Merge(A, p, q, r) Take the smallest of the two topmost elements of sequences A[p..q] and A[q+1..r] and put into the resulting sequence. Repeat this, until both sequences are empty. Copy the resulting sequence into A[p..r].

Merge(A, p, q, r) Take the smallest of the two topmost elements of sequences A[p..q] and A[q+1..r] and put into the resulting sequence. Repeat this, until both sequences are empty. Copy the resulting sequence into A[p..r].

Page 6: Merge Sort

Running times pada algoritma dengan memanggil berulang dapat dideskripsikan dengan menggunakan recurrence.

Rekurensi adalah sebuah persamaan atau ketaksamaan yang mendiskripsikan sebuah fungsi pada syarat nilainya dalam imputan yang lebih kecil.

Contoh, Merge-Sortssss

Penyelesaian Rekurensi

Metode Subtitusio Tebak sebuah solusio Membuktikan solusi dengan cara induksi.

Metode Iterasi (pohon rekursi)o Perluasan dari recurrenceo Menggambar pohon rekursi.

Metode Mastero Susun berdasarkan kelas berbeda dari recurrence.

METODE SUBTITUSI

Selesikan T (n )=4 T ( n2 )+n1). Misalkan bahwa T (n )=O(n3), dengan T pada bentuk cn3

2). Asumsikan T ( k )≤ ck 3 untuk k ≤n/2 dan

3). Buktikan T (n )≤c n3 dengan cara induksi

T (n )=4 T ( n2 )+n (recurrence)

≤ 4 c¿ (hipotesa induksi

= c2n

3

+n (penyederhanaan)

Page 7: Merge Sort

=cn3−( c2n

3

−n)(penyusunan kembali)

≤ cn3 jika c ≥2 dan n≥1 (memenuhi)

Sehingga T (n )=O(n3)!

Harusnya dipilih c cukup besar untuk menagani T (n )=Θ (1 )untuk n<n0 untuk beberapa n0.

Mencapai batas ketat Coba tunjukkan T (n )=O(n2)Asumsikan T ( k )≤ ck 2

T (n )=4 T ( n2 )+n ≤ 4 c¿ =cn2+n≤cn2 untuk tidak ada pilihan daric>0

Masalah? Kita tidak seharusnya menulis kembali persamaanT (n )=c n2

MenjadiT (n )≤c n2

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)

Pembetulan bukti: gagasan untuk memperkuat hipotesis induksi mengurangkan susunan menurun

METODE ITERASI

Gagasan utama untuk mengembangkan recurrence dan mengubah ke dalam penjumlahan.

Page 8: Merge Sort

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

o berapa kali recurence perlu mengulangi untuk mencapai kondisi bataso jumlah ketentuan yang timbul dari setiap tingkat proses iterasi

POHON REKURSI

Pohon rekursi adalah cara yang mudah dilakukan untuk membayangkan apa yang terjadi ketika recurrence diiterasi.

Kontruksi pohon rekursi

Page 9: Merge Sort

METODE MASTER

Gagasan untuk menyelesaikan kelas recurrence yaitu memiliki rumus:

a≥1 dan b > 1, dan f adalah garis lurus positif yang mendekati kurva!

Berbicara secara abstrak, T(n) adalah runtime untuk algoritma dan kita tahu bahwa

A bagian masalah dari ukuran n/b diselesaikan dengan rekursif, setiap waktu T(n/b)

f(n) adalah nilai dari pembagian masalah dan gabungan dari hasil. Pada merge-sort

Page 10: Merge Sort

Pecahkan masalah kedalam a bagian pada logbn

terdapat daun

Banyak angka :

Iterasi dari recurrence, mengembangkan hasil dari pohon.

Pernyataan pertama adalah bagian/penggabungan ulang nilai (total bersilangan semua tingkatan dari pohon)

Pernyataan kedua adalah nilai dari pengerjaan semua bagian masalah pada ukuran 1 (total semua pekerjaan mendorong untuk daun)

INTUISI METODE MASTER

Tiga keadaan sama:o Running times dipengaruhi oleh nilai pada cabang-cabang.

Page 11: Merge Sort

o Running times biasa didistribusikan pada semua bagian pohon.o Running times dipengaruhi oleh nilai pusat (sumber).

Oleh karena itu, untuk menyelesaikan recurrence, kita hanya perlu menggolongkan pernyataan yang dominan.

Pada setiap keadaan membandingkan f (n) dengan O(n logb a)

METODE MASTER KASUS 1

f (n )=¿ O(n logb a−ε) Untuk beberapa konstan ε>0

o f(n) menjadi polinomial (dengan faktor nε ) lebih lambat daripada n logba

Pekerjaan pada tingkat daun mendominasio Tambahan pada tingkatan pohon rekursi O(n logb a)o Nilai dari semua tingkatan Θ(n logb a)o Sehingga, nilai keseluruhan adalah Θ(n logb a)

METODE MASTER KASUS 2

f (n )=¿ Θ(n logb a−ε) o f (n) dan n logba adalah simtatik serupa.

Pekerjaan ini didistribusikan secara merata pada seluruh bagian pohono (nilai tingkatan) × (jumlah tingkatan)

METODE MASTER KASUS 3

Untuk beberapa konstan ε>0o Invers dari sifat 1o f(n) menjadi polinomial (dengan faktor nε ) lebih cepat daripada n logba

o juga dibutuhkan kondisi teratur

∃ c<dann0 sedemikian rupabahwaaf ( nb )≤cf (n ) ∀n>n0

Pekerjaan di akar mendominasio T (n )=Θ( f (n ))

RINGKASAN TEOREMA MASTER

Diberikan recurrence pada rumus T (n )=aT ( nb )+ f (n)1. f (n )=O(n logb a−z)

⇒T (n )=Θ(nlogba)2. f (n )=Θ(n logb a)

Page 12: Merge Sort

⇒T (n )=Θ ¿¿

3. f (n )=Ω(nlogba+ z) dan af (nb)≤cf (n), untuk c<1 , n>n0

⇒T (n )=Θ( f (n )) 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 f (n) dari pemberian recurrence.

Tetapkan n logba

Bandingkan garis lurus f (n) dan n logba yang mendekati kurva. Tetapkan sifat MT yang cocok, dan terapkan. Contoh Merge-sort

T (n )=2T ( n2 )+Θ(n)

a=2 , b=2 ;n logba=nlog2 2=n=Θ(n)Also f (n )=Θ(n)⇒Kasus 2: T (n )=Θ ¿¿

Contoh:

T (n )=T ( n2 )+1

a=1 , b=2 ;n log2 1=1Also f (n )=1 , f (n )=Θ (1 )⇒Kasus2 :T (n )=Θ ¿

T (n )=9T ( n3 )+na=9 , b=3 ;

f (n )=n , f (n )=O (nlog3 9−z ) dengan ε=1

⇒Kasus1 :T (n )=Θ(n2)

Binary-search(A, p, r, s):

q¬(p+r)/2

if A[q]=s then return q

else if A[q]>s then

Binary-search(A, p, q-1, s)

else Binary-search(A, q+1, r, s)

Page 13: Merge Sort

T (n )=3T ( n4 )+n lgna=3 , b=4 ; n log4 3=n0,793

f (n )−n lg n , f (n )−Ω (nlog4 3+ z )denganε ≈0,2⇒Kasus3 :Kondisi teratur

af ( nb )=3 ( n4 )lg( n4 )≤( 34 )n lgn=cf (n )untuk c=3 /4

T (n )=Θ ¿

T (n )=2T ( n2 )+n lgna=2 , b=2 ;n log2 2=n1

f (n )=n lg n , f (n )=Ω(n1+ z¿)denganε ?¿

also n lgn

n1=lg n

⇒ tidak keduanya dari sifat 3 atau sifat 2!

T (n )=4 T ( n2 )+n3

a=4 , b=2 ; ;n log2 4=n2

f (n )=n3 ; f (n )=Ω(n2)⇒Kasus 3: T (n )=Θ(n3)Memeriksa kondisi keteraturan

4 f ( n2)≤cf (n)

4 n3/8≤cn3

n3 /2≤cn3

c=34<1