Příklady uvedené na této stránce slouží aktuálně jako doplnění k souboru příkladů z přednášky v jazyce Prolog. Ke každému prologovskému příkladu je uvedena jeho odpovídající varianta v Pythonu. Vynechány jsou pouze příklady, které jsou specifické pro Prolog (rozdílové seznamy, definite-clause grammars, ...). U některých příkladů jsou uvedeny 2 varianty - přímý převod do čistého Pythonu a implementace s využitím pythonovských datových struktur (viz příklady označené *-lifo.py, *-fifo.py, *-priority-queue.py). Přehled obou variant příkladů je v této tabulce.
Python příklady jsou dostupné zde (i jako ZIP) v rámci stránek přednášky.
Příklady byly testovány v interpretru Pythonu 2.7.13 a 3.5.3 na Debianu 9 s Linuxovým jádrem.
Příklady lze spustit příkazem INTERPRETR NÁZEV_PŘÍKLADU
, kde INTERPRETR
je
název interpretru Pythonu (typicky python
, python2
nebo python2.7
pro
interpretr Pythonu 2.7.X a python3
pro interpretr Pythonu 3.X.Y). Výsledný
příkaz může tedy být např.
python 1.1_13.py
Většina příkladů vyžaduje, aby byl ve stejné složce stažený i modul
linked_lists.py
,
který definuje třídu představující spojový seznam ve stylu Lispu.
Jména zdrojových souborů jsou ve tvaru PŘEDNÁŠKA.PŘÍKLAD_SLIDE.py
.
1.1_13.py
– jednoduchá DB rodinných vztahů1.2_16.py
– vypsání seznamu1.3.1_18.py
– Fibonacciho čísla1.3.2_19.py
– Fibonacciho čísla, efektivnější varianta2.1.3_3.py
– member III (varianty member I a II jsou
specifické pro jazyk s unifikací, jako je Prolog)2.2_4.py
– del a del1 - výmaz prvku ze seznamu; insert a
insert1 - vkládání prvku do seznamu2.3_5.py
– perm1, 2 a 3 - permutace seznamu2.4.1_6.py
– append, spojení seznamů2.5.1_10.py
– QuickSort - třídění seznamů2.6_13.py
– addleaf, show - přidávání do binárního stromu,
výpis binárního stromu2.7_15.py
– delleaf - odebírání z binárního stromu2.8_17.py
– vícesměrný algoritmus pro vkládání a odebírání2.9.1_21.py
– cesta v grafu2.9.2_22.py
– cesta v grafu II2.10_23.py
– kostra grafu, vypisuje několikrát stejná
řešení3.1_3.py
– problém osmi dam I3.2_4.py
– problém osmi dam II - omezení stavového prostoru3.3_5.py
– problém osmi dam III - seznamy volných pozic3.4_13.py
– prohledávání do hloubky (DFS)3.4_13-lifo.py
– prohledávání do hloubky,
alternativní implementace pomocí zásobníku3.5_15.py
– prohledávání do hloubky s limitem3.5_15-lifo.py
– prohledávání do hloubky s limitem,
alternativní implementace pomocí zásobníku3.6_17.py
– prohledávání do šířky (BFS)3.6_17-fifo.py
– prohledávání do šířky, alternativní
implementace pomocí fronty4.1_9.py
– algoritmus A*, pro spuštění je třeba stáhnout i
modul romanian_cities.py
.4.1_9-priority-queue.py
– algoritmus A*,
alternativní implementace pomocí prioritní fronty, pro spuštění je třeba
stáhnout i modul romanian_cities.py
.4.1_9-posunovacka.py
– 8-posunovačka,
heuristiky h1 a h2, pro spuštění je třeba stáhnout i modul
best_search.py
.4.2_17.py
– rozvrh práce procesorů, pro spuštění je třeba
stáhnout i modul best_search.py
.5.1_5.py
– hanoiské věže5.2_11.py
– obecné prohledávání AND/OR grafů5.3_15.py
– heuristické AND/OR prohledávání5.3_15-priority-queue.py
– heuristické
AND/OR prohledávání, alternativní implementace pomocí prioritní fronty5.3_15-cesta_mezi_mesty.py
– příklad
cesta mezi městy, pro spuštění je třeba stáhnout i modul
and_or_best_search.py
.python-constraint
.
8.2_20.py
– inference kontrolou modelů11.1_16.py
– algoritmus IDT