Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
V�clav Ra�ansk�
Um�l� inteligence
Z�pisy z p�edn��ky zpracoval�
Jan �er�k
��� kv�tna �
� w��������� ������������������ !"#$%&'()*+,-./0yA1Obsah
� Opakov�n� jazyka Prolog ���� Fibonacciho ��sla � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� T��d�c� algoritmy � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
����� Bublinkov� t��dn� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ������ Quicksort � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
�� Pr�ce se seznamy � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� Smaz�n� prvku ze seznamu � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� Vlo en� prvku do seznamu � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� Permutace � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
��� Probl�m osmi dam � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ������ �e�en� �� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ������ �e�en� �� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� �e�en� �� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� Grafy ���� Bin�rn� strom � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
����� P�id�v�n� do bin�rn�ho stromu � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ������ Odeb�r�n� z bin�rn�ho stromu � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� Vkl�d�n��odeb�r�n� do�z bin�rn�ho stromu � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ������ Tisk bin�rn�ho stromu � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��
��� Reprezentace graf� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� Cesty v grafech � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� Kostra grafu � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��
�
� OBSAH
� Prohled�v�n� stavov�ho prostoru ���� Prohled�v�n� stavov�ho stromu � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��� Prohled�v�n� do hloubky � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �� Prohled�v�n� do ���ky � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��� Nalezen� nejlep�� cesty � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� Rozvrh pr�ce procesor� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� Pucl��ek � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� AND�OR stromy � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��
���� Hanoisk� v e � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ������ Cesta mezi msty � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� AND�OR strom � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ������ Pozn�mka o priorit�ch oper�tor� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
�� AND�OR prohled�v�n� do hloubky � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� AND�OR prohled�v�n� do hloubky s ocenn�m � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� Demonstrace AND�OR prohled�v�n� s ocenn�m � � � � � � � � � � � � � � � � � � � � � � � � � � ����� Datov� reprezentace AND�OR stromu � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ������ Vlastn� program � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ������ Hled�n� cesty mezi msty � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��
�� Algoritmy soupe��c�ho prohled�v�n� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ������ Minimax � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ������ Alfa�Beta procedura � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��
� Expertn� syst�my ����� Pattern�directed programming � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� Struktura expertn�ho syst�mu � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��� Dop�edn� a zptn� �etzen� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
���� Druhy pravidel � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� Dop�edn� a zptn� �etzen� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��� Ukl�d�n� dat v expertn�ch syst�mech � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
Zptn� �etzen� ����� Naivn� expertn� syst�m � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
����� Ukl�d�n� dat � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ������ Dotazy u ivateli � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� V�cehodnotov� odpovdi � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
��� Jednoduch� �shell� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��� Faktor jistoty � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
���� Kombinov�n� faktoru jistoty � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� Uchov�v�n� dat � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� Zdrojov� text � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� Super shell � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
��� Trasov�n� expertn�ho syst�mu � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� Zp�sob z�sk�n� z�vru � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� Zd�vodnn� z�sk�n� z�vru � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� Dop�edn� �etzen� ����� Principy � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� Ilustrativn� p��klad s rozestavov�n�m n�bytku � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� Expertn� syst�m s dop�edn�m �etzen�m � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� Generov�n� kon�iktn�ch pravidel � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��
����� Kon�iktn� pravidla a jejich vznik � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ������� LEX metoda � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� MEA metoda � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��
��� R�mce � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ������� Co jsou to r�mce � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��
SEZNAM OBR�ZK�
����� Prohl� en� r�mc� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ������ P�id�v�n� r�mc� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ������� P��klad znalostn� b�ze v r�mc�ch � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��
Seznam obr�zk�
� Princip algoritmu Quicksort � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �� P��klad rozestavn� dam na �achovnici � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � Transformace sou�adnic na �achovnici � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �� Princip odstra�ov�n� prvku z bin�rn�ho stromu � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �� Princip vkl�d�n� do bin�rn�ho stromu � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �� P��klad v�stupu programu show � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��� P��klad neorientovan�ho grafu � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��� P��klad orientovan�ho grafu � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��� Strom prohled�v�n� do ���ky � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� Princip chov�n� predik�tu expand � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� Precedence �loh � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� Rozvr en� pr�ce procesor� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��� C�lov� situace hry Pucl��ek � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� Pokuty ve h�e Pucl��ek � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� Tuto situaci Best Search zvl�dne v pti taz�ch � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� AND�OR strom hanoisk�ch v � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� Mapa mst � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� P��klad AND�OR stromu � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� Trivi�ln� prohled�v�n� AND�OR stromu� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� Demonstrace AND�OR prohled�v�n� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� F�b��� � F�c��� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� F�b� � � � F�c� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��� F�b��� � ��F�c� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� AND�OR strom po AND�OR prohled�v�n� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� P��klad listu AND�OR stromu � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� P��klad OR�uzlu AND�OR stromu � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� P��klad AND�uzlu AND�OR stromu � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� P��klad roz�e�en�ho listu AND�OR stromu � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ���� P��klad roz�e�en�ho OR�uzlu AND�OR stromu � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��� P��klad roz�e�en�ho AND�uzlu AND�OR stromu � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��� Za��znut� Alfa�Beta procedurou � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �� Motivace k pattern�directed programming � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � Diagram uplat�ov�n� modul� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �� Struktura expertn�ho syst�mu � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �� P��klad struktury �r�mc�� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� �� OPAKOV�N� JAZYKA PROLOG
� Opakov�n� jazyka Prolog
��� Fibonacciho ��sla
Zde uv�d�me dv varianty� jak se na probl�m Fibonacciho ��sel d�vat� Prvn� z nich je klasick� p��stup logick�hoprogramov�n�� t�j� p��stup formulov�n� probl�mu�
f�X�X� X����f�X�Y� X� is X�� X� is X�� f�X��Y��� f�X��Y��� Y is Y� Y��
Tento program po��t� Fibonacciho ��sla� ov�em slo itost� s jakou pracuje� je exponenci�ln�� Nyn� si uve me t� program� s jist�m f�glem� kter� sn� � slo itost na�eho programu na slo itost line�rn��
f�X�X� X����f�X�Y� X� is X�� X� is X�� f�X��Y��� f�X��Y��� Y is Y� Y��
asserta�f�X�Y���
��� T��d�c� algoritmy
� � � Bublinkov� t��dn�
Prvn� ze t��d�c�ch algoritm�� kter� si uvedeme je bublinkov� t��dn�� Nen� na nm v�bec nic n�ro�n�ho!
bubblesort�List�Sorted� swap�List�List�����bubblesort�List��Sorted��bubblesort�Sorted�Sorted��swap��X�Y�Rest���Y�X�Rest�� X�Y�swap��Z�Rest���Z�Rest��� swap�Rest�Rest���
� � � Quicksort
Princip algoritmu Quicksort ukazuje obr�zek �� Tedy zaps�no v Prologu!
"��������������#
delete$�%�X&�
"������������#
split$�%
�
� � � � � �
�������
PPPPPPq
"����# sort "�������# sort
"����# "�������#� �
append� add �
"��������������#
PPPPPPq
�������
Obr�zek �! Princip algoritmu Quicksort
quicksort��������quicksort��X�Tail��Sorted� split�X�Tail�Small�Big��quicksort�Small�SortedSmall��
quicksort�Big�SortedBig��append�SortedSmall��X�SortedBig���
split�X�����������split�X��Y�Tail���Y�Small��Big� X�Y���split�X�Tail�Small�Big��split�X��Y�Tail��Small��Y�Big�� split�X�Tail�Small�Big��
��� Pr�ce se seznamy �
�� Pr�ce se seznamy
� � � Smaz�n� prvku ze seznamu
Smaz�n� prvku ze seznamu se provede tak� pokud vymaz�van� prvek X nen� v hlav seznamu� hlava se odstran� apokra�uje se na zbytku seznamu� Je�li prvek X v hlav seznamu� odstran� se a program kon�� �spchem�
del�X��X�Tail��Tail��del�X��Y�Tail���Y�Tail��� del�X�Tail�Tail���
� � � Vlo�en� prvku do seznamu
Pro vkl�d�n� prvku do seznamu si uvedeme dva predik�ty� Predik�t insert je konstruov�n jako logick� d�sledekexistence predik�tu del a vztahu mezi operacemi vkl�d�n� a vyb�r�n� do�ze seznamu�
insert�X�List�List�� del�X�List��List��
Predik�t insert� je pou iteln� v praxi�
insert��X�List��X�List���
� � � Permutace
Predik�ty perm� a perm� generuj� permutace P z prvk� seznamu L pomoc� predik�t� insert a del�
perm���������perm���X�L��P� perm��L�L���insert�X�L��P��perm���������perm��L��X�P�� del�X�L�L���perm��L��P��
�� Probl�m osmi dam
V tomto odstavci se pod�v�me na probl�m osmi dam� Tento probl�m lze formulovat nap��klad takto� Rozestavjte po�achovnici � dam tak� aby se �dn� dv vz�jemn neohro ovaly�
Pro �e�en� tohoto probl�mu si vybereme jako datovou strukturu osmiprvkov� seznam� reprezentuj�c� osm dam�Ka d� prvek seznamu m� tvar A�B� kde A je horizont�ln� a B vertik�ln� sou�adnice polohy d�my na �achovnici� Nap��situaci na obr� � zobraz�me seznamem!
���������������������������������
� � � �e�en� � �
Toto �e�en� je konstruov�no �od boku�� Predik�t template vygeneruje na�i datovou strukturu� v n� je splnno� ev ka d�m sloupci stoj� pr�v jedna d�ma� Predik�t solution potom generuje v�echna mo n� rozestavn� dam� kdy jeka d� ve sv�m sloupci sama� a pomoc� predik�tu noatack kontroluje� zda se nkter� dv d�my neohro uj��
solution�����solution��X�Y�Others�� solution�Others�� member�Y��������������������
noattack�X�Y�Others��noattack�������noattack�X�Y��X��Y��Others�� Y���Y�� Y�Y���X�X� Y�Y���XX��
noattack�X�Y�Others��template����Y����Y����Y����Y����Y����Y����Y����Y����
Toto �e�en� probl�mu negeneruje v�echny mo n� permutace ��dk�� tedy v�echny mo n� pozice v�ech dam v r�mcijejich sloupc�� Predik�t solution um�st� v dy i�tou d�mu $pro i � �� � � � � �% tak� aby neohro ovala �dnou z dosudrozm�stn�ch�
� �� OPAKOV�N� JAZYKA PROLOG
�
�
�
�
�
�
�
�Obr�zek �! P��klad rozestavn� dam na �achovnici
� � � �e�en� � �
Datovou strukturou pou itou v tomto �e�en� je seznam osmi vertik�ln�ch sou�adnic� proto e se p�edpokl�d�� e ka d�z dam le � ve sv�m vlastn�m sloupci� t�j� �Y��Y��Y��Y��Y��Y��Y��Y���
solution�Queens� perm�������������������Queens��safe�Queens��safe�����safe��Queen�Others�� safe�Others��noattack�Queen�Others����noattack���������noattack�Y��Y��YList��Xdist� Y�Y���Xdist� YY����Xdist� Dist� is Xdist ��
noattack�Y�YList�Dist���
Toto �e�en� je hor��� nebo' jsou generov�ny v�echny mo n� polohy dam ve sv�ch sloupc�ch� Predik�t perm v dyvygeneruje novou permutaci ��dk� a predik�t safe vyzkou��� zda je to p��pustn� rozestavn��
� � � �e�en� � �
V tomto �e�en� pou ijeme nikoli sou�adnice x a y $sloupec���dek%� ale tzv� sou�adnice diagon�ly u a v� Tedy na�achovnici aplikujeme transformaci sou�adnic!
u � x� v
v � x� v
Tedy intervaly Dx � ������ a Dy � ������ p�ejdou do Du � ������� a Dv � ������ N�zorn to ukazuje obr�zek �Text programu bude tedy vypadat takto!
solution�YList� sol�YList�������������������������������������������������������������������������������������������������������������
sol�������Dy�Du�Dv��sol��Y�YList���X�Dx���Dy�Du�Dv� del�Y�Dy�Dy���U is XY�del�U�Du�Du���V is X Y�
del�V�Dv�Dv��� sol�YList�Dx��Dy��Du��Dv���
��� Problm osmi dam �
� �
��
�� �
�
���������������
���
���
���������������
���
���
Obr�zek ! Transformace sou�adnic na �achovnici
Tento algoritmus je z uveden�ch algoritm� nejlep��� Nutno ov�em poznamenat� e predik�t del mus� skon�itne�spchem $fail%� pokud nen� nalezen hledan� prvek�
� � GRAFY
� Grafy
��� Bin�rn� strom
V t�to kapitole si uvedeme nkolik algoritm�� prov�dj�c�ch z�kladn� operace nad bin�rn�mi stromy�
� � � P�id�v�n� do bin�rn�ho stromu
addleaf�nil�X�t�nil�X�nil���addleaf�t�Left�X�Right��X�t�Left�X�Right���addleaf�t�Left�Root�Right��X�t�Left��Root�Right�� Root�X�addleaf�Left�X�Left���addleaf�t�Left�Root�Right��X�t�Left�Root�Right��� Root�X�addleaf�Right�X�Right���
Anal�zu programu nech�me na laskav�m �ten��i� Nutno v�ak podotknout� e predik�t na odstrann� prvku z bi�n�rn�ho stromu nelze de(novat!
del�D�X�D�� addleaf�D��X�D��
� � � Odeb�r�n� z bin�rn�ho stromu
Princip �p�estavby� bin�rn�ho stromu p�i odstra�ov�n� ko�ene ukazuje obr�zek ��
AAA�
�� A
AA�
��
�������
��R
AAA�
�� A
AA�
��
���
��R
AAA�
�� A
AA�
��
�������
��R
X
L R L RY
L R
Y� �
Obr�zek �! Princip odstra�ov�n� prvku z bin�rn�ho stromu
Zb�v� tedy uk�zat zdrojov� text�
delleaf�t�nil�X�Right��X�Right��delleaf�t�Left�X�nil��X�Left��delleaf�t�Left�X�Right��X�t�Left�Y�Right��� delmin�Right�Y�Right���delleaf�t�Left�Root�Right��X�t�Left��Root�Right�� X�Root�delleaf�Left�X�Left���delleaf�t�Left�Root�Right��X�t�Left�Root�Right��� X�Root�delleaf�Right�X�Right���delmin�t�nil�Y�R��Y�R��delmin�t�Left�Root�Right��Y�t�Left��Root�Right�� delmin�Left�Y�Left���
� � � Vkl�d�n��odeb�r�n� do�z bin�rn�ho stromu
Princip algoritmu� kter� zde uv�d�me� ukazuje obr�zek ��
add�D�X�D�� addroot�D�X�D���add�t�L�Y�R��X�t�L��Y�R�� gt�Y�X��add�L�X�L���add�t�L�Y�R��X�t�L�Y�R��� gt�X�Y��add�R�X�R���addroot�nil�X�t�nil�X�nil���addroot�t�L�X�R��X�t�L�X�R���addroot�t�L�Y�R��X�t�L��X�t�L��Y�R��� gt�Y�X��addroot�L�X�t�L��X�L����addroot�t�L�Y�R��X�t�t�L�Y�R���X�R��� gt�X�Y��addroot�R�X�t�R��X�R����
�� Bin�rn� strom �
AAA�
��
AAA�
�� A
AA�
��
L�
L� R
���Y
���X
QQQQQs
���R
AAA�
�� A
AA�
��
L R�
���Y
���R
����
����
AAA�
��R�
���X
QQQQQs
X � Y X � Y
AAA�
�� A
AA�
��
L R
���Y
���R
���� �
��
Obr�zek �! Princip vkl�d�n� do bin�rn�ho stromu
�� � GRAFY
De(nici predik�tu gt ponech�v�me na kone�n�m u ivateli� Uveden� program p�edpokl�d�� e gt�X�Y� uspje�pokud je vrchol X �vt��� ne vrchol Y�
Poznamenejme� e tento program funguje i �obr�cen��) jin�mi slovy� lze bez probl�m� zapsat program pro od�stra�ov�n� prvku z bin�rn�ho stromu!
del�D�X�D�� add�D��X�D��
� � � Tisk bin�rn�ho stromu
V tomto odstavci si uvedeme program na tisk stromu� Bude fungovat tak� e p�evede datovou strukturu stromu nap��
t�t�t�nil���nil����t�nil���nil�
����t�t�nil���t�nil���nil�
����t�nil���nil�
��
do tvaru� kter� je uveden na obr� ��
��
��
��
�
Obr�zek �! P��klad v�stupu programu show
�Salon�ampon a kondicion�r v jednom� Two in one�
� Reprezentace graf� ��
Program tedy bude vypadat takto!
show�T� show��T����show��nil����show��t�L�X�R��Indent� Ind� is Indent ��show��R�Ind���tab�Indent��
write�X��nl�show��L�Ind���
��� Reprezentace graf�
Nkter� zp�soby reprezentace graf� v Prologu!
�� graph��a�b�c�d���e�a�b��e�b�d��e�b�c��e�c�d���� Tato reprezentace zn�zor�uje neorientovan� graf jakopredik�t graph�V�E�� kde V je seznam vrchol� grafu a E je seznam hran grafu� Ka d� hrana je tvaru e�V��V���kde V� a V� jsou vrcholy grafu) viz obr� ��
�� digraph��s�t�u�v���a�s�t����a�t�v����a�t�u����a�u�t����a�v�u����� zn�zor�uje orientovan� graf tak�jako usp� dvojici seznam� vrchol� a hran� kter� jsou tvaru a�Po��te�n�V�Koncov�V�CenaHrany�) viz obr� ��
� Takov� orientovan� graf je ulo en v programov� datab�zi jako posloupnost fakt� a jednoho pravidla!
e�g��a�b��e�g��b�c��e�g��b�d��e�g��c�d��e�X�A�B� e�X�B�A��
� ��� ��� ��� ��a
b
c
d
��
��
��
Obr�zek �! P��klad neorientovan�ho grafu
� ��� ��� ��� ��s
t
v
u
��� �
�R
����
� �
�
��
Obr�zek �! P��klad orientovan�ho grafu
�� Cesty v grafech
Zde si uvedeme nkolik algoritm� pro vyhled�v�n� cest v grafech� U ka d�ho bude uvedeno� kter� druh reprezentacegrafu pou �v��
Jako prvn� si uvedeme program� kter� najde njakou cestu v neorientovan�m grafu� Program lze spustit dotazem path�A�Z�G�P�� Program path v grafu G najde z vrcholu A do vrcholu Z cestu P� Program p�edpokl�d�� e graf Gbude reprezentov�n ve tvaru ��
�� � GRAFY
path�A�Z�Graph�Path� path��A��Z��Graph�Path��path��A��A�Path������A�Path���path��A��Y�Path���Graph�Path� adjacent�X�Y�Graph��not member�X�Path���
path��A��X�Y�Path���Graph�Path��adjacent�X�Y�graph�Nodes�Edges�� member�e�X�Y��Edges�!member�e�Y�X��Edges��
Druh� algoritmus je obdoba p�ede�l�ho� Hled�me libovolnou cestu z jednoho vrcholu do druh�ho a jej� cenu v ohod�nocen�m neorientovan�m grafu� Po adovan� reprezentace grafu plyne z tvaru predik�tu adjacent� Po �prav tohotopredik�tu lze program transformovat na libovolnou reprezentaci ohodnocen�ho $ne%orientovan�ho grafu�
path�A�Z�Graph�Path�Cost� path��A��Z����Graph�Path�Cost��path��A��A�Path���Cost��Graph��A�Path���Cost���path��A��Y�Path���Cost��Graph�Path�Cost� adjacent�X�Y�CostXY�Graph��
not member�X�Path���Cost� is Cost� CostXY�path��A��X�Y�Path���Cost��Graph�Path�Cost��
adjacent�X�Y�CostXY�Graph� member�XY�CostXY�Graph�!member�YX�CostXY�Graph��
�� Kostra grafu
Dal��m d�le it�m grafov�m algoritmem je konstrukce kostry grafu� Proto si jej zde tak� uvedeme�
stree�Graph�Tree� member�Edge�Graph��spread��Edge��Tree�Graph��spread�Tree��Tree�Graph� addedge�Tree��Tree��Graph��spread�Tree��Tree�Graph��spread�Tree�Tree�Graph� not addedge�Tree���Graph��addedge�Tree��AB�Tree��Graph� adjacent�A�B�Graph��node�A�Tree��
not node�B�Tree��adjacent�A�B�Graph� member�AB�Graph�!member�BA�Graph��node�A�Graph� adjacent�A���Graph��
�
� Prohled�v�n� stavov�ho prostoru
Prohled�v�n� stavov�ho prostoru je jednou z nejz�kladnj��ch metod Uml� inteligence� S t�mto p��stupem u jsme se��ste�n sezn�mili u probl�mu osmi dam� Tak e v�me o co jde� tedy s chut� do toho�
�� Prohled�v�n� stavov�ho stromu
Z�kladem v�ech prohled�vac�ch algoritm� je tato kostra� kter� hled� vrchol N a v p��pad �spchu vr�t� i cestu� kter�ke hledan�mu vrcholu vede�
solve�N��N�� goal�N��solve�N��N�Sol��� s�N�N���solve�N��Sol���
Predik�t goal�N� uspje� pokud N je hledan� �e�en�� Ve vt�in dal��ch program� budeme de(nici tohoto predik�tuponech�vat na kone�n�m u ivateli�
Predik�t s�m�n� uspje� pokud �m�n� je hrana stavov�ho stromu�
�� Prohled�v�n� do hloubky
Nejprve si v tomto odstavci uvedeme nejjednodu��� verzi prohled�v�n� do hloubky��
solve�Node�Solution� depth�first�search����Node�Solution��depth�first�search�Path�Node��Node�Path�� goal�Node��depth�first�search�Path�Node�Sol� s�Node�Node���
not member�Node��Path��depth�first�search��Node�Path��Node��Sol��
V��e uveden� program je korektn� jen zd�nliv� Lze jej pou �t pouze na prohled�v�n� do hloubky pouze u kone�n�chgraf�� Jednoduch�m p�id�n�m �zar� ky� v predik�tu depth�first�search jej v�ak lze transformovat na korektn�program�
Konstruujme tedy predik�t depth�first�search�� kter� pokud neuspje do ur�it� dosa en� hloubky� pak skon��ne�spchem�
depth�first�search��Node��Node���� goal�Node��depth�first�search��Node��Node�Sol��MaxDepth� MaxDepth���s�Node�Node���
Max� is MaxDepth��depth�first�search��Node��Sol�Max���
� Prohled�v�n� do ��ky
Bhem prohled�v�n� do ���ky� si mus� program uchov�vat v�echny rozpracovan� cesty z ko�ene do ka d�ho vrcholuv dan� �rovni od ko�ene�
Tedy postup p�i prohled�v�n� stromu z obr� � bude tedy vypadat takto!
�� ��a��
�� ��b�a���c�a��
� ��c�a���d�b�a���e�b�a��
�� ��d�b�a���e�b�a���f�c�a���g�c�a��
�� ��h�d�b�a���i�d�b�a���j�e�b�a������
Ne za�neme ps�t algoritmus prohled�v�n� do ���ky� zopakujme si je�t �innost vestavn�ho prologovsk�ho predik�tubagof�X�P�L�� Tento predik�t postupn vyhodnocuje P a v�echny vyhovuj�c� instance X �ad� do seznamu L�
�Obvykle je tento algoritmus uv�d�n pod n�zvem �Depth First Search��Prohled�v�n� do ��ky se obvykle nazv� �Breadth First Search�
�� �� PROHLED�V�N� STAVOV HO PROSTORU
h i j k p p pd e f g
cb
a������
HHHHj
���
��R
� JJ� � JJ�
� JJ�
Obr�zek �! Strom prohled�v�n� do ���ky
solve�Start�Solution� breadth�first�search���Start���Solution��breadth�first�search���Node�Path������Node�Path�� goal�Node��breadth�first�search���N�Path��Paths��Solution�
bagof��M�N�Path���s�N�M��not member�M��N�Path����NewPaths��not NewPaths����append�Paths�Newpaths�Path�����breadth�first�search�Path��Solution�!breadth�first�search�Paths�Solution��
append����L�L��append��X�L���L���X�L��� append�L��L��L���
Poznamenejme je�t� e oper�tor ��� m� prioritu p�ed oper�torem �!�� t� j� implicitn� z�vorkov�n� predik�tu
p a�b!c�
je
p �a�b�!c�
Predik�t append tak� jak je zde de(nov�n v�ak svoj� slo itost� zp�sobuje velkou slo itost cel�ho algoritmu� Protosi zde uvedeme �e�en�� kter� je zalo eno na rozd�lov�ch seznamech� Princip si uve me na p��kladu predik�tu concat�kter� v jednom kroku spoj� dva �etzce do jednoho!
concat�A�Z��Z�Z��A�Z���
Dotazem concat��a�b�c�T��T���d�e�T��T��List���� pak obdr �me rovnou v promnn� List hledan� seznam�
solve�Start�Solution� bfs���Start��Z�Z�Solution��bfs���Node�Path�������Node�Path�� goal�Node��bfs���N�Path��Paths�Z�Solution�
bagof��M�N�Path���s�N�M��not member�M��N�Path����New��append�New�ZZ�Z����bfs�PathsZZ�Solution�!Paths���Z�bfs�PathsZ�Solution��
Algoritmus prohled�v�n� do ���ky� jak jsme jej zde uvedli� m� velik� n�roky na pam'�� Proto si zde uve me je�tjedno �e�en� Breadth First Search� kter� pam' �et���
V p�ede�l�ch �e�en�ch jsme rozpracovan� cesty ukl�dali v seznamu v�ech rozpracovan�ch cest� T�m doch�zelok tomu� e ji ve � �rovni prohled�v�n� byl ko�en stromu ulo en v tomto seznamu �ty�ikr�t� V n�sleduj�c�m �e�en�tuto redundanci odstran�me t�m� e zavedeme pro ka d� vrchol� kter�m prohled�v�n� pro�lo� strukturu!
� bu l�N�� pokud je N v sou�asn� dob list)
� nebo t�N�Subs�� kde Subs je seznam syn� vrcholu N�
�Nebo� mus� udr�ovat v�echny rozpracovan� cesty
��� Nalezen� nejlep�� cesty ��
Tak e se n�m nap�� seznam
��d�b�a���e�b�a���f�c�a���g�c�a��
�smr�t�� do struktury
t�a��t�b��l�d��l�e����t�c��l�f��l�g�����
Z�kladem n�sleduj�c�ho programu je predik�t expand� Funkci predik�tu
expand�Path�Tree�Tree��Solved�Solution��
demonstruje obr� ���
Tree�
� uSolution
Tree��
�
� ��������R
S
Path
�������
�����
Obr�zek ��! Princip chov�n� predik�tu expand
A nyn� si uve me vlastn� program!
solve�Start�Solution� breadth�first�search�l�Start��Solution��breadth�first�search�Tree�Solution� expand����Tree�Tree��Solved�Solution��
�Solved�yes!Solved�no�breadth�first�search�Tree��Solution���expand�P�l�N����yes��N�P�� goal�N��expand�P�l�N��t�N�Subs��no��� bagof�l�M���s�N�M��not member�M�P���Subs��expand�P�t�N�Subs��t�N�Subs���Solved�Sol� expandall��N�P��Subs����Subs��Solved�Sol��expandall�������T�Ts���T�Ts��no����expandall�P��T�Ts��Ts��Subs��Solved�Sol� expand�P�T�T��Solved��Sol��
�Solved��yes�Solved�yes!Solved��no���expandall�P�Ts��T��Ts���Subs��Solved�Sol��!expandall�P�Ts�Ts��Subs��Solved�Sol��
� Nalezen� nejlep � cesty
V tomto odstavci se budeme zab�vat probl�mem nalezen� nejlep�� cesty� ve stromu vzhledem k njak�mu ohodnocen�hran c tohoto stromu� Tento algoritmus� jak uvid�me d�le� bude pro n�s z�kladem pro tzv� prohled�v�n� stavovhoprostoru�
Pro rozpracovan� cesty� resp� pro nav�t�ven� uzly� budeme uchov�vat cenu� kterou jsme museli zaplatit� ne jsmedo nj do�li � g� D�le u ka d�ho uzlu budeme uchov�vat odhad ceny� kterou zaplat�me p�i p�echodu do n�sleduj�c�houzlu � h� V dal��m postupu se pak budeme v uzlu n rozhodovat podle nejmen��ho f�n� � g�n� � h�n��
�� Budeme uchov�vat strukturu l�N�F�G� pro uzel n� kter� je moment�ln list a kde G&g�n� a F&f�n��
�� Budeme uchov�vat strukturu t�N�F�G�Subs� pro uzel n� kter� je vnit�n�m uzlem stromu prohled�v�n�� Subsjsou $nepr�zdn�% podstromy� uspo��d�ny podle f �hodnot� G m� t� v�znam jako v p�edchoz�m bod a F je�inovovan�� f �hodnota uzlu n� t�j� f �hodnota nejnadjnj��ho� n�sledn�ka uzlu n�
�Nalezen� nejlep�� cesty je obvykle ozna nov�no jako Best Search�Exaktn� e eno� je�li T strom s koenem n� jeho� n�sledn�ky jsou m��m�� � � � � pak f�T � � mini�f�mi���
�� �� PROHLED�V�N� STAVOV HO PROSTORU
A nyn� vlastn� program!
bestsearch�Start�Solution� biggest�Big�� expand����l�Start������Big���yes�Solution��expand�P�l�N��������yes��N�P�� goal�N��expand�P�l�N�F�G��Bound�Tree��Solved�Sol� F��Bound�
�bagof�M�C��s�N�M�C��not member�M�P���Succ����succlist�G�Succ�Ts��bestf�Ts�F���expand�P�t�N�F��G�Ts��Bound�Tree��Solved�Sol�!Solved�never��
expand�P�t�N�F�G��T�Ts���Bound�Tree��Solved�Sol� F��Bound� bestf�Ts�BF��min�Bound�BF�Bound���expand��N�P��T�Bound��T��Solved��Sol��continue�P�t�N�F�G��T��Ts���Bound�Tree��Solved��Solved�Sol��
expand���t�������������never��� ��expand���Tree�Bound�Tree�no��� f�Tree�F�� F�Bound�continue���������yes�yes�Sol��continue�P�t�N�F�G��T��Ts���Bound�Tree��Solved��Solved�Sol�
�Solved�no�insert�T��Ts�NTs�!Solved�never�NTs�Ts��bestf�NTs�F���expand�P�t�N�F��G�NTs��Bound�Tree��Solved�Sol��
succlist����������succlist�G���N�C�NCs��Ts� G is G� C�h�N�H��F is G H�succlist�G��NCs�Ts���
insert�l�N�F�G��Ts��Ts��insert�T�Ts��T�Ts�� f�T�F��bestf�Ts�F���F��F����insert�T��T��Ts���T��Ts��� insert�T�Ts�Ts���f�l���F����F��f�t���F������F��bestf��T����F� f�T�F��bestf����Big� biggest�Big��min�X�Y�X� X��Y���min�X�Y�Y��
Predik�t biggest�Big� nainstanciuje promnnou Big na hodnotu p�edpokl�dan� horn� z�vory pro cenu nejlep��cesty�
Pro zjednodu�en� �etby algoritmu je�t uve me v�znam jednotliv�ch parametr� predik�tu expand�
� P * cesta mezi ko�enem a T
� T * prohled�van� podstrom
� B * f �limita $hranice% pro expandov�n� T
� T� * T expandovan� v z�vislosti na B $t�j� prvn�� kde f �hodnota �p�elezla� B%
� Solved * yes� no� never
� Solution* cesta z ko�ene do c�lov�ho uzlu
Poznamenejme je�t� e predik�t
� s�N�M�C� ud�v� cenu c� j� je ohodnocena hrana �n�m��
� h�N�H� je tzv� heuristick� odhad cesty�
�� Rozvrh pr�ce procesor�
Nyn� si zde uvedeme praktick� p��klad prohled�v�n� stavov�ho prostoru� Mjme �lohy t������ t�� jejich pot�ebn��as na zpracov�n� a precedenci �loh ukazuje obr� ���
Na��m �kolem je rozvrhnout zpracov�n� tchto �loh na t�ech procesorech� tak aby nebyla poru�ena precedence �loha p�i tom pot�ebn� celkov� �as byl minim�ln�� Dv mo n� �e�en� ukazuje obr� ���
Pov�imnme si� e pro n�s m� e nkdy b�t v�hodn�� kdy jeden $nebo v�ce% procesor$�% chv�li po�k� $idle%�Nyn� si tedy formalizujme a implementujme stavy a p�echody mezi tmito stavy!
��� Rozvrh pr�ce procesor� ��
t���� t����t����t����
t��� t��� t���
Q
QQQ
QQQQ
Obr�zek ��! Precedence �loh
�
�
�
t�
t� idle
� � � � ��
t�
t� t�
t�
t�
�
�
�
t�
t�
t�
t�
t�
t�
t�
� � � � ��
Obr�zek ��! Rozvr en� pr�ce procesor�
neza"azen#�$lohy%za"azen#�$lohy%�as�ukon�en�
nap��
�Task��D��Task��D������%�Task��F��Task��F������%FinTime
kde D�� D����� jsou doby� pot�ebn� ke zpracov�n� p��slu�n� neza�azen� �lohy� a F�� F����� �asy ukon�en� za�azen�chproces��
P�echody mezi stavy si de(nujme takto!
s�Tasks�%���F�Active�%Fin��Tasks�%Active�%Fin��Cost� del�Task�D�Tasks��Tasks���not �member�T���Tasks���before�T�Task���not �member�T��F��Active���F�F��before�T��Task���Time is F D� insert�Task�Time�Active��Active��Fin��Fin���Cost is Fin�Fin��
s�Tasks%���F�Active��%Fin�Tasks%Active�%Fin��� insertidle�F�Active��Active���before�T��T�� prec�T��T���before�T��T�� prec�T�T���before�T��T��insert�S�A��T�B�L���S�A�T�B�L��F�F� A��B���insert�S�A��T�B�L���T�B�L���F��F�� insert�S�A�L�L��F��F���insert�S�A�����S�A����A��insertidle�A��T�B�L���idle�B�T�B�L�� A�B���insertidle�A��T�B�L���T�B�L��� insertidle�A�L�L���del�A��A�L��L��del�A��B�L���B�L��� del�A�L�L���goal���%�%���
Na tuto speci(kaci p�echod� mezi stavy lze pak pou �t algoritmus nalezen� nejlep�� cesty �Best Search�� Stav�z nj budeme startovat prohled�v�n�� bude vypadat takto!
�� �� PROHLED�V�N� STAVOV HO PROSTORU
start��t����t����t����t�����t�����t�����t�����%�idle���idle���idle���%���
Nyn� si je�t uve me heuristiku� kter� n�s v tomto �e�en� �povede� spr�vn�m smrem� Uva me� e optim�ln�$nedosa iteln�% �as je!
Final �
Pi�Di� �
Pj�Fj�
m
kde m je po�et procesor�� D�le skute�n� �as v�po�tu v�ech �loh je!
Fin � maxj
�Fj�
Potom na�e heuristick� funkce h bude vypadat takto!
H �
�Finall� Fin� F inall � F in
� F inal � Fin
P��slu�n� predik�t h� kter� bude tuto heuristickou funcki po��tat� bude vypadat takto!
h�Tasks%Processors%Fin�H� totaltime�Tasks�TotTime��sumnum�Processors�Ftime�N��Finall is �TotTime Ftime��N��Finall�Fin���H is FinallFin!H����
totaltime�������totaltime����D�Tasks��T� totaltime�Tasks�T���T is T� D�sumnum���������sumnum����T�Procs��FT�N� sumnum�Procs�FT��N���N is N� ��FT is FT� T�prec�t��t���prec�t��t������
�� Pucl��ek
�Pucl��ek� je hra� podobn� �Patn�ctce��� Je jednodu��� v tom smyslu� e se nehraje s patn�cti kameny na plo�e �� ��ale s osmi kameny na plo�e �� � pol�� C�lem hry je posunovat kameny tak� a se dojde do situace� kter� je na obr� ��
� �
�
�
� � �
�
���
�
Obr�zek �! C�lov� situace hry Pucl��ek
My budeme k+dovat kon(gurace Pucl��ka do seznamu uspo��dan�ch dvojic X�Y� kde X je ��slo sloupce a Y ��slo��dku� Na prvn�m m�st seznamu bude poloha �d�ry� $t�j� neobsazen�ho pole% a pak postupn kamene �� �� kamene ����� � � � kamene �� �� C�lov� situace na hern� plo�e tedy pro n�s bude!
goal����������������������������������������
Nyn� si uve me predik�t� kter� $stejn jako v p�edchoz�m odstavci% de(nuje p�echody ze stavu do stavu!
s��Empty�L���T�L����� swap�Empty�T�L�L���swap�E�T��T�L���E�L�� d�E�T����swap�E�T��T��L���T��L��� swap�E�T�L�L���d�X�Y�X��Y��D� dif�X�X��Dx��dif�Y�Y��Dy��D is Dx Dy�dif�A�B�D� D is AB�D�����!D is BA�
�N�zev �Pucl� ek� si vymyslel pro tuto hru autor t�chto z�pisk�� Vych�z� z anglick�ho pojmenov�n� hry v patn�ct �Puzzle��
��� AND�OR stromy ��
Abychom mohli opt vyu �t algoritmu �Best Search�� mus�me je�t nade(novat predik�t h� kter� bude ur�ovatheuristickou funkci� Pro tento p��klad je vhodn� hodnota heuristick� funkce ve stavu hry jako sou�et sumy vzd�lenost�v�ech kamen� od spr�vn� pozice a trojn�sobku �pokut�� Tedy!
H � �� ��
kde � je sou�et pokut� Pokuty se rozd�vaj� za!
� pozici uprost�ed � trestn� bod�
� poru�en� po�ad� � trestn� body�
� �
�
�
� � �
�
���
�
� � ����
Obr�zek ��! Pokuty ve h�e Pucl��ek
V p��kladu na obr� �� je � � �
h��Empty�L��H� goal��Empty��G���totdist�L�G�D��seq�L�S��H is D �%S�totdist����������totdist��T�L���T��L���D� d�T�T��D���totdist�L�L��D���D is D� D��seq��First�L��S� seq��First�L��First�S��seq��T��T��L��First�S� score�T��T��S���seq��T��L��First�S���S is S� S��seq��Last��First�S� score�Last�First�S��score��������� ��score����������� ��score����������� �����score����������� ��score��������
Na z�vr tohoto odstavce je�t p��klad� Algoritmus Best Search dovede s v��e uveden�mi predik�ty s a h situaciz obr� �� do v�tzn�ho konce v pti taz�ch� Ov�en� nech�v�me na laskav�m �ten��i�
� �
�
�
� � �
� � �
� �
Obr�zek ��! Tuto situaci Best Search zvl�dne v pti taz�ch
�� AND�OR stromy
Ne si za�neme pov�dat o AND�OR stromech� uve me se do problematiky pomoc� notoricky zn�m�ho p��kladu s Ha�noisk�mi v emi�
�� �� PROHLED�V�N� STAVOV HO PROSTORU
� � � Hanoisk� v�e
Ka d� v�� co jsou to �Hanoisk� v e��� Zkusme se tedy na tento probl�m pod�vat analyticky�M�me t�i ty�e! A� B a C� Na ty�i A je $uspo��dan podle velikosti% nasunuto n kotou��� M�me za �kol je p�eskl�dat
z ty�e A pomoc� ty�e C na ty� B $stru�n zaps�no n�A�B�C�% bez poru�en� uspo��d�n� na jednotliv�ch ty��ch� Tentoprobl�m se v�ak d� rozlo it na tyto f�ze!
�� p�eskl�dat n� � kotou�� z ty�e A pomoc� ty�e B na ty� C�
�� p�elo it � kotou� z ty�e A na ty� B�
� p�eskl�dat n� � kotou�� z ty�e C pomoc� ty�e A na ty� B�
Kdy si to stru�n zap��eme� dostaneme rekurentn� vzorec� kter� probl�m p�eskl�d�n� n kotou�� p�evede na postupnp�eskl�d�n� n�� kotou��� p�elo en� jednoho kotou�e $co je v tomto p��pad pro n�s element�rn� probl�m% a p�eskl�d�n�n� � kotou���
Kdy si zakresl�me toto sch�ma $obr� ��%� dostaneme kone�n� strom� kter� m� v listech pouze element�r� probl�mya kter� pak projdeme postupn z leva do prava a t�m z�sk�me �e�en� cel�ho probl�mu s n kotou�i�
n��A�B�C�
��A�C�B�
n��C�B�A�
n��A�C�B������HHHHj� n��C�A�B� n��A�B�C�
��C�B�A�
n��C�B�A������HHHHj�
��A�B�C�
n�A�B�C�
���������XXXXXXXz
eee
Obr�zek ��! AND�OR strom hanoisk�ch v �
Nyn� si tedy hanoisk� v e naprogramujme v��e uveden�m zp�sobem� Poznamenejme je�t� e oper�tor to simus�me nade(novat�
hanoi���A�B�C��A to B���hanoi�N�A�B�C�Moves� N���N� is N��lemma�hanoi�N��A�C�B�Ms����
hanoi�N��C�B�A�Ms���append�Ms���A to B�Ms���Moves��lemma�P� P�asserta��P ����
� � � Cesta mezi msty
Nyn� si $opt na p��kladu% demonstrujme� co je to AND�OR strom� Mjme takov� probl�m� Na obr� �� je mapka� kter�n�m ur�uje� mezi kter�mi msty existuj� silnice� Msta a����� e jsou v ,ech�ch� msta u����� z jsou na Morav amsta k a l jsou hrani�n� p�echody� M�me za �kol naj�t co nejkrat�� cestu z msta a do msta z�
Uvdomme si� e p�i �e�en� tohoto probl�mu mus�me vz�t v potaz kl��ov� postaven� hrani�n�ch p�echod� k a l� Tozna��� e na�e �loha se t�m rozpadne na nalezen� cesty z a do nkter�ho hrani�n�ho p�echodu a z tohoto hrani�n�hop�echodu do z� AND�OR strom tohoto probl�mu je zobrazen na obr� ��� �e�en�m tohoto probl�mu je podstrom tohotoAND�OR stromu� kter� nevynech�v� �dn�ho n�sledn�ka AND�uzlu�
Prvn� �e�en�� kter� je nab�ledni� je �e�en� pomoc� prologovsk�ch prost�edk�� Pokud reprezentujeme ka d� OR�uzelv s n�sledn�ky u��u������uN pravidly!
v u��v u�����v uN�
a ka d� AND�uzel x s n�sledn�ky y��y������yM pravidlem!
�A kdo to nev�� a� tam b���
��� AND�OR stromy ��
uupuu
����
��
u���u������uu
�����
�����
�������
���
��u
u u����
��
uab c
d e
kl
u v
x z
y
hranice
Obr�zek ��! Mapa mst
a�k f�z a�l l�z
via k via l
a�z�������
PPPPPPq
QQQs
QQQs
eeOR�uzel
AND�uzly
Obr�zek ��! P��klad AND�OR stromu
�� �� PROHLED�V�N� STAVOV HO PROSTORU
x y��y������yM�
a pokud uzel root je ko�enem tohoto AND�OR stromu� pak dotazem!
root�
z�sk�me odpov na ot�zku� zda existuje �e�en��N�sleduj�c� zdrojov� text reprezentuje AND�OR strom z obr� ��� Poznamenejme je�t� e tu�n jsou na tomto
obr�zku ozna�eny c�lov� uzly a ostatn� uzly jsou zna�eny strojopisem�
d e f g
b c
a
h i
�������XXXXXXz
����HHHj
����HHHj
����HHHj
HHHj
e ee
Obr�zek ��! Trivi�ln� prohled�v�n� AND�OR stromu�
a b�a c�b d�e�e h�c f�g�f h�i�d�g�h�
Dotazem a� z�sk�me odpov yes� ale �e�en�� jako je zobrazeno na obr� �� v ��rkovan�m r�me�ku n�m stejnned��
� � � AND�OR strom
Ve v��e uveden�ch odstavc�ch jsme si uvedli p��klady AND�OR strom�� Lidsky �e�eno je AND�OR strom tedy strom�jeho ka d� vnit�n� uzel m� atribut� jeho hodnoty jsou AND a OR� P�i prohled�v�n� AND�OR stromu se OR�uzlychovaj� stejn jako u strom�� ale je nutn� p�i nm proj�t podstromy v�ech n�sledn�k� v�ech AND�uzl��
Abychom si l�pe mohli AND�OR stromy reprezentovat� zavedeme si tuto relaci!
a &� or�b�c��b &� and�d�e��
co zna��� e z uzlu a vedou dv hrany do uzl� b�c� p�i�em uzel a je OR�uzel� Podobn z b vedou dv hrany do uzl�d�e� p�i�em uzel b je AND�uzel�
Zavedeme tedy oper�tory!
op�����xfx�&��� op�����xfx���
N�� AND�OR strom z obr� �� bude tedy vypadat takto!
��� AND�OR prohled�v�n� do hloubky �
a &� or�b�c��b &� and�d�e��c &� and�f�g��e &� or�h��f &� or�h�i��goal�d��goal�g��goal�h��
� � � Pozn�mka o priorit�ch oper�tor�
Predik�tem op m� eme de(novat oper�tory� Prvn� parametr op hl�s� prioritu oper�toru� t�et� parametr jeho identi(�k�tor� Druh� parametr ud�v� typ oper�toru podle tabulky ��
Poloha oper�toru Mo�nosti de�nicein(x xfx xfy yfxpre(x fx fypost(x xf yf
Tabulka �! P�ehled typ� oper�tor� v Prologu
V�raz Prolog vyhodnocuje takto! je�li argument v z�vork�ch nebo nestrukturovan�� pak m� precedenci rovnu�� Je�li argument struktura� pak m� precedenci rovnu precedenci oper�toru� P�itom x reprezentuje argument� jeho precedence je men�� $�%� ne precedence oper�toru a y reprezentuje argument� jeho precedence je men�� nebo rovna$�% precedenci oper�toru�
Uve me si to na p��kladu� Nech' m�me oper�tor poml�ka $% s precedenc� ��� a typu yfx� Pak v�raz abc�v nm se nejprve vyhodnot� ab typu yfx vyhovuje� kde to vyhodnocuje�li se nejprve bc� tomuto typu nevyhovuje�
Dodejme je�t na tomto m�st� e prologovsk� oper�tor pravidla je de(nov�n s nejvy��� mo nou prioritou� a totakto! op������xfx�''��
�� AND�OR prohled�v�n� do hloubky
Jeliko v�me� co je AND�OR strom� a v�me� co je prohled�v�n� do hloubky� m� eme rovnou ps�t algoritmus prohle�d�v�n� do hloubky pro AND�OR stromy�
solve�Node�Node� goal�Node��solve�Node�Node &� Tree� Node &� orNodes�member�Node��Nodes��
solve�Node��Tree��solve�Node�Node &� andTrees� Node &� andNodes�solveall�Nodes�Trees��solveall��������solveall��Node�Nodes���Tree�Trees�� solve�Node�Tree��solveall�Nodes�Trees��
� � � AND�OR prohled�v�n� do hloubky s ocenn�m
Prohled�v�n� do hloubky s ocenn�m si vy �d� tuto zmnu v reprezentace AND�OR strom�!
Uzel &� AndOr�Syn��Cena��Syn��Cena������SynN�CenaN��
Mimoto si pro ka d� uzel N de(nujeme hodnotu H�N� � odhad obt� nosti stromu �e�en�!
� H�N� � h�N� pro uzel N moment�ln listov�)
� H�N� � pro element�rn� probl�m)
� H�N� � mini �cost�N�Ni� �H�Ni�� pro OR�uzel N s n�sledn�ky N�� N�� � � � )
�� �� PROHLED�V�N� STAVOV HO PROSTORU
� H�N� �P
i �cost�N�Ni� �H�Ni�� pro AND�uzel N s n�sledn�ky N�� N�� � � � )
D�le si nade(nujeme pro ka d� uzel N hodnotu F �N�!
� F �N� � h�N� pro uzel N moment�ln listov�)
� F �N� � pro element�rn� probl�m)
� F �N� � cost�M�N� �mini �F �Ni�� pro OR�uzel N s n�sledn�ky N�� N�� � � � a bezprost�edn�m p�edch�dcem M )
� F �N� � cost�M�N��P
i �F �Ni�� pro AND�uzel N s n�sledn�ky N�� N�� � � � a bezprost�edn�m p�edch�dcemM )
H a F jsou v podstat tyt� heuristick� funkce� ale F bude pro n�s v�hodnj���
� � � Demonstrace AND�OR prohled�v�n� s ocenn�m
Zde si demonstrujeme na nkolika obr�zc�ch postup AND�OR prohled�v�n� do hloubky� Budeme si jej demonstrovatna AND�OR stromu z obr� ���
Poznamenejme je�t� e ��slice ����� � � uv�dn� u jednotliv�ch hran reprezentuj� cenu hrany a ��slice ��������pod jednotliv�mi uzly p�edstavuj� moment�ln� F�hodnoty uzl��
d e f g
b c
a
h i
�������XXXXXXz
����HHHj
����HHHj
����HHHj
HHHj
e ee
�
� � � �
� �
Obr�zek ��! Demonstrace AND�OR prohled�v�n�
Expandovat strom z obr�zku �� za��n�me z ko�ene a a v�sledek expandov�n� je na obr� ��� Rozhodnut�� kter�z uzl� b� c budeme d�le expandovat� se uskute�n� podle minim�ln� aktu�ln� F�hodnoty� Jeliko F�b� � F�c�� budemed�le expandovat uzel b� V�sledek expandov�n� je na obr� ���
b c
a�������XXXXXXz
�
Obr�zek ��! F�b��� � F�c���
Na tomto obr�zku si v�imnme� jak se spo��t� F�b�� je�li b AND�uzel� Jeliko v F�hodnot�ch uzl� b a c nastalanyn� rovnost� m� eme pokra�ovat v expandov�n� uzlu e� jak ukazuje obr� ��
Zde v�ak ji F�hodnota uzlu b p�ev��ila F�hodnotu uzlu c� tak e za�neme expandovat uzel c� proto e se �tv����jako nadjnj���
V�sledn� prohledan� AND�OR strom ukazuje obr� ��� Kone�n� F�hodnota ko�ene a je tak� v�sledn� cena nejlep��ho�e�en� AND�OR stromu�
��� AND�OR prohled�v�n� do hloubky ��
d e
b c
a�������XXXXXXz
����HHHje
�
� ��
Obr�zek ��! F�b� � � � F�c�
d e
b c
a
h
�������XXXXXXz
����HHHj
HHHj
e�
� �
�
�
�
Obr�zek �! F�b��� � ��F�c�
d e f g
b c
a
h i
�������XXXXXXz
����HHHj
����HHHj
����HHHj
HHHj
e ee
�
� � � �
� � �
��
�
�
Obr�zek ��! AND�OR strom po AND�OR prohled�v�n�
�����CN
Obr�zek ��! P��klad listu AND�OR stromu
�� �� PROHLED�V�N� STAVOV HO PROSTORU
� � � Datov� reprezentace AND�OR stromu
V n�sleduj�c�m si �ekneme� jak budou vypadat data pro AND�OR prohled�v�n� do hloubky� N budeme zna�it identi�(k�tor uzlu� C bude cena hrany do uzlu N� F bude p��slu�n� heuristick� F�hodnota tohoto uzlu�
List AND�OR stromu $obr� ��% bude reprezentovat struktura leaf�N�F�C�� P��slu�n� hodnota F � C h�N��
OR�uzel AND�OR stromu $obr� ��% bude reprezentovat struktura tree�N�F�C�or�T��T��T�������� P��slu�n� hod�nota F � C mini Fi�
�
��
����
ZZZZZ�
�C
N
T� T� T� � � �F� F� F�
���� ���� ����
Obr�zek ��! P��klad OR�uzlu AND�OR stromu
AND�uzel AND�OR stromu $obr� ��% bude reprezentovat struktura tree�N�F�C�and�T��T��T�������� P��slu�n�hodnota F � C
Pi Fi�
�
��
����
ZZZZZ�
�C
N
T� T� T� � � �F� F� F�
e���� ���� ����
Obr�zek ��! P��klad AND�uzlu AND�OR stromu
Roz�e�en� list AND�OR stromu $obr� ��% bude reprezentovat struktura solvedleaf�N�F� a p��slu�n� hodnotaheuristick� funkce F � C�
�����CN
Obr�zek ��! P��klad roz�e�en�ho listu AND�OR stromu
Roz�e�en� OR�uzel AND�OR stromu $obr� ��% bude reprezentovat struktura solvedtree�N�F�T�� kde p��slu�n�hodnota F � C F��
��� AND�OR prohled�v�n� do hloubky ��
�
�C
N
TF�
����
Obr�zek ��! P��klad roz�e�en�ho OR�uzlu AND�OR stromu
Roz�e�en� AND�uzel AND�OR stromu $obr� �% bude reprezentov�n� jak ji piln� �ten�� tu��� strukturou tohototvaru! solvedtree�N�F�and�T��T������� a jeho p��slu�n� hodnota F � C
Pi Fi�
�
��
����
ZZZZZ�
�C
N
T� T� T� � � �F� F� F�
e���� ��������
Obr�zek �! P��klad roz�e�en�ho AND�uzlu AND�OR stromu
� � � Vlastn� program
Program p�edpokl�d� existenci oper�tor�!
op�����xfx��� op�����xfx�&���
andor�Node�Solution�Tree� expand�leaf�Node�����������SolutionTree�yes��
((((((((( expand�Tree�Bound�NewTree�Solved�� (((((((((((((((((expand�Tree�Bound�Tree�no� f�Tree�F��F�Bound���expand�leaf�Node�F�C����solvedleaf�Node�F��yes� goal�Node����expand�leaf�Node�F�C��Bound�NewTree�Solved� expandnode�Node�C�Tree�����
expand�Tree��Bound�NewTree�Solved�!Solved�never���expand�tree�Node�F�C�SubTrees��Bound�NewTree�Solved� Bound� is BoundC�
expandlist�SubTrees�Bound��NewSubs�Solved���continue�Solved��Node�C�NewSubs�Bound�NewTree�Solved��
expandlist�Trees�Bound�NewTrees�Solved� selecttree�Trees�Tree�OtherTrees�Bound�Bound���expand�Tree�Bound��NewTree�Solved���combine�OtherTrees�NewTree�Solved��NewTrees�Solved��
continue�yes�Node�C�SubTrees���solvedtree�Node�F�SubTrees��yes� backup�SubTrees�H�� F is C H���
continue�never�����������never� ��continue�no�Node�C�SubTrees�Bound�NewTree�Solved� backup�SubTrees�H��
�� �� PROHLED�V�N� STAVOV HO PROSTORU
F is C H���expand�tree�Node�F�C�SubTrees��Bound�NewTree�Solved��combine�or��Tree�yes�Tree�yes� ��combine�orTrees�Tree�no�orNewTrees�no� insert�Tree�Trees�NewTrees����combine�or�����never���never� ��combine�orTrees���never�Trees�no� ��combine�andTrees�Tree�yes�and�Tree�Trees��yes� allsolved�Trees����combine�and����never���never� ��combine�andTrees�Tree�YesNo�andNewTrees�no� insert�Tree�Trees�NewTrees����expandnode�Node�C�tree�Node�F�C�OpSubTrees�� Node &� OpSuccessors�
evaluate�Successors�SubTrees��backup�OpSubTrees�H��F is C H�evaluate��������evaluate��Node�C�NodesCosts��Trees� h�Node�H��F is C H�evaluate�NodesCosts�Tree���
insert�leaf�Node�F�C��Tree��Trees��allsolved�����allsolved��Tree�Trees�� solved�Tree��allsolved�Trees��solved�solvedtree���������solved�solvedleaf�������f�Tree�F� arg���Tree�F����insert�T�����T�� ��insert�T��T��Ts���T�T��Ts�� solved�T�����insert�T��T��Ts���T��Ts��� solved�T��insert�T�Ts�Ts�����insert�T��T��Ts���T�T��Ts�� f�T�F��f�T��F���F��F����insert�T��T��Ts���T��Ts��� insert�T�Ts�Ts���backup�or�Tree����F� f�Tree�F����backup�and����� ��backup�and�Tree��Trees��F� f�Tree��F���backup�andTrees�F���F is F� F����backup�Tree�F� f�Tree�F��selecttree�Op�Tree��Tree�Op���Bound�Bound� ��selecttree�Op�Tree�Trees��Tree�OpTrees�Bound�Bound�� backup�OpTrees�F��
�Op�or���min�Bound�F�Bound��!Op�and�Bound� is Bound F��min�A�B�A� A�B���min�A�B�B��
� � Hled�n� cesty mezi msty
Vra'me se je�t k p��kladu uv�dn�mu v odstavci ����� Reprezentace takov� mapy by mohla vypadat tak� e ka douspojnici dvou mst by reprezentoval predik�t s�City��City��� Kl��ov� postaven� msta $nap�� postaven� hrani�n�hop�echodu z odstavce ����% by reprezentoval predik�t key�City�City��City��� jeho s�matika by mla tento v�znam!
Msto City� m� kl��ov� postaven� mezi msty City� a City��
Vlastn� vyhled�v�n� by pak vypadalo takto!
�� Jsou�li Y�� Y����� kl��ov� body mezi msty A a Z� pak hledej jednu z cest!
� cestu z A do Z p�es Y�
� cestu z A do Z p�es Y�
� � � �
�� Nen��li mezi msty A a Z kl��ov� msto� pak hledej souseda Y msta A takov�ho� e existuje cesta z Y do Z�
Te si uk� eme� jak budeme konstruovat p��slu�n� AND�OR strom� Budeme pot�ebovat oper�tory �� a �via�!
XZXZ via Y op�����xfx�via��
Nebo� ka�d� z nich le�� na jin� stran� hranice�
��� Algoritmy soupe��c�ho prohled�v�n� ��
AND�OR strom� kter� bude reprezentovat tento probl�m� bude vypadat takto!
XZ &� orProblemlist bagof��XZ via Y����key�XZ�Y��Problemlist����XZ &� orProblemlist bagof��YZ��D�s�X�Y�D��Problemlist��XZ &� and��XY�����YZ�����goal�XX���% h�Node�H�� ��� heuristick� funkce %�
Plat�� e kdy
�n h�n� � h��n�
kde h� je heuristika� kter� ur�� minim�ln� cenu �e�en� uzlu n� pak najdeme v dy nejlep�� �e�en��
�� Algoritmy soupe��c�ho prohled�v�n�
� � � Minimax
Typickou �lohou prohled�v�n� stavov�ho prostoru se soupe��c� strategi� je hled�n� nejlep��ho mo n�ho tahu v �achu� tzv�Minimax�� Ka d� tah je ohodnocen� njakou heuristickou funkc�� p�i�em tento algoritmus vyhled�v� �optim�ln��tah� V z�vislosti na tom� zda �jsem na tahu j�� resp� zda �je na tahu soupe��� vyb�r� algoritmus tah ohodnocen�maxim�ln� resp� minim�ln� hodnotou heuristick� funkce�
N�sleduj�c� predik�t minmax bude prov�dt prohled�v�n� pr�v popsan�m zp�sobem� Nebudeme zde de(novatpredik�t moves�Pos�PosList�� kter� pro vstupn� parametr Pos vr�t� seznam mo n�ch poz�c�� do nich se lze dostatz pozice Pos jedn�m tahem� Predik�t staticval�Pos�Val� vr�t� �statickou� hodnotu pozice� z n� ji neexistuje mo n�tah� nebo z n� ji nebudeme dal�� tahy prom��let��� D�le budeme de(novat predik�t min�to�move�Pos�� kter� uspje�pokud �je na tahu soupe��� a max�to�move�Pos�� kter� uspje� pokud �jsem na tahu j���
minmax�Pos�BestSucc�Val� moves�Pos�PosList����best�PosList�BestSucc�Val�!staticval�Pos�Val��
best��Pos��Pos�Val� minmax�Pos���Val����best��Pos��PosList��BestPos�BestVal� minmax�Pos����Val���
best�PosList�Pos��Val���betterof�Pos��Val��Pos��Val��BestPos�BestVal��betterof�Pos��Val��Pos��Val��Pos��Val�� min�to�move�Pos���Val��Val���!
max�to�move�Pos���Val��Val����betterof�Pos��Val��Pos��Val��Pos��Val���
Poznamenejme na z�vr� e minmax�Pos�BestSucc�Val� vezme pozici Pos a vr�t� nejlep�� mo n� tah BestSucc�jeho heuristick� hodnota je Val�
� � � Alfa�Beta procedura
P�i prov�dn� predik�tu minmax se hodnota heuristick� funkce pohybuje v njak�m intervalu h�� �i� Z toho plyne� ev pr�bhu prov�dn� algoritmu m� eme �od��znout� podstromy� v nich heuristick� funkce �p�eleze� � nebo �podleze���
Nyn� tedy budeme po��tat �zptnou vazbu� V�P�� kde P je to� co vr�t� predik�t minmax� Tuto zptnou vazbubudeme �za�ez�vat� podle n�sleduj�c� tabulky!
V�P�Alpha�Beta� � Alpha if V�P� � AlphaV�P�Alpha�Beta� � V�P� if Alpha � V�P� � BetaV�P�Alpha�Beta� � Beta if V�P� � Beta
Kdy bychom po��tali V�P����� dostaneme p�esn V�P��
�Zde se samozejm� nebude jednat o zn�m has�c� p�stroj� ale o algoritmus� kter pracuje na z�klad� minim�ln� resp� maxim�ln� hodnotyheuristick� funkce� Spr�vn� by tedy m�l bt pojmenov�n �Minmax�� ale �Minimax� m� v sob� v�ce ���vy�
��Predik�t staticval slou�� jinmi slovy k tomu� aby byl spln�n po�adavek kone nosti prohled�vac�ho stromu�
� �� PROHLED�V�N� STAVOV HO PROSTORU
alphabeta�Pos�Alpha�Beta�GoodPos�Val� moves�Pos�PosList����boundedbest�PosList�Alpha�Beta�GoodPos�Val�!staticval�Pos�Val��
boundedbest��Pos�PosList��Alpha�Beta�GoodPos�GoodVal� alphabeta�Pos�Alpha�Beta���Val��goodenough�PosList�Alpha�Beta�Pos�Val�GoodPos�GoodVal��
goodenough��������Pos�Val�Pos�Val� ��goodenough���Alpha�Beta�Pos�Val�Pos�Val� min�to�move�Pos��Val � Beta��!
max�to�move�Pos��Val � Alpha���goodenough�PosList�Alpha�Beta�Pos�Val�GoodPos�GoodVal�
newbounds�Alpha�Beta�Pos�Val�NewAlpha�NewBeta��boundedbest�PosList�NewAlpha�NewBeta�Pos��Val���betterof�Pos�Val�Pos��Val��GoodPos�GoodVal��
newbounds�Alpha�Beta�Pos�Val�Val�Beta� min�to�move�Pos��Val � Alpha���newbounds�Alpha�Beta�Pos�Val�Alpha�Val� max�to�move�Pos��Val � Beta���newbounds�Alpha�Beta�����Alpha�Beta��betterof�Pos�Val�Pos��Val��Pos�Val� min�to�move�Pos��Val � Val���!
max�to�move�Pos��Val � Val����betterof�Pos�Val�Pos��Val��Pos��Val���
Obr�zek � ukazuje p��klad stromu� kter� zpracuje predik�t minmax� V ��rkovan�ch r�me�c�ch jsou podstromy� kter��za��zne� predik�t alphabeta� nebo' na jejich heuristick�ch hodnot�ch v�bec nez�le �� Proto je alfa�beta proceduraefektivnj�� variantou �minimaxu��
� ��
� j�
� �
� j jj���XXz���XXz���XXz���XXz
� �
�
����HHHHj
����HHHHj
�������XXXXXXz
MAX
MIN
MAX
MIN
Obr�zek �! Za��znut� Alfa�Beta procedurou
�
� Expertn� syst�my
�� Pattern�directed programming
Motivuj�c� obr�zek k tzv� pattern�directed programov�n� ukazuje obr� �� Mno inu tzv� modul� obklopuje tzv� sv�tdat $dataworld%� Tyto moduly maj� schopnost � v p��pad jejich aktivace � zas�hnout a zmnit dataworld $prov�stoperaci nad daty%� Zp�sob uplatnn� jednotliv�ch modul� ukazuje obr� �
M�
M�
�
�
�
�
�
�
Moduly
DataWorld
Obr�zek �! Motivace k pattern�directed programming
Pattern Matching vybere z mno iny modul� )M��M������MN* ty moduly� kter� vyhovuj� ur�it�mu �vzoru�� t�j�kter� lze uplatnit vzhledem k aktu�ln�mu stavu dat� Pattern Matching nemus� vybrat pouze jeden uplatnn� schopn�modul) m� e vybrat nkolik� ba dokonce v�echny moduly�
Con�ict Resolution je prost�edek� kter� ze vhodn�ch modul� vybere pr�v jeden $nejl�pe ten nejv�hodnj��%�kter� je nakonec uplatnn a provede svoji Action nad daty�
Action on the DataWorld
Con�ict Resolution
Pattern Matching
M� M� MN��� Moduly
� � �
�
�� � �
Obr�zek ! Diagram uplat�ov�n� modul�
Jednotliv� moduly budeme zapisovat!
ConditionPart &� ActionPart�Condition��Condition������ &� �Action��Action������
K tomu si mus�me de(novat oper�tor &�!
op�����xfx�&���
� �� EXPERTN� SYST MY
Algoritmus� kter� bude realizovat p��stup pattern�directed programming� je n�sleduj�c�!
run Condition &� Action�test�Condition��execute�Action��test�����test��First�Rest�� call�First��test�Rest��execute��stop�� ��execute���� run�execute��First�Rest�� call�First��execute�Rest��replace�A�B� retract�A����assert�B��
Uve me si nyn� p��klad� jak lze jednoduch� matematick� probl�m � nalezen� nejvt��ho spole�n�ho dlitele dvou��sel � �e�it pomoc� pattern�directed programming�
Klasick� speci(kace nalezen� nejvt��ho spole�n�ho dlitele dvou ��sel zn�!
pokud A � B opakujjestli+e A � B pak nahra, ��slo A ��slem A�B
jinak nahra, B ��slem B �A
nejv-t.��spole�n��d-litel je A �% nebo B %�
Pravidla� kter� pomoc� v tomto odstavci ji uveden�ho predik�tu run budou hledat NSD dvou ��sel� pak mohouvypadat takto!
�number X�number Y�X � Y� &� �NewX is XY�replace�number X�number NewX����number X� &� �write�X��stop��
Poznamenejme je�t� e oper�tor number je de(nov�n jako!
op�����fx�number��
�� Struktura expertn�ho syst�mu
Strukturu expertn�ho syst�mu� jeho vzniku a provozov�n� ukazuje obr� �� Experti z dan� oblasti daj� hlavy dohromady
Systemov� in�en�r
U�ivatelInferen�n� stroj
Znalostn� b�ze
Znalostn� in�en�r
Experti
�
�
�
�� ��
PPPPi
�
�����
Pracovn� pamt U�ivatelsk� rozhran�
��
expertiza
k/dov�n�
Obr�zek �! Struktura expertn�ho syst�mu
a vypadne z nich soubor znalost� � tzv� expertiza� Na tu sedne znalostn� in�en�r� kter� ji schroust� a vypadne z njznalostn� b�ze� Tu pak bude pou �vat inferen�n� stroj k tomu� aby mohl radit u ivatel�m� Provozn� sou��sti expertn�hosyst�mu� tedy inferen�n� stroj� pracovn� pam�� a u�ivatelsk rozhran� m� na starosti systmov� in�en�r�
��� Dop�edn a zp�tn �et�zen�
� Dop�edn� a zp�tn� �et�zen�
� � � Druhy pravidel
Pravidla v pattern�directed programech mohou b�t dvoj�ho druhu!
� logick� pravidlo $diagn+za%� nap��!
IF family is albatros and color is darkTHEN bird is black footed albatros�
� operativn� pravidlo� nap��!
IF unplaced tv and couch on WALL�X� and WALL�Y� is opposite WALL�X�THEN place tv on WALL�Y��
� � � Dop�edn� a zptn� �etzen�
V teorii expertn�ch syst�m� rozezn�v�me dv strategie zpracov�n� dat�
� dop�edn� �etzen�!
Data �� Rules �� Conclusion
� zptn� �etzen�!
Subgoals �� Rules �� Goal
Tyto strategie jsou v�ak ve vt�in re�ln�ch expertn�ch syst�m� kombinov�ny podle druhu dat a tak� kv�li efek�tivnosti�
� � � Ukl�d�n� dat v expertn�ch syst�mech
Data v expertn�ch syst�mech ukl�d�me v r�zn�ch v�ce �i m�n �inteligentn�ch� struktur�ch� jako jsou fakty� relace�z�znamy�� � � Jednou z inteligentnj��ch struktur jsou tzv� r�mce� Obsahuj� jak�si rysy� kter� zn�me z objektov ori�entovan�ch programovac�ch jazyk�� zejm�na pak d�di�nost� P��klad uchov�n� dat o savc�ch� slonovi a opici ukazujeobr� ��
SAVCI
SLON OPICE
k��e nohy
kly velikost typ nohy velikost ocas
srst default�
st"edn� chlupat��
��
����
�����R
def��
velk� constraintafr! ind
Obr�zek �! P��klad struktury �r�mc��
� �� ZP�TN �ET�ZEN�
Zptn� �etzen�
��� Naivn� expertn� syst�m
Zptn� �etzen� v podstat spo��v� v tom� e u ivatel zad� njakou hypot�zu a expertn� syst�m se sna � rozkl�dat tutohypot�zu na podprobl�my tak dlouho� dokud to nejsou element�rn� fakta� kter� zn�� nebo element�rn� fakta� na kter�se lze zeptat u ivatele� T�mto zp�sobem tedy vznik� strom� slo en� z!
� ko�enov�ch uzl�� kter� reprezentuj� hypot�zy $Goals%�
� mezilehl�ch uzl�� kter� reprezentuj� d�l�� hypot�zy�
� a listov�ch uzl�� kter� reprezentuj� element�rn� fakta a ot�zky u ivateli�
P��klad takov�ch uzl�!
k��� m����m����l����k���prvn��hypot#za��m��� beg�����l���!l�����end������m��� beg����l����l����m����end������m���d�l���hypot#za����l���ot�zka����
Dialog s u ivatelem by pak mohl vypadat takto!
l�X� l�X�Ot�� repeat�write�Ot��read�Odp���Odp�a�asserta�l�X� ��!Odp�n�asserta�l�X� ��fail�����fail!fail����
beg�X� asserta��m�X� ��fail���end�X� asserta�m�X� ���
Tento �naivn�� expertn� syst�m nepokl�d� dvakr�t tut� ot�zku a nepo��t� dvakr�t tyt� mezilehl� uzly�
� � Ukl�d�n� dat
Data se daj� ukl�dat takto!
atribut�hodnota�
nap��!
region�morava�
� � Dotazy u�ivateli
Chceme�li se zeptat u ivatele na barvu
color�X� ask�color�X��
K ulo en� informac� budeme pou �vat predik�t know�YesNo�Attr�Val�� Tak e predik�t ask m� eme ps�t!
ask�A�V� know�yes�A�V����ask�A�V� know���A�V����fail�ask�A�V� write�AV��write�' '��read�Y��asserta�know�Y�A�V���Y��yes�
�� Jednoduch� �shell� �
� � V�cehodnotov� odpovdi
Je�li atribut A v�cehodnotov�� pak tato informace bude zaznamen�na v programov� datab�zi faktem!
multivaued�A��
K procedu�e ask potom je�t p�i�ad�me klauzuli!
ask�A�V� not multivalued�A��know�yes�A�V���V ��� V����fail�
Nyn� si je�t pro p��klad uve me dotaz na velikost!
size�X� menuask�size�X��large�plump�medium�small���menuask�A�V�Menuask� write�'What is the value for '��write�A��
write�' '��nl�write�Menuask��nl�read�X��check�val�X�A�V�Menuask��asserta�know�yes�A�X���X �� V�
check�val�X�A�V�MenuList� member�X�MenuList����check�val�X�A�V�MenuList� write�X��write�' is not legal value� Try again�'��
nl�menuask�A�V�MenuList��
��� Jednoduch� �shell�
top�goal�X� bird�X��solve abolish�know����top�goal�X��write�'The answer is '��write�X��nl�solve write�'No answer found�'��nl�go greeting�repeat�write�'�'��read�X��do�X��X �� quit�greeting write�'Enter load� consult or quit at the prompt�'��nl�do�load� load�kb���do�consult� solve���do�quit��do�X� write�X��write�' is not legal command�'��nl�fail�bird�black�footed�albatros� family�albatros��color�dark��family�albatros� order�tubemosa��size�large��wings�long�narrow��size�X� ask�size�X��size�X� menuask�size�X��large�plump�medium�small���
�� Faktor jistoty
Nkdy u ivatel neodhal� p�esn ve�ker� niance mezi povolen�mi hodnotami atributu $u velikosti t�eba nepozn�� co jep�esn my�leno pojmem velk� a co pojmem st"edn- velk� a jak� je mezi t�m rozd�l%� Proto zav�d�me tzv� faktorjistoty $zna��me cf a po��t�me s n�m v procentech%�
Samoz�ejm� nemus�me ohodnocovat faktorem jistoty jen odpovdi u ivatele� ale i pravidla� To proto� e totopravidlo sice plat�� ale ne �pln v dy� Pokud bychom chtli pou �t k dedukci pravidlo
IF byl jsem dnes v pr�ci THEN je Po� 0t� St� 1t nebo P�
co je ve valn� vt�in vt�in p��pad� zcela regulern�� Je�t ned�vno se v�ak �asto st�valo� e jsme �li na �� m�je dopr�vodu a tuto spont�nn� radost potom nadpracov�vali n�sleduj�c� sobotu� To znamen�� e nelze pou �t toto pravidlok dedukci jen tak� ale s p�ihl�dnut�m k tomu� e nemus� b�t korektn�� Proto m� eme ka d�mu pravidlu p�i�knout tak�jist� faktor jistoty�
T�m n�m v psan� expertn�ho syst�mu p�ibudou probl�my nav�c� Zejm�na!
� Jakou hodnotu cf stanovit jako prahovou�� pro pou it� pravidla v dedukci�
� Jak spo��tat ze zn�m�ho cf p�edpoklad� a zn�m�ho cf pravidla spr�vn� cf z�vru�
Tak� mus�me vy�e�it probl�m� jak vypo��tat cf pro B v p��padech!
��prahovou hodnotu� t�j� minimum pro to� aby bylo pravidlo pou�ito pro pedpoklad� v�t�inou se pou��v� hodnoty ���
� �� ZP�TN �ET�ZEN�
� Pravidlo if A then B m� cfp roven �� a p�edpoklad A m� cfA roven ������
� Pravidlo if A then B m� cf roven �� a p�edpoklad A m� cf roven ���
� Pravidlo if A � B then C m� cfp a p�edpoklady A resp� B maj� cfA resp� cfB� Jak vypo��tat cfC z�vru C-
Tyto probl�my si vt�inou vy�e�� autor expertn�ho syst�mu podle sv�ho� proto e neexistuje �dn� na ���. ov�en��e�en�� o kter�m by bylo dok�z�no� e je nejspr�vnj��� Proto si zde uvedeme jedno z mnoha mo n�ch a pou �van�ch�
� cfA�B konjunkce p�edpoklad� A� B s faktory jistoty cfA� cfB spo�teme!
cfA�B � min�cfA� cfB�
� cfZ z�vru z faktoru jistoty pravidla cfP a faktoru jistoty p�edpoklad� cfA�B spo�teme!
cfZ �cfP � cfA�B
�
� � Kombinov�n� faktoru jistoty
V na�em expertn�m syst�mu s faktorem jistoty v�ak budeme pou �vat faktor jistoty s oborem hodnot v intervalu� �� � � �� Tento postup pou ili t� auto�i �sp�n�ho expertn�ho syst�mu v oblasti mediciny �Mycin�� Hodnota� zde reprezentuje stoprocentn� jistotu pozitivn� $�ur�ite ano�%� hodnota �� pak stoprocentn� jistotu negativn�$�ur�it ne�%�
Pro kombinaci dvou hodnot cf pak mus�me pou �t tyto vzorce!
� cf�X�Y � � X � Y ���X�� � pokud X�Y � �
� cf�X�Y � � � X Y� �min�jX j� jY j�� pokud �X � � �Y � ��
� cf�X�Y � � ���X � Y � X
�
�� pokud X�Y � �
� � Uchov�v�n� dat
Pro implementaci expertn�ho syst�mu se zptn�m �etzen�m a faktorem jistoty budeme uchov�vat tato data!
� rule�Name�LHS�RHS�� � � � pravidlo� kde LHS je lev� strana a RHS prav� strana pravidla� tedy tento predik�treprezentuje pravidlo!
Name IF LHS THEN RHS
� rhs�Goal�CF�� � � � prav� strana pravidla�
� lhs�GoalList�� � � � lev� strana pravidla�
� av�Attr�Val�� � � � reprezentuje hodnotu Val atributu Attr�
� fact�av�Attr�Val��CF�� � � � takto budeme ukl�dat do programov� datab�ze zn�m� podc�le�
� � Zdrojov� text
Zde si nyn� nade(nujeme predik�t findgoal�av�problem�X��CF�� kter� vy�e�� problem a vr�t� jeho hodnotu X afaktor jistoty CF� Tento predik�t uspje� pokud je hodnota atributu
� bu zn�ma�
� nebo odvozena z pravidel�
� nebo je t�eba polo it ot�zku u ivateli � v tom p��pad uspje predik�t askable�atribut�'Ot�zka'��
��Toto se obvykle e�� jednodu�e tak� �e pokud pedpoklady plat� s cf � ���� pak z�v�r pravidla z�sk� tent� cf� jako m� pravidlo�
��� Faktor jistoty �
V r�mci tohoto predik�tu budeme t� de(novat predik�ty!
� prove� kter� prov�� lhs a najde CF�
� adjust� kter� zkombinuje lhs� rhs a CF�
� update� kter� obohat� pam' o nov� z�vry���
findgoal�av�Attr�Val��CF� fact�av�Attr�Val��CF����findgoal�av�Attr�Val��CF� not fact�av�Attr�������askable�Attr�Prompt��
query�user�Attr�Prompt����findgoal�av�Attr�Val��CF��query�user�Attr�Prompt� write�Prompt��read�Val��read�CF��
asserta�fact�av�Attr�Val��CF���findgoal�Goal�CurCF� fg�Goal�CurCF�� �% zkr�cen� n�zvu %�fg�Goal�CurCF� rule�N�lhs�IfList��rhs�Goal�CF���prove�IfList�Tally��
adjust�CF�Tally�NewCF��update�Goal�NewCF�CurCF��CurCF �� ������fg�Goal�CF� fact�Goal�CF��prove�IfList�Tally� prov�IfList�����Tally��prov����Tally�Tally��prov��H�T��CurTal�Tally� findgoal�H�CF��min�CurTal�CF�Tal��Tal �� ���
prov�T�Tal�Tally��min�X�Y�X� X �� Y���min�X�Y�Y� Y �� X�adjust�CF��CF��CF� X is CF� % CF� � ����int�round�X�CF��int�round�X�I� X �� ��I is integer�X �����int�round�X�I� X � ��I is integer�X �����update�Goal�NewCF�CF� fact�Goal�OldCF��combine�NewCF�OldCF�CF��
retract�fact�Goal�OldCF���asserta�fact�Goal�CF�����update�Goal�CF�CF� asserta�fact�Goal�CF���combine�CF��CF��CF� CF� �� ��CF� �� ��X is CF� CF� % ���� CF�������
int�round�X�CF��combine�CF��CF��CF� CF� � ��CF� � ��X is �CF� CF� % ���� CF��������
int�round�X�CF��combine�CF��CF��CF� �CF� � �!CF� � ����CF� � �!CF� � ���abs�min�CF��CF��MCF��
X is ��� % �CF� CF������� MCF��int�round�X�CF��
Pokud bychom chtli zn�t odpov na negovan� c�l� pak to provedeme n�sledovn!
findgoal�not Goal�NCF� findgoal�Goal�CF��NCF is CF���
Tady asi je�t nco chyb�
� � Super shell
Pro v��e speci(kovan� predik�t findgoal�� m� eme nyn� de(novat u ivatelsk� rozhran�� kter� pracovn nazvemesuper shell�
super repeat�write�'consult�load�exit'��nl�write�''��read�line�X��doit�X��X �� exit�
doit�consult� top�goals���doit�load� load�rules���doit�exit��top�goals top�goal�Attr��top�Attr��print�goal�Attr��fail�top�goals�top�Attr� findgoal�av�Attr�Val��CF����top��� true�
��Z�v�ry XVII� sjezdu spln�me a nepekaz� n�m to ��dn� imperialistick� rejdy ���
� �� ZP�TN �ET�ZEN�
print�goal�Attr� nl�fact�av�Attr�X��CF��CF �� ���outp�av�Attr�X��CF��nl�fail�print�goal�Attr� write�'done with '��write�Attr��nl�outp�av�A�V��CF� output�A�V�PrintList��write�A 'cf' CF�� printlist�PrintList����outp�av�A�V��CF� write�A V 'cf' CF��printlist�����printlist��H�T�� write�H��printlist�T��
�� Trasov�n� expertn�ho syst�mu
Nkdy je pot�eba $zejm�na pro �ladn�� pravidel znalostn�m in en�rem% uchov�vat informace o bhu expertn�hosyst�mu� Jak n�� expertn� syst�m z odstavce ��� modi(kovat� aby spl�oval tento po adavek si uk� eme v tomtoodstavci�
K tomuto ��elu si nejprve nade(nujeme pot�ebn� predik�ty bugdisp� kter� vyp��e �trasovac� hl��ku� a set�trace�kter� vypne nebo zapne trasovac� re im expertn�ho syst�mu� D�le je�t obohat�me super shell o p��kaz trace�on�off�t�m� e p�id�me jedno pravidlo predik�tu doit�
bugdisp�L� ruletrace�write�line�L����bugdisp����write�line���� nl�write�line��H�T�� write�H��tab����write�line�T��doit�trace�X�� set�trace�X����set�trace�off� ruletrace�retract�ruletrace��set�trace�on� not ruletrace�asserta�ruletrace��set�trace����
Nyn� si uvedeme� jak� zmny mus�me prov�st ve zdrojov�m textu z odstavce ���� N�sleduj�c� zdrojov� text jev podstat ten sam� jako v odstavci ��� a �seky do nj p�idan� jsou prolo�eny�
findgoal�av�Attr�Val��CF� fact�av�Attr�Val��CF����findgoal�av�Attr�Val��CF� not fact�av�Attr�������askable�Attr�Prompt��
query�user�Attr�Prompt����findgoal�av�Attr�Val��CF��query�user�Attr�Prompt� write�Prompt��read�Val��read�CF��
asserta�fact�av�Attr�Val��CF���findgoal�Goal�CurCF� fg�Goal�CurCF�� �% zkr�cen� n�zvu %�fg�Goal�CurCF� rule�N�lhs�IfList��rhs�Goal�CF��� bugdisp� !Call rule!"N#$"
prove�IfList�Tally�� bugdisp� !Exit rule!"N#$"adjust�CF�Tally�NewCF��update�Goal�NewCF�CurCF��CurCF �� ������
fg�Goal�CF� fact�Goal�CF��prove�IfList�Tally� prov�IfList�����Tally��prove�N"�$ %& bugdisp� !Fail rule!"N#$"fail�prov����Tally�Tally��prov��H�T��CurTal�Tally� findgoal�H�CF��min�CurTal�CF�Tal��Tal �� ���
prov�T�Tal�Tally��min�X�Y�X� X �� Y���min�X�Y�Y� Y �� X�adjust�CF��CF��CF� X is CF� % CF� � ����int�round�X�CF��int�round�X�I� X �� ��I is integer�X �����int�round�X�I� X � ��I is integer�X �����update�Goal�NewCF�CF� fact�Goal�OldCF��combine�NewCF�OldCF�CF��
retract�fact�Goal�OldCF���asserta�fact�Goal�CF�����update�Goal�CF�CF� asserta�fact�Goal�CF���combine�CF��CF��CF� CF� �� ��CF� �� ��X is CF� CF� % ���� CF�������
int�round�X�CF��combine�CF��CF��CF� CF� � ��CF� � ��X is �CF� CF� % ���� CF��������
int�round�X�CF��
��� Zp�sob z�sk�n� z�v�ru �
combine�CF��CF��CF� �CF� � �!CF� � ����CF� � �!CF� � ���abs�min�CF��CF��MCF��X is ��� % �CF� CF������� MCF��int�round�X�CF��
��� Zp�sob z�sk�n� z�v�ru
Nkdy je tak� nutn�� aby expertn� syst�m uml odpovdt nejen na danou ot�zku� ale tak� aby vysvtlil �sv�j my�len�kov� postup�� V �e�i zptn�ho �etzen� to znamen� s p��slu�nou odpovd� vr�tit i cestu ve strom zptn�ho �etzen��vedouc� k �e�en� probl�mu�
Za t�mto ��elem mus�me �roz���it� predik�t fact�� na fact��� kde t�et�m parametrem bude pr�v p��slu�n� cestak tomuto faktu!
fact�AV�CF�RuleList��
K tomuto c�li sta�� opt jen zmodi(kovat ji vytvo en� predik�t update� kter� bude do programov� datab�zeza�azovat n�� p�ede(novan� predik�t fact��� P�idan� fragmenty zdrojov�ho textu jsou opt prolo�eny�
update�Goal�NewCF�CF� RuleN� fact�Goal�OldCF� OldRules��combine�NewCF�OldCF�CF��retract�fact�Goal�OldCF� OldRules���asserta�fact�Goal�CF� RuleN�OldRules#�����
update�Goal�CF�CF� RuleN� asserta�fact�Goal�CF� RuleN#���
Po probhnut� takto modi(kovan�ho expertn�ho syst�mu z odstavce ��� pak m� eme obdr et odpov a zp�sobjej�ho dosa en� po zavol�n� tohoto predik�tu how�
how�Goal� fact�Goal�CF�Rules��CF � ���pretty�Goal�PG��write�line��PG�was�derrived�from�'rules'�Rules���nl�list�rules�Rules��fail�
how����how�not Goal� fact�Goal�CF�Rules��CF � ���pretty�not Goal�PG��
write�line��PG�was�derrived�from�'rules'�Rules���nl�list�rules�Rules��fail�pretty�av�A�yes���A�� ��pretty�not av�A�yes���not�A�� ��pretty�av�A�no���not�A�� ��pretty�not av�A�V���not�A�is�V���pretty�av�A�V���A�is�V���list�rules�����list�rules��R�X�� list�rule�R��list�rules�X��list�rule�N� rule�N�lhs�IfList��rhs�Goal�CF���write�line��'rule '�N���
write�line��'If'���write�ifs�IfList��write�line��'Then'���pretty�Goal�PG��write�line��' '�PG�CF���nl�
write�ifs�����write�ifs��H�T�� pretty�H�HP��tab����write�line�HP��write�ifs�T��
V p��pad� e bychom chtli� aby predik�t how uml komunikovat s u ivatelem� sta�� jej napsat takto!
how write�'Goal '��read�line�X��nl�pretty�Goal�X��how�Goal��
M� eme v�ak predik�t how za�lenit tak�ka okam it do super shellu� kdy do nj p�id�me klauzuli!
doit�how� how���
��� Zd�vodn�n� z�sk�n� z�v�ru
Nkdy tak� m� eme na expertn� syst�m kl�st je�t dal�� po adavek� Nemus� n�m sta�it cesta k �e�en�� ale tak� historie�kterou expertn� syst�m v dob sv�ho v�po�tu pro�el � tedy nejen �sp�n aplikovan� pravidla� ale i ta� kter� skon�ilane�spchem $fail%�
�� �� ZP�TN �ET�ZEN�
findgoal�Goal�CurCF� Hist� fg�Goal�CurCF� Hist��fg�Goal�CurCF� Hist� rule�N�lhs�IfList��rhs�Goal�CF���
prove� N�IfList�Tally� Hist��adjust�CF�Tally�NewCF��update�Goal�NewCF�CurCF��CurCF �� ������
prove� N�IfList�Tally� Hist� prov�IfList�����Tally� N�Hist#�� '�prove�N"�"�"�$ %& bugdisp� !Fail rule!"N#$"fail�prov����Tally�Tally� Hist��prov��H�T��CurTal�Tally� Hist� findgoal�H�CF� Hist��min�CurTal�CF�Tal��Tal �� ���
prov�T�Tal�Tally� Hist��
Je�t n�m zb�v� do�e�it probl�m� jak vypsat historii�
get�user�X�Hist� repeat�write�''��read�line�X��process�ans�X�Hist��process�ans��why��Hist� nl�write�hist�Hist����fail�process�ans��trace�X���� set�trace�X����fail�process�ans��help���� help���fail�process�ans�X����write�hist���� nl�write�hist��goal�X��T�� write�line��goal�X�����write�hist�T��write�hist��N�T�� list�rule�N����write�hist�T��
��
� Dop�edn� �etzen�
��� Principy
V pracovn� pam�ti expertn�ho syst�mu s dop�edn�m �etzen�m m�me pravidla tvaru!
left hand side �LHS� �� right hand side �RHS�
kde LHS je soubor podm�nek a RHS je soubor akc�� Na tato pravidla pak opakovan aplikujeme n�sleduj�c� postup!
�� V�br pravidla� jeho LHS uspje se sou�asn�m stavem pracovn� pamti)
�� Proveden� RHS pravidla $co vt�inou mn� stav pracovn� pamti%)
� Opakovat body � a �� dokud to lze�
V Prologu budeme pracovn� pam' dop�edn�ho �etzen� implementovat v programov� datab�zi� kam budeme ukl��dat pravidla v tomto tvaru!
rule �rule�id���N��condition������ ��� ��action�������
P��klad � �
rule id� �� has�X�pointed�teeth��� has�X�claws��� has�X�forward�eyes����� �retract�all��assert�isa�X�carnivore����
rule id�� �� isa�X�mammal��� isa�X�carnivore���has�X�black�stripes����� �retract�all��assert�isa�X�tiger����
rule id�� �� isa�Animal�Type��� parent�Animal�Child����� �retract����assert�isa�Child�Type����
Inicializa�n� soubor dat do pracovn� pamti expertn�ho syst�mu s dop�edn�m �etzen�m m� eme zapsat zavol�n�mpredik�tu initial�data���term������� nap��!
initial�data��gives�robie�milk��eats�meat�robie��������initial�data��read�facts���
��� Ilustrativn� p��klad s rozestavov�n�m n�bytku
V tomto odstavci si uvedeme p��klad pravidel pro rozestavov�n� n�bytku v m�stnosti�
rule ��� end�� read�facts� ��� �retract�all���rule ��� read�facts� ��� �prompt�'Attribute '�X��assert�X���rule f��� furniture�couch�LenC��position�door�DoorWall��
opposite�DoorWall�OW��right�DoorWall�RW��� wall�OW�LenOW��wall�RW�LenRW��LenOW �� LenRW�LenC �� LenOW�
��� �retract����assert�position�couch�OW���retract����NewSpace � LenOW LenC�assert�wall�OW�NewSpace����
rule f��� furniture�tv�LenTv��� position�couch�CW��� opposite�CW�W��� wall�W�LenW��LenW �� LenTv�
��� �retract����assert�position�tv�W���retract����NewSpace � LenW LenTv�assert�wall�W�NewSpace����
�� (� DOP�EDN �ET�ZEN�
�� Expertn� syst�m s dop�edn�m �et�zen�m
V tomto odstavci uvedeme implementaci expertn�ho syst�mu s dop�edn�m �etzen�m� K tomu budeme pot�ebovatn�sleduj�c� oper�tory!
op�����xfx������ op����xfy��� op�����fx�rule��
K tmto oper�tor�m je�t p�ipoj�me inicializa�n� data� kter� budou slou it k demonstraci tohoto expertn�ho syst�mu�
asserta�fact�isa�robie�carnivore����
A nyn� ji slibovan� zdrojov� text!
�% dop"edn# "et-zen� %�go call�rule�IDLHS ��� RHS��try�LHS�RHS��write�'Rule fired '��write�ID��nl���go�go nl�write�done��nl�print�state�try�LHS�RHS� match�LHS��process�RHS�LHS��match���� ��match��NPrem�Rest�� ���fact�Prem�!test�Prem���match�Rest��match��Prem�Rest�� �fact�Prem�!test�Prem���match�Rest��test�X �� Y� X �� Y���test�X � Y� X is Y���test�X 2 Y� X � Y���test�member�X�Y�� member�X�Y����test�not �X�� fact�X����fail�process������ ��process��Action�Rest��LHS� take�Action�LHS��process�Rest�LHS��take�retract�N��LHS� �N �� all!integer�N���retr�N�LHS����take�A��� take�A��take�retract�X�� retract�fact�X�����take�assert�X�� asserta�fact�X���write�adding�X��nl���take�X 2 Y� X � Y���take�X � Y� X is Y���take�write�X�� write�X����take�nl� nl���take�read�X�� read�X����retr�all�LHS� retrall�LHS����retr�N���� write�'retract error� no'�N��nl���retr�N��NPrem���� retract�fact�Prem�����retr�N����Rest�� ��retr�N�Rest��retrall�����retrall��NPrem�Rest�� retract�fact�Prem�����retrall�Rest��retrall����Rest�� retrall�Rest��
�� Generov�n� kon�iktn�ch pravidel
� � � Kon�iktn� pravidla a jejich vznik
V dob bhu expertn�ho syst�mu s dop�edn�m �etzen�m m� e st�t� e p�i pattern matching m� e lev� stran ur�it�hopravidla odpov�dat v�ce fakt� v pracovn� pamti� Nap�� �matchuje�li� expertn� syst�m pravidlo
rule �������eats�X�meat������ ��� ���
a p�i tom v pracovn� pamti jsou tato fakta!
eats�robie�meat��eats�suzie�meat��
(�� Generov�n� kon)iktn�ch pravidel �
pak mus�me je�t v pr�bhu tohoto matchingu ur�it� zdali se m� promnn� X uni(kovat s atomem robie �i s atomemsuzie� Proto je nutn� naj�t zp�sob� jak tuto kon)iktn� mno�inu vy�e�it�
V Prologu je $nkdy% vestavn� predik�t findall� kter� m� tuto de(nici!
findall�X�Goal�XList� call�Goal��assertz�stack�X���fail!assertz�stack�bottom���collect�XList��
collect�L� retract�stack�X������X � bottom���L���!L��X�Rest��collect�Rest���
Abychom mohli l�pe manipulovat s pravidly� zavedeme si predik�t r s aritou �� Predik�t conflict�set zkonstruujekon�iktn� mno inu!
conflict�set�CS� findall�r�Inst�ID�LHS�RHS���rule IDLHS ��� RHS�match�LHS�Inst���CS��
Jak jsem uvedli v��e� je nutn� kon�iktn� mno inu vy�e�it bhem matchingu� Proto mus�me modi(kovat predik�tmatch�
match������� ��match��NPrem�Rest���Prem�Time�IRest�� ���fact�Prem�Time�!test�Prem��Time����
match�Rest�IRest��match��Prem�Rest���Prem�Time�IRest�� �fact�Prem�Time�!test�Prem��Time����
match�Rest�IRest��assert�ws�fact�X�T�� getchron�T��asserta�fact�X�T���getchron�N� retract�chron�N��NN is N ��asserta�chron�NN�����
Pomoc� takto modi(kovan�ho predik�tu match nav�c ke ka d� polo ce LHS p�id�me �as jej�ho za�azen� $tzn� po�et�cykl�� expertn�ho syst�mu� kter� probhly od za�azen� faktu do pracovn� pamti%�
� � � LEX metoda
Princip t�to metody spo��v� v!
�� odkl�d�n� ur�it� pou it� instance�
�� up�ednost�ov�n� pravidla u �vaj�c�ho nej�erstvj�� fakta�
� up�ednost�ov�n� �speci(kovanj��ch� fakt��
go conflict�set�CS��select�rule�CS�r�Inst�ID�LHS�RHS���process�RHS�LHS��asserta�instantiation�Inst���write�'Rule fired '��write�ID��nl���go�
select�rule�CS�R� refract�CS�CS���lex�sort�CS���R�����refract��������refract��r�Inst��������T��TR� instantiation�Inst����refract�T�TR��refract��H�T���H�TR�� refract�T�TR��lex�sort�L�R� build�keys�L�LK��keysort�LK�X��reverse�X�Y��strip�keys�Y�R��build�keys��������build�keys��r�Inst�A�B�C��T���Keyr�Inst�A�B�C��TR�� build�chlist�Inst�ChL��
sort�ChL�X��reverse�X�Key��build�keys�T�TR��build�chlist��������build�chlist����Chron�T���Chron�TC�� build�chlist�T�TC��strip�keys��������strip�keys��KeyX�Y���X�Z�� strip�keys�Y�Z��
Ve v��e uveden�m zdrojov�m textu n�m chyb� je�t dode(novat predik�t keysort� Jeho de(nici nech�me naprocvi�en� laskav�mu �ten��i� Sdl�me mu jen pro �plnost� e keysort�KeyList�SortedKeyList� set��d� seznam term�tvaru �Keycokoliv����� vzestupn podle kl��e Key�
Tento zdrojov� text pracuje na z�klad po adavk� � a � metody LEX� Po adavek si uvedeme d�le pouze v prin�cipu�
Nech' m�me pravidla!
�� (� DOP�EDN �ET�ZEN�
rule t��flies�X��lays�eggs�X�� ��� �assert�bird�X����rule t��mammal�X��long�ears�X��eats�carrots�X�� ��� �assert�animal�X�rabbit����
a nech' m�me v pracovn� pamti!
fact�flies�lara�����fact�flies�zach�����fact�lays�eggs�lara�����fact�lays�eggs�zach�����fact�mammal�bonbon�����fact�long�ears�bonbon�����fact�eats�carrots�bonbon�����
M�me tedy!
� dv instance rule t�! ����� a �����
� jednu instanci rule t�! �������
Po set��dn� jednotliv�ch instanc� dostaneme ������ ����� a �������� p�i�em �� � a � jsou kl��e k instanc�m� PakLEX metoda provede toto uspo��d�n� kon�iktn� mno iny!
��� �� � ��� �� � ��� �� ��
Tuto mno inu se n�m v�ak poda�ilo uspo��dat jen podle kl���� To by se n�m v�ak nemuselo poda�it� kdybychomnap��klad mli v kon�iktn� mno in dv instance! ����� a �������� kter� maj� ob dv kl�� �� Proto zde mus� p�ij�t na�adu �speci(kovanost� z bodu princip� metody LEX� Ta rozhodne ve prospch instance �������� proto e m� v�cespeci(kovan�ch p�edpoklad� ne instance �����!
��� �� � ��� �� ��
� � � MEA metoda
MEA metoda je identick� s metodou LEX� jen p�id�v� jak�si (ltr nav�c� Uve me si tedy implementaci t�to metody!
select�rule�R�CS� refract�CS�CS���mea�filter���CS�����CSR��lex�sort�CSR��R�����
mea�filter���X���X� not strategy�mea����mea�filter������X�X��mea�filter�Max��r��A�T�Z��B�C�D��X��Temp�ML� T � Max���
mea�filter�Max�X�Temp�ML��mea�filter�Max��r��A�T�Z��B�C�D��X��Temp�ML� T � Max���
mea�filter�Max�X��r��A�T�Z��B�C�D��Temp��ML��mea�filter�Max��r��A�T�Z��B�C�D��X��Temp�ML� T � Max���
mea�filter�T�X��r��A�T�Z��B�C�D���ML��
mea�filter vybere pouze ta pravidla� jejich instance prvn�ho termu maj� maxim�ln� mo n� �as�
��� R�mce
� � Co jsou to r�mce
R�mce jsou datovou strukturou� kterou si m� eme p�edstavit jako tabulky nap��!
savci value default when�updatedk� e ko+e.inarozen� +iv#nohy � leg�check
(�� R�mce ��
kr�l�k value default when�updateda�kind�of savci
u�i dlouh#pohyb skoky
R�mce $frames% si m� eme na t�to intuitivn� �rovni p�edstavit jako tyto tabulky� jejich ��dky budeme naz�vatsloty $slots% a sloupce budeme naz�vat facety $facets%�
Do prologovsk� programov� datab�ze budeme r�mce ukl�dat pomoc� predik�t�!
� frame�� s parametry!
�� jm�no r�mce $nap�� savci%
�� seznam slot�
� slot�� s parametry!
�� jm�no slotu $nap�� k3+e%
�� seznam facet�
� facet�� s parametry!
�� jm�no facetu $nap�� value%� kter� bude reprezentov�no oper�torem
�� hodnota facetu
Nap��klad!
frame�name��slotname� �facet���val���facet���val��������slotname� �facet���val���facet���val��������������
Facety budeme dlit do tchto typ�!
� val � jednoduch� hodnota facetu
� def � default
� calc � predik�t volaj�c� v�po�et hodnoty slotu
� add � predik�t� kter� je vol�n� kdy je hodnota p�id�v�na do slotu
� del � predik�t� kter� je vol�n� kdy je hodnota vy�azov�na ze slotu
P��klad � �
frame�man��ako �val person��hair �def short�del bald��weight �calc male�weight����frame�woman��ako �val person��hair �def long��weight �calc female�weight����
Facet ako $jeho s�mantika je �a kind of�% zde funguje jako odkaz na njak� r�mec� Toto je jist� objektov� rysr�mc�� kter� pomoc� tohoto facetu zav�d� do r�mc� ddi�nost� kdy r�mec woman dd� hodnoty v�ech slot� r�mceperson� kter� roz�i�uje nebo aktualizuje�
�� (� DOP�EDN �ET�ZEN�
� � Prohl��en� r�mc�
V tomto odstavci si nade(nujeme predik�t get�frame� kter� podle po adavk� ReqList najde r�mec Thing�
get�frame�Thing�ReqList� frame�Thing�SlotList��slot�vals�Thing�ReqList�SlotList��slot�vals���������slot�vals�T��Req�Rest��SlotList� prep�req�Req�req�T�S�F�V���
find�slot�req�T�S�F�V��SlotList����slot�vals�T�Rest�SlotList��slot�vals�T�Req�SlotList� prep�req�Req�req�T�S�F�V���
find�slot�req�T�S�F�V��SlotList��prep�req�SlotX�req�T�Slot�val�X�� var�X����prep�req�SlotX�req�T�Slot�Facet�Val�� nonvar�X��X ��� �Facet�Val��
facet�list�FL��member�Facet�FL����prep�req�SlotX�req�T�Slot�val�X���facet�list��val�def�calc�add�del�edit���find�slot�req�T�S�F�V��SlotList� nonvar�V��find�slot�req�T�S�F�Val��SlotList����
�Val �� V!member�V�Val���find�slot�req�T�S�F�V��SlotList� member�SFacetList�SlotList����
facet�val�req�T�S�F�V��FacetList��find�slot�req�T�S�F�V��SlotList� member�akoFacetList�SlotList��
facet�val�req�T�ako�val�Ako��FacetList���member�X�Ako�!X � Ako��frame�X�HigherSlots��find�slot�req�T�S�F�V��HigherSlots����
find�slot�Req��� error��'Frame error looking for '�Req���facet�val�req�T�S�F�V��FacetList� FV ��� �F�V��member�FV�FacetList����facet�val�req�T�S�val�V��FacetList� member�val ValList�FacetList��
member�V�ValList����facet�val�req�T�S�val�V��FacetList� member�def V�FacetList����facet�val�req�T�S�val�V��FacetList� member�calc Pred�FacetList��
Pred ��� �Functor�Args��CalcPred ��� �Functor�req�T�S�Val�V��Args��call�CalcPred��
Pomoc� predik�tu req�� budeme reprezentovat po adavky� Jako parametry budou jm�no r�mce� po adovan� slot�po adovan� facet a po adovan� hodnota�
Je�t poznamenejme� e oper�tor ��� $univ% uspje nap��klad v tomto p��pad!
fact���N�F� ��� �fact���N�F�
A z�vrem p��klad v�po�etn�ho predik�tu!
female�weight�req�T�S�F�V�� get�frame�T��heightH���V is H%��
� � P�id�v�n� r�mc�
V tomto odstavci si uvedeme implementaci predik�tu add�frame� kter� bude za�azovat nov� r�mce do pracovn� pamti�
add�frame�Thing�UList� old�slots�Thing�SlotList��add�slots�Thing�UList�SlotList�NewList��retract�frame�Thing�����asserta�frame�Thing�NewList�����
old�slots�Thing�SlotList� frame�Thing�SlotList����old�slots�Thing���� asserta�frame�Thing������add�slots������X�X��add�slots�T��U�Rest��SlotList�NewList� prep�req�U�req�T�S�F�V���
add�slot�req�T�S�F�V��SlotList�Z��add�slots�T�Rest�Z�NewList��add�slots�T�X�SlotList�NewList� prep�req�X�req�T�S�F�V���
add�slot�req�T�S�F�V��SlotList�NewList��add�slot�req�T�S�F�V��SlotList��SFL��SL��� delete�SFacetList�SlotList�SL���
add�facet�req�T�S�F�V��FacetList�FL���
(�� R�mce ��
add�facet�req�T�S�F�V��FacetList��FNew�FL��� FX ��� �F�OldVal��delete�FX�FacetList�FL���add�newval�OldVal�V�NewVal����check�add�demons�req�T�S�F�V��FacetList��FNew ��� �F�NewVal��
add�newval�X�Val�Val� var�X����add�newval�OldList�ValList�NewList� list�OldList��list�ValList��
append�ValList�OldList�NewList����add�newval��H�T��Val��Val�H�T���add�newval�Val��H�T���Val�H�T���add�newval���Val�Val��check�add�demons�req�T�S�F�V��FacetList� get�frame�T�Sadd�Add�����
Add ��� �Functor�Args��AddFunc ��� �Functor�req�T�S�F�V��Args��call�AddFunc��check�add�demons������delete�X��������delete�X��X�Y��Y� ��delete�X��Y�Z���Y�W�� delete�X�Z�W��
Predik�t del�frame� kter� bude odstra�ovat r�mce z pracovn� pamti bude analogick�� s inverzn�m ��inkem� Jehop��padnou implementaci nech�v�me na laskav�m �ten��i�
� � P��klad znalostn� b�ze v r�mc�ch
frame�tubenose��level�val order��nostrils�val external�tubular��live�val at�sea��bill�val hooked����
frame�albatross��ako�val tubenose��level�val family��size�val large��wings�val long�narrow����
frame�legsan�albatross��ako�val albatross��level�val species��color�val white����frame�black�footed�albatross��ako�val albatross��level�val species��
color�val dark����
Laskav�mu �ten��i nech�v�me na z�vr k promy�len�� jak� hodnoty promnn� X vr�t� dotazy!
� get�frame�X��color dark�wings long�narrow���
� get�frame�X��wings long�narrow���
� get�frame�X��wings long�narrow�level L���
�� LITERATURA
Literatura
"�# David Kr�sensk�� Logick programov�n�� ZKUSTO ����