Analisis Devide and Conquer

download Analisis Devide and Conquer

of 7

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