APLIKASI GRAF DALAM BISNIS TRAVEL BANDUNG-BOGOR

dokumen-dokumen yang mirip
Aplikasi Shortest Path dengan Menggunakan Graf dalam Kehidupan Sehari-hari

Penggunaan Algoritma Dijkstra dalam Penentuan Lintasan Terpendek Graf

Aplikasi Algoritma Dijkstra dalam Pencarian Lintasan Terpendek Graf

Permodelan Pohon Merentang Minimum Dengan Menggunakan Algoritma Prim dan Algoritma Kruskal

APLIKASI GRAF DALAM PEMBUATAN JALUR ANGKUTAN KOTA

Penerapan Algoritma Greedy untuk Memecahkan Masalah Pohon Merentang Minimum

TEORI GRAF UNIVERSITAS MUHAMMADIYAH JEMBER ILHAM SAIFUDIN PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS TEKNIK. Selasa, 13 Desember 2016

MEMBANDINGKAN KEMANGKUSAN ALGORITMA PRIM DAN ALGORITMA KRUSKAL DALAM PEMECAHAN MASALAH POHON MERENTANG MINIMUM

Graf dan Pengambilan Rencana Hidup

ALGORITMA PENCARIAN SIMPUL SOLUSI DALAM GRAF

Perancangan Sistem Transportasi Kota Bandung dengan Menerapkan Konsep Sirkuit Hamilton dan Graf Berbobot

Graf. Program Studi Teknik Informatika FTI-ITP

Analogi Pembunuhan Berantai Sebagai Graf Dalam Investigasi Kasus

Aplikasi Teori Graf dalam Permainan Instant Insanity

Penerapan Travelling Salesman Problem dalam Penentuan Rute Pesawat

Pemanfaatan Algoritma Sequential Search dalam Pewarnaan Graf untuk Alokasi Memori Komputer

Pengaplikasian Graf dan Algoritma Dijkstra dalam Masalah Penentuan Pengemudi Ojek Daring

Aplikasi Pohon Merentang Minimum dalam Rute Jalur Kereta Api di Pulau Jawa

Penyelesaian Traveling Salesman Problem dengan Algoritma Heuristik

TEORI GRAF DALAM MEREPRESENTASIKAN DESAIN WEB

PEWARNAAN GRAF SEBAGAI METODE PENJADWALAN KEGIATAN PERKULIAHAN

GRAF. V3 e5. V = {v 1, v 2, v 3, v 4 } E = {e 1, e 2, e 3, e 4, e 5 } E = {(v 1,v 2 ), (v 1,v 2 ), (v 1,v 3 ), (v 2,v 3 ), (v 3,v 3 )}

G r a f. Pendahuluan. Oleh: Panca Mudjirahardjo. Graf digunakan untuk merepresentasikan objek-objek diskrit dan hubungan antara objek-objek tersebut.

Pengembangan Teori Graf dan Algoritma Prim untuk Penentuan Rute Penerbangan Termurah pada Agen Penyusun Perjalanan Udara Daring

Aplikasi Pohon dan Graf dalam Kaderisasi

BAB II LANDASAN TEORI

Penggunaan Algoritma Greedy dalam Membangun Pohon Merentang Minimum

Aplikasi Pewarnaan Graf Pada Pengaturan Warna Lampu Lalu Lintas

Penerapan Algoritma A* dalam Penentuan Lintasan Terpendek

Pencarian Jalur Terpendek dengan Menggunakan Graf dan Greedy dalam Kehidupan Sehari-hari

Aplikasi Pewarnaan Graf pada Penjadwalan Pertandingan Olahraga Sistem Setengah Kompetisi

Aplikasi Graf dalam Merancang Game Pong

Aplikasi Teori Graf dalam Pencarian Jalan Tol Paling Efisien

Pengaplikasian Graf dalam Menentukan Rute Angkutan Kota Tercepat

Aplikasi Algoritma Prim dalam Penentuan Pohon Merentang Minimum untuk Jaringan Pipa PDAM Kota Tangerang

Penggunaan Graf Semi-Hamilton untuk Memecahkan Puzzle The Hands of Time pada Permainan Final Fantasy XIII-2

Pengaplikasian Graf dalam Pendewasaan Diri

Penerapan Pewarnaan Graf pada Permainan Real- Time Strategy

Aplikasi Teori Graf dalam Manajemen Sistem Basis Data Tersebar

Graf digunakan untuk merepresentasikan objek-objek diskrit dan hubungan antara objek-objek tersebut. Demak Semarang. Kend al. Salatiga.

Menyelesaikan Topological Sort Menggunakan Directed Acyclic Graph

Algoritma Penentuan Graf Bipartit

APLIKASI PEWARNAAN GRAPH PADA PEMBUATAN JADWAL

Penerapan Pewarnaan Graf dalam Perancangan Lalu Lintas Udara

Penerapan Algoritma Greedy dalam Optimasi Keuntungan Perusahaan Pengiriman Barang

Studi Algoritma Optimasi dalam Graf Berbobot

Kode MK/ Matematika Diskrit

Bab 2 LANDASAN TEORI

BAB 2 LANDASAN TEORI

Asah Otak dengan Knight s Tour Menggunakan Graf Hamilton dan Backtracking

Pencarian Lintasan Hamilton Terpendek untuk Taktik Safe Full Jungle Clear dalam Permainan League of Legends

Aplikasi Pewarnaan Graph pada Pembuatan Jadwal

Aplikasi Graf pada Fitur Friend Suggestion di Media Sosial

APLIKASI PEWARNAAN SIMPUL GRAF UNTUK MENGATASI KONFLIK PENJADWALAN MATA KULIAH DI FMIPA UNY

Implementasi Graf dalam Penentuan Rute Terpendek pada Moving Object

Kasus Perempatan Jalan

Penerapan Graf Dalam File Sharing Menggunakan BitTorrent

Penerapan Pewarnaan Graf dalam Alat Pemberi Isyarat Lalu Lintas

Penerapan Graf dalam validasi path di Permainan Saboteureun menggunakan DFS

Aplikasi Graf Berarah Pada Item Dalam Game DOTA 2

Analisis Pengimplementasian Algoritma Greedy untuk Memilih Rute Angkutan Umum

Representasi Hierarki Kebutuhan Maslow Menggunakan Teori Graf

Pemodelan Sistem Lalu Lintas dengan Graf Ganda Berarah Berbobot

BAB 2 LANDASAN TEORI

I. PENDAHULUAN II. DASAR TEORI. Penggunaan Teori Graf banyak memberikan solusi untuk menyelesaikan permasalahan yang terjadi di dalam masyarakat.

PENDAHULUAN MODUL I. 1 Teori Graph Pendahuluan Aswad 2013 Blog: 1.

BAB II TINJAUAN PUSTAKA

Aplikasi Pewarnaan Graf untuk Sistem Penjadwalan On-Air Stasiun Radio

LOGIKA DAN ALGORITMA

Graf. Matematika Diskrit. Materi ke-5

Aplikasi Graf pada Hand Gestures Recognition

Graf. Bekerjasama dengan. Rinaldi Munir

Graph. Politeknik Elektronika Negeri Surabaya

Penerapan Sirkuit Hamilton dalam Perencanaan Lintasan Trem di ITB

BAB II LANDASAN TEORI

Aplikasi Pewarnaan Graf dalam Penyimpanan Senyawa Kimia Berbahaya

Penerapan Teori Graf untuk Menentukan Tindakan Pertolongan Pertama pada Korban Kecelakaan

Algoritma Prim dengan Algoritma Greedy dalam Pohon Merentang Minimum

Strategi Permainan Menggambar Tanpa Mengangkat Pena

Aplikasi Graf dalam Formasi dan Strategi Kesebelasan Sepakbola

Aplikasi Graf pada Penentuan Jadwal dan Jalur Penerbangan

Bab 1 PENDAHULUAN. 1.1 Latar Belakang Masalah

Penyelesaian Teka-Teki Sudoku dengan Didasarkan pada Teknik Pewarnaan Graf

I. PENDAHULUAN. Gambar 1. Contoh-contoh graf

LATIHAN ALGORITMA-INTEGER

Graf. Bahan Kuliah IF2120 Matematika Diskrit. Rinaldi Munir/IF2120 Matematika Diskrit 1

BAB II LANDASAN TEORI

Pendeteksian Deadlock dengan Algoritma Runut-balik

I. PENDAHULUAN. Gambar 1: Graf sederhana (darkrabbitblog.blogspot.com )

Graf Sosial Aplikasi Graf dalam Pemetaan Sosial

BAB II LANDASAN TEORI

RANCANG BANGUN APLIKASI MINIMUM SPANNING TREE (MST) MENGGUNAKAN ALGORITMA KRUSKAL

Penerapah Graf untuk Memecahkan Teka-Teki Menyeberangi Sungai

LANDASAN TEORI. Bab Konsep Dasar Graf. Definisi Graf

APLIKASI PEWARNAAN GRAF PADA PENGATURAN LAMPU LALU LINTAS

Penerapan Graf pada PageRank

Penggunaan Perwarnaan Graf dalam Mencari Solusi Sudoku

Penerapan Algoritma Branch and Bound pada Penentuan Staffing Organisasi dan Kepanitiaan

Aplikasi Graf dalam Rute Pengiriman Barang

Optimalisasi Algoritma Pencarian Data Memanfaatkan Pohon Biner Terurut

Transkripsi:

APLIKASI GRAF DALAM BISNIS TRAVEL BANDUNG-BOGOR Achmad Giovani NIM : 13508073 Program Studi Teknik Informatika, Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung Jl. Ganeca 10 Bandung e-mail: if18073@students.if.itb.ac.id ABSTRAK Makalah ini membahas tentang aplikasi graf dalam bisnis travel dengan rute Bandung-Bogor. Graf terdiri dari simpul dan jalur penghubung antar-simpul. Dengan merepresentasikan jalur yang dilalui sebuah mobil angkutan antar-jemput dengan graf, maka dapat dicari jalur terpendek yang dilalui. Dalam makalah ini akan dijelaskan algoritma untuk mencari rute terpendek. Dimisalkan ada tujuh penumpang, sehingga ada tujuh titik di Bandung dan tujuh titik di Bogor. Setelah menemukan jalur terpendek, kemudian dihitung perkiraan biaya operasional mobil tersebut, dalam hal ini adalah pemakaian bahan bakar. Untuk mencari jalur terpendek, dalam makalah ini dijelaskan dua cara, yaitu cara manual dengan menggambar graf beseta bobotnya, dan dengan cara membuat sebuah program yang dapat menentukan jalur terpendek sekaligus menghitung perkiraan biaya operasional sebuah mobil angkutan antar-jemput. Kata kunci: Graf, Bobot, Algoritma, Program, Jalur, Terpendek, Biaya, Operasional 1. PENDAHULUAN Graf merupakan salah satu struktur data yang sangat berguna dalam informatika. Berbagai objek diskrit dapat direpresentasikan dengan menggunakan graf. Objek yang dapat direpresentasikan sebagai graf adalah objek yang dapat digambarkan menjadi beberapa simpul dan beberapa lintasan/sisi/edge. Contoh objek diskrit misalnya Jembatan Königsberg dan senyawa kimia. Selain kedua contoh yang telah disebutkan, graf juga dapat merepresentasikan kota/lokasi yang saling terhubung oleh jalan/lintasan. Dalam makalah ini, permasalahannya dibuat lebih khusus, yaitu merepresentasikan rute perjalanan angkutan antar-jemput (travel) Bandung-Bogor sebagai graf. Lokasi merupakan simpul dan jalan merupakan lintasan. Pokok permasalahan yang dibahas adalah bagaimana cara menentukan rute perjalanan terpendek untuk meminimalisasi biaya operasional kendaraan travel, sehingga tarif perjalanan akan murah. Untuk menghitung estimasi biaya operasional kendaraan travel, yang pertama dilakukan adalah menentukan jalur terpendek yang akan dilalui, menghitung jarak yang telah ditempuh, kemudian menghitung estimasi biaya berdasarkan konsumsi BBM kendaraan yang digunakan. 2. DEFINISI DAN DESKRIPSI GRAF 2.1 Definisi Graf Graf terdiri dari himpunan tidak-kosong dari simpulsimpul (vertices) dan himpunan sisi/lintasan yang menghubungkan sepasang simpul. Secara matematis dapat ditulis sebagai berikut: Graf G = (V,E) V = {v 1,v 2,..,v n } = himpunan tidak-kosong dari simpulsimpul (vertices) E = {e 1,e 2,,e n } =himpunan sisi/lintasan yang menghubungkan sepasang simpul 2.2. Deskripsi Graf Jenis-jenis graf: Berdasarkan ada tidaknya gelang atau sisi ganda pada suatu graf a. Graf sederhana Graf yang tidak mengandung gelang maupun sisi-ganda dinamakan graf sederhana. b. Graf tak-sederhana Graf yang mengandung sisi ganda atau gelang dinamakan graf tak-sederhana (unsimple graph). MAKALAH IF2091 STRATEGI ALGORITMIK TAHUN 2009

Berdasarkan orientasi arah pada sisi a. Graf tak-berarah Graf yang sisinya tidak mempunyai orientasi arah disebut graf tak-berarah b. Graf berarah Graf yang setiap sisinya mempunyai orientasi arah disebut graf berarah Terminologi graf: Ketetanggaan Dua buah simpul dikatakan bertetangga bila keduanya terhubung langsung Bersisian Untuk sembarang sisi e = (v j, v k ) dikatakan Simpul Terpencil e bersisian dengan simpul v j, atau e bersisian dengan simpul v k Simpul terpencil ialah simpul yang tidak mempunyai sisi yang bersisian dengannya. Graf Kosong Graf yang himpunan sisinya merupakan himpunan kosong (N n ). Derajat Derajat suatu simpul adalah jumlah sisi yang bersisian dengan simpul tersebut. Notasi: d(v) Lintasan Lintasan yang panjangnya n dari simpul awal v 0 ke simpul tujuan v n di dalam graf G ialah barisan berselang-seling simpul-simpul dan sisi-sisi yang berbentuk v 0, e 1, v 1, e 2, v 2,..., v n 1, e n, v n sedemikian sehingga e 1 = (v 0, v 1 ), e 2 = (v 1, v 2 ),..., e n = (v n-1, v n ) adalah sisi-sisi dari graf G. Siklus atau Sirkuit Lintasan yang berawal dan berakhir pada simpul yang sama disebut sirkuit atau siklus. Terhubung Dua buah simpul v 1 dan simpul v 2 disebut terhubung jika terdapat lintasan dari v 1 ke v 2. G disebut graf terhubung (connected graph) jika untuk setiap pasang simpul v i dan v j dalam himpunan V terdapat lintasan dari v i ke v j. Jika tidak, maka G disebut graf tak-terhubung (disconnected graph). Upagraf Rentang Upagraf G 1 = (V 1, E 1 ) dari G = (V, E) dikatakan upagraf rentang jika V 1 =V (yaitu G 1 mengandung semua simpul dari G). Cut-set Cut-set dari graf terhubung G adalah himpunan sisi yang bila dibuang dari G menyebabkan G tidak terhubung. Jadi, cut-set selalu menghasilkan dua buah komponen. Graf Berbobot Graf berbobot adalah graf yang setiap sisinya diberi sebuah harga (bobot). Terminologi inilah yag menjadi Beberapa graf khusus: Graf Lengkap Graf lengkap ialah graf sederhana yang setiap simpulnya mempunyai sisi ke semua simpul lainnya. Graf lengkap dengan n buah simpul dilambangkan dengan K n. Jumlah sisi pada graf lengkap yang terdiri dari n buah simpul adalah n(n 1)/2. Graf Lingkaran Graf lingkaran adalah graf sederhana yang setiap simpulnya berderajat dua. Graf lingkaran dengan n simpul dilambangkan dengan C n. Graf Teratur Graf yang setiap simpulnya mempunyai derajat yang sama disebut graf teratur. Apabila derajat setiap simpul adalah r, maka graf tersebut disebut sebagai graf teratur derajat r. Jumlah sisi pada graf teratur adalah nr/2. Lintasan dan Sirkuit Euler: Lintasan Euler ialah lintasan yang melalui masingmasing sisi di dalam graf tepat satu kali. Sirkuit Euler ialah sirkuit yang melewati masingmasing sisi tepat satu kali.. Graf yang mempunyai sirkuit Euler disebut graf Euler (Eulerian graph). Graf yang mempunyai lintasan Euler dinamakan juga graf semi-euler (semi-eulerian graph). Graf tidak berarah memiliki lintasan Euler jika (graf semi- Euler) dan hanya jika terhubung dan memiliki dua buah simpul berderajat ganjil atau tidak ada simpul berderajat ganjil sama sekali.

Graf tidak berarah G adalah graf Euler (memiliki sirkuit Euler) jika dan hanya jika setiap simpul berderajat genap. Graf berarah G memiliki sirkuit Euler jika dan hanya jika G terhubung dan setiap simpul memiliki derajat-masuk dan derajat-keluar sama. G memiliki lintasan Euler jika dan hanya jika G terhubung dan setiap simpul memiliki derajat-masuk dan derajatkeluar sama kecuali dua simpul, yang pertama memiliki derajat-keluar satu lebih besar derajat-masuk, dan yang kedua memiliki derajat-masuk satu lebih besar dari derajat-keluar. Lintasan dan Sirkuit Hamilton: Lintasan Hamilton ialah lintasan yang melalui tiap simpul di dalam graf tepat satu kali. Sirkuit Hamilton ialah sirkuit yang melalui tiap simpul di dalam graf tepat satu kali, kecuali simpul asal (sekaligus simpul akhir) yang dilalui dua kali. Graf yang memiliki sirkuit Hamilton dinamakan graf Hamilton, sedangkan graf yang hanya memiliki lintasan Hamilton disebut graf semi- Hamilton. Syarat cukup supaya graf sederhana G dengan n ( 3) buah simpul adalah graf Hamilton ialah bila derajat tiap simpul paling sedikit n/2 (yaitu, d(v) n/2 untuk setiap simpul v di G). (coba nyatakan dalam jika p maka q ) Setiap graf lengkap adalah graf Hamilton. Di dalam graf lengkap G dengan n buah simpul (n 3), terdapat (n 1)!/2 buah sirkuit Hamilton. Di dalam graf lengkap G dengan n buah simpul (n 3 dan n ganjil), terdapat (n 1)/2 buah sirkuit Hamilton yang saling lepas (tidak ada sisi yang beririsan). Jika n genap dan n 4, maka di dalam G terdapat (n 2)/2 buah sirkuit Hamilton yang saling lepas. Beberapa aplikasi graf: Lintasan terpendek Persoalan pedagang keliling Persoalan tukang pos Cina Pewarnaan graf 3. STRUKTUR DATA GRAF Dalam makalah ini jenis graf yang digunakan adalah graf berbobot. Bobot sebuah sisi merepresentasikan jarak atar-wilayah. Sebuah graf memiliki 3 elemen utama, yaitu simpul, sisi/lintasan, dan bobot sisi. Struktur data graf cukup sederhana, hanya saja pemakaiannya terkadang cukup rumit. Sebuah simpul dapat memiliki atau tidak memiliki simpul tetangga. Jika tidak memiliki simpul tetangga (neighbour), simpul tersebut merupakan simpul terpencil. Setiap simpul memiliki jumlah simpul tetangga yang dapat berbeda-beda. Untuk kasus travel, setiap simpul yang melambangkan tempat penumpang naik dan turun (dalam kota) harus semuanya dilewati, karena jika tidak, akan ada penumpang yang tidak terangkut dan/atau tidak sampai tujuan. Karena itu setiap simpul memiliki tipe boolean: vis (visited/telah dikunjungi). Pada keadaan akhir (final state) semua simpul tempat penumpang naik-turun harus pernah dikunjungi paling sedikit satu kali. Sedangkan simpul yang boleh tidak dilewati (misal Jakarta dan Padalarang), vis=false jika tidak dilewati, vis=true jika dilewati. Pada keadaan akhir, salah satu simpul vis-nya harus true, tidak boleh kedua-duanya true atau keduaduanya false. Definisi tipe-nya adalah sebagai berikut: type node < nd : character {nama node} nei : array of character {daftar node tetangga} vis : boolean {node-nya sudah dikunjungi atau belum} Koneksi pada graf direpresentasikan dengan list edge. Contoh list-nya adalah: Tabel 1. Contoh Representasi Hubungan antar-simpul Graf dengan Menggunakan List Edge Elemen List Simpul 1 Simpul 2 Bobot AB A B 4.0 BC B C 5.5 AC A C 3.5 Elemen list adalah array of character yang terdiri dari dua karakter. Karakter pertama adalah simpul pertama, karakter kedua adalah simpul kedua. Sedangkan bobot sisi adalah bilangan real. Daftar koneksi didefinisikan sebagai larik dari koneksi. Selain larik koneksi, daftar koneksi mengandung jumlah koneksi (integer).

Definisi tipe-nya adalah sebagai berikut: type conn < c : array of character {jml elemen maksimum = 2} jarak : real {jarak antar node} type listkoneksi < con : array of conn jumkoneksi : integer 4. APLIKASI GRAF DALAM BISNIS TRAVEL BANDUNG-BOGOR Jalan yang menghubungkan antar-wilayah yang dilalui travel dapat digambarkan sebagai berikut : Gambar 1. Representasi Graf untuk Rute Perjalanan Bandung-Bogor Jika gambar di atas kurang jelas terlihat, perbesarannya dapat dilihat pada lampiran. Ada dua cara yang dapat dilakukan untuk menentukan rute terpendek yang dilalui sebuah kendaraan travel. Cara pertama adalah dengan cara manual, yaitu menggambar graf kemudian mencari rute terpendek dengan menghitung jarak yang ditempuh secara manual. Untuk jalur yang tidak ada atau sedikit percabangannya, cara ini mudah dilakukan, tetapi bila banyak simpul yang memiliki simpul tetangga cukup banyak, akan merepotkan dan memakan waktu lama. Cara kedua adalah menggunakan program yang dapat menentukan dengan jalur terpendek dengan algoritma tertentu. Untuk permasalahan mencari jalur terpendek, deskripsi algoritmanya adalah: Tentukan titik awal dan titik akhir Assign semua titik yang akan dilewati (termasuk titik akhir), kecuali titik awal sebagai belum dikunjungi. Sedangkan titik awal di-assign sebagai telah dikunjungi Pilih simpul tetangga yang memiliki koneksi dengan titik awal, kemudian simpan nilai bobot/jarak jika telah menemukan jalur menuju simpul terdekat Proses pemilihan berlangsung sebanyak n-1 kali, dimana n adalah jumlah simpul tetangga. Setelah itu, titik awal digeser ke simpul yang jaraknya paling dekat. Assign titik awal yang baru sebagai sudah dikunjungi. Jarak total yang sebelumnya 0, ditambah dengan nilai jarak hasil pemilihan simpul terdekat Pergeseran simpul dan penyimpanan nilai jarak total dilakukan hingga titik awal sama dengan titik akhir. Untuk dapat membentuk program, diperlukan fungsifungsi pendukung, yaitu: Fungsi koneksi (untuk menghitung jarak antarsimpul) Fungsi min (untuk menentukan nilai minimun dari dua buah bilangan real) Fungsi allnodevisited (untuk menentukan apakah sebuah simpul sudah pernah dikunjungi atau belum) Fungsi idxlast (menghasilkan indeks terakhir dari larik karakter) Fungsi jarakterpendek (fungsi utama, yang menghasilkan jarak terpendek yang ditempuh oleh kendaraan) Fungsi hitungbiaya (untuk menghitung biaya operasional berdasarkan jarak yang ditempuh, harga BBM, dan konsumsi BBM per liternya) Fungsi jarakterpendek hanya perlu digunakan saat akan menentukan rute terpendek di dalam kota, jika digunakan untuk menentukan rute terpendek antarkota, kurang begitu berguna karena dapat dengan mudah dikerjakan secara manual (misalnya sisi GA dan GC ). Dengan adanya fungsi-fungsi diatas, maka program utama pun dapat dibuat dengan mudah. Dalam program utama, fungsi yang dipanggil secara langsung hanya fungsi hitungbiaya. Tetapi, jika fungsi hitungbiaya dipanggil, fungsi-fungsi lain juga dipanggil secara tidak langsung.

Algoritma beberapa fungsi yang dipakai adalah sebagai berikut: function koneksi (N : node, M : node) - real i : integer L : listkoneksi L.con[i].c[1]:=N L.con[i].c[2]:=M -L.con[i].jarak function min (a : real, b : real) - real if (a <= b) then - a else - b function allnodevisited() - boolean A,B,C,D,E,F,G : node if (A.vis and B.vis and C.vis and D.vis and E.vis and F.vis and G.vis) then - true else - false function idxlast (c : array of character) - integer i,j : integer i := 1 j := i + 1 while (c[j] < Nil) i := i + 1 j := j + 1 endwhile - i Algoritma program dan fungsi yang lain dapat dilihat pada lampiran. Sebagai contoh, ada tujuh penumpang dari Bandung yang akan dijemput mobil travel. Misalkan kantor travel ada di A (Bandung) dan di E (Bogor). Maka A adalah titik awal dan E adalah titik akhir. Gunakan fungsi jarakterpendek, rute terpendek saat di Bandung adalah A- C-D-A-B-G-F-E-G (jarak tempuh = 6,6 + 3,7 + 5 + 4,4 + 3,7 + 6 + 4 + 5 = 38,4 km). setelah itu ada dua pilihan untuk sampai di Bogor, dari simpul G ke C atau A? Pilih A karena lebih dekat (jarak tempuh = 38,4 + 120 = 158,4 km). Setelah sampai di A tentunya harus lewat B karena B dan C harus dikunjungi. Jalur terpendek adalah A -B - C (jarak tempuh = 158,4 + 7 + 6 = 171,4 km). Di C kembali gunakan fungsi jarakterpendek, hasilnya adalah rute C -G -F -E -G -D -E (jarak total = 171,4 + 4 + 4 + 3,5 + 3 + 5 + 4,5 = 194,4 km). Misalkan konsumsi BBM rata-rata mobil adalah 10 km/liter dan BBM yang dipakai adalah premium, biaya operasional (hanya pemakaian BBM) adalah (194,4*4500) div 10 = 87.480 rupiah. Berarti setiap penumpang membayar sebanyak 12.500 untuk pemakaian BBM, sisanya biaya lain-lain termasuk sewa mobil dan biaya perawatan. Tarif travel di indonesia bervariasi, tergantung jauh dekatnya tujuan. Kalau travel Bandung-Bogor yang biasa saya pakai, biayanya 65.000 rupiah jika lewat Puncak atau 85.000 jika lewat Cipularang. Berarti, biaya di luar pemakaian BBM adalah antara 52.500 sampai dengan 72.500. 5. KESIMPULAN Graf dapat merepresentasikan banyak persoalan, salah satunya adalah menentukan rute terpendek perjalanan dalam kota dan antar-kota, dalam hal ini adalah perjalanan mobil travel. Yang pertama dilakukan adalah menggambar graf yang sesuai, kemudian buat daftar koneksi antar-simpul, kemudian jalankan program. Program dibuat menggunakan struktur data graf untuk merepresentasikan koneksi antar-simpul. Program ini efektif digunakan pada kondisi dimana banyak percabangan antara titik awal dan titik akhir, misalnya di dalam kota. Jika tidak banyak percabangan, dapat dipakai cara manual. Jika kedua kondisi ada (banyak percabangan dan sedikit percabangan), sebaiknya program dipakai agar proses pemilihan jalur dapat dilakukan dengan cepat dan mudah. DAFTAR REFERENSI [1] Munir, Rinaldi. (2003). Matematika Diskrit. Departemen Teknik Informatika, Institut Teknologi Bandung. [2] Liem, Inggriani. (2008). Diktat Struktur Data. Departemen Teknik Informatika, Institut Teknologi Bandung. [3] http://maps.google.com/ (tanggal akses 7 Desember 2009 pukul 14.30)

LAMPIRAN Definisi tipe dan fungsi-fungsi dasar: type node < nd : character nei : array of character vis : boolean {daftar node tetangga} {node-nya sudah dikunjungi atau belum} type conn < type listkoneksi< c : array of character {jml elemen maksimum = 2} jarak : real {jarak antar node} con : array of conn jumkoneksi : integer function koneksi (N : node, M : node) - real i : integer L : listkoneksi L.con[i].c[1]:=N L.con[i].c[2]:=M -L.con[i].jarak function min (a : real, b : real) - real if (a <= b) then - a else - b function allnodevisited() - boolean A,B,C,D,E,F,G : node if (A.vis and B.vis and C.vis and D.vis and E.vis and F.vis and G.vis) then - true else - false function idxlast (c : array of character) - integer i,j : integer i := 1 j := i + 1 while (c[j] < Nil) do i := i + 1 j := j + 1 endwhile - i

Dua fungsi utama yang dipakai: function jarakterpendek (nodeawal : node, nodeakhir : node) - real i : integer temp : real jalur : real initnode : node node D,E,F,G : node nextnode: node L : listkoneksi n : integer i := 1 {inisialisasi} temp := 0 nodeawal := C initnode := nodeawal {initial node (node awal)} C.vis := true D.vis := false E.vis := false F.vis := false G.vis := false n := idxlast(c.nei) jalur = min(koneksi(c,g),koneksi(c,f)) if (jalur = L.con[i].jarak) then nextnode.nd := L.con[i].c[2] while (initnode < nodeakhir) do for i=1 to n-1 do jalur := min(koneksi(initnode,n1.nei[i]), koneksi(initnode,n1.nei[i+1])) endfor initnode := nextnode initnode.vis := true temp := temp + jalur endwhile if (allnodevisited()) then - temp function hitungbiaya (naw : node, nakh : node, KB : real, hargabbm : integer) - integer - (jarakterpendek(naw,nakh)*hargabbm) div KB {KB : konsumsi bbm kendaraan (km/liter)}

Program utama: PROGRAM HitungBiayaOpr {program menentukan jalur/rute terpendek dari suatu graf yang merepresentasikan jalur antar-wilayah serta jaraknya dalam satuan kilometer} KAMUS hslbiaya : integer {hasil akhir program ini} kbbm : integer {konsumsi BBM dalam km/liter} hbbm : integer {harga BBM dalam rupiah} C,E : node {titik awal dan akhir} function koneksi (N : node, M : node) - real function min (a : real, b : real) - real function allnodevisited() - boolean function idxlast (c : array of character) - integer function jarakterpendek (nodeawal : node, nodeakhir : node) - real function hitungbiaya (naw : node, nakh : node, KB : real, hargabbm : integer) - integer hslbiaya := hitungbiaya (C,E,kBBM,hBBM) Gambar Representasi Graf Rute Perjalanan Travel Bandung-Bogor: