2006. őszi félév:
Információkezelés (IKP-4IK1E)
Beadandó feladat (N):
Negációt is tartalmazó, rekurzív
datalog program kiértékelése
Feladatleírás:
C++ nyelven írjunk egy
programot, amely adott típusú datalog programot kiértékel.
A programot fordítsuk le MS Windows alatt.
A program neve abcdefg EHA kód
esetén a következő
legyen:
nabcdefg.exe
A program MS Windows parancssorból futtatható legyen 2
paraméter, az input és az output fájl nevének
megadásával:
nabcdefg input.txt
output.txt
A programot, és a forráskódo(kat) az ik2006@inf.elte.hu címre kell
elküldeni a megadott határidő előtt.
A csatolt állományokat nem kell
összetömöríteni. Mindenki egy levelet küldjön,
és ahhoz legyen minden csatolva.
A levél subject-je abcdefg EHA kód esetén nabcdefg legyen. A levélbe nem kell
semmit írni!
A program egy szöveges input fájlból olvassa be a táblákat,
és a datalog programot, majd a kiértékelés
eredményét a végéhez csatolja. Szintaktikai
ellenőrzést nem muszáj végezni, feltehetjük,
hogy az input fájl helyes, azaz a datalog program
biztonságos, rektifikált,
a szabályokban előforduló összes EDB predikátumhoz
szerepel egy megfelelő tábla az input fájlban, a rekordok
megfelelnek a sémáknak,
stb.
Például az inputn.txt
fájlt beolvasva a programnak az outputn.txt fájlt kell
előállítania
A könnyebbség és
egyértelműség érdekében a megvalósításhoz
feltesszük a következőket:
- A
táblákban az oszlopok
típusa egész (int) vagy legfeljebb 100 hosszú karakter
(char(100)).
- A karaktersorozatok
egyszeres idézőjelek között
szerepelnek a táblák
soraiban, illetve a beépített predikátumokban,
például X=’alma’.
- A
relációnevek, attribútumnevek.char(50) típusúak.
- Az
input relációk mindegyike
legfeljebb 50 attribútumot, és legfeljebb 10000 sort tartalmaz.
- A
relációk sorainak
komponenseit vesszők
választják el egymástól.
- A kis-
és nagybetűket különbözőeknek
tekintjük.
- Az
input és output fájlokban a datalog program, a relációk,
és az eredmény között 1-1 üres sor
szerepel.
- A datalog program legfeljebb 100 szabályból áll.
- Minden
szabály törzse legfeljebb 30 közönséges
és 30 beépített, nem feltétlen különböző
predikátumot tartalmazhat, azaz
legfeljebb 60 részcélból állhat a szabály törzse.
- Beépített
predikátum nem szerepel fejben.
- A
tagadást NOT prefixszel fejezzük
ki, azaz például NOT.p(X,Y).
- Az
implikáció jele a kisebb
jel és egy kötőjel, például p(X)<-r(X,Y).
- A datalog programról feltesszük,
hogy biztonságos, rektifikált,
és az azonos fejű szabályok egymás után következnek.
- A
változók nevei nagybetűkből,
a predikátumszimbólumok
nevei kisbetűkből
állnak.
- Az
input fájlban a relációk sorai balról
jobbra lexikografikus sorrendben szerepelnek,
és egy sor csak egyszer szerepel.
- Az
output fájlban az eredményül kapott
relációk sorai is balról jobbra lexikografikus sorrendben szerepeljenek,
és egy sor csak egyszer szerepeljen.
2006. október 10.