Cvičenia 10 -- plánovanie

Vyriešené úlohy treba odovzdať v Moodli do 9.12.2012 18:09:59 CET. 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 predikátom take(Line,From,To), pričom nájdete najkratšiu cestu. Vzorový príklad by mal mať teda riešenie:

  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 by sa mali dať k akciám priradiť ceny (cost), možno na to treba zahrnúť cenu do predikátu take (a možno ani nie).

Vstup z minulého cvika prípadne obrázok k nemu.

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
% 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
inType( IT ) :- converts( P, IT, OT, C ).
outType( 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