SYSTOOLS DEMO
2.2. Pengertian Analisis Algoritma
Analisis algoritma dilakukan dengan memperhatikan dua hal, yaitu
waktu tempuh dan jumlah memory yang digunakan. Waktu tempuh memiliki
definisi sebagai waktu yang diperlukan suatu algoritma dalam mencari solusi
atas permasalahan yang diberikan. Waktu yang singkat memberi arti bahwa
algoritma yang digunakan efisien. Waktu tempuh yang diperlukan oleh suatu
algoritma menurut Suryadi MT (1996) dipengaruhi oleh beberapa hal, yaitu:
1. banyak langkah
Banyaknya langkah yang digunakan dalam suatu algoritma
akan menentukan cepat lambatnya proses yang dilakukan oleh
tidak sesuai, maka waktu tempuh yang digunakan algoritma
tersebut pun akan membesar (lambat).
Jumlah memory juga perlu diperhatikan dalam menganalisis suatu
algoritma agar suatu proses dapat berjalan lancar tanpa ada hambatan. Hal
yang mempengaruhi dalam pemakaian memory adalah jenis variable dan data
yang digunakan pada suatu algoritma. Oleh karena itu pengalokasian memory
perlu diperhitungan berdasarkan dua hal tersebut agar lambatnya waktu
tempuh yang terjadi karena kekurangan memory dapat dihindari.
Kompleksitas waktu asimtotik algoritma juga merupakan hal yang
peru diperhatikan dalam melakukan analisis terhadap suatu algoritma.
Kompleksitas waktu asimtotik algoritma dinyatakan dalam suatu fungsi F(N)
untuk kebutuhan waktu tempuh dan penyimpanan untuk sejumlah N masukan
data. Fungsi F(N) tersebutlah yang kemudian dinyatakan sebagai Big Oh. Jika
F(N) adalah fungsi Polinomial dalam N dengan derajat (tingkat) m, yang
ditulis dengan notasi:
F(N) = amNm + am-1Nm-1 + . . . + a1N + a0
maka Big Oh dari F(N) adalah Nm yang dinotasikan: F(N) = O(Nm) (Suryadi MT, 1996). Berikut ini adalah pengelompokan algoritma berdasarkan notasi
Big Oh :
Kelompok
Algoritma Nama
O(1) Konstan
berikut ini. Graf ini menggambarkan hubungan dari suatu tempat ke tempat
yang lain. Node menggambarkan suatu tempat dan vertex menggambarkan
bobot atau jarak yang menghubungkan antar tempat.
Gambar 2.1Contoh Graph (Dijkstra)
Langkah pertama yang dilakukan pada strategi ini adalah menentukan
titik awal dan titik tujuan (dalam kasus ini node satu adalah titik awal dan
node sepuluh adalah titik tujuan). Berangkat dari node satu, terdapat tiga jalur
yang dapat ditempuh yakni jalur dengan nilai jarak 300, 200, dan 350. Jalur
yang dipilih adalah jalur dengan nilai jarak 200 karena merupakan nilai yang
paling optimal (rendah) di antara ketiga nilai tersebut. Pemilihan jalur tersebut
menunjukkan bahwa node kedua yang dilalui adalah node tiga. Pada node
tiga, nilai jarak yang kemudian dipilih adalah nilai 280 yang kemudian
membawa menuju node enam dari nilai 350, 280, dan 410. Node delapan
kemudian menjadi tujuan berikutnya setelah melakukan pemilihan nilai jarak
yang paling optimal antara nilai 350 dan 380. Langkah berikutnya adalah
memilih satu-satunya nilai yang membawa ke tujuan akhir (node sepuluh),
yakni memilih jalur dengan nilai 380. Pencarian jalur terpendek menggunakan
7. d (7) = ?
8. d (8) = ?
9. d (9) = ?
10. d (10) = ?
1 - 3
Iterasi II (posisi awal di titik 3)
1. d(2) = min {d(2), d(3) + a(3,2)} = min (300, 200 + ?) = 300
2. d(4) = min {d(4), d(3) + a(3,4)} = min (350, 200 + ?) = 350
3. d(5) = min {d(5), d(3) + a(3,5)} = min (?, 200 + 350) = 550
4. d(6) = min {d(6), d(3) + a(3,6)} = min (?, 200 + 280) = 480
5. d(7) = min {d(7), d(3) + a(3,7)} = min (?, 200 + 410) = 610
6. d(8) = min {d(8), d(3) + a(3,8)} = min (?, 200 + ?) = ?
7. d(9) = min {d(9), d(3) + a(3,9)} = min (?, 200 + ?) = ?
8. d(10) = min {d(10), d(3) + a(3,10)} = min (?, 200 + ?) = ?
1 – 2
Iterasi III (posisi awal di titik 2)
1. d(4) = min {d(2), d(2) + a(2,4)} = min (350, 300 + ?) = 350
2. d(5) = min {d(5), d(2) + a(2,5)} = min (550, 300 + 320) = 550
3. d(6) = min {d(6), d(2) + a(2,6)} = min (480, 300 + 350) = 480
4. d(7) = min {d(7), d(2) + a(2,7)} = min (610, 300 + 400) = 610
Iterasi VI (posisi awal di titik 5)
1. d(7) = min {d(7), d(5) + a(5,7)} = min (550, 550 + ?) = 550
2. d(8) = min {d(8), d(5) + a(5,8)} = min (830, 550 + 210) = 760
3. d(9) = min {d(9), d(5) + a(5,9)} = min (860, 550 + 230) = 780
4. d(10) = min {d(10), d(5) + a(5,10)} = min (?, 550 + ?) = ?
1 – 4 – 7
Iterasi VII (posisi awal di titik 7)
1. d(8) = min {d(8), d(7) + a(7,8)} = min (760, 550 + 210) = 760
2. d(9) = min {d(9), d(7) + a(7,9)} = min (780, 550 + 290) = 780
3. d(10) = min {d(10), d(7) + a(7,10)} = min (?, 550 + ?) = ?
1 – 3 – 5 – 8
Iterasi VIII (posisi awal di titik 8)
1. d(9) = min {d(9), d(8) + a(8,9)} = min (780, 760 + ?) = 780
2. d(10) = min {d(10), d(8) + a(8,10)} = min (?, 760 + 380) = 1140
1 – 3 – 5 – 9
Iterasi IX (posisi awal di titik 9)
1. d(10) = min {d(10), d(9) + a(9,10)} = min (1140, 780 + 280) =
1060
1 – 3 – 5 – 9 – 10
nilai yang terdapat pada vertex-vertex tersebut menggambarkan nilai jarak
antara satu node ke node yang lain.
Gambar 2.2 Contoh Graph (Pemrograman Dinamis)
Langkah pertama yang dilakukan adalah ambil salah satu node sebagai
tujuan, dalam hal ini node dengan label sepuluh adalah tujuan yang ingin
dicapai. Berangkat dari hal tersebut dapat dilihat bahwa untuk mencapai node
sepuluh tersebut perlu melalui node delapan atau sembilan. Berdasarkan hal
tersebut maka dihasilkanlah sebuah table berikut ini yang menggambarkan
langkah pertama. Langkah I Node Nilai Jarak Jalur yang Ditempuh 8 380 8-10 9 280 9-10
Tabel 2.2 Langkah I Strategi Pemrograman Dinamis
Langkah yang dilakukan berikutnya adalah menentukan jalur
terpendek untuk menuju node delapan dan sembilan yang kemudian menuju
ke node tujuan. Jika berangkat melalui node lima maka nilai jarak yang
870 (200+670). Oleh karena itu, nilai jarak yang dipilih kemudian adalah 810.
Tabel yang menggambarkan hasil dari langkah ini adalah tabel 2.4:
Langkah III Node Nilai Jarak Jalur yang Ditempuh 2 830 2-5-9-10 3 860 3-5-9-10 4 810 4-5-9-10
Tabel 2.4Langkah III Strategi Pemrograman Dinamis
Langkah keempat yang juga merupakan langkah terakhir untuk kasus
ini adalah menentukan nilai jalur terpendek jika melalui node satu. Nilai-nilai
jarak yang dihasilkan adalah 1130 (300+830), 1060 (200+860), dan 1160
(350+810). Berdasarkan nilai-nilai yang dihasilkan tersebut maka 1060 adalah
nilai yang dipilih. Tabel yang dihasilkan dari langkah ini adalah tabel 2.5:
Langkah IV Node Nilai Jarak Jalur yang Ditempuh 1 1060 1-3-5-9-10
Tabel 2.5Langkah IV Strategi Pemrograman Dinamis
Nilai tersebut merupakan nilai akhir yang didapat dari kasus ini. Nilai
1060 juga merupakan nilai jarak terpendek yang dihasilkan untuk mencapai
node sepuluh dari node satu. Hal tersebut menunjukkan bahwa jalur
1-3-5-9-10 merupakan jalur yang harus ditempuh agar hasil yang dicapai adalah
optimal (jalur terpendek).
Salah satu algoritma pencarian jalur terpendek yang menggunakan
strategi pemrograman dinamis dalam cara penyelesaiannya adalah algoritma
9 ? ? ? ? ? ? ? ? 0 280
10 ? ? ? ? ? ? ? ? ? 0
Tabel 2.7Iterasi I Algoritma Floyd – Warshall
Iterasi II 1 2 3 4 5 6 7 8 9 10 1 0 300 200 350 620 650 700 ? ? ? 2 ? 0 ? ? 320 350 400 ? ? ? 3 ? ? 0 ? 350 280 410 ? ? ? 4 ? ? ? 0 300 250 200 ? ? ? 5 ? ? ? ? 0 ? ? 210 230 ? 6 ? ? ? ? ? 0 ? 350 380 ? 7 ? ? ? ? ? ? 0 290 400 ? 8 ? ? ? ? ? ? ? 0 ? 380 9 ? ? ? ? ? ? ? ? 0 280 10 ? ? ? ? ? ? ? ? ? 0
Tabel 2.8 Iterasi II Algoritma Floyd – Warshall
Iterasi III 1 2 3 4 5 6 7 8 9 10 1 0 300 200 350 550 480 610 ? ? ? 2 ? 0 ? ? 320 350 400 ? ? ? 3 ? ? 0 ? 350 280 410 ? ? ? 4 ? ? ? 0 300 250 200 ? ? ? 5 ? ? ? ? 0 ? ? 210 230 ? 6 ? ? ? ? ? 0 ? 350 380 ?
SYSTOOLS DEMO
5 ? ? ? ? 0 ? ? 210 230 ? 6 ? ? ? ? ? 0 ? 350 380 ? 7 ? ? ? ? ? ? 0 290 400 ? 8 ? ? ? ? ? ? ? 0 ? 380 9 ? ? ? ? ? ? ? ? 0 280 10 ? ? ? ? ? ? ? ? ? 0
Tabel 2.11Iterasi V Algoritma Floyd – Warshall
Iterasi VI 1 2 3 4 5 6 7 8 9 10 1 0 300 200 350 550 480 550 760 780 ? 2 ? 0 ? ? 320 350 400 530 550 ? 3 ? ? 0 ? 350 280 410 560 580 ? 4 ? ? ? 0 300 250 200 510 530 ? 5 ? ? ? ? 0 ? ? 210 230 ? 6 ? ? ? ? ? 0 ? 350 380 ? 7 ? ? ? ? ? ? 0 290 400 ? 8 ? ? ? ? ? ? ? 0 ? 380 9 ? ? ? ? ? ? ? ? 0 280 10 ? ? ? ? ? ? ? ? ? 0
Tabel 2.12Iterasi VI Algoritma Floyd – Warshall
Iterasi VII
1 2 3 4 5 6 7 8 9 10
1 0 300 200 350 550 480 550 760 780 ? 2 ? 0 ? ? 320 350 400 530 550 ?
1 0 300 200 350 550 480 550 760 780 1060 2 ? 0 ? ? 320 350 400 530 550 830 3 ? ? 0 ? 350 280 410 560 580 860 4 ? ? ? 0 300 250 200 490 530 810 5 ? ? ? ? 0 ? ? 210 230 510 6 ? ? ? ? ? 0 ? 350 380 660 7 ? ? ? ? ? ? 0 290 400 670 8 ? ? ? ? ? ? ? 0 ? 380 9 ? ? ? ? ? ? ? ? 0 280 10 ? ? ? ? ? ? ? ? ? 0
Tabel 2.15Iterasi IX Algoritma Floyd – Warshall
Iterasi X 1 2 3 4 5 6 7 8 9 10 1 0 300 200 350 550 480 550 830 860 1060 2 ? 0 ? ? 320 350 400 530 550 830 3 ? ? 0 ? 350 280 410 560 580 860 4 ? ? ? 0 300 250 200 490 530 810 5 ? ? ? ? 0 ? ? 210 230 510 6 ? ? ? ? ? 0 ? 350 380 660 7 ? ? ? ? ? ? 0 290 400 670 8 ? ? ? ? ? ? ? 0 ? 380 9 ? ? ? ? ? ? ? ? 0 280 10 ? ? ? ? ? ? ? ? ? 0
Tabel 2.16Iterasi X algoritma Floyd – Warshall
Hasil jalur terpendek yang dihasilkan oleh algoritma ini untuk jalur
terpendek yang ditempuh dari node satu ke node sepuluh adalah 1060.
1. Jalur 1A
Tempat-tempat yang dilalui oleh jalur ini adalah Candi
Prambanan - Bandar Udara Adisutjipto - Jembatan Layang
Janti - Ambarrukmo Plaza - UIN Sunan Kalijaga - Saphir
Square - Bioskop XXI, Jl. Solo - Rumah Sakit Bethesda, Toko
Buku Gramedia, Hotel Novotel - Hotel Santika, Pizza Hut
Tugu Jogja - Kantor Kedaulatan Rakyat - Stasiun Tugu –
Jogjakarta - Jalan Malioboro (ada 3 buah halte) - Kantor Pos
Besar, Kraton, Alun-Alun Utara, Monumen 1 Maret, Benteng
Vredeburg - Taman Pintar, Taman Parkir Bank - Indonesia,
Pasar Beringhardjo, Gondomanan - Pasar Sentul (Jl. Taman
Siswa) - Taman Makan Pahlawan Kusumanegara - Balaikota
Jogjakarta - Kebun Binatang - Gembira Loka - Jogja Expo
Center - Jembatan Janti (kembali ke arah Kalasan, Bandar
Udara Adisutjipto sampai Terminal Prambanan)
2. Jalur 1B
Tempat-tempat yang dilalui oleh jalur ini adalah Terminal
Prambanan – Kalasan - Bandara Adisucipto – Maguwoharjo -
Janti (lewat bawah) - Blok O – JEC - Babadan Gedongkuning -
Gembira Loka – SGM - Pasar Sentul – Gondomanan - Kantor
Pos Besar - RS.PKU Muhammadiyah - Pasar Kembang –
Badran - Bundaran SAMSAT – Pingit – Tugu – Gramedia -
5. Jalur 3A
Tempat-tempat yang dilalui oleh jalur ini adalah Terminal
Giwangan – Tegalgendu - HS-Silver - Jl. Nyi Pembayun -
Pegadaian Kotagede – Basen – Rejowinangun - Babadan
Gedongkuning – JEC - Blok O - Janti (lewat atas) – Janti –
Maguwoharjo - Bandara ADISUCIPTO – Maguwoharjo -
Ringroad Utara - Terminal Condongcatur – Kentungan - MM
UGM – MirotaKampus – Gondolayu – Tugu – Pingit -
Bundaran SAMSAT – Badran – PasarKembang - Stasiun
TUGU – Malioboro - Kantor Pos Besar - RS PKU
Muhammadiyah – Ngabean - Jokteng Kulon - Plengkung
Gading - Jokteng Wetan – Tungkak – Wirosaban – Tegalgendu
- Terminal Giwangan.
6. Jalur 3B
Tempat-tempat yang dilalui oleh jalur ini adalah Terminal
Giwangan – Tegalgendu – Wirosaban – Tungkak - Jokteng
Wetan - Plengkung Gading - Jokteng Kulon – Ngabean - RS
PKU Muhammadiyah - Pasar Kembang – Badran - Bundaran
SAMSAT – Pingit – Tugu – Gondolayu - Mirota Kampus -
MM UGM – Kentungan - Terminal Condong Catur - Ringroad
Utara – Maguwoharjo - Bandara Adisucipto – Maguwoharjo -
JANTI (lewat bawah) - Blok O – JEC - Babadan