Kedves Demonstratorok, Prolog irant erdeklodok!
Frissitettem a honlapon a TDK, diploma, stb. temak kiirasat.
http://cs.bme.hu/~szeredi/oktatas/temak08s.txt
Most mar tenyleg itt a nyar, de hatha valakit lazba hoz valamelyik tema, es
szivesen foglalkozna vele nyaron, osszel, telen.
Ha valakivel ez a fura esemeny megtortenik, kerem jelentkezzen!
Vagy ha valakinek van olyan ismerose, akit ez erdekelhet, kerem tovabbitsa
a linket.
Az uj temakat (DLog rendszer) idemasolom az uzenet vegere is, hogy konnyebb
legyen elolvasnotok.
Udv,
Peter
---------------------------------------------------------------------------
Önálló labor, TDK és diploma-munka (egységesen: munka) témák
Szeredi Péter, SZIT
2008. június
1. A DLog leíró logikai (LL) következtetõ rendszer fejlesztése
A DLog egy SHIQ nyelvet támogató adatdoboz következtetõ rendszer, amely
Prologban készült és a LL tudásbázist Prolog kódra fordítja. A SHIQ
adatdoboz következtetõ rendszerek között -- a DLog szerzõi tudomása
szerint -- számos szabványos tesztre a DLog leggyorsabb következtetõ
rendszer.
1.1. A DLog kiterjesztése hatékony adatbázis interfészekkel
A DLog rendszer egyik elõnye a többi LL adatboboz következtetõ
rendszerhez képest az hogy a kérdések megválaszolásához szükséges
adatállításokat (az adatdoboz tartalmát) elvben képes egy
hagyományos relációs adatbázisból kinyerni. Ebben a megközelítésben
az LL tudásbázis adatfüggetlen részébõl készítünk Prolog programot,
amelynek futása során dinamikusan érjük el az adatbázis tartalmát.
A munka során fel kell készíteni a DLog rendszert arra, hogy
adatbázisokhoz tudjon kapcsolódni. Elsõ lépésként ki kell bõvíteni
a különféle bementi interfészeket annak érdekében, hogy
specifikálni lehessen melyik adatbázis tartalmazza az adatdoboz
tartalmát és azt milyen módon (felhasználónév, jelszó, protokoll
stb.) lehet elérni. Szükséges lehet egy leképezés megadása is,
amely összerendeli az adatbázisban található táblaneveket az LL
tudásbázis terminológiai részében szereplõ atomi fogalomnevekkel.
Második lépésként át kell alakítani a generált Prolog programot
annak megfelelõen, hogy bizonyos célok/célok csoportjai
adatbázislekérdezésekké fognak fordulni. Ez az átalakítás
alapvetõen klóztörzsek sorrendezését és az abban található célok
megfelelõ összevonását jelenti, de kiterjedhet több klóz
összevonására is.
Végül létre kell hozni azt az interfészt, amelyen keresztül a
generált Prolog program futása során eléri az adatbázis
tartalmát. Egy-egy ilyen adatbázislekérdezés bonyolultsága a
konkrét Prolog kérdéstõl függ: bizonyos esetekben, például Prolog
célok egy csoportjának egyidejû lekérdezésekor, komplexebb joint
tartalmazó kérdések generálása is szükséges lehet.
1.2. A DLog kiterjesztése táblázással
A Leíró Logikai kérdések megválaszolása a DLog rendszerben egy
hagyományos Prolog végrehajtás során történik. Ennek egyik
jellemzõje az, hogy a futás során már bebizonyított részcélokat
adott esetben újra megpróbáljuk bebizonyítani.
A DLog rendszer jelenleg is alkalmaz számos technikát (tömörítés,
projekció), amelyek orvosolják a fenti probléma bizonyos
elõfordulásait. Számos esetben ugyanakkor még mindig feleslegesen
foglalkozunk olyan célokkal, amelyek megoldását már korábban
kiszámítottuk. Az általános Prolog megoldás, a táblázás,
közvetlenül sajnos nem használható, mert a DLog végrehajtás során
használt ún. õs-rezolúció eredményekébben egy cél végrehajtása nem
környezetfüggetlen, hanem függ attól, hogy milyen õsei vannak a
Prolog végrehajtási fában.
A munka során meg kell ismerni a létezõ táblázási megoldásokat és
adaptálni kell Prolog és DLog környezethez.
1.3. A DLog párhuzamos és elosztott megvalósításai
A Prolog végrehajtás -- a klasszikus imperatív nyelvekkel
ellentétben -- könnyen párhuzamosítható. Ráadásul ez _implicit
módon_ is elvégezhetõ, azaz úgy, hogy a Prolog programozónak nem is
kell tudnia arról, hogy több processzor hajtja végre a programot.
Többféle módon is párhuzamosítható a Prolog: a legismertebbek az
ún. vagy-párhuzamosság, amikoris a keresési tér különbözõ ágait
egyszerre dolgozzuk fel, illetve az és-párhuzamosság, amikor egy
célsorozat különbözõ részcéljait futtatjuk párhuzamosan.
A munka során elsõsorban a vagy-párhuzamosság kiaknázásán dolgozunk
a DLog rendszer által generált Prolog kód esetén. Mivel ez sokkal
egyszerûbb, mint az általános Prolog programok, számos
egyszerûsítésre van lehetõség az ismert Prolog technikákhoz
képest. Célunk egy olyan DLog változat elkészítése amely több
processzor/mag illetve hálozatba kapcsolt számítógépek
felhasználásával lényegesen gyorsabban oldja meg az adatdoboz
következtetési feladatokat, mint az egyprocesszoros rendszer.
1.4. A DLog T-doboz következtetõ komponensének továbbfejlesztése
Ezen modul célja, hogy a T-dobozban szereplõ axiómákat minél
egyszerûbb formájú szabályokká alakítsa. Tesszük ezt azért, hogy a
késõbbi adatkövetkeztetés során már ne kelljen a T-doboz axiómái
közötti összefüggésekkel foglalkozni, és fókuszált,
lekérdezés-vezérelt következtetést tudjunk végezni.
A munka során meg kell ismerkedni a DLog-ban mûködõ
következtetési algoritmussal, mely bizonyos mértékben igényli
az elsõrendû rezolúciós tételbizonyítással valamint a leíró
logikákhoz kifejlesztett tabló algoritmussal való barátkozást
is. Ezután közösen azon dolgozunk, hogy hatékonyabbá tegyük a
következtetést: ideálisan úgy, hogy a gép nagyjából azt
csinálja, amit egy ember is csinálna. Fontos az érdektelen
következtetési ágak minél korábbi felismerése, de bátran elõ
lehet állni radikálisan új módszerekkel is egyes
részfeladatokhoz, vagy akár az egész következtetéshez.
A munkának van egy elméleti, matematikai része valamint egy
implementációs része, melyhez a Prolog nyelvet használjuk.
Az egyetlen igazi követelmény a matematikai gondolkodás iránti
hajlandóság és a lelkesedés.