bumperboy2000
Programmer
Hi guys. I'm currently doing a module on programming languages. I have an assignment which requires graph traversal, finding out the 3 shortest paths from one train station to another. There're interchanges for changing of train lines.
The station diagram is depicted here:
I have come up with an adjacency list of stations, without definition whether it's an interchange or not. As for progressing from there, I'm dumbfounded by how this language works. Could anyone lead me in the correct direction as to solve this problem?
User input: beginning station AND end station
Program output: shortest path 1, shortest path 2, shortest path 3
The paths require printing of each station's name throughout the whole path.
These are the lines of arcs I have come up with in an adjacency-list manner.
Thanks a million!
arcs(jookoon,[pioneer]).
arcs(pioneer,[jookoon,boonlay]).
arcs(boonlay,[pioneer,lakeside]).
arcs(lakeside,[boonlay,chinesegarden]).
arcs(chinesegarden,[lakeside,jurongeast]).
arcs(jurongeast,[chinesegarden,clementi,bukitbatok]).
arcs(clementi,[jurongeast,dover]).
arcs(dover,[clementi,buonavista]).
arcs(buonavista,[dover,commonwealth]).
arcs(commonwealth,[buonavista,queenstown]).
arcs(queenstown,[commonwealth,redhill]).
arcs(redhill,[queenstown,tiongbahru]).
arcs(tiongbahru,[redhill,outrampark]).
arcs(outrampark,[tiongbahru,tanjongpagar,harbourfront,chinatown]).
arcs(tanjongpagar,[outrampark,rafflesplace]).
arcs(rafflesplace,[tanjongpagar,cityhall,marinabay]).
arcs(cityhall,[rafflesplace,dhobyghaut,bugis]).
arcs(bugis,[cityhall,lavender]).
arcs(lavender,[bugis,kallang]).
arcs(kallang,[lavender,aljunied]).
arcs(aljunied,[kallang,payalebar]).
arcs(payalebar,[aljunied,eunos,dakota,macpherson]).
arcs(eunos,[payalebar,kembangan]).
arcs(kembangan,[eunos,bedok]).
arcs(bedok,[kembangan,tanahmerah]).
arcs(tanahmerah,[bedok,simei,expo]).
arcs(simei,[tanahmerah,tampines]).
arcs(tampines,[simei,pasirris]).
arcs(pasirris,[tampines]).
arcs(expo,[tanahmerah,changiairport]).
arcs(changiairport,[expo]).
arcs(bukitbatok,[jurongeast,bukitgombak]).
arcs(bukitgombak,[bukitbatok,choachukang]).
arcs(choachukang,[bukitgombak,yewtee]).
arcs(yewtee,[choachukang,kranji]).
arcs(kranji,[yewtee,marsiling]).
arcs(marsiling,[kranji,woodlands]).
arcs(woodlands,[marsiling,admiralty]).
arcs(admiralty,[woodlands,sembawang]).
arcs(sembawang,[admiralty,yishun]).
arcs(yishun,[sembawang,khatib]).
arcs(khatib,[yishun,yiochukang]).
arcs(yiochukang,[khatib,angmokio]).
arcs(angmokio,[yiochukang,bishan]).
arcs(bishan,[angmokio,braddell,marymount,lorongchuan]).
arcs(braddell,[bishan,toapayoh]).
arcs(toapayoh,[braddell,novena]).
arcs(novena,[toapayoh,newton]).
arcs(newton,[novena,orchard]).
arcs(orchard,[newton,somerset]).
arcs(somerset,[orchard,dhobyghaut]).
arcs(dhobyghaut,[somerset,cityhall,clarkequay,littleindia,brasbasah]).
arcs(marinabay,[rafflesplace]).
arcs(harbourfront,[outrampark]).
arcs(chinatown,[outrampark,clarkequay]).
arcs(clarkequay,[dhobyghaut,chinatown]).
arcs(littleindia,[dhobyghaut,farrerpark]).
arcs(farrerpark,[littleindia,boonkeng]).
arcs(boonkeng,[farrerpark,potongpasir]).
arcs(potongpasir,[boonkeng,woodleigh]).
arcs(woodleigh,[potongpasir,serangoon]).
arcs(serangoon,[woodleigh,kovan,bartley,lorongchuan]).
arcs(kovan,[serangoon,hougang]).
arcs(hougang,[kovan,buangkok]).
arcs(buangkok,[hougang,sengkang]).
arcs(sengkang,[buangkok,punggol]).
arcs(punggol,[sengkang]).
arcs(marymount,[bishan]).
arcs(lorongchuan,[bishan,serangoon]).
arcs(bartley,[taiseng,serangoon]).
arcs(taiseng,[bartley,macpherson]).
arcs(macpherson,[taiseng,payalebar]).
arcs(dakota,[mountbatten,payalebar]).
arcs(mountbatten,[dakota,stadium]).
arcs(stadium,[mountbatten,nicollhighway]).
arcs(nicollhighway,[stadium,promenade]).
arcs(promenade,[nicollhighway,esplanade]).
arcs(esplanade,[promenade,brasbasah]).
arcs(brasbasah,[esplanade,dhobyghaut]).
The station diagram is depicted here:
I have come up with an adjacency list of stations, without definition whether it's an interchange or not. As for progressing from there, I'm dumbfounded by how this language works. Could anyone lead me in the correct direction as to solve this problem?
User input: beginning station AND end station
Program output: shortest path 1, shortest path 2, shortest path 3
The paths require printing of each station's name throughout the whole path.
These are the lines of arcs I have come up with in an adjacency-list manner.
Thanks a million!
arcs(jookoon,[pioneer]).
arcs(pioneer,[jookoon,boonlay]).
arcs(boonlay,[pioneer,lakeside]).
arcs(lakeside,[boonlay,chinesegarden]).
arcs(chinesegarden,[lakeside,jurongeast]).
arcs(jurongeast,[chinesegarden,clementi,bukitbatok]).
arcs(clementi,[jurongeast,dover]).
arcs(dover,[clementi,buonavista]).
arcs(buonavista,[dover,commonwealth]).
arcs(commonwealth,[buonavista,queenstown]).
arcs(queenstown,[commonwealth,redhill]).
arcs(redhill,[queenstown,tiongbahru]).
arcs(tiongbahru,[redhill,outrampark]).
arcs(outrampark,[tiongbahru,tanjongpagar,harbourfront,chinatown]).
arcs(tanjongpagar,[outrampark,rafflesplace]).
arcs(rafflesplace,[tanjongpagar,cityhall,marinabay]).
arcs(cityhall,[rafflesplace,dhobyghaut,bugis]).
arcs(bugis,[cityhall,lavender]).
arcs(lavender,[bugis,kallang]).
arcs(kallang,[lavender,aljunied]).
arcs(aljunied,[kallang,payalebar]).
arcs(payalebar,[aljunied,eunos,dakota,macpherson]).
arcs(eunos,[payalebar,kembangan]).
arcs(kembangan,[eunos,bedok]).
arcs(bedok,[kembangan,tanahmerah]).
arcs(tanahmerah,[bedok,simei,expo]).
arcs(simei,[tanahmerah,tampines]).
arcs(tampines,[simei,pasirris]).
arcs(pasirris,[tampines]).
arcs(expo,[tanahmerah,changiairport]).
arcs(changiairport,[expo]).
arcs(bukitbatok,[jurongeast,bukitgombak]).
arcs(bukitgombak,[bukitbatok,choachukang]).
arcs(choachukang,[bukitgombak,yewtee]).
arcs(yewtee,[choachukang,kranji]).
arcs(kranji,[yewtee,marsiling]).
arcs(marsiling,[kranji,woodlands]).
arcs(woodlands,[marsiling,admiralty]).
arcs(admiralty,[woodlands,sembawang]).
arcs(sembawang,[admiralty,yishun]).
arcs(yishun,[sembawang,khatib]).
arcs(khatib,[yishun,yiochukang]).
arcs(yiochukang,[khatib,angmokio]).
arcs(angmokio,[yiochukang,bishan]).
arcs(bishan,[angmokio,braddell,marymount,lorongchuan]).
arcs(braddell,[bishan,toapayoh]).
arcs(toapayoh,[braddell,novena]).
arcs(novena,[toapayoh,newton]).
arcs(newton,[novena,orchard]).
arcs(orchard,[newton,somerset]).
arcs(somerset,[orchard,dhobyghaut]).
arcs(dhobyghaut,[somerset,cityhall,clarkequay,littleindia,brasbasah]).
arcs(marinabay,[rafflesplace]).
arcs(harbourfront,[outrampark]).
arcs(chinatown,[outrampark,clarkequay]).
arcs(clarkequay,[dhobyghaut,chinatown]).
arcs(littleindia,[dhobyghaut,farrerpark]).
arcs(farrerpark,[littleindia,boonkeng]).
arcs(boonkeng,[farrerpark,potongpasir]).
arcs(potongpasir,[boonkeng,woodleigh]).
arcs(woodleigh,[potongpasir,serangoon]).
arcs(serangoon,[woodleigh,kovan,bartley,lorongchuan]).
arcs(kovan,[serangoon,hougang]).
arcs(hougang,[kovan,buangkok]).
arcs(buangkok,[hougang,sengkang]).
arcs(sengkang,[buangkok,punggol]).
arcs(punggol,[sengkang]).
arcs(marymount,[bishan]).
arcs(lorongchuan,[bishan,serangoon]).
arcs(bartley,[taiseng,serangoon]).
arcs(taiseng,[bartley,macpherson]).
arcs(macpherson,[taiseng,payalebar]).
arcs(dakota,[mountbatten,payalebar]).
arcs(mountbatten,[dakota,stadium]).
arcs(stadium,[mountbatten,nicollhighway]).
arcs(nicollhighway,[stadium,promenade]).
arcs(promenade,[nicollhighway,esplanade]).
arcs(esplanade,[promenade,brasbasah]).
arcs(brasbasah,[esplanade,dhobyghaut]).