• Nie Znaleziono Wyników

ALHE prof. Jarosław Arabas

N/A
N/A
Protected

Academic year: 2021

Share "ALHE prof. Jarosław Arabas"

Copied!
4
0
0

Pełen tekst

(1)

ALHE

prof. Jarosław Arabas

semestr 15Z

Wykład 2 – Algorytmy w głąb, wszerz, najpierw najlepszy

Przestrzeń przeszukiwań – definiuje wszystkie możliwe do utworzenia ścieżki pomiędzy rozwiązaniami zadania. Jej kształt zależy od ustalonego sąsiedztwa.

Średnia przestrzeni poszukiwań – maksymalna liczba operacji elementarnych przekształcających jedno rozwiązanie w dowolne inne rozwiązanie.

Należy dążyć do tego, aby zarówno średnica przestrzeni jak i ustalone sąsiedztwo nie były zbyt duże, gdyż może to prowadzić do nieoptymalności algorytmu.

Serializacja przestrzeni poszukiwań

Algorytmy w głąb, wszerz i najpierw najlepszy służą do przeszukiwania przestrzeni przeszukiwań w celu znalezienia najlepszego rozwiązania. Ich zadaniem jest serializacja przestrzeni poszukiwań. Zadanie to polega na ponumerowaniu rozwiązań problemu. Wynikiem serializacji może być zbiór odwiedzonych punktów (historia, log - H).

Opis algorytmu serializacji

Inicjując zapisujemy do naszej historii punkt startowy. Następnie, w pętli, operat selekcji wybiera punkty z historii, na podstawie których operator wariacji generuje nowe punkty z przestrzeni poszukiwań. Wygenerowane przez operator wariacji punkty dopisywane są do historii. Cykl ten powtarzany jest aż do zakończenia pracy algorytmu.

Algorytm w głąb (depth-first)

Algorytm w głąb może być zarówno lewo- jak i prawostronny. Poniższy przykład dotyczył będzie przypadku lewostronnego.

(2)

Cyfry wewnątrz węzłów oznaczają kolejność w jakiej węzły będą serializowane przez algorytm w głąb. Jest to algorytm LIFO (Last In First Out), wpierw przeglądane są wierzchołki, które zostały ostatnio rozwinięte.

Opis algorytmu w głąb

Wybieramy wierzchołek startowy i wpisujemy go do historii (w przypadku przestrzeni drzewiastych będzie to korzeń drzewa). Następnie operator selekcji wybiera z historii ostatnio wygenerowany punkt (LIFO), a operator wariacji generuje dla danego punktu jego wszystkich sąsiadów. Wygenerowane w ten sposób punkty zapisywane są do historii. Cykl ten powtarzany jest aż do wyczerpania zawartości historii.

Algorytm ten działa najlepiej dla przestrzeni poszukiwań zorganizowanej w postaci drzewiastej. Jeśli przestrzeń poszukiwań nie jest drzewem (występują cykle), możliwe jest dojście do danego węzła kilkoma drogami co doprowadzi nas do zapętlenia. Aby algorytm działał poprawnie, konieczne jest pamiętanie wszystkich odwiedzonych już punktów i nie dodawanie ich do historii w przypadku wygenerowania.

Algorytm wszerz (breadth-first)

Algorytm wszerz także może być zarówno lewo- jak i prawostronny. Poniższy przykład dotyczył będzie przypadku lewostronnego.

(3)

Cyfry wewnątrz węzłów oznaczają kolejność w jakiej węzły będą serializowane przez algorytm wszerz. Jest to algorytm FIFO (First In First Out), wpierw przeglądane są wierzchołki, które zostały wcześniej rozwinięte.

Opis algorytmu wszerz

Wybieramy wierzchołek startowy i wpisujemy go do historii (w przypadku przestrzeni drzewiastych będzie to korzeń drzewa). Następnie operator selekcji wybiera z historii kolejny z oryginalnych punktów (FIFO), a operator wariacji generuje dla danego punktu jego wszystkich sąsiadów. Wygenerowane w ten sposób punkty zapisywane są do historii. Cykl ten powtarzany jest aż do wyczerpania zawartości historii, albo uzyskania optymalnego rozwiązania.

Algorytm ten działa najlepiej dla przestrzeni poszukiwań zorganizowanej w postaci drzewiastej. Jeśli przestrzeń poszukiwań nie jest drzewem (występują cykle), możliwe jest dojście do danego węzła kilkoma drogami co doprowadzi nas do zapętlenia. Aby algorytm działał poprawnie, konieczne jest pamiętanie wszystkich odwiedzonych już punktów i nie dodawanie ich do historii w przypadku wygenerowania.

Algorytm najpierw najlepszy (best-first)

Dla algorytmu najpierw najlepszy wymagane jest zdefiniowanie kosztów poszczególnych węzłów. Cyfry obok każdego z węzłów oznaczają koszt tego węzła.

(4)

Cyfry wewnątrz węzłów oznaczają kolejność w jakiej węzły będą serializowane przez algorytm najpierw najlepszy. Jest to algorytm z kolejką priorytetową - wpierw przeglądane są wierzchołki o najniższej wartości funkcji kosztu (najwyższej wartości funkcji celu). Jeśli z góry wiedzielibyśmy o tym, że optymalne rozwiązanie ma koszt o wartości 2, wtedy moglibyśmy zakończyć przeszukiwanie w momencie wygenerowania wierzchołka nr 9.

Opis algorytmu najpierw najlepszy

Wybieramy wierzchołek startowy i wpisujemy go do historii (w przypadku przestrzeni drzewiastych będzie to korzeń drzewa). Następnie operator selekcji wybiera z historii najlepszy dotychczas nie użyty punkt (kolejka priorytetowa) a operator wariacji generuje dla danego punktu jego wszystkich sąsiadów. Wygenerowane w ten sposób punkty zapisywane są do historii. Cykl ten powtarzany jest aż do zakończenia pracy algorytmu.

Algorytm ten działa najlepiej dla przestrzeni poszukiwań zorganizowanej w postaci drzewiastej. Jeśli przestrzeń poszukiwań nie jest drzewem (występują cykle), możliwe jest dojście do danego węzła kilkoma drogami co doprowadzi nas do zapętlenia. Aby algorytm działał poprawnie, konieczne jest pamiętanie wszystkich odwiedzonych już punktów i nie dodawanie ich do historii w przypadku wygenerowania.

Opracowanie: Michał Mudel

Cytaty

Powiązane dokumenty

• Języki wysokiego poziomu: ADA, Pascal, Fortran, C++, Lisp, B, SmallTalk, Java. "Podstawy informatyki", Tadeusz Wilusz

Dzięki temu mamy pewność, że rozwiązanie zwracane przez algorytm jest najlepszym rozwiązaniem znalezionym podczas jego działania.. pierwotnej wersji algorytmu zwracane

Wybór osobnika odbywa się w następujący sposób: Pobieramy 1 osobnika bieżącej populacji, po czym losujemy progowo bez zwracania sprawdzając, czy osobnik może być zmutowany..

Do grupy wstępnej będą należały wszystkie te dokumenty, które miały wyliczony współczynnik korelacji większy lub równy p min. Są to wszystkie obiekty grupy

Dla gramatyki bezkontekstowej w postaci normalnej Chomsky’ego algorytm CYK rozstrzyga, czy dane słowo należy do języka generowanego przez tę gramatykę.. Dla każdej

Etykieta RAISE sygnalizuje, ˙ze koszt stanu jest wi ˛ekszy ni ˙z ostatnio znany w kolejce Q (zwi ˛azane z krokiem 2.1 w podanym algorytmie Stentz’a). Etykieta LOWER sygnalizuje,

obiekt spełnia reguły dotyczące różnych klas, to jest on przypisywany do klasy tych reguł, których spełnia więcej.. W przypadku, gdy obiekt spełnia tyle samo reguł każdej

W każdym kroku generowania reguły (zbiór T reprezentuje regułę) wybierany jest taki warunek, który jest spełniany przez największą liczbę obiektów (tj.. Jeżeli jest więcej