Kedves Hallgatók!
A Logikai programozás II.
(a régi képzés szerint), illetve a Logikai programozás előadás (a 2022-es képzés
szerint) kurzusokból a kívánt jegy feltétele egy megfelelő minőségű
SICStus Prolog program
elkészítése és bemutatása.
Ennek jellemzőit szeretném most írásban is rögzíteni.
A feladat lényegében véve szabadon választható,
de kérem és elvárom, hogy azt velem előre egyeztessék.
Ez szóban is lehetséges, de a választott feladatról
minden esetben kérek egy levelet az asvanyi@inf.elte.hu
címre.
A feladatválasztáshoz segítséget jelenthet az alábbi feladatsor.
MÁS FELADAT IS VÁLASZTHATÓ!
A program bemutatását mindenkivel külön beszélem meg.
A programot SZEMÉLYESEN kérem bemutatni, ami kb. fél-egy órát
szokott igénybe venni.
Elvárom, hogy az alkalmazott módszer(eke)t érthetően elmagyarázzák.
A programot kipróbálom. A forráskódot is megnézem.
Alapvető szempontok:
-- A program oldja meg a kitűzött feladatot!
-- A programnak az aktuális SICStus
Prolog 4 verzióban kell működnie.
-- A program felülete konzolos, de az input megadása
kényelmes,
outputja könnyen érthető legyen.
-- A maximális pontszámhoz egy minimum 80 programsort
tartalmazó forrásfájl tartozik.
-- Kövessük a jegyzetek módszertani és formai útmutatásait!
-- Hatékony megoldást válasszunk! Ld. a nyomtatott jegyzeteket
és
a SICStus Prolog kézikönyv "Writing Efficient
Programs" c. fejezetét!
Beadható feladatok
Az alábbi feladatsor csak ötleteket kíván adni. Az a legjobb, ha
mindenki
olyan feladatot talál ki magának, aminek a megoldása érdekli.
I. Gráfkeresés
1. A tizenötös játék A vagy B algoritmussal, P és/vagy
keret-heurisztikával.
2. A fekete-fehér játék A vagy B algoritmussal,
az inverziószámtól függő heurisztikával.
3. A három kancsó probléma szélességi gráfkereséssel.
4. Az N királynő probléma A vagy B algoritmussal, valamilyen
heurisztikával.
5. A fekete-fehér királynő (kutya-macska) probléma.
II. kétszemélyes játékok
Az egyes játékokat lehet alfa/béta algoritmussal, direkt
stratégiával,
tanuló algoritmussal vagy egyéb módszerrel programozni.
1. Amőba (korlátos táblaméret)
2. Grundy (Halmokat nem egyforma részekre vágunk.)
3. Hex (Szabályos hatszögekből álló "paralelogramma" szemközti
oldalait
próbáljuk összekötni.)
4. Kalah (Maya)
5. Nim (Gyufaszál-kupacokból kell gyufákat elvenni.)
6. Othello (Piros/kék korongok felrakása és átforgatása NxN-es
négyzethálón.)
7. Tac-Tix (NxN-es tábla tele koronggal: egy-egy sor vagy oszlop
egy-egy
szakaszának levétele.)
III. Generate and Test
feladatok, "nem-determinisztikus" programozás
1. Puzzle megoldó program (Ki a gyilkos/győztes, hol a gyöngy, stb.)
2. Betűszámtannal kapcsolatos feladatok. (Pl. SEND+MORE=MONEY)
3. Tervgenerálás (Pl.kockavilág)
4. Válaszadás (ANALOGY)
5. Beszélgetés (ELIZA)
6. Sztori kiegészítése, azaz pletykaprogram (McSAM)
7. Mastermind (a gyakorlaton szereplőtől különböző megoldás)
10. Táblák bejárásai
11. N+M (fekete-fehér) királynő (kutya-macska) probléma
IV. Interpreterek
1. Véges (verem) automaták (Véges működés!)
2. Interpreter valamilyen logikai, funkcionális, imperatív, vagy
egyéb
alapelvű (egyszerű) programozási nyelvre.
3. Program nyomkövető program
4. Szabály alapú mini szakértői rendszer
5. Mini adatbázis kezelő rendszer
V. Programtranszformációk
1. (Logikai) Programok redukciója. (Szabályok összevonása ill.
elhagyása,
ismétlődő programrészekből eljárás generálása, stb.)
2. Rekurziófeloldás imperatív programoknál
3. Programnyelvek kiterjesztéseinek implementálása, előfordítók
VI. Logikai nyelvtanok
1. Szintaktikus, szemantikus elemzők
2. Interpreter logikai nyelvtanhoz
3. Kis méretű nyelv fordítóprogramja
4. Előfordító logikai nyelvtan által leírt programnyelvhez (Pl.
Prolog programot generál.)
5. Logikai nyelvtan egy természetes nyelv egy részhalmazának
leírására
VII. Szimbolikus
számítások
1. Függvények differenciálása ill. integrálása
2. Algebrai kifejezések egyszerűsítései
3. Nyelvtanok transzformációi (Pl. redukció, valamilyen
normálformára hozás,
valamely speciális alakú szabályok kiküszöbölése, stb.)
4. Logikai formulák transzformációi (Pl. klóz formára hozás)
5. Következtető gépek (Rezolúcióval, szabály alapú következtetővel,
esetleg
tanuló algoritmussal, stb.)
VI. Programanalízis ill.
szintézis
1. Programhelyesség bizonyító program
2. Programtesztelést támogató eszköz
3. Program származtatása a specifikációból
4. Program származtatása a tesztadatokból
VII. Az Önök ötletei
. . .
. . .
. . .