Peerapa Algoritma Dijstra dalam Pemiliha Traye Bus Trasjaarta Muhammad Yafi 504 Program Studi Tei Iformatia Seolah Tei Eletro da Iformatia Istitut Teologi Badug, Jl. Gaesha 0 Badug 40, Idoesia 504@std.stei.itb.ac.id Abstra Maalah ii membahas tetag pegguaa salah satu materi Strategi Algoritma yaitu Algoritma Dijstra, yag megguaa prisip greedy, utu meracag litasa yag dipilih oleh peggua bus Trasjaarta utu pergi dari suatu tempat asal e tempat tujua. Litasa tersebut dipilih sedemiia higga watu yag ditempuh oleh peggua semiimal mugi. Idex Terms graf, Dijstra, litasa, simpul, sisi, watu, SSSP. I. PENDAHULUAN Trasjaarta merupaa saraa trasportasi umum berbetu bus yag ada di Jaarta sebagai upaya pemeritah dalam megatasi emaceta. Berbeda dega bus ota biasa, Trasjaarta memilii jala husus yag terpisah dega jala umum sehigga tida terbawa arus macet. Karea jalur husus tersebut, maa mode trasportasi umum ii serig juga disebut dega busway. Keuggula lai dari bus-bus Trasjaarta adalah halte yag terleta di tempat-tempat strategis da serig diujugi oleh warga Jaarta. Utu membeli tiet, peggua tiggal datag e halte utu membeliya. Kelebiha dari tiet Trasjaarta adalah hargaya yag tetap walaupu jaraya jauh, da tida ada biaya tambaha jia harus pidah traye bus. Traye tersebut serig juga disebut oleh peggua Trasjaarta dega oridor, jalur, atau litasa. Hal ii diareaa biaya dihitug saat peggua masu e area tuggu. Masu dari luar halte e area tuggu dihitug satu tiet. Namu, jia peggua eluar dari bus da meuggu bus lai utu gati traye, hal tersebut tida hitug tiet baru. Hal ii diareaa peggua masih berada dalam area tuggu da tida berasal dari luar halte. Aibatya, biaya yag dieluara oleh peggua lebih murah jia dibadiga dega ai aguta umum biasa. Permasalaha yag serig terjadi adalah jia peggua igi meetua litasa yag diguaa utu berpidah dari suatu tempat e tempat lai, bisa jadi tida ada bus lagsug yag tersedia. Peggua harus gati traye bus selama dua ali atau lebih atau dieal dega istilah trasit. Karea biaya dari Trasjaarta dihitug bua dari seberapa baya traye yag diambil, maa peggua bisa bebas memilih bus-bus maa saja yag aa dia ambil dalam perjalaa tersebut. Sehigga masalah yag ada haya berapaah watu yag dibutuha utu meempuh litasa tersebut. Peyambuga litasa ii dapat meghabisa watu yag sagat lama jia peggua tida tahu traye-traye maa saja yag harus diambil. Selai itu, ada juga emugia bahwa walaupu dega satu buah bus peggua dapat sampai e tempat tujua, amu jia peggua bergati bus teryata juga bisa sampai e tempat tujua dega lebih cepat. Gambar - Bus Trasjaarta sedag berheti di halte [7] Algoritma Dijstra dapat diguaa utu meetua litasa maaah yag diambil oleh peumpag sehigga litasa tersebut memilii watu tempuh yag sesigat mugi. Dega megetahui litasa yag diambil tersebut maa peggua dapat meetua bus-bus maa yag aa diambil.. Defiisi Graf II. DASAR TEORI Graf G didefiisia sebagai pasaga himpua (V,E) dega V = himpua ta-osog dari simpul = { v, } E = himpua sisi (edges atau arcs) yag meghubuga sepasag simpul = { e, e, e,, e } Atau dapat ditulis sigat otasi G = (V,E).
vertex). Jia sebuah edge e meghubuga simpul v i da v j maa e dapat ditulis sebagai e = (v i j ).. Jeis-Jeis Graf Berdasara ada tidaya gelag atau sisi gada pada suatu graf, maa secara umum graf dapat digologa mejadi dua jeis:. Graf sederhaa Graf yag tida megadug gelag maupu sisigada diamaa graf sederhaa.. Graf ta-sederhaa Graf yag megadug sisi gada atau gelag diamaa graf ta-sederhaa. Ada dua macam graf tasederhaa, yaitu graf gada da graf semu. Graf gada adalah graf yag megadug sisi gada. Sebuah graf memilii sisi gada jia ada buah simpul yag dihubuga lebih dari satu sisi. Graf semu adalah graf yag memilii sisi gelag (loop). Sisi gelag adalah sisi yag meghubuga sebuah simpul dega simpul itu sedir. Utu lebih jelasya, perhatia Gambar. Gambar -(a) graf sederhaa, (b) graf gada, da (c) graf semu. [] Gambar 4 - Graf berarah [] Sisi pada graf dapat memilii bobot atau tida. Berdasara bobot pada sisiya, graf dapat digologa mejadi dua :. Graf berbobot (weighted graph) Graf berbobot adalah graf yag setiap sisiya memilii bobot. Bobot pada sisi graf dapat merepresetasia apasitas, biaya, atau eutuga.. Graf ta-berbobot (uweighted graph) Graf ta-berbobot adalah graf yag setiap sisiya tida memilii bobot.. Litasa da Siruit Sebuah litasa (path) didefiisia sebagai uruta dari buah sisi e,, e sedemiia higga e merupaa (v 0, v ), e merupaa (v ),, e merupaa (v - ). Litasa juga dapat didefiisia sebagai uruta simpul yag diujugi v 4,, Sebuah litasa disebut siruit (cycle/circuit) jia v 0 = v atau dega ata lai simpul asal da simpul tujua sama. Sebagai cotoh, perhatia gambar di bawah ii. Rute a, b, c, f, e, d merupaa litasa dari a e d. Rute a, b, f, c, d, a merupaa sirut area memilii simpul asal da tujua yag sama, yaitu a. Sisi graf dapat memilii orietasi arah. Berdasara arah dari sisi, graf dibedaa mejadi jeis :. Graf ta-berarah Graf yag sisiya tida memilii orietasi arah disebut graf ta-berarah. Pada graf ta-berarah, uruta pasaga simpul pada sisi tida diperhatia. Sebuah sisi e = (u) sama dega e = (v, u) Gambar -Graf ta-berarah []. Graf berarah Graf yag setiap sisiya memilii orietasi arah disebuh graf berarah. Pada graf berarah, sebuah sisi dieal juga sebagai busur (arc). Pada graf berarah, (u) da (v, u) meyataa dua buah sisi yag berbeda. Pada sebuah sisi (u), simpul u meyataa simpul asal (iitial vertex) da simpul v meyataa simpul termial (termial Gambar 5-Graf cyclic [] Sebuah graf yag tida memilii litasa sili disebut graf asili (acyclic graph). Graf pada Gambar 5 merupaa graf sili area memilii litasa sili..4 Algoritma Greedy Algoritma greedy adalah algoritma yag diguaa utu meetua hasil dari persoala optimasi. Ada macam persoala optimasi yaitu masimum da miimum. Pada setiap lagah, piliha yag meghasila ilai optimal palig besar (local optimal) diambil sebagai bagia dari optimal total (global optimal) dega harapa bahwa total dari local optimal tersebut merupaa hasil/tida jauh dari hasil optimal global sebearya. Dua syarat algoritma greedy adalah :
- Greedy Choice Property: dari local optimal ita bisa mecapai global optimal tapa harus meggati/mempertimbaga eputusa yag sudah diambil. - Optimal Substructure Property: solusi optimal dari permasalaha dapat ditetua dari subsolusi permasalaha tersebut. Eleme-eleme algoritma greedy:. Himpua adidat, C.. Himpua solusi, S. Fugsi selesi (selectio fuctio) 4. Fugsi elayaa (feasible) 5. Fugsi obyetif.5 Algoritma Litasa Terpede/Shortest Path Algoritma litasa terpede merupaa algoritma yag diguaa utu meetua litasa yag diambil utu pergi dari suatu titi e titi lai. Diberia graf berbobot G = (V, E). Tetua litasa terpede dari sebuah simpul asal a e setiap simpul laiya di G. Gambar 6 - Graf Permasalaha Litasa Terpede [] Ada 4 macam betu algoritma shortest path: a) Litasa terpede atara dua buah simpul tertetu (a pair shortest path). b) Litasa terpede atara semua pasaga simpul (all pairs shortest path). c) Litasa terpede dari simpul tertetu e semua simpul yag lai (sigle-source shortest path). d) Litasa terpede atara dua buah simpul yag melalui beberapa simpul tertetu (itermediate shortest path). Asumsi yag ita buat adalah bahwa semua sisi berbobot positif..6 Algoritma Dijstra Algoritma Dijstra megguaa prisip greedy. Pada setiap lagah, ambil sisi yag berbobot miimum yag meghubuga sebuah simpul yag sudah terpilih dega sebuah simpul lai yag belum terpilih. Litasa dari simpul asal e simpul yag baru haruslah merupaa litasa yag terpede diatara semua litasaya e simpul-simpul yag belum terpilih. Pseudocode dari algoritma Dijstra sebagai beriut : procedure Dijstra (iput G: weighted_graph, iput a: itial_vertex) Delarasi: S : himpua simpul solusi L : array[..] of real { L(z) berisi pajag litasa terpede dari a e z} Algoritma for i to ed for L(v i) L(a) 0; S { } while z S do u simpul yag bua di dalam S da memilii L(u) miimum di dalam S S S {u} for semua simpul v yag tida terdapat L(v) L(u) + G(u,v) ed for ed while if L(u) + G(u,v) < L(v) the III. ANALISIS PERMASALAHAN.. Desripsi Permasalaha Seorag peggua igi megguaa bus Trasjaarta utu pergi e suatu tempat. Karea Trasjaarta berheti haya di halte-halte yag sudah ditetua, permasalaha tersebut aa diubah. Seorag peggua igi berpidah dari suatu halte meuju halte lai. Perhatia bahwa peulis tida meghitug berapa jara yag ditempuh oleh peggua utu meuju halte awal (misal dega berjala ai, ai tasi, da sebagaiya) da berapa jara tambaha yag ditempuh utu meuju e tempat tujua dari halte ahir (misal harus berjala ai terlebih dahulu). Gambar 7 - Seluruh traye Trasjaarta [5] Dari gambar di atas, perhatia bahwa utu pergi dari suatu tempat e tempat lai, mugi ada lebih dari satu emugia cara. Setiap cara memilii uruta halte yag diujugi da traye-traye bus maa yag harus diambil. Mugi saja dega megambil lebih dari satu traye, aa lebih cepat sampai dibadiga haya dega megiuti satu traye bus saja. Aa tetapi, bisa saja megambil traye lebih baya aa meambah watu tempuh yag dibutuha.
.. Betu Umum Permasalaha Sebelum melaua aalisis, peulis meetua betu umum dari permasalaha tersebut: - Permasalaha tersebut dapat diategoria sebagai sigle source shortest path (SSSP). Hal ii area ita aa meetua watu tempuh sesediit mugi dari simpul asal e simpulsimpul lai. - Halte merupaa simpul-simpul dari sebuah graf. - Jala meyataa sisi-sisi dari graf. - Ogos dari suatu sisi merupaa watu yag dibutuha utu beraga dari suatu simpul e simpul lai. Ogos ii dijami selalu positif. - Simpul awal merupaa halte awal peggua berada. - Simpul ahir merupaa halte ahir peggua berada... Peerapa Algoritma Algoritma pecaria traye ii terdiri dari tahap besar: a. Mecari jara terpede dari simpul asal e seluruh simpul lai (termasu simpul tujua) yag dilaua dega meerapa Dijstra. b. Meetua litasa yag aa dilalui dari simpul asal e simpul tujua. c. Meetua traye-traye yag aa diambil utu diguaa oleh peggua. Algoritma yag aa dipaai adalah sebagai beriut: a. Pertama-tama, tetua simpul awal dari graf. b. Kemudia, setiap simpul meyimpa best, yaitu jara miimum yag dibutuha utu beragat dari simpul awal e simpul tersebut. Pada awalya, ilai dari best adalah ta higga (ilai yag sagat besar). Selai meyimpa jara dari simpul awal, setiap simpul juga meyimpa simpul previous, yaitu simpul sebelumya yag diambil oleh litasa dari simpul awal sebelum pergi e simpul tersebut. Keguaaa dari simpul previous ii adalah utu megostrusi litasa dari simpul awal e simpul tujua. c. Ambil simpul yag belum diujugi (pada awal algoritma, semua simpul belum diujugi) dega bobot terecil. Pada awal algoritma, simpul tersebut adalah simpul asal. Misala simpul tersebut adalah u da ilai jara simpul tersebut e simpul asal adalah best[u]. Utu setiap v sehigga ada jala dari u e v, gati ilai dari best[v] jia lebih dari biaya yag dibutuha utu beragat dari simpul awal e simpul u best[u] ditambah dega biaya dari simpul u e simpul v. Atau best[v] > best[u] + cost[u][v]. Utu setiap v yag diupdate, gati ilai previous[v] mejadi u. d. Tadai simpul u sebagai simpul yag sudah diujugi. Artiya, ita tida perlu mempertimbaga ilai dari best[u] lagi. Di siilah prisip greedy dari Dijstra. e. Ulagi lagah c da d, sampai semua simpul sudah diujugi. f. Cari simpul tujua, misala simpul f. Ambil ilai dari previous[f]. Artiya adalah utu mecapai simpul awal meuju simpul f, maa sebelumya ita harus melewati previous[f]. Kemudia, ita harus mecari ilai previous dari previous f tersebut (reursif). Ulagi lagah ii sehigga didapat ragaia simpul yag berawal dari simpul f da berahir di simpul awal. g. Misala ita dapat litasa terpede dari poi f di atas adalah R = { v, } dega v adalah simpul asal da v adalah simpul tujua. Maa ita tetua S = { v,, v } sedemiia higga adalah masimum, da ada traye yag melewati seluruh simpul aggota himpua S. Artiya adalah ita mecari sebuah sub-litasa yag merupaa bagia dari litasa sebearya sedemiia higga ada sebuah bus yag melewati sublitasa tersebut. Perhatia bahwa jia R = S maa ita haya perlu sebuah bus utu beragat dari simpul awal e simpul tujua. Namu jia S merupaa himpua bagia dari R maa artiya ita harus gati traye bus. v meadaa simpul awal da v meadaa simpul di maa ita harus trasit utu gati bus. h. Ulagi lagah (g), amu ali ii dega R digati dega R S + {v } Artiya adalah ita mecari bus lagi yag melewati R S da beragat dari v.4. Cotoh Istatiasi Permasalaha Utu lebih mudah, peulis aa memberia satu cotoh permasalaha. Misala terdapat 6 buah halte (ditadai dega huruf a, b, c, d, e, f). Garis pada graf meadaa hubuga atar halte. Simpul tujua adalah simpul f, da simpulasal adalah simpul a. Asumsia bahwa utu setiap pasag simpul yag bertetagga, ada bus yag melalui dua simpul tersebut. Pada awalya, setiap simpul diberi ilai best = ta terhigga ecuali simpul a.
Gambar 8 - Graf awal [6] Simpul yag belum terujugi dega bobot miimal adalah a. Maa, perbarui ilai best dari seluruh simpul yag bertetagga dega a yaitu b da c. Kemudia tadai simpul a sudah diujugi (artiya simpul a tida perlu diupdate lagi da tida dice lagi ilai best ya) b 0+4=4 4 a c 0+= a Simpul selajutya adalah d dega tetaggaya e da f. e 8+ = 0 0 d f 8+6 = 4 4 d Simpul yag dipilih selajutya adalah e Simpul yag belum terujugi da memilii ilai miimum adalah c. Update tetagga c yaitu (b,d,e). Perhatia a tida diupdate area sudah ditadai. Tadai c sudah diujugi f 4 0+ d b 4 += c d +8=0 0 c e +0= c Simpul f tida ada tetagga yag belum diujugi. Simpul best[v] awal best[u] + cost[u][v] best[v] previous Simpul yag belum terujugi da memilii ilai miimum adalah b. Update tetagga b yaitu (d). Tadai b sudah diujugi. d 0 +5=8 8 b Simpul best[u] previous a 0 - b c c a d 8 b e 0 d f e
Searag ita aa meetua litasa yag dibutuha utu meempuh a e f. Perhatia bahwa walaupu pada gambar sudah ada urutaya amu pada algoritma sebearya litasa tersebut disimpa implisit. awal previous hasil {f} previous[f] = e {e,f} {e,f} previous[e] = d {d,e,f} {d,e,f} previous[d] = b {b,d,e,f} {b,d,e,f} previous[b] = c {c,b,d,e,f} {c,b,d,e,f} previous[c] = a {a,c,b,d,e,f} Perhatia bahwa utu mecapai f dega ogos miimal maa litasa yag harus dilalui adalah a c b d e f. Utu meetua traye-traye maa yag perlu diambil, mula-mula ita tetua daftar traye yag melewati a,b,c,d,e, atau f. Misala daftar trayeya adalah sebagai beriut : Traye Halte yag dilalui a e f a c b - f d e a c b d 4 c b d f Algoritma yag dilaua adalah sebagai beriut : Iterasi pertama : {a,c,b,d,e,f} Litasa Bus yag lewat litasa tersebut a {,,} a c {,} a c b {,} a c b d {} a c b d - e {} Litasa terjauh adalah dega meempuh a c b d dega bus. Artiya adalah peggua harus trasit pada halte d. Iterasi edua : {a,c,b,d,e,f} {a,b,c,b,d} + {d} = {d,e,f} Litasa Bus yag lewat litasa tersebut d {,,4} d e {4} d e f {} Litasa terjauh adalah dega meempuh d e dega bus 4. Peggua aa trasi di halte e Iterasi etiga : {d,e,f} {d,e} + {e} = {e,f} Litasa Bus yag lewat litasa tersebut e {,} e f {} Ambil bus. Berdasara hasil di atas, maa ita dapat ragum alur perjalaa peggua sebagai beriut: Nai bus dari halte a. Turu di halte d. Nai bus 4 dari halte d. Turu di halte e. Nai bus dari halte e. Turu di halte f..5. Komplesitas Algoritma Berdasara algoritma yag peulis bahas, maa ada sub-algoritma utama yag dijalaa. Pertama adalah algoritma utu mecari litasa terpede (yaitu Dijstra) da algoritma utu mecari traye bus yag melewati litasa terpede da melewati simpul asal da simpul tujua. Algoritma Dijstra memilii omplesitas watu O((V+E) log (V+E)) [4] atau termasu dalam O( log ). Algoritma mecari traye memilii omplesitas watu sebagai beriut : Misala utu mecapai simpul tujua aa diambil litasa { v, } dega v adalah simpul asal da v adalah simpul tujua. Pada iterasi pertama aa mecari simpul terjauh ( i є {,,,,} ) da ada traye yag melewati v,,. Iterasi tersebut memilii omplesitas T() = c. Dega c adalah fator ostata yaitu baya traye yag ada. Iterasi selajutya aa mecari simpul terjauh da ada traye yag melewati,. Iterasi tersebut memilii omplesitas T() = c( ). Iterasi selajutya aa mecari simpul terjauh da ada traye yag melewati,. Iterasi tersebut memilii omplesitas T() = c( ). Iterasi tersebut aa diulag higga terdapat simpul da ada traye yag melewati, da adalah simpul ahir ( m = ) Total omplesitas yag terjadi adalah T() = c( m m- ) + c( m m- )+ + c( ) + c( ) T() = c( m ) Karea ita tahu bahwa m = da = maa T() = c(-) = O() Total dari omplesitas algoritma ii adalah Komplesitas algoritma Dijstra + Komplesitas algoritma mecari traye = O( log ) + O() = O( log ) Dega demiia ecepata dari algoritma ii sama dega ecepata algoritma Dijstra biasa. Karea O( log ) dapat diselesaia dalam watu seitar deti utu = 00000, maa algoritma tersebut cuup magus utu diterapa pada jalur Trasjaarta (yag total halte-ya haya seitar 00-a).6. Peerapa dalam Kehidupa Nyata Piha pegelola bus Trasjaarta dapat membuat apliasi (misalya berbasis mobile phoe) pemiliha litasa utu pegguaya. Peggua dapat memasua tempat asal da tempat tujua. Apliasi aa memberia halte asal da halte tujua yag palig deat dega peggua. Selai itu, peggua juga aa
diberia petuju traye bus maa saja yag harus diambil sedemiia higga total watu yag ditempuh adalah semiimal mugi. Dega demiia, eyamaa da aspe fugsioalitas dari bus dapat ditigata. Peerapa algoritma ii dalam ehidupa yata bisa jadi meemui suatu asus yag tida optimal. Perhatia bahwa ogos atar dua simpul adalah watu tempuh. Pada eyataaya, watu tempuh atar dua simpul bisa bervariasi. Pada jam padat mugi watu tempuh yag dibutuha bisa lebih tiggi. Pada pagi hari atau sore mugi watu tempuh bisa lebih redah. Solusi ii adalah dega megubah variabel cost[u][v] mejadi cost[u][v][t], yaitu watu yag dibutuha utu bergera dari u e v pada watu e-t Selai itu, ada emugia bahwa watu tuggu trasit utu berpidah bus memilii watu yag lama. Pada algoritma yag peulis buat, watu trasit diaggap tida sigifia terhadap watu tempuh perjalaa sehigga diberi ilai ol. Solusi utu permasalaha ii adalah dega memberia ilai best[v] bua sebagai miimum dari {best[v],best[u]+cost[u][v]}, amu miimum dari {best[v],best[u]+cost[u][v]+waitig[u]}. Artiya, ditetua rata-rata watu yag dibutuha utu meuggu bus trasit pada simpul e-u. PERNYATAAN Dega ii saya meyataa bahwa maalah yag saya tulis ii adalah tulisa saya sediri, bua sadura, atau terjemaha dari maalah orag lai, da bua plagiasi. Badug, 5 Mei 04 Muhammad Yafi 504 IV. KESIMPULAN Algoritma Dijstra dapat diguaa utu meetua watu tempuh terpede yag dibutuha utu mecapai suatu halte Trasjaarta dari halte lai. Selai itu, dega iformasi tersebut maa peggua Trasjaarta juga dapat meetua traye-traye bus maa saja yag perlu diambil sedemiia higga litasa tersebut dapat ditempuh. REFERENSI [] Liem, Iggriai, Ditat Strutur Data. Badug: Program Studi Iformatia Seolah Tei Eletro da Iformatia Istitut Teologi Badug, 008. [] Muir, Rialdi. 009. Matematia Disrit. Badug : Iformatia. [] Rose, Keeth H., Discrete Mathematics ad Its Applicatios, 4th, McGraw-Hill Iteratioal 999. [4] Halim, Steve. Competitive Programmig. Natioal Uiversity of Sigapore, 0. [5] Idahesia, http://www.idahesia.com. Diases 5 Mei 04 puul.00. [6] Muir, Rialdi. 009. Ditat Kuliah IF Strategi Algoritma. Badug : Iformatia. [7] Website Trasjaarta, http://trasjaarta.co.id. Diases 5 Mei 04 puul.00.