Na této stránce jsou k dispozici funkční přepisy příkladů z přednášky v jazyce Prolog. Pro srovnání je k dispozici také implementace příkladů v jazyce Python a tabulka obou variant.
Příklady byly odzkoušeny v SWI-Prologu pod MS Windows XP.
Program nainstalujte po stažení zde. Pro ulehčení práce s příklady je na 2. řádku každého zdrojáku v komentáři uveden příkaz pro "kompilaci" příkladu. Aby tento příkaz fungoval, musíte mít SWI-Prolog spuštěn z aktuálního adresáře (resp. pro MS Windows je asi nejjednodušší vytvořit zástupce a v jeho vlastnostech nastavit položku "Start in:" na adresář, ve kterém máte příklady uloženy). Pak stačí zkopírovat do schránky např. "['1.1.1_13.pl']." a v SWI-Prologu kliknout na "Edit" a "Paste" (veškerá práce se schránkou v programu je řešena přes "Edit" a "Copy" nebo "Paste").
Prologovské příkazy, které se při zkoušení příkladů mohou hodit:
consult('1.1_13.pl'). % "kompiluj" 1.1_13.pl
['1.1_13.pl','1.2_16']. % "kompiluj" 1.1_13.pl a 1.2_16.pl
listing. % vypiš programové predikáty
trace, rodic(X,david). % trasuj volání predikátu
notrace. % zruš režim trasování
halt. % ukonči interpret
Občas se může stát, že při překladu několika příkladů po sobě dojde k chybám (No permission to modify static_procedure atp.). Pokud by k tomu došlo, prolog ukončete a znovu jej spusťte.
SWI-Prolog je na většině linuxových distribucí mezi standardními balíky, nainstalujte jej tedy podle zvyklostí dané distribuce. Nejjednodušší spuštění je přes příkazový řádek:
# interaktivní režim
swipl -q 1.1_13.pl
# neinteraktivní režim
swipl -q -g halt 1.1_13.pl
Jména zdrojových souborů jsou ve tvaru PŘEDNÁŠKA.PRIKLAD_SLIDE.pl.
1.1_13.pl - jednoduchá DB rodinných vztahů
1.2_16.pl - vypsání seznamu
1.3.1_18.pl - Fibonacciho čísla
1.3.2_19.pl -
Fibonacciho čísla, efektivnější varianta
2.1.1_3.pl - member I, výskyt prvku v seznamu
2.1.2_3.pl - member II
2.1.3_3.pl - member III
2.2_4.pl - del a del1 - výmaz prvku ze seznamu; insert a insert1 - vkládání prvku do seznamu
2.3_5.pl - perm1, 2 a 3 - permutace seznamu
2.4.1_6.pl - append, spojení seznamů
2.4.2_8.pl - append - rozdílové seznamy
2.5.1_10.pl - QuickSort - třídění seznamů
2.5.2_11.pl - QuickSort s rozdílovými seznamy
2.6_13.pl - addleaf, show - přidávání do binárního stromu, výpis binárního stromu
2.7_15.pl - delleaf - odebírání z binárního stromu
2.8_17.pl - vícesměrný algoritmus pro vkládání a odebírání
2.9.1_21.pl - cesta v grafu
2.9.2_22.pl - cesta v grafu II
2.10_23.pl - kostra grafu, vypisuje několikrát stejná řešení
3.1_3.pl - problém osmi dam I
3.2_4.pl - problém osmi dam II - omezení stavového prostoru
3.3_5.pl - problém osmi dam III - seznamy volných pozic
3.4_13.pl - prohledávání do hloubky (DFS)
3.5_15.pl - prohledávání do hloubky s limitem
3.6_17.pl - prohledávání do šířky (BFS)
4.1_9.pl - algoritmus A*
4.1_9-posunovacka.pl - 8-posunovačka, heuristika h1
4.2_17.pl - rozvrh práce procesorů, jen algoritmus bez vzorového vstupu
5.1_5.pl -
hanoiské věže
5.2_11.pl -
obecné prohledávání AND/OR grafů
5.3_15.pl -
heuristické AND/OR prohledávání
5.3_15-cesta_mezi_mesty.pl - příklad cesta mezi městy
6.1_9.pl -
Constraing Logic Programming
6.2_11.pl - algebrogram
6.3_14.pl - problém N dam
7.1_11.pl -
algoritmus minimax, jen algoritmus bez vzorového vstupu
7.2_15.pl -
alfa-beta prořezávání, jen algoritmus bez vzorového vstupu
8.1_3.pl -
akce logického agenta, jen algoritmus bez vzorového vstupu
8.2_20.pl -
inference kontrolou modelů, jen algoritmus bez vzorového vstupu
8.3_27.pl -
algoritmus dopředného řetězení, jen algoritmus bez vzorového vstupu
9. přednáška - žádné příklady
10. přednáška - žádné příklady
11.1_16.pl - algoritmus IDT (příklady vstupu: nářadí, počasí a restaurace)
12.1_11.pl - DC gramatika, jen algoritmus bez vzorového vstupu
12.2_12.pl - gramatiky - analýza pomocí append, jen algoritmus bez vzorového vstupu
12.3_13.pl - gramatiky - rozdílové seznamy
12.4_18.pl - DC gramatika s konstrukcí stromu analýzy
12.5_22.pl - DC gramatika s testy na shodu
12.6_23.pl - vyhodnocení aritmetického výrazu
12.7_24.pl - generativní síla DCG