Kedves NDP hallgatók!
Közeledik a félév vége. A honlapon minden információ megtalálható, az ETS
várja az (opcionális) kis házikat és a kötelező nagy házi feladatot (ez
utóbbi határideje május 20 szerda éjfél). Ha valaki elakad, írjon, szívesen
segítünk.
A félév végi beszámoló tervezett időpontja: május 25 13-18 között. Egy
minta-beszámoló letölthető a honlapról. A programokat az ETS-en keresztül
kell majd beadni.
Kérem minél előbb szóljatok, ha az időpont nem megfelelő.
Péter és László
Sziasztok!
Az összes kisházi beadható. A nagyházi kiírását is feltettem a honlapra, az
is beadható.
A lap tetején a Friss hírek rovatba tettem egy linket a korlát-propagáció
megértését segítő webes gyakorló lapra, próbáljátok ki. Ide is belinkeltem
<https://ait.ptrt.xyz/apps/plwin/C1-1>.
Kérdés, gond, javaslat esetén írjatok, minden visszajelzésnek örülünk.
Péter és László
Sziasztok!
Az első kis házi megoldása közben a következő érdekes problémába ütköztem:
a beadón lévő összes teszteset sikeres, kivéve az utolsó előttit. A
teszteset így néz ki:
[X,Y,Cin]=[1,1,0],[Sum,Cout]=[1,0],count([F1,F2,F3,F4,F5],1),sat((((F1+(U1=:=X*Cin)*F2+(U2=:=Y*U3))*F3+(Cout=:=U1+U2))*F4+(U3=:=X#Cin))*F5+(Sum=:=Y#U3)),labeling([F1,F2,F3,F4,F5]).
A beadott programom megtalálja az egyetlen helyes megoldást, viszont
emellett még felsorol néhány másikat is, mégpedig olyanokat, ahol egynél
több egyes van behelyettesítve, tehát a count([...], 1) nem teljesül.
Próbáltam kisebb példákon keresztül leszűkíteni, hogy hol lehet a hiba, de
nem sikerült olyan esetet találnom, ahol rosszul működne a count()
eljárásom (a fenti tesztesetet kivéve). Sőt: a fenti tesztesetnél, ha nem
labeling-et használok, hanem explicit behelyettesítem a változók helyére
bármelyik eredetileg számolt rossz megoldást, akkor úgy már helyesen
következtet, hogy 'no', illetve ha a count(...) hívást a labeling(...)
utánra teszem, már csak az egyetlen helyes megoldást sorolja fel.
Esetleg valaki találkozott hasonlóval, vagy van valakinek ötlete, hogy mi
okozhatja ezt a működést? Köszönöm előre is a segítséget.
Üdv,
Oláh Gergely
Egyikőtöktől kaptam egy levelet, amire való válaszomat közreadom,
remélhetően mindannyiótok okulására. Nyomj egy PageDown-t, ha meg akarod
nézni.
Péter
Úgy látom, hogy a "mindent-vagy-semmit hozzáállással" oldod meg a
feladatot: ha vannak ismeretlenek megvárjuk, hogy mindegyik
behelyettesítődjön. De ez nagyon gyenge következtetést ad. Pl. egy ilyen
hívás esetén:
| ?- sat(A*B) (*)
elvárható, hogy következtesse ki, hogy A=1, B=1.
A mininat-hoz hasonló módon azt javasolom, hogy ezt a (*) példát fordítsd
egy *(A,B,1) hívásra, és a * /3 predikátumot írd meg úgy, hogy ha a
harmadik argumentumról kiderül, hogy 1, akkor helyettesítse be az első
kettőt 1-re. (Érdemes megnézned a 39. fólán levő példát, ami a negációt
kezelő ~ /2 eljárást valósítja meg ezen elvek mentén.)
Hasonlóképpen az *(A,1,B) ébredjen fel, és egyesítse A-t B-vel (ehhez az =?
when-es ébresztés és az == azonosság-vizsgálat kell, mint a 39. fólián
szereplő ~ /2 -ben). A 40. fólia alján három további példa szerepel, hogy
milyen "következtetéseket" várhatunk el a + /3, * /3 és # /3 eljárásoktól.
Péter
Kedves Mindnyájan!
Demonstrátorokra lenne szükségünk a 2017 őszi félévre a DP tárgy Erlang és
Prolog részéhez. A fő feladat a gyakorlat megtartása csütörtök du. 2-4
és/vagy kedd 10-12 között az I épületben, nyelvenként összesen 3-4
alkalommal a félév során. Emellett jó lenne ha tudnátok segíteni a ZH és a
PZH felügyeletben és ezek javításában.
Kérem írjatok, ha láttok esélyt, hogy el tudtok vállalni egy vagy akár két
gyakorlati csoportot (ez nem jelent elkötelezettséget részetekről, majd
csak szeptember elején véglegesítjük a jelentkezést).
Válaszotokat megkönnyítendő elég ha az alábbi szöveg szerkesztett
változatát külditek vissza:
- Név:
- Nyelv: Prolog, Erlang (nem kívánt törlendő, de akár mindkettőt is meg
lehet hagyni:-)
- Potenciálisan vállalt gyakorlatok max száma: 1 vagy 2
- Vállalható időpontok, preferencia sorrendben: a [kedd, csüt] lista egy
permutációjának nem-üres részlistája
- Várhatóan tudok majd segíteni a ZH-kon: igen/nem
Minden kérdésnél megengedett a "még nem tudom" válasz is.
Előre is köszönjük a segítséget!
Dóbé Péter és Szeredi Péter
Kedves Mindnyájan!
A szerdai (máj 17) beszámoló-vizsga helyszíne: IB138, ideje 10-13.
A vizsgán a jegyzet és vagy a fóliák szabadon használhatók, lehetőleg
kinyomtatva, de végszükség esetén laptopról, mobilról is.
A házik máj 17-ig beadatók.
A vizsgán lesz egy feladat amelyhez reifikációt kell használni, hasonló a
vizsga-minta
<http://cs.bme.hu/~szeredi/ndp/nlp11a-vzh-minta-megoldasokkal.pdf>
feladatsorban
szereplő nullsoros/1 példához. Ennek megoldásában segíthet az AIT kurzus
fóliáin bemutatott séma. A csatolt PDF file-ban két rövid szakasz szerepel
az AIT-s fóliákból. Az első a reifikációról szól, ebben a 219-es fóliát
nézzétek meg, majd a 223-as fólián levő sémát, amivel egy Prolog kódból
clpfd kód gyártható. A 224. fólia mutatja be ennek egy alkalmazását, ami a
219-es fólián szereplő feladat egy másik megoldása.
A második szakaszban -- a 263-273 fóliák -- a konstruktív diszjunkcióról és
a borotválásról van szó, amit esetleg a mastermind házi feladatban
megpróbálhattok hasznosítani.
Írjatok, ha valami nem érthető, vagy ha elakadtok.
Üdv,
SzP
Köszönöm, hogy szóltál, élesítettem az ETS-t és a kisházi beadást is. A
kiküldött jelszót a gmail gyakran spamnek minősíti, nézzétek a spam-et is.
Péter
2017. március 2. 13:58 Tamás Csala írta, <icyplusplus(a)gmail.com>:
> Tisztelt Szeredi Péter!
>
> A Nagyhatékonyásgi Deklaratív Progrmozás tárgyból az első házifeladat
> leadási határideje a jövő héten van, emiatt szeretnék belépni az ETS
> rendszerbe, hogy tesztelni tudjam a jelenlegi megoldásomat. Viszont az ETS
> egyelőre még nem enged be (a hallgató társaimat se, akikkel beszéltem), a
> portál "Ismeretlen Neptun kód" hibaüzenetet ad vissza.
>
> Az ETS belépővel kapcsolatban szeretnék segítséget kérni.
>
> Előre is köszönöm!
> Csala Tamás (C52TOZ)
>