Merge Sort Lestari Irfandi Amir H12111281

9
TUGAS ALGORITMA DAN STRUKTUR DATA “Merge Sort“ “Metode Penyelesaian Rekurensi “ OLEH: LESTARI IRFANDI AMIR H12111281 STATISTIKA JURUSAN MATEMATIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNVERSITAS HASANUDDIN 2012

Transcript of Merge Sort Lestari Irfandi Amir H12111281

Page 1: Merge Sort Lestari Irfandi Amir H12111281

TUGAS

ALGORITMA DAN STRUKTUR DATA

“Merge Sort“ “Metode Penyelesaian Rekurensi “

OLEH:

LESTARI IRFANDI AMIRH12111281STATISTIKA

JURUSAN MATEMATIKAFAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNVERSITAS HASANUDDIN2012

Page 2: Merge Sort Lestari Irfandi Amir H12111281

Merge Sort

Merge Sort adalah algoritma yang berdasarkan strategi divide-and-conquer. Algoritma ini

tediri dari dua bagian utama, yaitu bagian pembagian list menjadi sublist-sublist yang lebih kecil

dan bagian sort (pengurutan) dan merge (penggabungan) pada sublist-sublist tersebut.

Divide: membagi masalah menjadi beberapa submasalah yang memiliki kemiripan dengan

masalah semula namun berukuran lebih kecil (idealnya berukuran hampir sama),

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

Combine: mengabungkan solusi masing-masing submasalah sehingga membentuk solusi

masalah semula.

Contoh:

Misalkan diberikan rangkaian data: 9,8,5,3,6,7,5,8,2,6,1,4

Divide

Divide

Divide

Conquer

9 8 5 3 6 7 5 8 2 6 1 4

9 8 5 3 6 7 5 8 2 6 1 4

9 8 5 3 6 7 5 8 2 6 1 4

9 8 5 3 6 7 5 8 2 6 1 4

Page 3: Merge Sort Lestari Irfandi Amir H12111281

Combine

Combine

Sebagai catatan, pengkombinasian dilakukan dengan cara pembandingan. Elemen yang nilainya lebih kecil akan masuk ke kotak terlebih dahulu dan mengisi bagian disebelah kiri terlebih dahulu.Pada merge sort, data yang akan digabungkan berada pada suatu array, sebutlah array x dan array yang digunakan untuk menampung hasil gabung adalah array yang berbeda dari array x tersebut, sebutlah array y. Penyalinan elemen data dari array x ke array y ditentukan oleh hasil perbandingan data kelompok pertama x(i) dan data kelompok setelahnya x(j). Apabila nilai x(i) lebih kecil dibanding x(j) maka x(i) disalin ke y(k) kemudian indeks I dan k masing – masing ditambah satu. Proses ini akan berulang sampai seluruh data habis diproses.

Berikut adalah source code dari merge sort :

void mergesort (int *x, int n)

{

int *r, i, j, k, l1, l2, u1, u2, size;

r = (int *) malloc (n * sizeof (int));

size = 1;

while (size < n)

{

l1 = 0; k = 0;

5 8 9 3 6 7 2 5 8 1 4 6

3 5 6 7 8 9 1 2 4 5 6 8

1 2 3 4 5 5 6 6 7 8 8 9

Page 4: Merge Sort Lestari Irfandi Amir H12111281

while (l1+size < n)

{

l2 = l1+size;

u1 = l2 – 1;

u2 = (l2 + size – 1 < n) ? l2 + size – 1 : n-1;

for (i=l1; j=l2; i<=u1 && j<=u2; k++)

r[k] = (x[i] <= x[j]) ? x[i++] : x[j++];

while (i<=u1) r[k++] = x[i++];

while (j<=u2) r[k++] = x[j++];

l1 = u2+1;

}

for(i=l1; k<n; i++) r[k++] = x[i];

for(i=0; i<n; i++) x[i] = r[i];

size *= 2;

}

Page 5: Merge Sort Lestari Irfandi Amir H12111281

Metode Penyelesaian Rekurensi

Relasi Recurrence untuk barisan {an} adalah persamaan yang menyatakan an dalam satu atau

lebih bentuk a0, a1, …, an-1 untuk semua n dengan n ³ n0 dimana n0 bilangan bulat non-negatif.

Barisan {an} tersebut dikatakan sebagai solusi dari relasi recurrence ini bila an memenuhi relasi

recurrence. Dalam menyelesaikan rekurensi, terbagi atas 3 metode:

1. Metode Subtitusi

Metode dengan cara membuat tebakan terhadap solusinya, kemudian tebakan tersebut

dibuktikan dengan induksi matematika. Contoh :

Metode substitusi

Diketahui :

Buktikan bahwa :

Buat tebakan T(n) = O(√n),

Berarti T(n) ≤ c√n

2. Metode (pohon) Rekursif

Metode dengan cara mengubah bentuk rekursif menjadi bentuk penjumlahan, kemudian

diselesaikan.

Contoh 1: T(n) = 3T([n/4])+ n

Bila bentuk rekursif diuraikan:

T(n) = n + 3T([n/4]) = n + 3([n/4]) + 3T(n/4[/4]))

= n + 3([n/4]+ 3([n/16]+ 3T(n/64)))

= n + 3n/4+ 9n/16+ 27T(n/64)

Suku ke-i berbentuk 3in/4i. Oleh karena n berkurang sebesar 4 pada setiap iterasi, maka

proses berlangsung sampai log4 N langkah

T(n) ≤ n + 3n/4 + 9n/16 + 27n/64 + . . .+ 3log4N N / N

T (1 )=1

T (n )=T (n

2 )+√n

T (n )=O (√n )

Page 6: Merge Sort Lestari Irfandi Amir H12111281

Contoh 2:

Tn = n + T(n)

T(n) = n+2T(n/2)= n log2n, nilai n = (n/2)

n n

n/2 n/2 n

n/4 n/4 n/4 n/4 n

_

nk

n

log2n

3. Metode master

Metode ini digunakan untuk menyelesaikan persamaan rekursif dalam bentuk :

Metode master menyediakan semacam “cookbook” untuk menyelesaikan persamaan

rekursif dalam bentuk:

dengan a ≥ 1 dan b > 1 adalahkonstantadan f(n) adalahfungsi yang secara asimtotik

positif.

Dalam metode master perlu diingat 3 kasus, namun sesudahnya bentuk-bentuk rekursif

dapat diselesaikan dengan lebih mudah, yaitu:

Kasus I:

dhi, f(n) secara polynomial lebih kecil dari nlog ba dengan faktor nε, sehingga

nlogba mendominasi

T(n) = aT(n/b) + f(n)

T(n) = aT(n/b) + f(n)

T(n) = aT(n/b) + f(n)     a ≥ 1 ,   b > 1

Jika f(n) = O(nlogb(a-ε)), ε > 0  

Maka T(n) = Θ(nlogba)

Page 7: Merge Sort Lestari Irfandi Amir H12111281

Kasus II:

dhi, cost setiap langkah adalah nlogb

a sehingga, padahal ada sebanyak log n

langkah, jadi T(n) = Θ(nlogb

alog n)

Kasus III:

dhi, f(n) >nlogba dengan factor polynomial sehingga suku dominan adalah

f(n) + f(n/b) + f(n/b2)… O(f(n))

Contoh:

Gunakan metode Master untuk menentukan:

T(n) = Θ(?) bila : T(n) = 7T(n/2) + n2

Solusi:

a = 7, b = 2, f(n) = n2, nlog27 = n2.803..

n2 = O(nlog27 - ε), oleh karena

n2 ≤ cn2.803..- ε    ε, c > 0

T(n) = Θ(nlog27)

T(n) = aT(n/b) + f(n)     a ≥ 1 ,   b > 1

Jika  f(n) = Θ(nlogb

a)  

maka T(n) = Θ(nlogb

alog n)

T(n) = aT(n/b) + f(n)     a ≥ 1 ,   b > 1

Jika  f(n) = Ω(nlogb

(a+ε)), ε > 0 dan a f(n/b) ≤ c f(n) untuk c < 1

maka T(n) = Θ(f(n))