Teknik Elektronika
Pendidikan Teknik Informatika
Puji syukur penulis ucapkan kepada Allah SWT yang telah melimpahkan rahmat dan
karuniah-Nya dengan membuka pintu hati dan pikiran penulis, sehingga penulis dapat
menyelesaikan makalah kelompok yang berjudul “Devide and Conquer”. Penulisan makalah ini
merupakan salah satu syarat untuk memenuhi tugas kelompok mata kuliah Kecerdasan Buatan.
Penulisan makalah ini tidak lepas dari bantuan dari berbagai pihak yang telah
memberikan bimbingan kepada penulis sehingga dapat menyelesaikan makalah. Dalam
kesempatan kali ini penulis mengucapkan terima kasih kepada dosen pembimbing mata kuliah
Kecrdasan Buatan karna telah membimbing penulis sehingga dapat menyelesaikan makalah ini.
Selaku hamba Allah, penulis adalah manusia yang tidak luput dari kesalahan, sehingga
masih banyak kelemahan baik dari segi materi maupun dalam penyajian penulisan makalah ini.
Untuk itu kritik dan saran dari pembaca sehingga pada penulisan pada masa akan datang bisa
jadi lebih baik.
Padang, 29 Maret 2019
Penulis
DAFTAR ISI
KATA PENGANTAR.................................................................................................................................2
BAB I..........................................................................................................................................................4
PENDAHULUAN.......................................................................................................................................4
1. Latar Belakang.................................................................................................................................4
BAB II.........................................................................................................................................................6
PEMBAHASAN.........................................................................................................................................6
2.2. Devide and Conquer....................................................................................................................6
2.2. STRATEGI DIVIDE AND CONQUER......................................................................................7
2.3. Binary Search..............................................................................................................................8
BAB III......................................................................................................................................................12
KESIMPULAN.........................................................................................................................................12
3..1. Kesimpulan................................................................................................................................12
1..1. Saran..........................................................................................................................................12
DAFTAR PUSTAKA................................................................................................................................13
BAB I
PENDAHULUAN
1. Latar Belakang
Proses pengenalan kata merupakan salah satu fungsi dari voice recognition. Voice
recognition dibagi menjadi dua jenis, yaitu speech recognition dan speaker recognition.
Berbeda dengan speaker recognition yang merupakan pengenalan identitas yang diklaim
oleh seseorang dari suaranya (ciri khusus dapat berupa intonasi suara, tingkat kedalaman
suara, dan sebagainya), speech recognition adalah proses yang dilakukan komputer untuk
mengenali kata yang diucapkan oleh seseorang tanpa mempedulikan identitas orang
terkait.
Ada beberapa metode yang bisa digunakan dalam pemrosesan sinyal suara dan
pencocokan pola suara. Metode untuk pemrosesan sinyal suara antara lain Mel Frequency
Cepstrum Coefisien (MFCC), Transformasi Wavelet, dan Linear Predictive Coding
(LPC). Untuk metode untuk pencocokan pola suara antara lain Jaringan Saraf Tiruan
(JST), Neuro-Fuzzy, Vector Quantization (VQ), Hidden Markov Model (HMM), Fast
Fourier Transfrom (FFT) dan Divide and Conquer (D&C).
Metode yang akan dibahas dalam penelitian ini adalah pencocokan pola suara
menggunakan algoritma Fast Fourier Transform dan Divide and Conquer. Algoritma Fast
Fourier Transform merupakan metode untuk mentransformasi sinyal suara menjadi sinyal
frekuensi. Artinya proses perekaman suara disimpan dalam bentuk digital berupa
gelombang spektrum suara berbasis frekuensi, dimana sinyal yang sebelumnya berada
dalam domain waktu akan dirubah dalam domain frekuensi. Divide and Conquer
merupakan algoritma yang berprinsip memecah-mecah permasalahan yang terlalu besar
menjadi beberapa bagian kecil sehingga mudah untuk diselesaikan. Alasan algoritma
Divide and Conquer ini digunakan adalah untuk mengetahui hasil pencocokan suara
dengan metode Divide and Conquer dan untuk mengoptimalkan waktu
pencocokan/pencarian sehingga kompleksitas berkurang. Dengan proses awal
mengkonversi data suara ke dalam bentuk bentuk diskrit (sampling), dari bentuk diskrit
inilah diambil fiturnya dengan feature extraction kemudian pencocokan data suara
menggunakan metode Divide and Conquer.
Pengenalan kata ini dapat diimplementasikan ke dalam berbagai masalah
kehidupan manusia, contohnya adalah sebagai pengontrol suatu sistem seperti peralatan
elektronik pada konsep rumah pintar yang tentunya membuat efisiensi penggunaan waktu
juga menawarkan kemudahan kepada pengguna, apalagi bagi yang mempunyai
keterbatasan fisik. Berdasarkan uraian permasalahan tersebut maka diperlukan
pembangunan aplikasi pengenalan kata dari sebuah perintah suara yang diucapkan dan
dapat dikenali oleh suatu mesin serta diterapkan pada kebutuhan kehidupan manusia, dari
keinginan itulah maka pada penelitian skripsi ini mengambil judul Aplikasi Perintah
Suara Dengan Metode Fast Fourier Transform dan Divide and Conquer Pada Simulasi
Rumah Pintar.
Divide and Conquer dulunya adalah strategi militer yang dikenal dengan nama
divide ut imperes. Sekarang strategi tersebut menjadi strategi fundamental di dalam ilmu
komputer dengan nama Divide and Conquer. Divide and Conquer adalah mengabungkan
solusi masing-masing masalah sehingga membentuk solusi masalah semula.
Terkadang dalam membuat program, ada banyak masalah yang kita temui. Divide
and Conquer yang akan dibahas di makalah ini nanti yang bisa membantu mahasiswa,
pembuat program (programmer), dan yang lain dalam menyelesaikan masalah dalam
suatu program. Maka dari itu kami membuat makalah ini dengan judul Algoritma Divide
and Conquer.
BAB II
PEMBAHASAN
Divide and conquer adalah varian dari beberapa strategi pemrograman topdown,
tetapi keistimewaannya adalah membuat sub-sub problem dari problem yang besar, oleh
karena itu strategi ini ditunjukkan secara berulang-ulang (recursively), didalam
menerapkan algoritma yang sama dalam sub-sub problem seperti yang diterapkan pada
masalah aslinya (original problem). Sebagaimana prinsip dasar algoritma perulangan
dibutuhkan sebuah kondisi untuk mengakhiri perulangan tersebut. Biasanya untuk
mengecek apakah problem sudah cukup kecil untuk diselesaikan dengan metode secara
langsung. Mungkin dari segi ilustrasi kita, bahwa proses-proses pada komputer paralel
tentunya memiliki proses/problem/job yang cukup kompleks sehingga harus dipecah-
pecah menjadi sub-sub problem.Selain dibutuhkansebuah“kondisi”,juga diperlukan “fase
divide” untuk membagi/memecah problem menjadi sub-sub problem yang lebih kecil,
dan “fase combine“ untuk menggabungkan kembali solusi dari sub-sub problem kedalam
solusi dari problem awalnya. Berikut pseudocode dari strategi divide and conquer:
Pseudocode diatas adalah sebagai acuan dari strategi divide and conquer, tetapi
dalam implementasinya ada beberapa diferensiasi dari bentuk diatas yang akan
digunakan. Sebelum masuk ke pokok pemrograman dengan “Divide and
Conquerstrategy/algorithm”,ada 4 hal penting yang harus dipahami dalam strategi ini
:branching factor,balance,data dependence of divide function dan sequentiality.
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 (initialproblem).
Algoritma Mergesort dan binary tree, dan sama halnya dengan algoritma reduksi & prefix
sum adalah beberapa contoh algoritma divide andconquer yang seimbang (balance).
Algoritma divide and conquer memiliki sebuah fungsi pembagian terhadap data
yang memiliki ketergantungan, artinya jika ukuran relatif dari sebuah algoritma yang
tidak seimbang, salah satu contohnya adalah algoritma quicksort yang akan membagi
subproblem dengan fungsi data-dependent divide.
Keterangan :
1. SMALL adalah fungsi yang mengirim BOOLEAN, menentukan apakah ukuran telah
cukup kecil sehingga solusi dapat diperoleh. . Ukuran dinyatakan sebagai telah berukuran
kecil bergantung masalah.
2. DIVIDE adalah fungsi membagi menjadi 2 bagian pada posisi K. Biasanya bagian
berukuran sama.
3. COMBINE adalah fungsi menggabungkan solusi X dan Y submasalah. Solusi
diperoleh dengan memanggil prosedur rekursif DNC.
Jika ukuran kedua submasalah sama, waktu komputasi DNC dideskripsikan hubungan
rekuren berikut :
T(n) = g (n), n kecil
2 T (n/2) + f (n), selainnya
dimana :
• T(n) adalah waktu untuk DNC dengan n masukan,
• g(n) adalah waktu komputasi jawaban secara langsung untuk masukan kecil dan
• f(n) adalah waktu COMBINE.
Untuk lebih jelasnya, perhatikan contoh berikut. Misalkan kita ingin mencari 17 pada
sekumpulan data berikut :
1. Data tengah yang baru didapat dengan rumus (6 + 6) / 2 = 6. Berarti data tengah yang
baru adalah data ke-6, yaitu 17.
2. Data yang dicari dibandingkan dengan data tengah ini dan ternyata sama. Jadi data
ditemukan pada indeks ke-6.
3. Bagaimana jika data yang dicari tidak ada, misalnya 16?
4. Pencarian biner ini akan berakhir jika data ditemukan atau posisi awal lebih besar dari
posisi akhir.
5. Jika posisi awal sudah lebih besar daripada posisi akhir berarti data tidak ditemukan.
Untuk lebih jelasnya perhatikan proses pencarian 16 pada data di atas. Prosesnya
hampir sama dengan pencarian 17. Tetapi setelah posisi awal = posisi akhir = 6, proses
masih dilanjutkan lagi dengan posisi awal = 6 dan posisi akhir = 5
Disini dapat dilihat bahwa posisi awal lebih besar daripada posisi akhir, yang artinya data
tidak ditemukan.
Secara umum, algoritma pencarian biner dapat dituliskan sebagai berikut :
1. l ← 1.
2. r ← N.
3. ketemu ← false.
4. selama ( l < = r ) dan (not ketemu) kerjakan baris 5 sampai dengan 8.
5. m ← ( l + r ) / 2
6. Jika ( Data [m] = x ) maka ketemu ← true.
7. Jika ( x < Data [m] ) maka r ← m – 1.
8. Jika ( x > Data [m] ) maka l ← m + 1.
9. If (ketemu) maka m adalah indeks dari data yang dicari, jika tidak data tidak
ditemukan.
Berikut ini adalah contoh fungsi untuk mencari data menggunakan pencarian biner.
if ( ketemu ) then
BinarySearch : = m
else
BinarySearch : = -1;
end;
Fungsi di atas akan mengembalikan indeks dari data yang dicari. Apabila data tidak
ditemukan, maka yang yang dikembalikan adalah –1.
Jumlah pembandingan minimum pada pencarian biner adalah 1 kali, yaitu bila data yang
dicari tepat berada di tengah-tengah. Jumlah pembandingan maksimum yang dilakukan
dengan pencarian biner dapat dicari dengan rumus logaritma, yaitu :
C = ²log (N)
2.4 Penerapan Algoritma
2.2.1. Pemecahan Masalah Convex Hull dengan Algoritma Divide and Conquer
Secara sederhana, pemasalahan convex hull ini adalah diberikan sebuah himpunan
titik-titik dalam sebuah bidang, lalu temukan convex hull dari titik-tititk ini
dengan keluaran dapat berupa list-of-verteks. Atau lebih formalnya:
Input: Himpunan S = (p1, p2, ..., pn) dimana p1,p2,...,pn merupakan titik-titik
pada bidang koordinat kartesius.
-
Misalkan Pmax dan Pmin adalah dua buah titik pada himpunan S yang
masing-masing merupakan titik maksimum dan titik minimum berdasarkan
koordinat absis-X.
- Lalu Pmax dan Pmin merupakan verteks dari convex hull
- Lalu, jika Pmax dan Pmin dihubungkan, akan terdapat garis yang akan
membagi convex hull menjadi dua bagian, yaitu upper hull dan lower hull.
- Garis L disebut dengan tangen dari convex poligon P jika semua verteks dari P
berada pada sisis yang sama dari L.
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:
L = {}
if n ≤ 30 then {ukuran masalah sudah cukup kecil }
SOLVE upa-masalah dengan metode brute-force
else
Bagi menjadi r upa-masalah, masing-masing berukuran n/k
Ha = P[1..n/2] HB = P[n/2+1..n] C_and_D_CH(Ha) C_and_D_CH(HB)
Pada algoritma di atas, dapat dilihat bahwa terdapat prosedur untuk mencari lower
tangen dan upper tangen. Algoritmanya merupakan suatu algoritma berjalan yang biasa.
Pada kasus ini, a diinisialisasi sebagai titik paling kanan dari HA dan b merupakan titik
paling kiri dari HB. Jika pasangan ab belum merupakan lower tangen untuk HA dan HB
, maka “nailkkan” a menjadi suksesor dari a dan “turunkan” b menjadi predesesor dari
b, sesuai dengan kaidah arah jarum jam.
Berikut adalah gambaran umum dalam pencarian lower tangen dari HA dan HB :
LowerTangen(HA, HB):
1) Misalkan a merupakan titik terkanan dari HA 2)Misalkan b merupakan titik terkanan dari HB
3)While (ab bukan merupakan lower tangen dari HA
dan HB)do
- While(ab bukan merupakan lower tangen dari HA) do a -> a.predesesor
4)Return ab
{mencari lower tangen dari Ha dan Hb, untuk mencari lower tangen, analogi}
Algoritma
while ab bukan lower tangen dar ha dan Hb do while ab bukan lower tangen dari Ha do
a.pred()
return ab
Kompleksitas waktu dari algoritma yang digunakan di atas dapat dinyatakan
dalam relasi rekurens. Diberikan masukkan dengan ukuran n, pertimbangkan waktu
yang dibutuhkan untuk menjalankan semua bagian dari prosedur. Hal ini akan
mencakup waktu untuk mempartisi himpunan titik, menghitung kedua tangen, dan
mengembalikan hasil akhir. Jelas sekali bahwa langkah pertama dan ketiga dapat
dijalankan dalam kompleksitas waktu O(n). Lalu dengan mengabaikan semua faktor
yang konstan, algoritma di atas dapat dijelaskan dengan relasi
Apabila diperhatikan, relasi rekurens tersebut sangat mirip sekali dengan relasi
rekurens algoritma pengurutan MergeSort, yang jika diselesaikan akan menghasilkan
kompleksitas waktu sebesar O(n log n).
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 :
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.
Salah satu cara optimasi yang bias kita lakukan adalah membagi bilangan
decimal yang hendak diubah dengan angka 8 ( bukan 2 ). Di sinilah prinsip
algoritma Divide and Conquer kita gunakan untuk melakukan optimasi. Kita
pecah-pecah angka decimal yang akan kita gunakan dengan cara membaginya
dengan angka 8 secara berulang. Angka-angka sisa pembagian yang kita
peroleh kemudian kita ubah ke dalam bilangan biner sebelum kita gabungkan
menjadi hasil jawaban.
Karena angka pembagi yang kita pakai adalah 8 (23), maka kita dapat
mengurangijumlah pembagian yang kita lakukan menjadi ± 1/3 dari jumlah
semula. Hal ini tentu saja akan sangat berpengaruh pada kinerja dan waktu
yang diperlukan oleh computer mengingat proses pembagian merupakan salah
satu proses yang cukup rumit.
Tentu saja optimasi ini harus kita bayar dengan menangani konversi
bilangan octal ke biner. Akan tetapi jika kita gunakan teknik perbandingan (
tanpa harus melakukan konversi secara manual ), maka proses ini akan
menjadi sangat cepat dan mudah. Penerapan algoritma ini adalah dengan
menggunakan sintaks case of. Begitu juga dengan permasalahan pemakaian
memori ( kompleksitas ruang ) yang lebih besar yang muncul akibat
penggunaan algoritma rekursif. Karena pada proses rekursif-nya kita tidak
banyak menggunakan variable yang memerlukan tempat yang begitu besar,
maka hal ini bias kita abaikan. Dengan penggunaan optimasi ini, maka
seharusnya proses konversi akan lebih cepat karena pemangkasan jumlah
pembagian yang dilakukan.
Skema procedur utama Konversi dengan optimasi
Skema procedur rekursif dengan menerapkan Algoritma Divide and Conquer
Kompleksitas waktu algoritma :
T(n) = O(n/3)
- DIVIDE : Bagi titik-titik itu ke dalam dua bagian, PLeft dan PRight, setiap
bagian mempunyai jumlah titik yang sama
Pasangan titik terdekat dipisahkan oleh garis batas L, yaitu satu titik di PLeft
dan satu titik di PRight.
BAB III
KESIMPULAN
3.1. Kesimpulan
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 diselesaikan.
1.1. Saran
Dengan makalah yang dibuat ini diharapkan para pembaca dapat memecahkan suatu
masalah yang besar dengan metode Divide and Conquer baik masalah program
maupun masalah kehidupan.
Kami sebagai penyusun makalah ini meminta maaf sebesar-besarnya apabila
terdapat kesalahan di dalam makalah ini serta terimakasih sebanyak-banyaknya bagi
seluruh komponen yang telah mendukung terbentuknya makalah ini.
DAFTAR PUSTAKA
Nudiyah ,Laura Belani.2014. Algoritma Divide and Conquer . ilmuti.org/wp-
content/uploads/.../laura_belani-Algoritma_Divide_and_Conquer.pdf.
informatika.stei.itb.ac.id/~rinaldi.munir/Stmik/2006.../MakalahSTMIK2007-125.pdf
1.