Cvičenia 9

Autobusy

Vo vstupnom súbore máme údaje o autobusových linkách vo formáte bus(Line,From,To,Time), kde Line je meno linky, From a To sú zástavky a Time je čas, koľko trvá autobusu cesta z From do To. Linky sú "jednosmerné", teda Line(93,zochova,aupark,3) hovorí, že sa vieme dostať za 3 minúty zo Zochovej do Auparku, ale nie naopak.

Predikáty from(fromStop) a to(toStop) hovoria odkiaľ a kam chceme cestovať, každý bude vo vstupe práve raz.

Vstup: bus.dlv.

Najkratšia cesta

Zistite (časovo) najkratšiu cestu medzi fromStop a toStop, keď zanedbávame prestupy.

Najkratšia cesta s prestupmi

Zistite najkratšiu cestu, ak prestup medzi rôznymi linkami trvá X sekúnd, kde X je zadané predikátom transfer(X).

Najmenej prestupov

Nájdite cestu na najmenej prestupov, spomedzi ciest s rovnakým počtom prestupov vyberte najkratšiu.



Plánovanie

Vyriešte zjednodušenú úlohu (nehľadáme najkratšiu cestu , stačí nám ľubovoľná) ako plánovací problém v dlv-k s akciami take(Line,Stop) a leave(Stop), kde take hovorí, že na zástavke Stop máme nastúpiť na autobus Line a leave hovorí, že máme z neho vystúpiť na zástavke Stop.

Ak by vstup vyzeral napríklad

bus(93,dvory,aupark,2).
bus(93,aupark,zochova,3).
bus(39,zochova,"chatam sofer",2).
from(dvory).
to("chatam sofer").
tak riešenním by bolo take(93,dvory), leave(zochova), take(39,zochova), leave("chatam sofer").
Vim logo FireFox logo CSS XHTML
YoYo KSP Jozef Siska @ KAI FMFI UK