Anda di halaman 1dari 17

LAPORAN PRAKTIKUM II

RANCANGAN DANANALISA ALGORITMA


“ALGORITMA DEVIDE AND CONQUER”

Oleh:

Nama :Nailus Sakdah

NIM :1657301089

Kelas : TI 3 A

No praktikum :02/RAA/2019

Dosen pembimbing : Muhammad Arhami S.SI.,M.KOM

KEMENTRIAN RISET,TEKNOLOGI DAN PENDIDIKAN TINGGI


POLITEKNIK NEGERI LHOKSEUMAWE

2019
LEMBARAN PENGESAHAN

Judul Pratikum :Algoritma Devide and Conquer

Nomor Pratikum :02/RAA /2019

Nama : Nailus sakdah

NIM : 1657301089

Kelas/Prodi : TI 2.1 / Teknik Informatika

Tanggal Pratikum : 19 feb 2019

Tanggal Penyerahan : 26 feb 2019

Nilai :

Keterangan :

Dosen Pembimbing

Muhammad Arhami,S.SI.,M.KOM

i
DAFTAR ISI

Contents
LEMBARAN PENGESAHAN ......................................................................... i
DAFTAR ISI .................................................................................................... 1
BAB I ................................................................................................................ 2
1.1 Latar Belakang ......................................................................................... 2
1.2 Tujuan ...................................................................................................... 2
1.3 Dasar Teori .............................................................................................. 3
1.3.1 Defini Divide and Conquer................................................................ 3
1.3.2 Algoritma Standar Devide and Conquer ............................................ 3
1.3.3 Penerapan Algoritma Divide and Conquer ....................................... 5
BAB II............................................................................................................... 8
PEMBAHASAN ............................................................................................... 8
2.1 Percobaan................................................................................................. 8
BAB III ........................................................................................................... 14
KESIMPULAN .............................................................................................. 14
DAFTAR PUSTAKA ..................................................................................... 15

1
BAB I
PENDAHULUAN

1.1 Latar Belakang

Algoritma Divide and Conquer merupakan algoritma yang sangat populer di dunia Ilmu
Komputer. Divide and Conquer merupakan algoritma yang berprinsip memecah-mecah
permasalahan yang terlalu besar menjadi beberapa bagian kecil sehingga lebih mudah untuk
diselesaika. Objek masalah yang di bagi adalah masukan (input) atau instances yang
berukuran n: tabel (larik), matriks, dan sebagainya, bergantung pada masalahnya. 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. Sesuai dengan karakteristik pembagian dan pemecahan masalah tersebut, maka
algoritma ini dapat berjalan baik pada persoalan yang bertipe rekursif (perulangan dengan
memanggil dirinya sendiri). Dengan demikian, algoritma ini dapat diimplementasikan dengan
cara iteratif ( perulangan biasa ), karena pada prinsipnya iteratif hampir sama dengan rekursif.
Salah satu penggunaan algoritma ini yang paling populer adalah dalam hal pengolahan data
yang bertipe array ( elemen larik ). Mengapa ? Karena pengolahan array pada umumnya
selalu menggunakan prinsip rekursif atau iteratif. Penggunaan secara spesifik adalah untuk
mencari nilai minimal dan maksimal serta untuk mengurutkan elemen array. Dalam hal
pengurutan ini ada empat macam algoritma pengurutan yang berdasar pada algoritma Divide
and Conquer, yaitu merge sort, insert sort, quick sort, dan selection sort.
Pada praktikum ini akan dilakukan implementasi dan penerapan program menggunakan
algoritma Divide and Conquer.

1.2 Tujuan
Memahami konsep algoritma Divide and Conquer

2
1.3 Dasar Teori
1.3.1 Defini Divide and Conquer
Divide (Memecah): pada langkah ini kita memecahkan masalah atau data ke dalam
bentuk yang sama, tetapi dalam ukuran yang lebih kecil. Pemecahan langkah biasanya
dilakukan dengan menggunakan algoritma rekursif, sampai ukuran data menjadi sangat
kecil dan dapat diselesaikan dengan algoritma sederhana.
Conquer (Menaklukkan): dalam langkah ini kita mencoba menyelesaikan masalah
atau data yang telah dipecahkan pada langkah pertama, dengan menggunakan algoritma
sederhana.
Combine (Menggabungkan): setelah menjalankan langkah conquer, tentunya kita
harus menggabungkan kembali hasil dari masing-masing pecahan yang ada, untuk
mendapatkan hasil akhir kalkulasi. Langkah combine mencoba mencapai hal tersebut.
(sumber : https://bertzzie.com/knowledge/analisis algoritma/DivideAndConquer.html)

1.3.2 Algoritma Standar Devide and Conquer


Berikut ini adalah beberapa algoritma standar yang merupakan algoritma Divide and
Conquer.
1) Binary Search adalah algoritma pencarian. Di setiap langkah, algoritma
membandingkan elemen input x dengan nilai elemen tengah dalam array. Jika nilainya
cocok, kembalikan indeks tengah. Jika tidak, jika x kurang dari elemen tengah, maka
algoritma berulang untuk sisi kiri elemen tengah, yang lain berulang untuk sisi kanan
elemen tengah.
2) Quicksort adalah algoritma penyortiran. Algoritme mengambil elemen pivot,
mengatur ulang elemen array sedemikian rupa sehingga semua elemen lebih kecil dari
elemen pivot yang dipetik pindah ke sisi kiri pivot, dan semua elemen yang lebih besar
bergerak ke sisi kanan. Akhirnya, algoritma secara rekursif mengurutkan subarrays di
kiri dan kanan elemen pivot.
2) Quicksort adalah algoritma penyortiran. Algoritme mengambil elemen pivot,
mengatur ulang elemen array sedemikian rupa sehingga semua elemen lebih kecil dari
elemen pivot yang dipetik pindah ke sisi kiri pivot, dan semua elemen yang lebih besar
bergerak ke sisi kanan. Akhirnya, algoritma secara rekursif mengurutkan subarrays di
kiri dan kanan elemen pivot.

3
3) Gabung Sortir juga merupakan algoritma penyortiran. Algoritma membagi array
menjadi dua, membagi secara rekursif dan akhirnya menggabungkan dua bagian yang
diurutkan.

4) Pasangan Poin Terdekat Masalahnya adalah menemukan pasangan poin terdekat


dalam satu set poin di bidang xy. Masalahnya dapat diselesaikan dalam waktu O (n ^ 2)
dengan menghitung jarak setiap pasangan poin dan membandingkan jarak untuk
menemukan minimum. Algoritma Divide and Conquer menyelesaikan masalah dalam
waktu O (nLogn).

5) Algoritma Strassen adalah algoritma yang efisien untuk melipatgandakan dua


matriks. Metode sederhana untuk mengalikan dua matriks membutuhkan 3 loop
bersarang dan adalah O (n ^ 3). Algoritma Strassen mengalikan dua matriks dalam
waktu O (n ^ 2.8974).
6) Algoritma Cooley – Tukey Fast Fourier Transform (FFT) adalah algoritma yang
paling umum untuk FFT. Ini adalah algoritma divide and conquer yang bekerja pada
waktu O (nlogn).
7) Karatsuba algoritma untuk perkalian cepat itu tidak perkalian dua angka n -digit di
paling banyak 3 n ^ {\ log_23} \ sekitar 3 n ^ {1,585}satu digit perkalian pada
umumnya (dan tepat n ^ {\ log_23} ketika n adalah kekuatan 2). Karena itu lebih
cepat daripada algoritma klasik , yang membutuhkan n 2 produk satu digit. Jika n =
2 10 = 1024, khususnya, jumlah yang tepat adalah 3 10 = 59.049 dan (2 10 ) 2 =
1.048.576, masing-masing.
(sumber : https://www.geeksforgeeks.org/divide-and-conquer-algorithm-introduction/)

4
1.3.3 Penerapan Algoritma Divide and Conquer
Pemecahan Masalah Convex Hull dengan Algoritma Divide and Conquer.
Pada penyelasaian masalah pencarian Convex Hull dengan menggunakan algoritma
Divide and Conquer, hal ini dapat dipandang sebagai generalisasi dari algoritma
pengurutan merge sort.

Berikut ini merupakan garis besar gambaran dari algoritmanya:


1) Pertama-tama lakukan pengurutan terhadap titik-titik dari himpunan S yang
diberika berdasarkan koordinat absis-X, dengan kompleksitas waktu O(n log n).
2) Jika |S| = 3, maka lakukan pencarian convex hull secara brute-force dengan
kompleksitas waktu O(1). (Basis).
3) Jika tidak, partisi himpunan titik-titik pada S menjadi 2 buah himpunan A dan
B, dimana A terdiri dari setengah jumlah dari |S| dan titik dengan koordinat
absix-X yang terendah dan B terdiri dari setengah dari jumlah |S| dan titik
dengan koordinat absis-X terbesar.
4) Secara rekursif lakukan penghitungan terhadap HA = conv(A) dan HB =
conv(B).
5) Lakukan penggabungan (merge) terhadap kedua hull tersebut menjadi convex
hull, H, dengan menghitung da mencari upper dan lower tangents untuk HA dan
HB dengan mengabaikan semua titik yang berada diantara dua buah tangen ini.
6) Permasalahan convex hull adalah sebuah permasalahan yang memiliki aplikasi
terapan yang cukup banyak, seperti pada permasalahan grafika komputer,
otomasi desain, pengenalan pola (pattern recognition), dan penelitian operasi.
Divide and Conquer adalah metode pemecahan masalah yang bekerja dengan
membagi masalah menjadi beberapa upa-masalah yang lebih kecil, kemudian
menyelesaikan masing-masing upa-masalah tersebut secara independent, dan
akhirnya menggabungkan solusi masing-masing upa-masalah sehingga menjadi
solusi dari masalah semula. Algoritma Divide and Conquer merupakan salah
satu solusi dalam penyelesaian masalah convex hull. Algoritma ini ternyata
memiliki kompleksitas waktu yang cukup kecil dan efektif dalam
menyelesaikan permasalahan ini (jika dibandingkan algoritma lain). Selain itu
juga, algoritma ini dapat digeneralisasi untuk permasalahan convex hull yang
berdimensi lebih dari 3.
Persoalan Minimum dan Maksimum (MinMaks)
Persoalan : Misalnya diketahui table A yang berukuran n eleman sudah berisi nilai
integer. Kita ingin menentukan nilai minimum dan nilai maksimum sekaligus di dalam
table tersebut. Misalkan tabel A berisi elemen-elemen sebagai berikut :

Ide dasar algoritma secara Divide and Conquer :

5
Ukuran table hasil pembagian dapat dibuat cukup kecil sehingga mencari minimum dan
maksimum dapat diselesaikan (SOLVE) secara lebih mudah. Dalam hal ini, ukuran
kecil yang dipilih adalah 1 elemen atau 2 elemen.
Algoritma MinMaks :
1) Untuk kasus n = 1 atau n = 2,
SOLVE : Jika n = 1, maka min = maks = An. Jika n = 2, maka
bandingkan kedua elemen untuk menentukan min dan maks.

2) Untuk kasus n > 2,


 DIVIDE : Bagi dua table A secara rekursif menjadi dua bagian
yang berukuran sama, yaitu bagian kiri dan bagian kanan.
 CONQUER : Terapkan algoritma Divide and Conquer untuk
masing-masing bagian, dalam hal ini min dan maks dari table
bagian kiri dinyatakan dalam peubah min1 dan maks1, dan min
dan maks dari table bagian kanan dinyatakan dalam peubah
min2 dan maks2.
 COMBINE : Bandingkan min1 dan min2 untuk menentukan
min table A, serta bandingkan maks1 dan maks2 untuk
menentukan maks table A.

 Mencari pasangan titik yang jaraknya terdekat (Closest pair)


Persoalan: Diberikan himpunan titik, P, yang terdiri dari n buah titik, (xi,yi), pada
bidang 2-D. Tentukan jarak terdekat antara dua buah titik di dalam himpunan P.

6
Kumpulan titik-titik Pn

Penyelesaian dengan algoritma Divide and Conquer:


Asumsi: n = 2k dan titik-titik diurut berdasarkan absis (x).
Algoritma Closest Pair:
1) SOLVE: jika n = 2, maka jarak kedua titik dihitung langsung dengan rumus
Euclidean.
2) DIVIDE: Bagi himpunan titik ke dalam dua bagian, Pleft dan Pright, setiap
bagian mempunyai jumlah titik yang sama.
3) CONQUER: Secara rekursif, terapkan algoritma D- and-C pada masing-masing
bagian.
4) Pasangan titik yang jaraknya terdekat ada tiga
kemungkinan letaknya :
(a) Pasangan titik terdekat terdapat di bagian PLeft.
(b) Pasangan titik terdekat terdapat di bagian PRight.
(c) Pasangan titik terdekat dipisahkan oleh garis batas L, yaitu satu titik di PLeft dan
satu titik di PRight.
Jika kasusnya adalah (c), maka lakukan tahap COMBINE untuk mendapatkan jarak dua
titik terdekat sebagai solusi persoalan semula.

(sumber : piptools.net)

7
BAB II
PEMBAHASAN
2.1 Percobaan
2.1.1 Mencari Nilai Maksimun Dan Minimun Dengan Algoritma Brute Force
Source :

Output :

Analisa :
Pada percobaan ini untuk menentukan nilai maksimun dan nilai minimun dari suatu
deret bilangan digunakan algoritma Brute Force.Algoritma ini melakukan pendekatan
yang lempang untuk memecahkan permasalahan seperti pada percobaan ini dilakukan
perbandingan nilai1 dan nilai2,jika nilai2 lebih besar dari nilai1 maka nilai1 disimpan
sebagai nilai maks,kemudan nilai2 dibandingkan lagi dengan nilai3,jika nilai3 lebih
kecil dari nilai2 maka nilai2 yang disimpan sebagai nilai maks dan seterusnya.

8
2.1.2 Mencari Nilai Maksimun Dan Minimun Dengan Algoritma Devide and Conquer
Source :

Output :

Analisa :
Pada percobaan ini untuk menentukan nilai maksimun dan nilai minimun dari suatu
deret bilangan digunakan algoritma Divide and Conquer.Algoritma ini berprinsip
memecah-mecah permasalahan yang terlalu besar menjadi beberapa bagian kecil dan
kemudian dikombinasikn lagi untuk mendapatkan hasil.pada percobaan ini diinputkan
sebnyak 5,dari kelima nilai yang diinputkan dibagi menjadi dua bagian
misalnya,bagian1:12,56,32 bagian2: 99,2 pada kedua bagian tersebut ditentukan nilai
maksimum dan minimunnya,bagian1 memiliki nilai maksimum 56 dan minimum 12

9
,pada bagian2 memiliki nilai maksimum 99 dan nilai minimum 2.kemudian nilai dari
kedua bagian tersebut dibndingkan lagi sehingga hasil nilai maksimum=99 dan nilai
minimum=2.

2.1.3 Menghitung Jarak Dua Titik


Source :

Output :

Analisa :
Percobaan ini adalah percobaan untuk memenukan jarak dua buah titik dari sebuah
koordinat dengan menginput nilai x1,y1,y2 dan y2.nilai yang diinputkan kemudian
dimasukkan kedalam rumus untuk menghitung jarak terdekaty sehingga mendapatkan
hasil jarak terdekatnya.

10
2.1.4 Algorintma Pengurutan(Merge Sort) Dengan Metode Devide And Conquer
Source :

11
Output :

Analisa :
Program ini adalah program mengurutkan nilai dari yang terkecil ke yang terbesar
dengan menggunakan algoritma Devide and conquer dengan meninputkan jumlah data
dan kemudian menginputkan nilai sesuai dengan jumlah data yang diinput ,selanjutnya
data akan diurutkan dengan cara dibagi dua kemudian data dibandingkan mana yang
lebih kecil kemudian diurutkan dari yang paling kecil ke yang paling besar

12
2.1.5 Algorintma Pengurutan(Insert Sort) Dengan Metode Devide And Conquer
source :

output :

analisa :
program ini merupakan program pengurutan data dengan algoritma Devide and
Conquer menggunakan metode insert sort .pada percobaan ini diinputkan data sebanyak
6 kemudian yang yang telah dimasukkan di urutkan secara asscending dengan metode
insert sort

13
BAB III
PENUTUP

KESIMPULAN
Pada praktiku ini dapat disimpulkan bahwa :
Algoritma Divide and Conquer merupakan algoritma yang berprinsip memecah-mecah
permasalahan yang terlalu besar menjadi beberapa bagian kecil sehingga lebih mudah untuk
diselesaika. Objek masalah yang di bagi adalah masukan (input) atau instances yang
berukuran n: tabel (larik), matriks, dan sebagainya, bergantung pada masalahnya. 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. Sesuai dengan karakteristik pembagian dan pemecahan masalah tersebut, maka
algoritma ini dapat berjalan baik pada persoalan yang bertipe rekursif (perulangan dengan
memanggil dirinya sendiri).

14
DAFTAR PUSTAKA

1. https://bertzzie.com/knowledge/analisis algoritma/DivideAndConquer.html)

2. https://www.geeksforgeeks.org/divide-and-conquer-algorithm-introduction/)

3. Anonim .2011. Algoritma Divide and Conquer. https://piptools.net/algoritma-divide-

conquer . Diakses pada tanggal 09 Maret 2019.

15

Anda mungkin juga menyukai