Feladványok minősítése
A feladványokat megoldhatósági nehézségük szerint
minősíteni lehet. Általában néhány csoportba szokták sorolni ebből a szempontból
a feladványokat. Én egy százas skála szerinti osztályozást alkalmazok. Ezen
belül a következő fő csoportokat használom:
A
csoport: 1-es szint,
B
csoport: 2-es szint,
C
csoport: 3-5-ös szint,
D
csoport: 6-9-es szint,
E
csoport: 10-13-a szint és
F
csoport: 13-asnál magasabb szint.
A D.gsf (10704) adatbázis feladványinak
minősítési összesítését a következő képernyőn láthatjuk:
Látható, hogy a feladványok 78%-a 2-es minősítésű. Ez
azért van így, mert a 2-es nehézségű feladványok előállításában csak HS metódust használunk, és mivel ez
gyors is, hatékony is, a legkönnyebben az ilyen feladványok jönnek létre. A
jobboldali táblázatban fehér és zöldeskék háttérszín választja el egymástól a
különböző csoportokat. 100-asnál magasabb nehézségi fokú feladványt az
adatbázis nem tartalmaz.
A feladványok minősítését úgy állapítom meg, hogy
megoldása során hányszor és milyen típusú metódusokat kell használni. A
metódusokat a minősítő a képernyőn látható sorrend szerint alkalmazza, ha az a
megoldáshoz szükséges, vagyis a feladványhoz kapcsolt jelölttábla az alkalmazás
révén kevesebb jelöltet tartalmaz. Minden újabb metódus növeli a minősítési
értéket. Az 1-es minősítésű feladványok csak BS segítségével megoldhatók, a 2-es minősítésűekhez HS szükséges, a 3-as minősítéshez NP és így tovább. A 13-nál nagyobb
értékek úgy jönnek létre, hogy a sorban hátrább álló metódusokat többször is
kell alkalmazni.
Azt szokták mondani, hogy minél kevesebb elemet
tartalmaz egy feladvány, annál nehezebb megoldani. Ez igaz is meg nem is. Ha a
nehézségbe beszámítjuk a megoldási időt (kézit), akkor már több igazság van a
dologban. De lehet olyan feladványt készíteni, amely 18 elemű és 1-es
nehézségű, de lehet olyat is, amely 28 elemű és 92-es nehézségű. Az 1275.
feladvány például 32-es nehézségű és 25 elemű:
Ugyanakkor a 18-A.gsf (83950) adatbázis 41228-as feladványa 1-es
nehézségi fokú:
A metódusokat elemző lapon láthattuk, hogy nagy
különbségek vannak a metódusok végrehajtási ideje között. Ha például nehéz feladványokat szeretnénk készíteni, akkor a generáláskor a
nehézkes, ritkán eredményes metódusokat is alkalmazni kell, mely a futási időt
lelassítja, ugyanakkor egy adott feladvány előállításához nem is biztos, hogy szükségesek,
egyszerűen eredménytelenségük miatt kimaradnak.
Ahhoz, hogy minél nagyobb százalékban kapjunk a
generálás során nehéz feladványokat, ki kell hagyni a metódusokat a
generálásból. Helyette a BackTrack eljárást kell alkalmazni, ami szintén nem gyors,
de jobb eredménnyel kecsegtet. Az egyszerű BTR
megoldás esetében viszont felmerülhet a gyanú, hogy a feladvány, amit a BTR jónak lát nem is az. Mert igaz,
hogy ad egy megoldást a feladványra, de mi van, ha másik megoldás is van? Ekkor
ugyebár a feladvány nem szabályos, azaz nem feladvány.
Meg kell tehát oldani azt a problémát, hogy egy
feladvány helyes-e? Ezt BTR
segítségével a következőképpen tehetjük meg:
– fusson a feltöltés BTR-el, ameddig csak lehet,
– ha nem ér a végére, akkor nem jó a feladvány, nincs
egyetlen teljes kitöltés sem,
– ha végére ér kitölthető, de nem biztos, hogy
egyértelműen, ezért továbblép a keresésben,
– ha már másodjára nem ér végig, akkor jó a feladvány,
– ha újra végigér, akkor nem jó, mert legalább
kétféleképpen kitölthető.
Ezzel a módszerrel minden feladványról eldönthető,
hogy helyes-e vagy nem, azaz megoldható-e.