A "http://www.cs.bme.hu/~szeredi/oktatas/nlp/" honlap szerint a
harmadik és negyedik kis házi feladatok beadási határideje 2008.
január 7. Ez nyilván hibás. Az ETS szerint a beadási határidő 2009.
május 22. Ez utóbbi határidő helyes?
Köszönöm előre is a választ,
Ambrus
Írtam egy univerzális kvantort, amivel korlátokat is el lehet helyezni.
Gondolom másnak is jól jöhet.
tmp_id(X):-
tmp_id_counter(X),
X1 is X+1,
abolish(tmp_id_counter/1),
assert(tmp_id_counter(X1)).
% reconsult eseten ne induljon elolrol az tmp_id_counter
:- \+ ((clause(tmp_id_counter(X),_),integer(X))),
assert(tmp_id_counter(1)).
/* Olyan eljaras, amely a bagof-hoz hasonloan mukodik,
de nem keszit masolatot bizonyos adatstruktukturakrol (Nocopy).
NCS- nocopy symbol (a selectorban szerepelhet)
X - index, ami a Filterben szerepelhet; tomornek kell lennie, maskulonben
masolat keszul rola (ugyanis a lehetseges indexeket assert-el taroljuk)
Iterator - Egy cel. Iterator es szuro egyben (az X-ek halmazat generalja,
visszalepessel)
Selector - Egy cel. Miutan megvan az X-ek halmaza, kivalaszthatjuk
Nocopy-bol a
szukseges elemet; a Selector-ban levo kifejezesnek az ervenyes (vagyis a
Filternek megfelelo) X-ekre sikerulnie kell, kivetel nelkul (a kulonbozo
Selector kifejezesek ES kapcsolatba kerulnek majd egymassal; korlatok
felvetlere kivaloan hasznalhato; a Nocopy-ban lehetnek korlat valtozok
is!).
A Selector-ban nem szerepelhet a Nocopy valtozo! Ehelyett az NCS
hasznalando.
Az Y-nak is itt kell erteket kapnia.
Y - a minket erdeklo valtozo (ebbol keszul az YL lista)
pelda:
NC legyen egy harom hosszu lista, es minden eleme egyezzen meg a listaban
elfoglalt helyevel (ez meg mukodne bagoffal is)
length(NC,3),anditerator(NC-NCS,Index,nth0(Index,NC,_),
(nth0(Index,NCS,Index)),Index,L).
pelda2: (Ez mar FD-vel)
a listaban legyenek egymast koveto szamok
length(NC,3),anditerator(NC-NCS,Index,nth0(Index,NC,_),
(
Index>0 -> nth0(Index,NCS,E),I2 is Index-1,nth0(I2,NCS,E2),E#=E2+1;
Index=0 % e nelkul meghiusulna az anditerator
),
Index,L).
*/
anditerator(Nocopy-NCS,X,Iterator,Selector,Y,YL):-
tmp_id(Id),
(
call(Iterator),assertz(tmp_goal(Id,X)),fail
;
true
),
callgoallist(Id,Nocopy-NCS,X,Selector,Y,YL).
callgoallist(Id,Nocopy-NCS,X,Selector,Y,YL):-
copy_term(X-Selector-Y-NCS,XC-SelectorC-YC-NCSC),
% ez lekoti SelectorC-ben az XC valtozot
call(tmp_goal(Id,XC)), nondeb:remclaus(tmp_goal(_,_)) ->
(
% SelectorC-ben leköti A Nocopy szimbólumot (NCSC)
NCSC = Nocopy,
retract(tmp_goal(Id,XC)),
% itt helyettesitodik be YC
call(SelectorC),
callgoallist(Id,Nocopy-NCS,X,Selector,Y,YT),
YL=[YC|YT]
)
;
YL=[].
% ez a ketto csak a debuggolashoz kell
nondeb:remclaus(H):-
write('\n********************\n'),
bagof(H,(clause(H,_),mdeb(H,'---clause')),_).
mdeb(V,S):-
write('\n'),
write(S),
write(':'),
write(V),
write('\n').
--
Zsíros Levente
Levente Zsíros <zslevi(a)gmail.com> writes:
> Angol nyelvû kommentekkel, arra az esetre, ha el kellene küldeni a
> sicstus-nak.
A gondot az okozza, hogy olyan bagof-ot hasznalsz amelyben az elso (Gyujto)
argumentumban korlat valtozok szerepelnek. A bagof ugyanis a gyujtes soran
le kell, hogy masolja a gyujtot, es ez egy zuros feladat.
Azt javasolom, hogy senki se hasznaljon olyan bagof-ot, ahol az elso
argumentum korlat valtozo, vagy korlat valtozot tartalmazo kifejezes.
A 4.0-s SICStusban ugy tunik mar kikuszoboltek ezt a problemat.
-Peter
>
> 2009/4/30 Peter Szeredi <szeredi(a)cs.bme.hu>
>
> > Levente Zsíros <zslevi(a)gmail.com> writes:
> >
> > > A programom (2. kishf) jól lefut az elso esetre. A másodikra segmentation
> > > violation-t dob. (A sicstus kézikönyv nem ír arról semmit, hogy ez mit
> > > jelent.) Ez a sicstus hibája, vagy az enyém?
> >
> > Altalaban, ha egy rendszer segmentation violation-t dob, az a rendszernek a
> > hibaja, es nem pedig a rendszer felhasznalojanak. Vannak azonban kivetelek.
> > Peldaul, ha valaki a clpfd konyvtarban fdset_ eljarasok helyett listakent
> > kezeli az FD halmazokat, akkor ez okozhat segmentation violation-t. Ugyanis
> > az a megszoritas, hogy az FD halmazokat csak az fdset_ kezdetu eljarasokkal
> > szabad kezelni azert van, hogy az FD halmazokhoz valo hozzaferes kozben ne
> > kelljen un. referenciakkal foglalkozni, es igy azt a vizsgalatot, hogy
> > pl. egy listaelem referencia-e, meg lehessen sporolni. Ez viszont azzal
> > jar, hogy ha egy ilyen referencia megis elofordul, akkor segmentation
> > violation-t kap(hat)unk :-(.
> >
> > Miutan a 2. kishf soran nem igazan kell FD halmazokat kezelni, arra
> > tippelek, hogy nem a fent elmondott eset all fenn, hanem sikerult egy
> > hibara rafutnod a SICStusban (valoszinuleg azaltal, hogy egy szokatlan
> > kombinaciojat hasznalod a korlatoknak). Kuldd el (csak nekem) a kododat,
> > vagy add be az ETS-be, es megnezem.
> >
> > -Peter
> >
> >
> > _______________________________________________
> > NHLP-l mailing list
> > NHLP-l(a)sziami.cs.bme.hu
> > http://sziami.cs.bme.hu/mailman/listinfo/nhlp-l
> >
>
>
>
> --
>
> Zsíros Levente
A programom (2. kishf) jól lefut az első esetre. A másodikra segmentation
violation-t dob. (A sicstus kézikönyv nem ír arról semmit, hogy ez mit
jelent.) Ez a sicstus hibája, vagy az enyém?
--
Zsíros Levente
Szervusztok!
A három kérdésem lenne a második kisházi kapcsán. Nem mindegyik előadáson
voltam, így lehet, hogy olyat kérdezek, amire elhangzott a válasz.
Az első kérdésem az, hogy lehet-e olyan oszlop vagy sor, ami *nem feketével
kezdődik.* A kiírás ezt nem tiltja, de a példákban nincs ilyen. Nekem
egyszerűbb volt úgy megírni, hogy feltettem, hogy nincs.
A második az, hogy a *labelingnek a választási pont fajtájá*ra vonatkozó
paraméterét hogyan érdemes választani. Igazából csak tippem van, hogy a step
a nyerő. (A változók sorrendjének ffc-t, az iránynak a down-t láttam jónak,
lévén, hogy nagyobb számból kevesebbféleképpen jön ki az összeg.)
Az utolsó pedig a *csupa különböző*re vonatkozik. Tudom, hogy már többször
volt szó az all_different és az all_distinct közötti különbségéről, de nem
emlékszem. Feltételezem, hogy a fólián, a Kombinatorikus korlátok -- "mind
különbözőek"-nél meg is van a válasz. Volt már ez a rész előadáson?
Előre is köszönöm a válaszokat
Márton
Feltettem a nagy hazi feladat kiirasat es az osszes foliat a honlapra. (Az
utobbiak praktikusan ugyanazok, mint a korabban fenn levo 2004-es foliak.)
-Peter