Heti egy ora gyakorlattal kibovitett formaban, Nagyhatekonysagu Deklarativ
Programozas cimmel a jovo felevben is indul az NLP, MSc szakiranyos
targykent, VISZM232 koddal. Ez tudomasom szerint valaszthato targykent mind
az oteves, mind az MSc, mind a BSc kepzesben felveheto.
Mivel szakiranyos hallgatonk csak 1 van ;-), ezert alaphelyzetben a targy
oktatasa konzultacios formaban zajlik majd. De ha 5-6-an felveszik, akkor
mar rendes eloadast is tartok. Tehat ha valakinek most nem jott ossze az
NLP, de meg erdekli, esetleg felveheti az NDP-t. Vagy ha valakinek
sikerult, es tetszett, akkor ajanlhatja masoknak...
Mas: beszeltunk rola, hogy a kimaradt reszekrol (Mercury, CHR) szivesen
tartok eloadast. Erre peldaul az oszi felev elso heteiben kerithetunk sort.
-Peter
A jegyzetben a 107. oldalon szerepel a következő példa, amely a #=<
korlát egy megvalósítását mutatja.
% X #=< Y, globális korlátként megvalósítva
lseq(X, Y) :-
fd_global(lseq(X,Y), void, [min(X),max(Y)]).
:- multifile clpfd:dispatch_global/4.
:- discontiguous clpfd:dispatch_global/4.
clpfd:dispatch_global(lseq(X,Y), St, St, Actions) :-
dispatch_lseq(X, Y, Actions).
dispatch_lseq(X, Y, Actions) :-
fd_min(X, MinX), fd_max(X, MaxX),
fd_min(Y, MinY), fd_max(Y, MaxY),
( number(MaxX), number(MinY), MaxX =< MinY
-> Actions = [exit]
; Actions = [X in inf..MaxY, Y in MinX..sup]
).
A kérdésem az, szükség van-e itt a MaxX =< MinY feltétel vizsgálatára?
A definíció akkor is működne, ha a dispatch_lseq eljárást egyszerűen
csak úgy definiálnánk, hogy
dispatch_lseq(X, Y, [X in inf..MaxY, Y in MinX..sup]) :-
fd_min(X, MinX), fd_max(Y, MaxY).
Ambrus
A 4. kishazi kapcsan fordult elo ez a problema, mar masodszor, ezert
kozreadom
-Peter
---------------------------------------------------------------------------
> Az Action listában szeretnék egy eljáráshívást elhelyezni, és itt az
> én gépemen SICStus-ban nagyon szépen megy is
> 'call(user:eljarasnev(<Argumentumok>))' alakban,
> de az ETS-nek ez így nem tetszik.
Ez azert van, mert a teszteleskor -- esetleges nevutkozesek elkerulesere --
a '$module_being_tested' modulba toltjuk be a megoldasokat. Emiatt a
call(user:xxxx) alaku akciok nem mukodnek.
Szerencsesebbnek (es hatekonyabbnak) gondolnam, ha el tudnad kerulni a call
akciok hasznalatat. Egyebkent a
current_predicate(<eljarasnev>, M:_),
hivassal le lehet kerdezni annak a modulnak a nevet, ahol az adott
eljaras definialva van, es ezt az M modulnevet kell hasznalni a call
akcioban a user helyett.
Szomoruan tapasztaltam, hogy senki sem jott el konzultaciora.
(Nehany percet kestem, remelem nem ezert ment el esetleg valaki aki itt
volt... :-).
A konzultacion a majusi vizsga feladatait beszeltuk volna meg, elkuldom ezt
a peldasort:
http://cs.bme.hu/~szeredi/nlp/nlp09s-v1.pdf
A 2. es 5. feladathoz itt talalhattok egy kis segitseget:
http://cs.bme.hu/~szeredi/nlp/nlp09s-v1-segitseg.pdf
Egy ilyen peldasor megoldasa nagymertekben megkonnyiti a vizsga sikeres
abszolvalasat. Csinalja'tok vegig, es irjatok a listara, ha elakadtok.
Azt is szomoruan latom, hogy a nagyhazival sincs mindenki keszen. A
nagyhazit vegul is el tudom fogadni kesobb is. A korabban a listara
elkuldott tanacsokat is felhasznalva ugy gondolom, hogy nehany ora alatt
megirhato a nhf...
Meg egyszer megirom, hogy a vizsgan a jegyzet, foliamasolatok es mas irasos
segedlet hasznalhato, tehat nem memorizalni kell az anyagot, hanem
feladatmegoldasi gyakorlatot szerezni.
Udv,
Peter
A tárgy honlapján ez található.
2009. június 19. szerda: 9:00-12:00, IB.134; kapcsolódó konzultáció: 2009.
június 17. hétfő, 14:00-16:00, IB.134.
Gondolom, csak elírás.
--
Zsíros Levente
Van egy ilyen indexikálisom
a(X,Y,Z)+:
X in inf..(max(Z)-1),
Y in inf..(max(Z)-1).
A domain([X,Y],0,9),a(X,Y,5)
hívásra ezt adja:
X in 0..4,
Y in 0..9 ? ;
no
Hogyan lehetne elérni, hogy a második szűkítés is lefusson?
--
Zsíros Levente
Kozeledik a 2. NLP vizsga, gondolom tobben foglalkoztok mostanaban a nagy
hazi feladattal. Ezzel kapcsolatban ket jotanacsot szeretnek adni:
1. Fontos, hogy a tavolsag-korlat tartomany-szukito legyen, azaz az
abs(X-Y) #= D korlat (ahol D konstans) maximalisan szukitsen. Itt jo
tudni, hogy a beepitett abs fuggveny onmagaban tartomany-szukito, de a
kivonas nem. Tehat a fenti korlatot egy segedvaltozo bevezetesevel
erdemes ket reszre bontani, es a kivonast a foliakon szereplo
'x+y=t tsz' tartomany-szukito FD-predikatum (115. folia) segitsegevel
megvalositani.
2. Kevesbe kritikus, de gyorsitja a programot, ha all_distinct-et
hasznaltok es nem all_different-et.
Ha barmi gondotok van irjatok a listara (ha nem konkret koddarabbal
kapcsolatos a kerdes) vagy szemelyesen nekem (egyebkent).
-Peter
Ui. Javasolom, hogy az esetleg elmaradt kishazikat is oldjatok meg, mert az
ezaltal megtanulhato tudas nagyon jol jon a vizsgan. Ez foleg a 3.-4.
KHF-re vonatkozik, mert ehhez a ket feladathoz hasonlo feladatokra a
vizsgapontszam tobb mint 50%-a jar...
UUi. Ujra irom, hogy a vizsgan tetszoleges irasos segedeszkoz hasznalhato,
tehat nem memorizalni celszeru az anyagot, hanem feladatmegoldasi
gyakorlatot szerezni.