Hetfon 10-tol konzultacio lesz, most mar a helyszin is ismert: IB 134 (SZIT
tanszeki terem).
Egy kurzustarsatok kerdeseket tett fel a 4. KHF-fel kapcsolatban, a valaszt
-- mindenki okulasara -- alabb kuldom.
-Peter
A negyedik kisházifeladattal bajlódom. Több kérdésem
is lenne.
1) Amikor valamely változónak egyik irányba nincs korlátja, tehát fd_max(X,
sup) vagy fd_min(X, inf), akkor ezt a szokásos relációs operátorokkal
kezelni nem tudom.
Kerestem egy fd-speciális eljárást, hogy hogyan lehetne leellenõrizni ezt,
de csak a naív fd_max(X, X_max), X_max \= sup megoldásra jutottam. Van-e
valami elegánsabb megoldás, mint az, amelyet a mellékelt megoldásomban
használok, ahol igyekszem két változó fd_max és fd_min minden lehetséges
kombinációját lekövetni, hogy sup, inf, vagy ingeger-e?
Ha az fd_min es/vagy fd_max altal visszaadott ertekeket szeretnel
osszehasonlitani, arra ezeket a hivasokat ajanlom:
X kisebb mint Y : empty_interval(Y, X)
X kisebb-egyenlo mint Y: fdset_interval(_, X, Y)
Pelda: ket ilyen "korlat-ertek" maximumanak kiszamolasa:
max(A, B, MaxAB) :-
( empty_interval(B, A) -> MaxAB = B
; MaxAB = A
).
2) Az utolsó feladatnak idõtúllépés miatt nem felel
meg a feladatom.
Azt tudom, hogy állapotokat kellene kezelnem, de ez egyelõre nem tiszta
nekem. Igyekeztem a fóliákban lévõ exactly/3 alapján haladni, ahol arra
jutottam, hogy a dispatch_global/4 második és harmadik argmentumában lévõ
változók ill. struktúrák jelentenék.
Megoldásomban ezt úgy igyekeztem használni, hogy a struktóra elsõ fele
jelentené azoknak a változóknak a listáját, amelyek késõbbi vizsgálat
tárgyai lehetnek (tehát nem egyelemû tartományuk van), míg a második fele
ennek a struktúrának pedig a lista hossza.
A kérdésem az, hogy jól értem és helyesen használom-e
az állapotok
jelölését?
Az alapgondolat jo: a "késõbbi vizsgálat tárgyát" képezõ változók listáját
celszeru tarolni az állapot-argumentumban (szerintem a listahosszra nincs
szukseg). De egy X valtozo akkor hagyhato ki az allapotlistabol, ha van egy
olyan masik Y valtozo a listaban, hogy X biztosan kisebb-egyenlo mint Y. Ha
ez igaz, akkor max(X,Y)=Y, tehat X "nem szamit" a valtozok maximumanak
kepzeseben.
Peldaul ha [X, Y, Z] az allapotlista, es X tartomanya 3..10, Y-e 15..20 es
Z-e 5..25, akkor X elhagyhato a listabol, mert X biztosan kisebb-egyenlo
mint Y.
3) Megoldásomban nem igazán használom az akciók
listáját, csak kilépésre.
Ez nem helyes, a szukiteseket is az akciólistában kell a globalis korlatnak
kozolnie. A programodban a dispatch global torzseben vegrehajtasz X in
... alaku hivasokat: ez szigoruan tilos!
(Sajnos a tesztkornyezet ezt nem eszleli, es "sajnos" nem is szallitja el a
SICStust, pedig ez elofordulhat ilyen esetben.)