Analisis Devide and Conquer
Transcript of Analisis Devide and Conquer
-
7/25/2019 Analisis Devide and Conquer
1/7
MAKALAHCSG3F3DESAINDANANALISISALGORITMATAHUN2015
Perbandingan Algoritma Brute Force dengan Divide and Conquer
untuk Game Mencari Kata
Sahna Melly Marselina 1301158609
Putu Jea Mitha Apsari 1301158649
Alamat : Jl. Telekomunikasi No. 1 Bandunge-mail: [email protected],[email protected]
ABSTRAK
Perkembangan komputer yang begitu pesat sudah merambah dalam berbagai bidang, termasuk di dalamnya adalah
perkembangan metode pembelajaran menggunakan game sebagai media perantara. Salah satu game yang dapat
dimanfaatkan sebagai media edukasi adalah gamemencari kata. Gamemencari kata merupakan permainan menebak
kata berdasarkan kategori kata yang diberikan oleh aplikasi. Dalam makalah ini penulis mencoba membandingkandua metode pembuatan GameMencari Kata, yakni dengan metode Brute Forcedan metode Di vide and Conquer. Metode
Bru te Forcediaplikasikan pada algoritma GameMencari Kata dengan cara membandingkan nilai array soal[inputan]
dengan array bahasa[] yang merupakan array untuk menyimpan jawaban yang benar. Sedangkan, metode Divide and
Conquer diaplikasikandengan menggunakan binary search. Devide and Conquer dalam GameMencari Kata adalah
sebuah algoritma pencarian dengan cara membagi array bahasa[] menjadi dua bagian setiap kali terjadi proses
pencarian untuk menemukan kata tertentu dalam array tersebut. Array akan dibagi menjadi dua dengan
menggunakan nilai tengah (median), melakukan dilakukan sebuah pembandingan untuk menentukan apakah nilai
yang dicari ditemukan di dalam array bahasa[], kemudian mencari setengah sisanya dengan cara yang sama. Dengan
menerapkan prinsip algoritmaDivide and Conquer, hasil dari pembagian array tersebut dibandingkan untuk
menemukan jawaban akhir, apakah nilai dari jawaban yang dipilih pemain benar atau tidak.
Kata kunci:Binary Search, Divide and Conquer, Brute Force, Mencari Kata
1. PENDAHULUAN
Pada era globalisasi saat ini, perkembangan komputer yang begitu pesat sudah merambah dalam berbagai bidang
kehidupan, termasuk di dalam bidanggame. Gamejuga merupakan bentuk aplikasi yang edukatif, artinya bisa dijadikan sebagaimedia pembelajaran. Salah satu game yang dapat dimanfaatkan sebagai media edukasi adalah game mencari kata. Game
mencari kata merupakan permainan menebak kata berdasarkan kategori kata yang diberikan oleh aplikasi.
Ada berbagai metode yang dapat digunakan untuk membangun game mencari kata ini, namun dalam membangun sebuah
program tidak hanya harus benar tapi harus juga efisien, dalm hal ini adalah dari segi waktu. Kompleksitas Waktu, T(n) yaitu
kompleksitas yang dihitung berdasarkan jumlah operasi abstrak yang mendasari suatu algoritma, dan memisahkan analisisnya
dari implementasi. Kompleksitas waktu algoritma dihitung berdasarkan jumlah operasi perbandingan elemen larik (A[i] >
maks). T(n) diukur dari jumlah tahapan komputasi yang dibutuhkan untuk menjalankan algoritma sebagai fungsi dari ukuranmasukan n.
Pada makalah ini penulis membandingkan kompleksits waktu dari dua metode yang dapat digunakan dalam pembangunan
game mencari kata, yakni dengan menggunakan metodeBrute Force dan metodeDivide and Conquer. AlgoritmaBrute Force
seringkali lebih mudah diimplementasikan daripada algoritma yang lebih canggih, dan karena kesederhanaannya. Algoritma
brute force sebenarnya bukanlah algoritma yang cerdas dan efisien, karena umumnya ia membutuhkan jumlah langkah yang
besar dan banyak dalam penyelesaiannya dan tentu saja membutuhkan waktu yang berbanding lurus dengan jumlah langkah
penyelesaiannya. Algoritma Divide and Conquer adalah strategi pemecahan masalah yang besar dengan cara melakukan
pembagian masalah yang besar tersebut menjadi beberapa bagian yang lebih kecil secara rekursif (terdapat pada gambar 1.1)
sehingga diharapkan masalah tersebut dapat dipecahkan secara langsung tanpa membutuhkan banyak waktu seperti metode
Brute Force.
mailto:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]:[email protected] -
7/25/2019 Analisis Devide and Conquer
2/7
MAKALAHCSG3F3DESAINDANANALISISALGORITMATAHUN2015
Kedua metode tersebut akan dibandingkan hingga dapat disimpulkan metode mana yang paling efektif dalam kasus game
mencari kata. Berdasarkan uraian permasalahan di atas, kami mencoba mengambil judul Perbandingan AlgoritmaBrute ForcedenganDivide and Conquer untuk Game Mencari Kata.
Gambar 1.1. Skema metode Devide and Conquer
2. METODE
Berikut merupakan metodemetode yang diaplikasikan ke dalam GameMencari Kata, yaitu :
2.1 Metode Penyelesaian dengan Brute Force
Brute force adalah sebuah pendekatan yang lempang (straight forward) untuk memecahkan suatu masalah, biasanya
didasarkan pada pernyataan masalah (problem statement) dan definisi konsep yang dilibatkan. Algoritma brute force
memecahkan masalah dengan sangat sederhana, langsung dan dengan cara yang jelas (obvious way). Algoritma brute forceseringkali lebih mudah diimplementasikan daripada algoritma yang lebih canggih, dan karena kesederhanaannya, kadang-
kadang algoritma brute force dapat lebih mangkus (ditinjau dari segi implementasi).
Algoritma brute force sebenarnya bukanlah algoritma yang cerdas dan mangkus (efisien), karena ia membutuhkan
jumlah langkah yang besar/banyak dalam penyelesaiannya dan tentu saja membutuhkan waktu yang berbanding lurus dengan
jumlah langkah penyelesaiannya. Kadang-kadang algoritma brute force disebut juga algoritma naif (nave algorithm).
Pada algoritma mencari kata, metode ini diaplikasikan dengan cara membandingkan inputan dengan array bahasa[] yangmerupakan array untuk menyimpan jawaban yang benar. Misalnya terdapat array soal :
[0] Netbeans
[1] CMD
[2]Notepad++[3]C
[4]SQL Plus
[5]Pascal
[6]C++[7]Java
[8]Devc++ Manakah yang termasuk bahasa pemograman ? Kemudian inputannya adalah 4 (C)
Maka berikut langkah algoritma brute force :
C C++ Pascal Java
Gambar 2.1.1 Array bahasa[] dengan cursor berada pada index 0
-
7/25/2019 Analisis Devide and Conquer
3/7
MAKALAHCSG3F3DESAINDANANALISISALGORITMATAHUN2015
Nilai dari array soal[jawaban] terlebih dahulu akan ditampung pada variable bernama tampung. Pada gambar 2.1 pengecekan
akan dilakukan di array bahasa yang dimulai dari array pertama, jika nilai dari array bahasa[0] tidak sama dengan tampungmaka hasilnya false. Kemudian cursor akan berpindah ke baris selanjutnya. Jika nilai array bahasa[n] sama dengan nilai
tampung maka hasilnya true dan cursor akan berhenti bergerak. Sehingga tampung merupakan jawaban yang benar.
Apabila inputnya adalah 0 (Netbeans) , maka cursor akan melakukan pengecekan dari array bahasa[0] sampai arraybahasa[3] namun cursor tidak akan menemukan nilai tampung di dalam array bahasa[]. Hal ini disebabkan karena kata netbeans
tidak terdapat dalam array bahasa[] sehingga hasilnya false dan jawaban tampung adalah salah.
Function BruteForce (Input tampung string, nb: int)
/* nb merupakan panjang string bahasa, dan array Bahasa merupakan variable
global */
Kamus
bool akhir;
Algoritma
akhir = false;for (int i = 0; i < nb; i++)do
if(tampung==bahasa[i])then
akhir = true;/* kemudian bisa langsung di lakukan break atu tetp menegecek sampi akhir array bahasa,
dalam algoritma ini dilakukan pengecekan sampai akhir array bahasa*/
end if;
end for
return akhir;
Dari operasi tersebut maka akan didapatkan hasil T(n) = n dan O(n).
Gambar 2.1.2 Waktu kompolasi
Gambar 2.1.3 Ilustrasi GameMencari Kata
-
7/25/2019 Analisis Devide and Conquer
4/7
MAKALAHCSG3F3DESAINDANANALISISALGORITMATAHUN2015
Gambar 2.1.4 Waktu yang dibutuhkan untuk menyelesaikan game dengan asumsiBest Case
2.2 Metode Penyelesaian dengan Divide and Conquer
Algoritma Divide and Conquer adalah strategi pemecahan masalah yang besar dengan cara melakukan pembagianmasalah yang besar tersebut menjadi beberapa bagian yang lebih kecil secara rekursif sehingga masalah tersebut dapat
dipecahkan secara langung. Solusi yang didapat dari setiap bagian kemudian digabungkan untuk membentuk sebuah solusi
yang utuh. Pada algoritmaDivide and Conquer ini memiliki tiga proses utama yaitu :
1)Divide, yaitu membagi masalah menjadi beberapa masalah yang memiliki kemiripan dengan masalah semula namun
berukuran lebih kecil (idealnya berukuran hamper sama).
2) Conquer, yaitu memecahkan masalah (menyelesaikan) masing-masing masalah (secara rekursif).3) Combine, yaitu menggabungkan solusi masing-masing masalah sehingga membentuk solusi masalah semula.
Pada algoritma mencari kata, metode ini diaplikasikan dengan cara binary search. Binary search adalah sebuah algoritmapencarian dengan cara membagi array bahasa[] menjadi dua bagian setiap kali terjadi proses pencarian untuk menemukan kata
tertentu dalam array tersebut. Aplikasi membagi mencari nilai tengah (median), melakukan sebuah pembandingan untuk
menentukan apakah nilai yang dicari ada sebelum atau sesudahnya, kemudian mencari setengah sisanya dengan cara yang
sama.
[0] Netbeans
[1] CMD
[2]Notepad++
[3]C
[4]SQL Plus
[5]Pascal[6]C++
[7]Java
[8]Devc++
Manakah yang termasuk bahasa pemograman ? Kemudian inputannya adalah 4 (C)
Maka berikut langkah algoritma Divide and Conquer :
C C++ Pascal Java
C C++
C C++ Pascal Java
Gambar 2.2.1 Skema metode Divide and Conquer
divide
conquer
-
7/25/2019 Analisis Devide and Conquer
5/7
MAKALAHCSG3F3DESAINDANANALISISALGORITMATAHUN2015
Nilai dari array soal[jawaban] terlebih dahulu akan ditampung pada variable bernama tampung Pada gambar 2.2 array
bahasa[] dibagi menjadi 2 array sehingga keduanya memiliki panjang array dua karena panjang array berjumlah genap. Keduaarray tersebut masing- masing memiliki cursor, kemudian cursor berada di array[0] pada array pertama dan cursor berada pada
array[(n/2)] pada array kedua. Kedua cursor tersebut melakukan pengecekkan pada array secara bersamaan. Jika nilai dari array
bahasa[n] sama dengan tamping maka hasilnya true. Misalnya pada array kedua, kata Ctidak ditemukan sehingga nilainya
false. Sedangkan pada array sebelah kiri, kata C berada pada array[0] sehingga hasilnya true. Seluruh hasil perbandingan dari
kedua array tersebut kemudian di combine, sehingga jika ditemukan satu saja true di antara keduanya maka jawaban yang benar
telah ditemukan dan C merupakan jawaban benar.
Function DivideAndConquer (Input tampung string, nb: int, pointerAwal int,
pointerAkhir int)
/* nb merupakan panjang string bahasa, dan array Bahasa merupakan variable
global.*/
Kamus
bool akhir;
Algoritma
akhir = false;
If (pointerAwal==pointerAkhir) then
if(tampung==bahasa[pointerAwal])then
akhir = true;
end if;
else if (pointerAwal-pointerAkhir==1) then
bool satu, dua;
if(tampung==bahasa[pointerAwal])then
satu = true;
end if;
if(tampung==bahasa[pointerAkhir])then
dua = true;end if;
akhir = combine(satu, dua);
else if (pointerAwal-pointerAkhir>1) then
bool satu, dua;
int bagi=nb/2;
if(nb%2==0])then
satu = DivideAndConquer (tampung, bagi, pointerAwal, bagi-1);
dua = DivideAndConquer (tampung, bagi, bagi, pointerAkhir);
else if(nb%2==1)then
satu = DivideAndConquer (tampung, bagi, pointerAwal, bagi-1);
dua = DivideAndConquer (tampung, bagi+1, bagi, pointerAkhir);end if;
akhir = combine(satu, dua);
return akhir;
Adapun perhitungan kompleksitas waktu yang didapatkan adalah sebagai berikut.
1 , n=1
T(n) = 1 , n=2
2T(n/2)+1 , n>2
-
7/25/2019 Analisis Devide and Conquer
6/7
MAKALAHCSG3F3DESAINDANANALISISALGORITMATAHUN2015
Penyelesaian:
Asumsi: n= 2k, dengan kbilangan bulat positif, maka
T(n) = 2T(n/2)+1
= 2(2T(n/4)+1)+1 = 4T(n/4)+2+1
= 4(2T(n/8)+1)+2+1 = 8T(n/8)+4+2+1
= .
= 2k-1T(2k/2k) + 2k
= 2k-1T(1) + 2k
= 2k-1. 1 + 2k
= 2k (2-1+1)
= 2k (3/2)
= 3/2 n
= O(n)
Dari operasi tersebut maka akan didapatkan hasil T(n) = 3/2 n dan O(n).
Gambar 2.2.2 Waktu kompolasi
Gambar 2.2.3 Ilustrasi GameMencari Kata
Gambar 2.2.4 Waktu yang dibutuhkan untuk menyelesaikan game dengan asumsiBest Case
-
7/25/2019 Analisis Devide and Conquer
7/7
MAKALAHCSG3F3DESAINDANANALISISALGORITMATAHUN2015
3. KESIMPULAN
Game mencari kata merupakan permainan tebak kata yang berhubungan dengan kategori kata yang ditampilkan oleh
aplikasi. T(n) Brute Force adalah n sedangkan T(n) divide and Conquer adalah 3/2 n. Dapat dilihat berdasarkan t(n) yang
didapat bahwa algoritmaBrute Forcelebih efisien daripada algoritma Divide and Conquerdalam kasus GameMencari Kataini. Oleh karena itu, tidak selamanya metode Devide And Conquer membuat kompleksitas waktu menjadi lebih efisien,
bergantung dari kasus seperti apa yang akan diterapkan dengan mentode ini. Dalam kasus GameMencari Kata ini, baik metode
brute force dan devide and conquer mengecek seluruh isi array tanpa ada pengurangan skala pengecekan. Dapat disimpulkan
untuk kasus seperti kasus GameMencari Kata yang isi array nya tidak dapat dibandingkan berdaarkan besar nilainya akan lebih
efisien jika menggunakan metodeBrute Force.
REFERENSI
[1] Mumhana. 2013. Pengertian Metode Divide & Conquer dan Algoritma Divide & Conquer.
http://mumhanaartanti.blogspot.com/2013/10/pengertian-metode-divide-conquer-dan.html , Diakses pada : 10 Desember 2015[2] Sukrisnha, Pande Gede. 2013. Algoritma Brute Force dalam Pencarian String. http://torikiri.wordpress.com/2013/09/10/algoritma-
brute-force-dalam-pencarian-string/, Diakses pada : 10 Desember 2015
[3] Angio, UDN 2014. Konsep Binary Search.http://blog-sharings.blogspot.co.id/2012/07/konsep-binary-search.html ,Diakses pada : 12Desember 2015
http://mumhanaartanti.blogspot.com/2013/10/pengertian-metode-divide-conquer-dan.htmlhttp://mumhanaartanti.blogspot.com/2013/10/pengertian-metode-divide-conquer-dan.htmlhttp://torikiri.wordpress.com/2013/09/10/algoritma-brute-force-dalam-pencarian-string/http://torikiri.wordpress.com/2013/09/10/algoritma-brute-force-dalam-pencarian-string/http://torikiri.wordpress.com/2013/09/10/algoritma-brute-force-dalam-pencarian-string/http://torikiri.wordpress.com/2013/09/10/algoritma-brute-force-dalam-pencarian-string/http://blog-sharings.blogspot.co.id/2012/07/konsep-binary-search.htmlhttp://blog-sharings.blogspot.co.id/2012/07/konsep-binary-search.htmlhttp://blog-sharings.blogspot.co.id/2012/07/konsep-binary-search.htmlhttp://blog-sharings.blogspot.co.id/2012/07/konsep-binary-search.htmlhttp://torikiri.wordpress.com/2013/09/10/algoritma-brute-force-dalam-pencarian-string/http://torikiri.wordpress.com/2013/09/10/algoritma-brute-force-dalam-pencarian-string/http://mumhanaartanti.blogspot.com/2013/10/pengertian-metode-divide-conquer-dan.html