View
296
Download
1
Category
Preview:
Citation preview
5
BAB II
DASAR TEORI
A. Algoritma
Algoritma adalah suatu kumpulan intruksi yang dibuat secara jelas dan
sistematis untuk menunjukkan langkah-langkah penyelesaian masalah
( www.ilkom.unsri.ac.id). Kata algoritma diambil dari nama ilmuwan muslim Abu
Ja’far Muhammad bin Musa Al-Khwarizmi (780-846M) yang banyak
menghasilkan karya dalam bidang matematika, di samping karya – karyanya
dalam bidang lainnya seperti geografi dan musik (Fathul Wahid, 2004 : 1). Pada
awalnya kata algoritma berasal dari kata algorisma yang berarti istilah yang
merujuk pada aturan-aturan aritmatis untuk menyelesaikan masalah menggunakan
bilangan numeris Arab. Akan tetapi, istilah ini mulai berkembang pada abad ke-
18 sehingga muncul kata algoritma yang mencakup semua prosedur atau urutan
langkah-langkah yang jelas dan diperlukan untuk menyelesaikan suatu masalah
(www.wikipedia.org). Merujuk dari definisi algoritma maka tujuan dari algoritma
adalah memberikan petunjuk tentang langkah-langkah logika yang harus
dilaksanakan untuk menyelesaikan suatu permasalahan yang berorientasi pada
pemrograman komputer. Dengan berkembangnya berbagai aplikasi komputer
untuk menyelesaikan masalah maka algoritma menjadi salah satu komponen
penting didalamnya. Secara garis besar lima tahapan untuk membangun sebuah
aplikasi komputer yaitu (Edhy Susanta, 2005 : 88-90) :
1. Analisis masalah.
2. Merancang algoritma.
6
3. Membuat program komputer.
4. Menguji hasil program.
5. Dokumentasi
Dua tahapan pertama masuk ke dalam problem solving phase dan sisanya
masuk dalam implementation phase. Jika digambarkan hubungan antara
permasalahan, algoritma, dan program komputer maka didapatkan gambar seperti
dibawah ini.
Menurut Fathul Wahid, (2004 : 3-5), terdapat empat syarat yang harus
dipenuhi suatu algoritma untuk mencapai tujuan yaitu :
1. Algoritma harus tidak ambigu (unambiguous)
Deskripsi langkah – langkah dalam algoritma harus dan hanya mempunyai
tafsiran tunggal.
2. Algoritma harus tepat (precise)
Algoritma harus menyatakan urutan langkah – langkahnya. Kapan sebuah
langkah dilakukan, harus dinyatakan dengan jelas. Algoritma harus
menyatakan dengan jelas kapan berhenti dari sebuah langkah untuk
melanjutkan ke langkah berikutnya.
7
3. Algoritma harus pasti (definite)
Jika serangkaian langkah yang sama dilakukan dua kali, maka hasilnya
harus selalu sama.
4. Algoritma harus berhingga (finite)
Serangkaian langkah dalam algoritma harus dapat dilaksanakan pada
rentang tertentu seperti yang diuraikan sebelumnya.
1. Dasar Algoritma
Sesuai dengan tujuan dari algoritma yaitu untuk mendapatkan solusi dari
suatu permasalahan maka algoritma terdiri dari sekumpulan prosedur yang
dikerjakan secara runtun dari atas ke bawah langkah demi langkah. Setiap
prosedur yang terdapat dalam algoritma harus memenuhi beberapa kriteria di
antaranya : setiap langkah harus bersifat pasti, minimal menghasilkan satu
keluaran atau output, bersifat terstruktur dan sistematis, dan memiliki kriteria
untuk menghentikan proses ( Edhy Susanta, 2005 : 89 ). Untuk mendukung
terbentuk suatu algoritma yang baik maka algoritma tersebut harus mempunyai
struktur kontrol. Terdapat tiga macam struktur kontrol dari algoritma yaitu
runtunan ( sequence ), pilihan ( selection ), dan perulangan ( repetation ).
a. Runtunan ( Sequence )
Proses runtunan merupakan suatu prosedur dalam algoritma yang
dilakukan secara urut langkah demi langkah.
b. Pemilihan ( Selection )
8
Proses seleksi digunakan untuk megarahkan eksekusi program ke
bagian tertentu jika memenuhi nilai syarat seleksi tersebut.
c. Pengulangan ( Repetation )
Perluangan merupakan suatu proses yang dilakukan secara berulang-
ulang pada suatu blok pernyataan secara terkendali.
2. Penyajian Algoritma
Untuk menghindari kerancuan interpretasi terhadap suatu algoritma maka
selain dinyatakan dengan kata-kata algoritma (uraian deskriptif) dapat disajikan
dalam berbagai bentuk yaitu: pseudocode dan flowchart.
Pseudocode merupakan salah satu bentuk penyajian algoritma dalam
uraian kata-kata yang mirip dengan bahasa pemrograman. Sebagai contoh bila
ingin menyatakan variabel x bernilai 2 maka dalam pseudocode dinyatakan dalam
bentuk x 2. Begitu juga bila menyatakan penjumlahan 1 sampai 10 dalam
pseudocode maka bentuknya sebagai berikut :
A ← 0
Jumlah ← 0
While a ≤ 10 do
Jumlah ← jumlah + a
a ← a + 1
endwhile
write(Jumlah)
Algoritma tersebut dapat dituliskan dalam notasi grafik yang setiap
notasi mempunyai arti tertentu. Tabel dibawah ini menunjukan beberapa
9
simbol-simbol yang biasa digunakan untuk menyatakan suatu algoritma
menggunakan flowchart antara lain :
No Keterangan Simbol
1 Proses
2 Pengecekan kondisi
3 Dokumen
4 Input atau output
5 Proses yang terdefinisi
7 Manual input
8 Mulai atau selesai
9 Arah aliran proses
10 Penghubung dengan halaman lain
11 Penguhubung pada satu halaman
10
Namun demikian, flowchart sudah tidak banyak digunakan dikarenakan
beberapa hal, diantaranya:
1. Flowchart hanya cocok digunakan untuk masalah yang kecil/
sederhana.
2. Penggunaan flowchart memerlukan kemampuan menggambar yang
baik, yang berarti untuk memodifikasi flowchart juga lebih sulit.
B. Graf
Graf G didefinisikan sebagai pasangan himpunan (V(G), E(G)) dimana
V(G) adalah himpunan tak kosong dari unsur-unsur yang disebut titik (vertex ) dan
E(G) adalah himpunan dari pasangan tak terurut (u,v) dari titik-titik u,v di V (G)
yang disebut sisi (edge). Selanjutnya sisi e = (u,v) pada graf G ditulis e = uv.
Gambar 2.2 Graf G dengan 5 Titik dan 4 Sisi
Graf Terhubung (Connected Graph)
Graf G dikatakan terhubung (connected) jika setiap dua titik u,v di G,
terdapat lintasan yang menghubungkan kedua titik tersebut. Graf G dikatakan graf
tak terhubung (disconnected) jika ada dua titik di G yang tidak mempunyai
lintasan.
11
Gambar 2.2: (a) adalah graf terhubung, (b) adalah graf tak terhubung.
Graf Lintasan (Path)
Graf lintasan adalah graf yang terdiri dari satu lintasan. Graf lintasan yang
terdiri dari n titik dinotasikan sebagai Pn.
Gambar 2.3 Graf Lintasan P3 dan P4
Graf Sikel (Cycle)
Graf yang terdiri dari satu sikel disebut graf sikel, dinotasikan Cn yang
berarti graf sikel dengan n titik.
Gambar. 2.4 Graf Sikel C5 dan C6
12
C. Travelling Salesman Problem (TSP)
Permasalahan TSP (Traveling Salesman Problem ) adalah permasalahan di
mana seorang salesman harus mengunjungi semua kota di mana tiap kota hanya
dikunjungi sekali, dan dia harus mulai dari dan kembali ke kota asal. Tujuannya
adalah menentukan rute dengan jarak total atau biaya yang paling minimum.
Selain masalah sarana transportasi, efisiensi pengiriman surat atau barang
ditentukan pula oleh lintasan yang diambil untuk mengirimkan surat atau barang
tersebut. Oleh karena itu solusi optimal dari permasalahan TSP ini, akan sangat
membantu perusahaan pegiriman surat atau barang untuk mengefisienkan proses
pengiriman barang, baik dari segi waktu maupun dana.
Sampai saat ini, sudah ada banyak metode metode yang digunakan untuk
menyelesaikan permasalahan TSP. Menyelesaikan masalah TSP dapat dilakukan
dengan teknik heuristik. Beberapa penyelesaian masalah TSP dengan teknik
teknik heuristik antara lain: Generate and Test, Hill Climbing, Ant Algorithm,
Genetic Algorithm, Simulated Annealing.
D. Algoritma Hill Climbing
1. Artificial Intelegence ( AI )
Sejak pertama kali dikemukan pada tahun 1956 di konferensi Darthmuoth
Artificial Intelegence ( AI ) terus berkembang dengan pesat. Diawali dengan
kesuksesan Newell dan Simon dengan sebuah program yang disebut General
Problem Solver yang dirancang untuk menyelesaikan masalah secara manusiawi.
Selanjutnya pada tahun 1958 Mc Carthy di MIT AI Lab Memo No.1
13
mendefinisikan bahasa pemrograman tingkat tinggi yaitu LISP yang sekarang
mendominasi pembuatan program-program AI. Perkembangan AI dari tahun ke
tahun juga mengalami pasang surut sampai akhirnya mulai diminati lagi ketika
munculnya konsep jaringan saraf tiruan dan algoritma genetika yang diaplikasikan
ke dalam software-software ( Suyanto,2007 : 3-6 ).
Artificial Intelegence ( AI ) itu sendiri merupakan cabang ilmu
pengetahuan yang beruasaha memahami kecerdasan manusia. Seiring dengan
perkembangan ilmu pengetahuan serta berbagai penelitian yang mengkaji teori-
teori dan prinsip-prinsip AI maka dikenal empat teknik penyelesaian masalah
menggunakan AI yaitu Searching, Reasoning, Planning, dan Learnig. Ke empat
teknik tersebut memiliki kelebihan dan kelemahan masing-masing tergantung
bagaimana cara kita menggunakannya ( Suyanto,2007 : 11 ).
2. Searching Metode atau Metode Pencarian
Searching atau Pencarian merupakan salah satu teknik dalam AI yang
mengajarkan cara menyelesaikan masalah dengan mencari solusi terbaik dari
semua kemungkinan solusi yang ada. Dalam menyelesaikan masalah
menggunakan teknik ini terdapat tiga langkah awal sebagai modal awal untuk
mencapai tujuan yaitu mencari solusi yang paling tepat dari masalah yang
dihadapi, yaitu:
1. Mendefinisikan ruang masalah untuk suatu masalah yang dihadapi.
Ruang masalah itu sendiri dapat didefinisikan sebagai himpunan
keadaan awal ( initial state ) menuju keadaan tujuan ( goal state ).
14
2. Mendefinisikan aturan yang akan dilakukan untuk mengubah suatu
state ke state lainnya yang biasa disebut dengan aturan produksi.
3. Memilih metode yang paling tepat untuk mencari solusi terbaik dari
semua kemungkinan solusi yang ada.
Namun, secara umum langkah-langkah yang bisa digunakan untuk
mengidentifikasi masalah adalah sebagai berikut ( Suyanto, 2007 : 11 ):
1. Seberapa besar ruang masalahnya?
2. Berapakah faktor percabangan dan kedalaman solusinya?
3. Bearapa kecepatan prosesor dan memori yang tersedia?
4. Apakah solusinya harus optimal?
5. Dapatkah ditemukan fungsi heuristiknya?
6. Terdapat satu macam goal atau lebih?
Secara garis besar searching dibagi ke dalam dua jenis yaitu metode
pencarian buta/tanpa informasi atau blind/un-informed search dan metode
pencarian heuristik/dengan informasi atau heuristic/informed search. Hal yang
membedakan kedua jenis teknik pencarian tersebut adalah adanya informasi awal
dan aturan produksinya. Terdapat beberapa teknik pencarian yang masuk ke
dalam metode pencarian buta/blind yaitu Breadth First Search ( BFS ), Uniform
Cost Search ( UCS ), Depth First Search ( DFS ), Depth-Limited Search ( DLS ),
Interative Deepening Search ( IDS ), dan Bi-directorial Search ( BDS ).
Kelemahan dari metode pencarian buta adalah dibutuhkannya memori yang
sangat besar untuk menyesaikan masalah yang cukup sederhana karena harus
menyimpan semua solusi yang telah dibangkitkan. Pada jenis ke-2 metode yaitu
metode pencarian heuristik/informed, pencarian solusi dilakukan menggunakan
15
keadaan awal ( initial state ) dan aturan produksi berupa fungsi heuristik ( suatu
fungsi untuk menghitung nilai atau biaya perkiraan dari suatu solusi permasalah
yang dicari ) sebagai modal untuk melakukan iterasi menuju goal state. Beberapa
metode yang masuk dalam jenis ini antara lain Generate and Test ( GT ), Hill
Climbing ( HC ), Simulated Annealing ( SA ), Best First Search ( Greedy Best
First Search dan A* ). Dengan mempunyai modal awal berupa initial state dan
fungsi heuristik sebagai aturan produksinya maka metode pencarian heuristik
lebih efisien dalam mencari solusi dibandingkan dengan metode pencarian
buta/blind. Namun, untuk mendapatkan solusi terbaik dari suatu permasalahan
harus lebih cermat dalam memilih metode dan fungsi heuristik yang akan
digunakan.
3. Hill Climbing ( Pendakian Bukit )
Hill Climbing ( HC ) atau pendakian bukit merupakan salah satu metode
yang masuk dalam kategori metode pencarian heuristik. Dinamakan Hill Climbing
( HC ) atau pendakian bukit karena mempunyai aturan produksi dengan cara
menukar dua posisi kota yang saling berdekatan seperti orang yang mendaki
bukit. Hill Climbing ( HC ) dibagi menjadi dua jenis yaitu Simple HC ( HC
sederhana ) dan Steepest-Ascent HC ( HC dengan memilih kemiringan yang
paling tajam/curam ).
Simple HC ( SHC ) bekerja dengan cara memilih secara langsung new
state yang memiliki keadaan lebih baik dari pada keadaan sebelumnya tanpa
memperhitungkan keadaan lain yang lebih “curam”. Berikut adalah algoritma dari
SHC ( Suyanto, 2007 : 24 ) :
16
1. Evaluasi initial state (keadaan awal). Jika initial state adalah goal state
maka jadikan state ini sebagai solusi dan keluar dari program. Jika bukan
goal state, lanjutkan proses dengan initial state sebagai current state.
2. Ulangi sampai solusi ditemukan atau sampai tidak ada operator ( aturan
produksi ) baru yang dapat diaplikasikan terhadap current state :
a. Pilih operator yang belum diaplikasikan terhadap current state dan
aplikasikan operator tersebut sehingga menghasilkan new state.
b. Evaluasi new state :
i. Jika state ini merupakan goal state maka jadikan state ini sebagai
solusi dan keluar dari program.
ii. Jika state ini bukan goal state tetapi lebih baik dari current state
maka jadikan state ini sebagai current state baru.
iii. Jika state ini tidak lebih baik dari current state maka kembali ke
langkah 2.a.
Berikut ini adalah gambar proses penyelesaian solusi dengan menggunakan SHC.
17
Sedikit berbeda dengan SHC, Steepest-Ascent HC ( SAHC ) lebih
menekankan pada aturan produksinya yaitu SHC akan mengevaluasi semua state
yang berada dibawah current state dan memilih state dengan keadaan paling
“curam”. Berikut adalah algoritma dari SAHC :
1. Evaluasi initial state. Jika initial state adalah goal state maka jadikan state
ini sebagai solusi dan keluar dari program. Jika bukan goal state, lanjutkan
proses dengan initial state sebagai current state.
2. Ulangi sampai solusi ditemukan atau sampai tidak ada perubahan terhadap
current state :
a. Misalkan SUK adalah suatu state yang menjadi suksesor dari current
state.
b. Untuk setiap operator yang bisa dilakukan terhadap current state,
kerjakan :
i. Aplikasikan semua operator yang ada dan bangkitkan new state.
ii. Evaluasi new state. Jika merupakan goal state, jadikan ini
sebagai solusi dan keluar dari program. Jika bukan goal state,
bandingkan dengan new state dengan SUK. Jika new state lebih
baik dari SUK maka ganti SUK dengan new state. Jika new state
tidak lebih baik dari SUK, tidak perlu diganti.
c. Jika SUK lebih baik dari current state maka ganti current state dengan
SUK.
18
Berikut ini adalah gambar proses penyelesaian solusi dengan menggunakan
SAHC.
E. Matrix Laboratory ( MatLab )
1. Dasar MatLab
Matrix Laboratory ( MatLab ) merupakan bahasa pemrograman yang
dikembangkan oleh MathWorks. MatLab tidak hanya berfungsi sebagai bahasa
pemrograman semata tetapi sekaligus sebagai alat visualisasi yang menawarkan
banyak fitur-fitur untuk menyelesaikan berbagai macam kasus yang berhubungan
langsung dengan ilmu Matematika. MatLab dibangun dengan dasar bahasa C
tetapi tidak bisa dikatakan sebagai varian dari C karena sintaks maupun cara
kerjanya sangat berbeda dengan bahasa C. MatLab memberikan sistem interaktif
yang berbasiskan array atau matriks sebagai standar variabelnya atau elemen
dasarnya tanpa harus membutuhkan pendeklarasian array seperti pada program
lainnya ( Gunaidi Abdia Away, 2006 : 1-2 ). Awalnya MatLab dikembangkan
untuk memberikan kemudahan dalam mengakses matriks pada proyek LINPACK
19
dan EISPACK. Akan tetapi lambat laun MatLab menjadi salah satu bahasa
pemrograman yang power full dan diminati banyak orang terutama jika
melibatkan perhitungan matematika.
2. Sintaks Dasar MatLab
Seperti bahasa pemrograman pada umumnya, MatLab mempunyai metode
dan simbol-simbol tersendiri dalam penulisan bahasa pemrogramannya. MatLab
mengenal dua tipe data yaitu numerik dan string. Adapun beberapa hal yang perlu
diperhatikan dalam penulisan sintaks di MatLab antara lain :
a. Penamaan variabel bersifat case sensitive yang berarti MatLab
membedakan penulisan antara huruf kapital dan biasa walaupun hanya
satu karakter saja.
b. Panjang nama variabel tidak boleh lebih dari 31 karakter.
c. Penamaan variabel harus selalu diawali dengan huruf dan tidak boleh
menggunakan simbol-simbol tertentu yang mempunyai arti khusus dalam
MatLab.
Contoh :
>> varA = 4
varA =
4
>> varB = [1 2 3 4]
varB =
1 2 3 4
>> varC = ‘menulis variabel’
varC =
menulis variabel
20
Berikut adala daftar sintaks dasar dalam MatLab yang menyangkut operasi
aritmatika dan beberapa fungsi dalam matenatika :
a. Operator aritmatika
Operasi Betuk aljabar Bentuk Matlab
Penjumlahan a+b a+bPengurangan a-b a-bPerkalian a x b a*bPembagian a / b a/bEksponensial ab a^b
b. Beberapa fungsi matematika
Sintaks dalam MatLab Fungsi
exp(x) Menghasilkan nilai eksponensial natural (ex)
log(x) Menghasilkan nilai logaritma nautral dari x (ln x)
sqrt(x) Menghasilkan akar kuadrat dari x
sin(x) Menghasilkan nilai sin dari x ( dalam radian )
cos(x) Menghasilkan nilai cos dari x ( dalam radian )
Selain itu, MatLab juga menyediakan visualisasi berupa grafik baik grafik
dua dimensi atau tiga dimensi. Ada beberapa cara untuk menampilkan grafik
suatu fungsi dengan Matlab, berikut beberapa contohnya yaitu :
>> x = 0:1:360;
>> y = sin(x.*pi/180);
>> plot(y)
21
3. Manipulasi Matriks dengan MatLab
Dikarenakan matriks sebagai standar penulisan variabel dalam MatLab
maka salah satu kelebihan MatLab yaitu kemudahan dalam memaniulasi matriks.
Berikut adalah beberapa contoh manipulasi matriks menggunakan MatLab antara
lain :
>> a = linspace(0,6,7)
a =
0 1 2 3 4 5 6
>> b=[1 2 3;4 5 6;7 8 9]
b =
1 2 3
4 5 6
7 8 9
>> b(1,:)
ans =
1 2 3
>> b(3,:)=10
b =
22
1 2 3
4 5 6
10 10 10
Selain itu, MatLab juga menyediakan sintaks-sintaks khusus untuk
membentuk matriks tertentu seperti matriks identitas, matriks nol, matriks
random, dll. Berikut adalah beberapa sintaks tersebut :
Sintaks Ketarangan Contoh
zeros( ) Membentuk matriks yang semua elemennya bernilai nol >> zeros(2,3)ones( ) Membentuk matriks yang semua elemennya bernilai satu >>ones(1,5)rand( ) Matriks yang semua elemennya random ( acak )
menggunakan distribusi uniform>>rand(3,3)
eye( ) Membentuk matriks identitas >>eye(2,2)det( ) Menentukan determinan matriks >>det(a)diag( ) Menampilkan diagonal utama matriks >>diag(a)A’ Transpose matriks A >>A’
Recommended