You are on page 1of 7

Marge Sort dan Rekursif

Algoritma dan Struktur Data




OLEH:
RISKA AMALIA
H12111253

I. MERGE SORT
MergeSort 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. Algoritma MergeSort merupakan
salah satu contoh algoritma yang stable ini.

Algoritma
1) Divide: membagi masalah menjadi beberapa submasalah yang
memiliki kemiripan dengan masalah semula namun berukuran
lebih kecil (idealnya berukuran hampir sama),
2) Conquer: memecahkan (menyelesaikan) masing-masing
submasalah (secara rekursif), dan
3) Combine: mengabungkan solusi masing-masing submasalah
sehingga membentuk solusi masalah semula.
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.
- Skema Umum Algoritma Divide and Conquer

Marge Sort dan Rekursif


Algoritma dan Struktur Data



procedure DIVIDE_and_CONQUER(input n : integer)
{ Menyelesaikan masalah dengan algoritma D-and-C.
Masukan: masukan yang berukuran n
Keluaran: solusi dari masalah semula
}
Deklarasi
r, k : integer
Algoritma
if n s n
0
then {ukuran masalah sudah cukup kecil }
SOLVE upa-masalah yang berukuran n ini
else
Bagi menjadi r upa-masalah, masing-masing berukuran n/k
for masing-masing dari r upa-masalah do
DIVIDE_and_CONQUER(n/k)
endfor
COMBINE solusi dari r upa-masalah menjadi solusi masalah semula }
Endif

Diberikan sebuah array dengan elemen yang terdefinisi adalah sebagai berikut :
[ 6, 19, 2, 45, 33, 12 ]. Cari nilai max dan min dalam array
Algoritma Bila diselesaikan secara divide and conquer
Procedure MinMax(input A : TabelInt, awal, akhir : int; output min, max : int)

min1, min2, max1, max2, k : int;
if ( awal=akhir ) then
Marge Sort dan Rekursif


Algoritma dan Struktur Data


min <- awal
max<- akhir
else if (awal = akhir-1) then
min <- Aawal
max <-Aakhir
else
min <- Aakhir
max <- Aawal
else
k <- (awal+akhir) div 2
MinMax ( A, awal, k, min1, max1);
MinMax (A, k+1, akhir, min2, max2);
If ( min1 < min2 ) then
Min <- min1
Else
Min <- min2
If ( max1 > max2 ) then
Max <- max1
Else
Max <- max2

Algoritma Merge Sort
Dalam kebanyakan kasus MergeSort diimplementasikan secara rekursif
dengan pendekatan top-down tapi menggunakan pendekatan bottom-up secara
iterative pun dapat dibangun . Algoritma untuk merge sort ialah sebagai berikut :
1. Untuk kasus n=1, maka table a sudah terurut sendirinya (langkah solve)
2. Untuk kasus n>1, maka :
a. DIVIDE: bagi table a menjadi dua bagian, bagian kiri dan bagian kanan,
masing-masing bagian berukuran n/2 elemen.
b. CONQUER: secara rekursif, terapkan algoritma D-and-C pada masing-
masing bagian.
Marge Sort dan Rekursif


Algoritma dan Struktur Data


c. MERGE: gabung hasil pengurutan kedua bagian sehingga diperoleh
table a yang terurut.

RECURRENCE
Rekursif adalah teknik pemecahan masalah yang powerful dan dapat
digunakan ketika inti dari masalah terjadi berulang kali. Tentu saja, tipe dari
masalah ini dapat dipecahkan mengunakan perkataan berulang-ulang (yaitu,
menggunakan konstruksi looping seperti for, while dan do-while).
Sesungguhnya, iterasi atau perkataan berulang-ulang merupakan
peralatan yang lebih efisien jika dibandingkan dengan rekursif tetapi
rekursif menyediakan solusi yang lebih baik untuk suatu masalah. Pada
rekursif, method dapat memanggil dirinya sendiri. Data yang berada dalam
method tersebut seperti argument disimpan sementara ke dalam stack
sampai method pemanggilnya diselesaikan.

Rekursi berarti suatu proses yang bisa memanggil dirinya sendiri.
Contoh proses menghitung nilai faktorial
Faktorial (0) = 1 ..................(1)
Faktorial (N) = N * Faktorial (N-1), N > 0 ...........(2)
Persamaan (2) merupakan contoh hubungan rekurensi, yang berarti bahwa nilai
suatu fungsi dengan argumen tertentu bisa dihitung dari fungsi yang sama
dengan argumen yang lebih kecil. Persamaan (1) yang tidak bersifat rekursif
disebut nilai awal.

Setiap fungsi rekursi paling sedikit memiliki 1 nilai awal, jika tidak, fungsi
tersebut tidak bisa dihitung secara eksplisit.

Contoh:
Function Fakt (N: integer): integer;
Begin
If N=0 then
Fakt := 1;
Else
Fakt := N * Fakt(N-1)
End;
Marge Sort dan Rekursif


Algoritma dan Struktur Data


Berapa untuk N = 4
Panah ke bawah menunjukkan nilai parameter aktual yang
dilewatkan ke dalam fungsi FAKT
Setelah mengeksekusi FAKT(0) proses rekursif berhenti.
Angka pada anak panah ke atas menunjukkan nilai faktorial yang
diperoleh setelah fungsi FAKT selesai dikerjakan menggunakan nilai
parameter aktual




Ukuran running time pada suatu algoritma pada input yang konstan
adalah konstan, maka untuk n cukup kecil, rekurensi yang menyatakan
running time algoritmanya adaah T(n) = O(1).
Oleh karena itu biasanya syarat batas dari rekurensi tidak dituliskan dan
dianggap bahwa T(n) adalah konstan untuk n cukup kecil.


Metode Penyelesaian Rekurensi:
Dalam metode substitusi, kitamenebak induksi matematika terikat dan kemudian
digunakan untuk membuktikan menebak kita benar. Para metode rekursi-pohon
mengubah kekambuhan menjadi sebuah pohon node yang mewakili biaya yang
terjadi pada berbagai tingkatan rekursi, kami menggunakan teknik untuk berlari
penjumlahan untuk memecahkan kambuh. Metode Master memberikan batas
untuk kambuh dalam bentuk
T (n) = aT (n / b) + f (n), mana 1, b> 1, dan f (n) adalah fungsi yang
diberikan, itu membutuhkan hafalan tiga kasus, tetapi sekali Anda
melakukannya, menentukan batas asimtotik untuk sederhana banyak mudah
kambuh.
1. Metode Subsitusi
Metode Substitusi
Pertama-tama dibuat suatu guess dari bentuk solusinya.
Gunakan induksi matematika untuk membuktikan bahwa guess itu
benar.

> +
=
=
1 ) ( )
2
( 2
1 ) 1 (
) (
n jika n O
n
T
n jika O
n T
Marge Sort dan Rekursif


Algoritma dan Struktur Data


Metode ini dapat digunakan untuk menentukan baik batas atas
maupun batas bawah suatu rekurensi.
Contoh:
Tentukan batas atas dari T(n) = 2(T(n/2)) + n
Jawab:
Pertama, dibuat guess dari solusinya adalah T(n) = O(n lg n)
Kedua, dibuktikan dengan induksi matematis bahwa solusi di atas benar,
yaitu dibuktikan bahwa T(n) s c (nlgn)
Basis untuk n = 2,
T(2) = 2(T(2/2))+ 2 = 4 s c (2lg2), dengan c > 2
Anggap solusi diatas berlaku untuk n/2, yaitu T(n/2) s c (n/2) lg
(n/2)
Dibuktikan bahwa solusi diatas berlaku untuk n


Substitusikan pertidaksamaan T(n/2) s c (n/2) lg (n/2) ke rekurensi,
diperoleh:
T(n) s 2 (c (n/2) lg (n/2)) + n
s cn lg (n/2) + n
s cn lg (n) cn lg 2 + n
= cn lg n cn + n
s cn lg n, untuk c > 1 (terbukti)
Jadi batas atas dari rekurensi diatas adalah T(n) = O (n lg n)
2. Metode Iterasi
Prinsip dari metode iterasi adalah menjabarkan rekurensi sebagai suatu
bentuk penjumlahan yang hanya bergantung pada n dan syarat awal.

3. Metode /Teorema Master
Misalkan T(n) adalah fungsi menaik yang memenuhi relasi rekurens:
T(n) = aT(n/b) + cn
d
Marge Sort dan Rekursif


Algoritma dan Struktur Data


dalam hal ini n = b
k
, k = 1, 2, , a > 1, b > 2, dan c dan d adalah bilangan riil
> 0, maka






Contoh: Pada algoritma Mergesort/Quick Sort,
Menurut Teorema Master, a = 2, b = 2, d = 1, dan
a = b
d
, maka relasi rekurens:
T(n) = 2T(n/2) + cn = O(n log n)
T(n) adalah

>
=
<
d a
d d
d d
b a n O
b a n n O
b a n O
b
jika ) (
jika ) log (
jika ) (
log

You might also like