Kötprog információk
- Az információk elsődleges forrása az előadó honlapja, és az onnan letölthető csomag.
- A kód nem használhat a keretrendszeren kívül semmilyen más osztálykönyvtárat (természetesen a JDK osztályain kívül).
- A bíróban megjelenő pontszám pontosan akkor 1, ha a beküldés sikeres.
- A forráskód első sorában megadható egy (maximum 10 karakteres, szóközmentes) nicknév a következő formában:
///Nicknevem
Amennyiben ez adott, a hallgató ez alapján azonosíthatja magát a ranglistában.
- A ranglistán megjelenő összidőbe nem számítanak bele a timeout-os tesztesetek.
- Bizonyos esetekben a kiértékelés hosszú ideig tart.
Ezalatt a bíró rendszer webes felületén semmi információt nem látunk.
Ez normális működés! Ha ezalatt frissítjük a böngészőt és újraküldjük az adatokat, akkor az új próbálkozásnak minősül!
- A beküldési határidőhöz közeledve egyre terheltebb szokott lenni a rendszer.
Ekkor egy-egy feltöltés hosszabb időt is igénybe vehet.
A fejlesztés során ezzel mindenki kalkuláljon!
(Természetesen a keretrendszer processzor időt mér a futás során, így a terheltség nem jelenti azt, hogy kevesebb idő jut a programnak.)
- Megjegyzések, kérdések, hibák, stb.: CooSpace-es "Mesterséges Intelligencia kötelező program" színtér fóruma.
Kötprog tippek
- Olvassuk el az előadásjegyzet "Korlátozás kielégítési feladat" című fejezetét!
- A feladatot ajánlott backtrack algoritmussal megoldani. Felhasználhatjuk akár a DFSTreeTiles kódját is. De az még önmagában nem üti meg az elégséges szintet - hogyan javíthatunk rajta?
- Válasszuk a legkorlátozottabb változót: folytassuk a kitöltést azon a mezőn, ahova a legkevesebb csempetípus illeszthető! (Ha van olyan üres mező, ahová semmi se rakható, akkor a részproblémának nincs megoldása!) Ez egy mohó heurisztika a keresőfa méretének csökkentésére.
- A keresési térre jellemző, hogy bizonyos ágakon nagyon hamar találhatunk megoldást, míg más ágakon nagyságrendekkel több időt eltöltünk, ami alatt kifuthatunk az időlimitből. Ezért érdemes 1 hosszú keresés helyett több, rövidebb keresést csinálni! Randomizáljuk a programunkat, hogy valóban különböző ágakat válasszon (pl. a legkorlátozottabb változók közül válasszon véletlenszerűen), és amikor egy keresés már hosszú (processzor)ideje fut, induljunk újra az elejéről!
- Kereshetünk egyéb ötleteket is, pl. az előadásjegyzetből, vagy kísérletezhetünk saját heurisztikákkal is. Pl. nem muszáj -1-es mező kitöltésével folytatni, ha valamelyik 0-s mező korlátozottabbnak tűnik.
- Ha igazán ki akarjuk csiszolni a programunkat, a meta-paramétereit (pl. milyen sorrendben vizsgálja a csempetípusokat, vagy milyen időközönként indítsa újra a keresést) előre optimalizálhatjuk pl. genetikus algoritmussal.