36PAA - Probl�m k�bl�

Zad�n�

Navrhn�te a implementujte heuristiku �e��c� zobecn�n� probl�m dvou k�bl�. Heuristiku otestujte na v�ech n�sleduj�c�ch p��kladech a srovnejte s prohled�v�n�m stavov�ho prostoru do ���ky (BFS). Voliteln� srovnejte i s prohled�v�n�m do hloubky (DFS). Zvolenou heuristiku popi�te ve zpr�v�.

Definice probl�mu

K dispozici jsou dva k�ble (p�edem dan�ch obecn� rozd�ln�ch objem�), vodovodn� kohoutek a kan�l. Na po��tku jsou oba k�ble pr�zdn�. Va��m �kolem je doc�lit toho, aby v jednom k�blu byla voda o p�edem stanoven�m objemu, p�i�em� m��ete pouze naplnit pln� k�bl z kohoutku, vyl�t cel� k�bl do kan�lu a p�el�t jeden k�bl do druh�ho tak, aby druh� k�bl nep�etekl. Probl�m lze zobecnit t�m, �e p�ipust�me u�it� v�t��ho po�tu k�bl�, aby na po��tku �e�en� byla v k�blech n�jak� voda, a �e p�edep�eme koncov� objem vody v ka�d�m k�blu.

Implementace

�lohu jsem implementoval v Jazyce C# jako konzolovou aplikaci. Vstupn� data jsou sou��st� k�du a v�sledky jsou vypisov�ny na standardn� v�stup. Z�kladem �e�en� je m�rn� modifikovan� BFS algoritmus. M�sto fronty CLOSE jsem pou�il mapu do kter� ukl�d�m ve�ker� stavy. Kl��em do mapy je Hash, kter� je roven obsahu v�ech k�bl� (pro 1 k�bl sta�� 6b, m�me 5 k�bl�, tj. sta�� 30b, tj. int). V�hodou tohoto �e�en� (inspirace od Augiho) je jeho rychlost a bezkonfliktnost. V p��pad� heuristiky jsem nahradil frontu OPEN prioritn� frontou. Priorita je rovna sou�tu absolutn�ch hodnot rozd�lu sou�asn�ho a koncov�ho stavu p�es v�echny k�ble. Tj. ��m men�� ��slo, t�m v�t�� p�ednost.

BFS

Heuristika

Nam��en� hodnoty a v�sledky

M��il jsem na NTB s procesorem Centino 1.4GHz, nastaven� max Performance p�i nap�jen� z adapt�ru. Pou�it� OS: Windows XP SP2 s .net Framework 2.

Tabulka v�sledk� m��en�

InstanceBFSHeuristika
Po�et operac�Nav�t�ven� stavyPo�et operac�Nav�t�ven� stavyGenerovan� stavy
1.11089912080732
1.287988175441724
1.387895812121
1.4315545121
2.1164934934705025496
2.2124166840955028547
2.3113574928574520263
2.45871124481975
2.576323197662762
3.114591993613674349
3.21258771243703755
3.31040907323002290
3.4514601239359
3.5791541031327
3.69277722611978178

V�pisy programu:

Graf: D�lka cesty k �e�en� (po�et manipulac� s k�bly)

d�lka cesty k �e�en�

Graf: Po�et stav� stavov�ho prostoru

po�et stav�

Graf: Heuristika - srovn�n� po�tu generovan�ch a nav�t�ven�ch stav�

heuristika - po�et stav�

Z�v�r

Zadan� instance jsou p�ijateln� rychle �e�iteln� pomoc� BFS s o�ez�v�n�m neperspektivn�ch stav�. Heuristika zalo�en� na minimalizaci vzd�lenosti k v�sledku d�v� velice dobr� v�sledky. V pr�m�ru bylo vygenerov�no 102,5x m�n� stav�, p�i�em� cesta se pr�m�rn� prodlou�ila 2,3x. Maxim�ln� se cesta prodlou�ila 3,3x a v nejlep��m p��pad� bylo vygenerov�no 650x m�n� stav�.