PB016 - demonstrační příklady - Prolog

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.

Spouštění na Windows

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.

Spouštění na Linuxu

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



vše v jednom souboru: PB016_demo-prolog.zip