You are on page 1of 18

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.

Permasalahan
Problem
solving
phase

Sulit dan banyak Solusi dalam bentuk


kesalahan algoritma
Mudah dan Implementation
sedikit phase
Solusi dalam bentuk kesalahan
program komputer

Gambar 2.1 Hubungan antara permasalahan,


algoritma, dan program komputer

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

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.


10

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.

Gambar 2.2: (a) adalah graf terhubung, (b) adalah graf tak terhubung.
11

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

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.
12

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

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 ).


13

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 ).

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.


14

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

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
15

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 ) :

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.
16

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.

ABCD 30 Keadaan awal

BACD 29 CBAD 29 DBCA 28 ACBD 27 ADCB 31 ABDC 32 Level 1

ABCD 30 CABD 31 DACB 29 BCAD 28 BDCA 28 BADC 32 Level 2

CBAD 29 ACBD 35 DCAB 33 BACD 29 BDAC 30 DCAB 25 Level 3

Gambar 2.5 SHC 4 kota dengan 6 operator penukaran kota

Sedikit berbeda dengan SHC, Steepest-Ascent HC ( SAHC ) lebih

menekankan pada aturan produksinya yaitu SHC akan mengevaluasi semua state
17

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.

ABCD 30 Keadaan awal

BACD 29 CBAD 29 DBCA 28 ACBD 27 ADCB 31 ABDC 32 Level 1

CABD 30 BCAD 26 DCBA 31 ABCD 30 ADBC 36 DCBA 29 Level 2

CBAD 29 ACBD 39 DCAB 28 BACD 25 BDAC 25 BCDA 26 Level 3

Gambar 2.6 SAHC 4 kota dengan 6 operator penukaran kota

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+b
Pengurangan a-b a-b
Perkalian axb a*b
Pembagian a/b a/b
Eksponensial 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

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
0 50 100 150 200 250 300 350 400

Gambar 2.7 Grafik sin(x)

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 =
1 2 3
22

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 ) >>rand(3,3)
menggunakan distribusi uniform
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’

You might also like