Cvičenia 9 -- plánovanie

Každý príklad môžete riešiť buď v DLV alebo DLV-K, podľa toho, čo sa Vám zdá vhodnejšie.

Autobusy

Vyriešte úlohu z predchádzajúceho cvičenia (ten dlhší vstup), riešenie by malo ale byť reprezentované iba akciou take(Line,From,To), pričom nájdete najkratšiu cestu. Vzorový príklad by mal mať teda riešenie (s celkovou dĺžkou 7):

  1. take(93,dvory,zochova)
  2. take(39,zochova,"chatam sofer")

Posledné číslo v predikáte bus udáva, koľko trvá cesta v minútach. Môžete predpokladať, že na prípoj nikdy netreba čakať ;)

V DLV sa dajú použiť weak constraints. V DLV-K sa akciám dá priradiť cena (cost).

Convert

Predikát converts(program,vstupny_typ,vystupnu_typ,commandline) hovori akým programom vieme konvertovať medzi sebou aké typy súborov. Úlohou je nájsť postupnosť konverzií z nejakého typu na nejaký. Výstupom by mala byť postupnosť príkazov, ktoré treba vykonať. Ako príklad zistite, ako z text/x-latex vyrobiť image/png.

Príklad vstupu:

types_data.sm
from("text/x-latex").
to("image/png").

% prog(prog_id)
% converts(prog_id, type1, type2, command)
% command: $f from file  $t to file
prog(latex).
prog(pdflatex).
prog(dvips).
prog(ps2pdf).
prog(pdf2ps).
prog(imageMagick).
converts( latex, "text/x-latex", "application/x-dvi", "latex $f" ).
converts( pdflatex, "text/x-latex", "application/pdf", "pdflatex $f" ).
converts( dvips, "application/x-dvi", "application/postscript", "dvips -o $t $f" ).
converts( ps2pdf, "application/postscript", "application/pdf", "ps2pdf $f $t" ).
converts( pdf2ps, "application/pdf", "application/postscript", "pdf2ps $f $t" ).
converts( imageMagick, "image/eps", "image/jpeg", "convert $f $t" ).


% enumeration of input/output types
type( IT ) :- converts( P, IT, OT, C ).
type( OT ) :- converts( P, IT, OT, C ).

% ImageMagick 
% this crates a _LOT_ of cycles :)

prog(imageMagick).
tmpImageMagicFormat( "image/jpeg" ).
tmpImageMagicFormat("image/png" ).
tmpImageMagicFormat( "image/eps" ).
tmpImageMagicFormat( "application/postscript" ).

converts( imageMagick, F1, F2, "convert $f $t" ):-
	tmpImageMagicFormat( F1 ),
	tmpImageMagicFormat( F2 ).
Vim logo FireFox logo CSS XHTML
Jozef Siska @ KAI FMFI UK YoYo @ KSP KAI (DAI) KSP