Anda di halaman 1dari 19

TUGAS INDIVIDU ALGORITMA DAN STRUKTUR DATA

RESUME MERGE SORT DAN FUNGSI REKURSIF

NAMA : HARDIANTI HAFID NIM: H12111260

PRODI STATISIKA JURUSAN MATEMATIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS HASANUDDIN 2012

Resume Matakuliah Algoritma dan Struktur Data Tanggal 25 Sepetember 2012 MERGE SORT A. Devide dan Conquer Merge sort menggunakan pola divide and conquer. Dengan hal ini deskripsi dari algoritma dirumuskan dalam 3 langkah berpola divide-and-conquer. Berikut menjelaskan langkah kerja dari Merge sort : 1. Divide Memilah elemen elemen dari rangkaian data menjadi dua bagian. 2. Conquer Conquer setiap bagian dengan memanggil prosedur merge sort secara rekursif 3. Kombinasi Mengkombinasikan dua bagian tersebut secara rekursif untuk mendapatkan rangkaian data berurutan Proses rekursi berhenti jika mencapai elemen dasar. Hal ini terjadi bilamana bagian yang akan diurutkan menyisakan tepat satu elemen. Sisa pengurutan satu elemen tersebut menandakan bahwa bagian tersebut telah terurut sesuai rangkaian. Merge together solusi dari sub problem: Bandingkan elemen pertama dengan 2 sub array Ambil elemen yang terkecil dan letakkan pada array hasil Teruskan proses pembandingan dan pengambilan, sampai seluruh elemen subarray dipindahkan ke hasil array

MargeSort (Passed an Array) Jika ukuran array >1 Bagi array menjadi dua Panggil fungsi Marge Sort untuk bagian pertama Panggil fungsi Marge Sort untuk bagian kedua Merge dua bagian tersebut

Mergesort (Passed two array) Bandingkan kedua elemen pertama dari kedua array Pilih yang lebih kecil dan tempatkan pada array Hasil, posisi elemen pertama pada elemen array yang telah diambil elemennya (Jika salah satu array input telah kosong, maka letakkan elemen yang tersisa dari array lainnya ke array hasil.

Contoh Merge Sort


1. 2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

16.

17.

18.

19.

20.

21.

22.

23.

24.

25.

26.

27.

Hasil

B. Adapun Implementasi Merge Sort dalam bentuk program pascal

Dapat menggunakan fungsi random Dapat menggunakan fungsi input

Gambar 1. Menunjukan kode input (Menggunakan Random / Input)

Data Asli Baris 1 Baris 2 Baris 3 Baris 4 adalah hasil merge sort Banding=22, Rekursif = 12, Baris= 9

Gambar 2

Mendiskripsikan program MergeSort 1. Program akan meminta input 2. Kemudian akan merandom nilai 1 100 3. Data asli adalah data hasil random 4. Baris 1 adalah sorting pertama kali yang dilakukan oleh Algoritma MergeSort. (Diatas "Baris 1" anda dapat melihat "(1)" bahwa terdapat perbandingan yang dilakukan dan program menulis nilai "Banding") 5. Banyaknya "Baris" yang terdapat pada output program dapat anda modifikasi sesuai kebutuhan.

Gambar 3

Gambar 3. Menunjukan banyaknya pertukaran pada setiap baris dan menunjukan letak code Output Banding

Gambar 4.

Gambar 4 Menunjuk banyaknya baris yang akan di output dan code output baris Jadi fungsi program ini: 1. Dapat menghitung banyaknya perbandingan pada Algoritma MergeSort 2. Dapat memodifikasi Input (Menggunakan Random atau Input Biasa) 3. Dapat memodifikasi Output (Banyaknya baris yang keluar)

FUNGSI REKURSIF
Rekursif

Sebuah fungsi dapat memanggil fungsi lain dan sebuah fungsi yang dapat memanggil dirinya sendiri. Fungsi seperti demikian disebut fungsi rekursif Sebuah fungsi f juga disebut rekursif jika memanggil fungsi lain g dan di dalam g terdapat pemanggilanterhadap f Meski kurang efisien dibandingkan dengan fungsi iteratif yang memakai perulangan, pada beberapa kasus fungsi rekursif menyediakan solusi yang lebih natural dan sederhana.

Permasalahan yang diselesaikan melalui fungsi rekursif memiliki beberapa karakteristik: 1. Kasus sederhana dari permasalahan tersebut memiliki jawaban langsung yang disebut base cases. Contoh 0! = 1. 2. Kasus yang lebih kompleks dapat didefinisikan secara sama namun dalam ukuran yang lebih kecil yang disebut recursive cases. Contoh: n! = n * (n-1)! Dengan menerapkan karakteristik 2 secara berulang kasus rekursif akan mendekati dan sampai pada base case. Contoh: n! 1!, 0!. Strategi penyelesaian masalah pada kasus rekusif disebut decrease-and(n-1)! (n-2)! ...

conquer. Idenya ialah mengurangi ukuran permasalahan sampai menjadi kasus sederhana (dalam kasus ini decrease-andconquer) yang memiliki penyelesaian jelas.

Format fungsi rekursif Pada umumnya fungsi rekursif memiliki bentuk sebagai berikut if this is a simple case solve it

else redefine the problem using recursion Cabang if merupakan base case, sedangkan bagian else-nya merupakan recursive case

Bagian recursive case menyediakan pengulangan yang dibutuhkan yang menyederhanakan permasalahan dan base case menyediakan penghentian Agar rekursi dapat berhenti recursive cases harus mendekati base case di setiap pemanggilan fungsi rekursif

Langkah-langkah mendefinisikan barisan secara rekursif: 1. Langkah basis: Spesifikasi anggota awal. 2. Langkah rekursif: Berikan aturan untuk membangun anggota baru dari anggota yang telah ada. Contoh barisan yang didefinisikan secara rekursif Berikan definisi rekursif dari an=rn, dengan rBulat, r 0 dan n bilangan bulat positif. Solusi: Definisikan a0 = r0 = 1 dan an+1 = r.an untuk n = 0, 1, 2, Langkah-langkah mendefinisikan fungsi secara rekursif dgn domain bil. Cacah 1. Langkah basis: Tentukan nilai fungsi pada saat nol 2. Langkah rekursif: Berikan aturan untuk mencari nilai fungsi untuk setiap bilangan bulat berdasarkan nilai fungsi pada bilangan bulat yang lebih kecil. Definisi seperti itu disebut rekursif atau definisi induktif Contoh fungsi yang didefinisikan secara rekursif f(0) = 3 f(n + 1) = 2f(n) + 3 maka

f(0) = 3 f(1) = 2f(0) + 3 = 23 + 3 = 9 f(2) = 2f(1) + 3 = 29 + 3 = 21 f(3) = 2f(2) + 3 = 221 + 3 = 45

Penyelesaian Relasi Rekursif Metode substitusi: Dengan cara membuat tebakan terhadap solusinya, kemudian tebakan tersebut dibuktikan dengan induksi matematika Contoh: Diketahui :

T 1 1 T n T n n 2
T n O n

Buktikan bahwa:

Buat tebakan T(n) = O(n), berarti T(n) cn Bukti: dengan induksi matematika
o

Basis induksi : n = 1, c=4 T(1) = 1 c1 , c > 0

o Langkah induksi:

(c/ + 1) c benar untuk c = 4 Metode (pohon) rekursif: Dengan cara mengubah bentuk rekursif menjadi bentuk penjumlahan, kemudian diselesaikan. Contoh:

Maka dalam bentuk pohon rekursifnya yaitu:


n

n/4

n/4

n/16

n/16

n/16

n/16

n/64

n/64

n/64

n/64

n/64

n/64

n/64

n/64

Baris 1 :n Baris 2 : Baris 3 : Baris 4 :

Metode iterasi/ rekursif: Metode iterasi tidak memerlukan tebakan solusinya, tetapi memerlukan manipulasi aljabar yang lebih intensif dari pada metode substitusi. Ide dasarnya adalah dengan mengembangkan bentuk rekursif tersebut serta merepresentasi-kannya dalam bentuk jumlah. Teknik untuk mengevaluasi bentuk jumlah dapat digunakan untuk mendapatkan nilai batas dari solusinya.

Metode master:

Digunakan utk menyelesaikan persamaan aT(n/b) + f(n)

rekursif dalam bentuk : T(n) =

Metode master menyediakan semacam cookbook untuk menyelesaikan persamaan rekursif dalam bentuk: T(n) = aT(n/b) + f(n) dengan a 1 dan b > 1 adalah konstanta dan f(n) adalah fungsi yang secara asimtotik positif. Dalam metode master perlu diingat 3 kasus, namun sesudahnya bentukbentuk rekursif dapat diselesaikan dengan lebih mudah. Kasus I: T(n) = aT(n/b) + f(n) maka T(n) = (nlogba) dhi, f(n) secara polinomial lebih kecil dari nlogba dengan faktor n, sehingga nlogba mendominasi contoh: a1, b>1 jika f(n) = O(nlogb(a-)), > 0

Jadi kasus I, sehingga

Kasus II: T(n) = aT(n/b) + f(n) jika f(n) = (nlogba) maka T(n) = (nlogbalog n) dhi, cost setiap langkah adalah nlogba sehingga, padahal ada sebanyak log n langkah, jadi T(n) = (nlogbalog n) a1, b>1

Jadi kasus II, shg:

Kasus III: T(n) = aT(n/b) + f(n) a1, b>1 jika f(n) = (nlogb(a+)), > 0 dan a f(n/b) c f(n) untuk c < 1 maka T(n) = (f(n)) dhi, f(n) > nlogba dgn faktor polinomial sehingga suku dominan adalah f(n) + f(n/b) + f(n/b2) O(f(n)) Adapun Contoh Kasus yang akan diselesaikan dengan metode master yaitu:

Jadi kasus III, krn f(n) mendominasi

Gunakan metode Master untuk menentukan T(n) = (?) bila : T(n) = 4T(n/2) + n2

Solusi: a = 4, b = 2, f(n) = n2 n2 = (n log24) = (n2) T(n) = (nlog24log n) = (n2log n)

Anda mungkin juga menyukai