13
ANALISIS ALGORITMA (PENCARIAN NILAI MAX DENGAN MENGGUNAKAN METODE DIVIDE AND CONQUER DAN METODE BRUTE FORCE) Oleh Adnan P. Rihi Pati (1006082001) Apriyanto Arkiang (1006082003) Sepri Y. Obije (1006082014) Esrit Dorina Nenabu (1006082005) ILMU KOMPUTER UNIVERSITAS NUSA CENDANA KUPANG 2013 Abstrak Dalam sebuah program, running time menjadi alasan efisiennya suatu program. Pada pencarian nilai max dan min dari suatu program dapat menggunakan berbagai algoritma,misalnya algoritma Devide and Conqure dan algoritma Brute Force. Namun diantara kedua algoritma ini, Devide and Conqure dirasakan lebih efisien untuk penggunaan running time-nya walaupun algoritma yang digunakan cukup rumit. Kata kunci: nilai max,devide and conqure,brute force. 1.PENDAHULUAN Dalam mengerjakan suatu program, banyak cara yang

Makalah AA

Embed Size (px)

Citation preview

Page 1: Makalah AA

ANALISIS ALGORITMA

(PENCARIAN NILAI MAX DENGAN MENGGUNAKAN

METODE DIVIDE AND CONQUER DAN METODE BRUTE FORCE)

Oleh

Adnan P. Rihi Pati (1006082001)

Apriyanto Arkiang (1006082003)

Sepri Y. Obije (1006082014)

Esrit Dorina Nenabu (1006082005)

ILMU KOMPUTER

UNIVERSITAS NUSA CENDANA

KUPANG

2013

Abstrak

Dalam sebuah program, running time menjadi alasan efisiennya suatu program. Pada

pencarian nilai max dan min dari suatu program dapat menggunakan berbagai

algoritma,misalnya algoritma Devide and Conqure dan algoritma Brute Force. Namun

diantara kedua algoritma ini, Devide and Conqure dirasakan lebih efisien untuk penggunaan

running time-nya walaupun algoritma yang digunakan cukup rumit.

Kata kunci: nilai max,devide and conqure,brute force.

1. PENDAHULUAN

Dalam mengerjakan suatu program,

banyak cara yang digunakan untuk

mencapai hasil yang diharapkan. Namun

cara-cara yang digunakan kadang efektif

dan kadang kurang efektif. Keefektifan

suatu program dapat dilihat ketika program

program tersebut dijalankan (di-run) dan

dilihat waktu berjalannya (running time)

yang dihasilkan.

Dalam program, keefektifan suatu

program dapat diperhatikan melalui

algoritma apa yang digunakan. Algoritma-

algoritma tersebut berpengaruh dalam waktu

mengeksekusi program tersebut. Banyak

algoritma yang sering digunakan untuk

Page 2: Makalah AA

menyelesaikan masalah seperti Algoritma

Colussi, Algoritma Crochemore-Perrin,

Algoritma turbo Boyer-Moore, algoritma

pencarian binery, algoritma divide and

conquer dan algoritma brute force.

Dalam menyelesaikan masalah efisien

program, biasanya digunakan algoritma

divide and conquer. Algoritma divide and

conquer merupakan algoritma yang sangat

populer. Prinsip dari algoritma ini adalah

memecah-mecah masalah yang ada menjadi

beberapa bagian kecil sehingga lebih mudah

untuk diselesaikan. Selain algoritma divide

and conquer, ada juga algoritma brute force.

Algoritma brute force merupakan algoritma

pencocokan string yang ditulis tanpa

memikirkan peningkatan performa.

Algoritma ini sangat jarang dipakai dalam

praktik, namun berguna dalam studi

pembanding dan studi-studi lainnya.

Pada pencarian nilai maks dan min pada

sebuah program, dapat menggunakan

algoritma devide and conquer dan algoritma

brute force. Dengan menggunakan

algoritma ini, dapat meningkatkan efisien

dari suatu program.

2. LANDASAN TEORI

A. ALGORITMA BRUTE FORCE

Brute force adalah sebuah

pendekatan yang sangat jelas

(straightforward) untuk memecahkan

suatu persoalan, biasanya didasarkan

pada problem statement dan definisi

konsep yang dilibatkan.Algoritma brute

force memecahkan masalah dengan

sangat sederhana, langsung dan dengan

cara yang jelas .

Teknik algoritma Brute-force

merupakan suatu teknik yang biasa

digunakan bila penyusun algoritma

lebih mempertimbangkan memperoleh

solusi dari problem secara langsung/apa

adanya, tanpa mempertimbangkan

efisiensi dengan meminimumkan jumlah

operasi yang dapat dilakukan untuk

mencapai solusi tersebut

Cara kerja Algoritma Brute Force

1. Enumerasi (list) setiap solusi yang

mungkin dengan cara yang

sistematis.

2. Evaluasi setiap kemungkinan solusi

“satu per satu” dan simpan solusi

terbaik yang ditemukan sampai

sejauh ini (the best solusi found so

far).

3. Bila pencarian solusi berakhir,

umumkan solusi terbaik (the winner)

Karakteristik Algoritma Brute Force

1. Algoritma brute force umumnya

tidak “cerdas” dan tidak efisien,

karena ia membutuhkan jumlah

langkah yang besar dalam

penyelesaiannya. Kadangkadang

algoritma brute force disebut juga

algoritma naif (naïve algorithm).

Page 3: Makalah AA

2. Algoritma brute force seringkali

merupakan pilihan yang kurang

disukai karena ketidakefisienannya

itu, tetapi dengan mencari pola-pola

yang mendasar, keteraturan, atau

trik-trik khusus, biasanya akan

membantu kita menemukan

algoritma yang lebih cerdas dan

lebih efisien.

3. Untuk masalah yang ukurannya

kecil, kesederhanaan brute force

biasanya lebih diperhitungkan

daripada ketidakefisienannya.

Algoritma brute force sering

digunakan sebagai basis bila

membandingkan beberapa alternatif

algoritma yang efisien.

4. Algoritma brute force seringkali

lebih mudah diimplementasikan

daripada algoritma yang lebih

canggih, dan karena

kesederhanaannya, kadang-kadang

algoritma brute force dapat lebih

efisien (ditinjau dari segi

implementasi).

5. Meskipun bukan metode yang

efisien, hampir semua masalah dapat

diselesaikan dengan algoritma brute

force. Sukar menunjukkan masalah

yang tidak dapat diselesaikan dengan

metode brute force. Bahkan, ada

masalah yang hanya dapat

diselesaikan dengan metode brute

force.

Contoh: mencari elemen terbesar di

dalam senarai.

Kelebihan dan Kelemahan Metode

Brute Force

Kelebihan:

1. Metode brute force dapat digunakan

untuk memecahkan hampir sebagian

besar masalah(wide applicability).

2. Metode brute force sederhana dan

mudah dimengerti.

3. Metode brute force menghasilkan

algoritma yang layak untuk beberapa

masalah penting seperti pencarian,

pengurutan, pencocokan string,

perkalian matriks.

4. Metode brute force menghasilkan

algoritma baku (standard) untuk

tugas-tugas komputasi seperti

penjumlahan/perkalian n buah

bilangan, menentukan elemen

minimum atau maksimum di dalam

tabel (list).

Kelemahan:

1. Metode brute force jarang

menghasilkan algoritma yang

efisien.

2. Beberapa algoritma brute force

lambat sehingga tidak dapat

diterima.

3. Tidak sekontruktif/sekreatif teknik

pemecahan masalah lainnya.

Page 4: Makalah AA

B. ALGORITMA DIVIDE AND

CONQUER

Algoritma Divide and Conquer

merupakan algoritma yang sangat

populer di dunia Ilmu Komputer. Divide

and Conquer merupakan algoritma yang

mempunyai prinsip, yaitu memecah-

mecah permasalahan yang terlalu besar

menjadi beberapa bagian kecil sehingga

lebih mudah untuk diselesaikan.

Langkah-langkah umum algoritma

Divide and Conquer :

Divide : Membagi masalah menjadi

beberapa upa-masalah yang

memiliki kemiripan dengan masalah

semula namun berukuran lebih kecil

( idealnya berukuran hampir sama ).

Conquer : Memecahkan

(menyelesaikan) masing-masing

upa-masalah ( secara rekursif ).

Combine : Menggabungkan solusi

masing-masing upa-masalah

sehingga membentuk solusi masalah

semula.

Langkah kerja Divide and Conquer :

1. Sebuah permasalahan dibagi

menjadi beberapa bagian yang lebih

sederhana dari permasalahan yang

sama, idealnya dengan ukuran yang

sama.

2. Bagian yang lebih sederhana

diselesaikan (biasanya secara

rekursif)

3. Jika diperlukan solusi yang didapat

dari bagian yang lebih sederhana

digabungkan untuk mendapatkan

penyelesaian untuk masalah yang

sebenarnya.

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.

Page 5: Makalah AA

Salah satu penggunaan algoritma ini

yang paling populer adalah dalam hal

pengolahan data yang bertipe array

( elemen larik ). 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.

Merge sort dan Quick sort mempunyai

kompleksitas algoritma O (n² log n). Hal

ini lebih baik jika dibandingkan dengan

pengurutan biasa dengan menggunakan

algoritma brute force.

Hal-hal yang penting pada Divide and

Conquer :

1. Branching Factor

Branching factor dalam algoritma

divide and conquer adalah jumlah

dari subproblem yang akan dibagi

dari sebuah problem awal. Ini adalah

langkah nyata dari algoritma divide

and conquer, didalam proses

pembagian yang sebenarnya, jumlah

dari branching factor harus 2 atau

lebih, karena jika tidak problem

tidak bisa dibagi. Banyak jenis

algoritma ini termasuk pula

algoritma komputasi geometric yang

memiliki branching factor

berjumlah.

2. Balance

Sebuah algoritma divide and

conquer dikatakan balance jika

problem awal dibagi menjadi sub-

sub problem dengan ukuran yang

sama. Yang artinya jumlah dari

keseluruhan ukuran subproblem

sama dengan ukuran problem awal

(initial problem). Algoritma

Mergesort dan binary tree, dan sama

halnya dengan algoritma reduksi &

prefix sum adalah beberapa contoh

algoritma divide and conquer yang

seimbang (balance).

3. Data Dependence of Divide

Function

Algoritma divide and conquer

memiliki sebuah fungsi pembagian

terhadap data yang memiliki

ketergantungan, artinya jika ukuran

relatif dari sebuah subproblem

tergantung pada proses input

datanya. Ini adalah salah satu ciri

Page 6: Makalah AA

dari algoritma yang tidak seimbang,

salah satu contohnya adalah

algoritma quicksort yang akan

membagi subproblem dengan fungsi

data-dependent divide.

4. Control Parallelism or

Sequentiality

Algoritma divide and conquer

dikatakan berurutan (sequential) jika

subproblem dieksekusi sesuai

dengan perintah program.

Paralelisasi dari algoritma divide and

conquer yang terurut pertama kali

didefinisikan oleh Mou’s

Divacon[Mou90], yang terjadi ketika

hasil dari salah satu sub-eksekusi

diperlukan oleh subeksekusi yang

lain. Dalam kasus ini hasil dari

subtree pertama diberikan (passing)

kepada proses komputasi subtree

kedua, supaya hasil akhir tersebut

bisa digunakan sebagai nilai

awalnya.

Kelebihan dan Kelemahan Metode

Divide and Conquer

Kelebihan

1. Umumnya meningkatkan pada Brute

Force dengan satu basis efisiensi

kelas

2. Mudah untuk menganalisis

menggunakan Recurrence Templates

3. Idealnya cocok untuk perhitungan

paralel

Kelemahan

1. Sering membutuhkan rekursi, yang

menyebabkan overhead

2. Dapat diterapkan dan inferior untuk

solusi algoritmik yang lebih

sederhana

3. HASIL DAN

PEMBAHASAN

Untuk mencari nilai max dalam

suatu deret angka dalam sebuah

program, kita dapat menggunakan

algoritma Brute Force atau algoritma

Devide and Conquer. Namun ketika

dijalankan, kita mencari di antara

algoritma ini manakah yang lebih efisien

dalam running time-nya.

Berikut algoritma yang digunakan

untuk mncari nilai max dengan

menggunakan algoritma Brute Force

'Untuk proses algoritma Brute force Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click Dim max As Integer = 0 Dim mulai, henti As VariantType mulai = Now.TimeOfDay.TotalMilliseconds For i = 0 To Convert.ToInt32(TextBox1.Text) - 1 If max < data(i) Then max = data(i) Next i Label2.Text = "MAX = " & max henti = Now.TimeOfDay.TotalMilliseconds Label4.Text = "TIME = " & (henti - mulai) & " MILISECOND" End Sub

Page 7: Makalah AA

Berikut algoritma yang digunakan

untuk mncari nilai max dengan

menggunakan algoritma Devide and

Conquer

'Untuk proses algo Devide and Conquer Sub rekur2(angka() As Integer, kiri As Integer, kanan As Integer, ByRef max As Integer) Dim max1, max2, mid As Integer If kiri = kanan Then max = angka(kiri) Else If (kiri = kanan - 1) Then If (angka(kiri) < angka(kanan)) Then max = angka(kanan) Else max = angka(kiri) End If Else mid = (kiri + kanan) / 2 rekur2(angka, kiri, mid, max1) rekur2(angka, mid + 1, kanan, max2)

If (max1 < max2) Then max = max2 Else max = max1 End If End If End If End Sub

Berikut merupakan hasil run dari

program tersebut

Proses diatas dilakukan berulang-

ulang dengan perubahan banyak

kapasitas data. Dengan perubahan data,

maka akan menghasilkan data sebagai

berikut

Dari data di atas, maka dapat dilihat

bahwa dengan jumlah data yang sama

namun dengan algoritma berbeda maka

akan menghasilkan waktu yang berbeda.

Dapat dilihat bahwa waktu yang

diperlukan untuk menjalankan program

dengan algoritma Brute Force lebih

singkat dibandingkan dengan waktu

yang dihasilkan menggunakan algoritma

Divide and Conqure.

Page 8: Makalah AA

Pada brute force sebelumnya data

terlebih dahulu dimasukkan secara acak

dengan jumlah tampungan sesuai

inputan dimana angka yang diacak

berada pada range 0 – 9999 kemudian

akan dilakukan perulangan sebanyak

inputan lalu akan diperiksa kondisinya

deengan membandingkan nilai max

yang awalnya 0 dengan data pada indeks

ke-i, jika max < dibadingkan data ke-i

maka max = data ke-i.

Pada devide and conqure, data

terlebih dahulu dimasukkan secara acak

dengan jumlah tampungan sesuai

inputan dimana angka yang diacak

berada pada range 0 – 9999 kemudian

divide and conquer ini menggunakan

metode rekursif, dimana metode rekursif

ini akan memanggil dirinya sendiri.

Metode ini akan membagi dua deret data

sampai pointer kanan = pointer kiri atau

pointer kanan-1 = pointer kiri. Setelah

membagi deret angka menjadi dua,

program akan membandingkan ke dua

data tersebut dan jika salah satu lebih

besar maka akan disimpan pada sebuah

variabel dimana variabel tersebut akan

digunakan lagi ketika data-data tersebut

akan digabungkan dan apabila semua

data tersebut akan digabungkan maka

akan didapat variabel yang berisi nilai

maksimum dari data-data yang ada.

Untuk algoritma Brute force,

kompleksitas algoritma ini adalah O(n)

sedangkan untuk running time brute

force adalah : n-1 multiplications.

Sedangkan untuk algoritma Devide and

Conqure, kompleksitas algoritma ini

adalah O(n ²log n) dan untuk running

time algoritma divide and conquer

T(n) = 2*T(n/2) + 1 = n-1

4. PENUTUP

Teknik algoritma Brute-force

merupakan suatu teknik yang biasa

digunakan bila penyusun algoritma

lebih mempertimbangkan memperoleh

solusi dari problem secara langsung/apa

adanya, tanpa mempertimbangkan

efisiensi dengan meminimumkan jumlah

operasi yang dapat dilakukan untuk

mencapai solusi tersebut

Divide and Conquer merupakan

algoritma yang berprinsip memecah-

mecah permasalahan yang terlalu besar

menjadi beberapa bagian kecil sehingga

lebih mudah untuk diselesaikan.

Dengan melakukan pencarian nilai

maksimum dengan menggunakan

algoritma Brute force dan Devide and

Conqure, dapat dilihat perbedaan-

perbedaan dari kedua algoritma ini. Dari

segi teknik pemrograman, Brute Force

tidak terlalu rumit untuk dipahami

sedangkan untuk Devide and Conqure,

sering kali sulit dipahami karena sering

kali menggunakan teknik rekursi. Pada

Page 9: Makalah AA

implementasinya, Brute Force

mendapatkan waktu yang lebih cepat

daripada Devide and Conqure. Hal ini

disebabkan karena algoritma devide and

Conqure lebih kompleks, dimana

algoritma ini membagi data menjadi dua

bagian dan memprosesnya satu per satu

sehingga waktu yang dibutuhkan lebih

lama. Dan setelah memisahkan dan

mendapat nilai maks dari tiap bagian,

kemudian menggabungkan menjadi satu

keutuhan data lagi untuk mendapatkan

nilai maks dari data tersebut. Namun

pada kenyataannya, Devide and

Conqure memiliki running time yang

lebih cepat dibandingkan metode Brute

Force, jika diproses secara bersamaan.