Algorytmy i struktury danych



Podobne dokumenty
Metody Programowania

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje w roku akademickim 2012/2013. Projektowanie i analiza algorytmów

Znajdowanie wyjścia z labiryntu

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott

Scenariusz lekcji. Scenariusz lekcji 1 TEMAT LEKCJI: Algorytmy z nawrotami 2 CELE LEKCJI: 2.1 Wiadomości: 2.2 Umiejętności: 3 METODY NAUCZANIA

Ogólne wiadomości o grafach

OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) Algorytmy i Struktury Danych PIŁA

Reprezentacje grafów nieskierowanych Reprezentacje grafów skierowanych. Wykład 2. Reprezentacja komputerowa grafów

1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb.

SZTUCZNA INTELIGENCJA

a) 7 b) 19 c) 21 d) 34

Algorytmy mrówkowe. H. Bednarz. Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie Inteligentne systemy informatyczne

Wysokość drzewa Głębokość węzła

Metody przeszukiwania

Tadeusz Pankowski

TEORETYCZNE PODSTAWY INFORMATYKI

Tworzenie gier na urządzenia mobilne

Problem skoczka szachowego i inne cykle Hamiltona na szachownicy n x n

Optymalizacja. Przeszukiwanie lokalne

Matematyka dyskretna - 7.Drzewa

Planowanie drogi robota, algorytm A*

Wykład 8. Drzewo rozpinające (minimum spanning tree)

Projektowanie i Analiza Algorytmów

Algorytm obejścia drzewa poszukiwań i zadanie o hetmanach szachowych

Heurystyczne metody przeszukiwania

Problemy z ograniczeniami

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce.

Marcel Stankowski Wrocław, 23 czerwca 2009 INFORMATYKA SYSTEMÓW AUTONOMICZNYCH

Techniki optymalizacji

Algorytmiczna teoria grafów

PLAN WYKŁADU BAZY DANYCH INDEKSY - DEFINICJE. Indeksy jednopoziomowe Indeksy wielopoziomowe Indeksy z użyciem B-drzew i B + -drzew

Projektowanie i analiza algorytmów

Algorytmy i Struktury Danych

Podstawy Informatyki. Metody dostępu do danych

Teoria grafów dla małolatów. Andrzej Przemysław Urbański Instytut Informatyki Politechnika Poznańska

7. Teoria drzew - spinanie i przeszukiwanie

Wykład 2. Drzewa zbalansowane AVL i 2-3-4

Rozwiązywanie problemów metodą przeszukiwania

ALGORYTMY I STRUKTURY DANYCH

Matematyczne Podstawy Informatyki

Algorytmika Problemów Trudnych

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

Wybrane podstawowe rodzaje algorytmów

Wyznaczanie strategii w grach

ANALIZA ALGORYTMÓW. Analiza algorytmów polega między innymi na odpowiedzi na pytania:

Drzewa poszukiwań binarnych

Porównanie algorytmów wyszukiwania najkrótszych ścieżek międz. grafu. Daniel Golubiewski. 22 listopada Instytut Informatyki

Algorytmy grafowe. Wykład 2 Przeszukiwanie grafów. Tomasz Tyksiński CDV

Kierunek: Informatyka. Przedmiot:

Matematyczne Podstawy Informatyki

Przykłady grafów. Graf prosty, to graf bez pętli i bez krawędzi wielokrotnych.

Przeszukiwanie z nawrotami. Wykład 8. Przeszukiwanie z nawrotami. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 238 / 279

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium 7. 2 Drzewa poszukiwań binarnych

Metody Kompilacji Wykład 3

E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne

< K (2) = ( Adams, John ), P (2) = adres bloku 2 > < K (1) = ( Aaron, Ed ), P (1) = adres bloku 1 >

Bazy danych. Andrzej Łachwa, UJ, /15

Grafy (3): drzewa. Wykłady z matematyki dyskretnej dla informatyków i teleinformatyków. UTP Bydgoszcz

Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład 14, 1

Wyznaczanie optymalnej trasy problem komiwojażera

Działanie algorytmu oparte jest na minimalizacji funkcji celu jako suma funkcji kosztu ( ) oraz funkcji heurystycznej ( ).

ĆWICZENIE 1: Przeszukiwanie grafów cz. 1 strategie ślepe

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je.

ALGORYTMY I STRUKTURY DANYCH

WSTĘP DO INFORMATYKI. Drzewa i struktury drzewiaste

Programowanie dynamiczne cz. 2

Algorytm Dijkstry znajdowania najkrótszej ścieżki w grafie

Tworzenie gier na urządzenia mobilne

Algorytmy sztucznej inteligencji

Wstęp do Sztucznej Inteligencji

Metody uporządkowania

Algorytmy stochastyczne laboratorium 03

Literatura. 1) Pojęcia: złożoność czasowa, rząd funkcji. Aby wyznaczyć pesymistyczną złożoność czasową algorytmu należy:

prowadzący dr ADRIAN HORZYK /~horzyk tel.: Konsultacje paw. D-13/325

KODY SYMBOLI. Kod Shannona-Fano. Algorytm S-F. Przykład S-F

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje w roku akademickim 2012/2013. Algorytmy i struktury danych

Algorytmy z powrotami. Algorytm minimax

Optymalizacja. Wybrane algorytmy

Złożoność obliczeniowa zadania, zestaw 2

ALGORYTMY I STRUKTURY DANYCH

Heurystyki. Strategie poszukiwań

Algorytmy i Struktury Danych.

WPROWADZENIE DO SZTUCZNEJ INTELIGENCJI

Modele i narzędzia optymalizacji w systemach informatycznych zarządzania

Algorytmy i Struktury Danych

PRZEWODNIK PO PRZEDMIOCIE

Digraf. 13 maja 2017

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2013/2014

Wykłady z Matematyki Dyskretnej

Tomasz M. Gwizdałła 2012/13

Struktury danych i złożoność obliczeniowa Wykład 7. Prof. dr hab. inż. Jan Magott

METODY OPTYMALIZACJI. Tomasz M. Gwizdałła 2018/19

Metody Optymalizacji: Przeszukiwanie z listą tabu

Kolejka priorytetowa. Często rozważa się kolejki priorytetowe, w których poszukuje się elementu minimalnego zamiast maksymalnego.

Wykład 8. Drzewa AVL i 2-3-4

Programowanie dynamiczne i algorytmy zachłanne

Metody uporządkowania

Optymalizacja. Algorytmy dokładne

Wstęp do programowania

Bazy danych - BD. Indeksy. Wykład przygotował: Robert Wrembel. BD wykład 7 (1)

Transkrypt:

POLITECHNIKA KRAKOWSKA - WIEiK KATEDRA AUTOMATYKI i TECHNIK INFORMACYJNYCH Algorytmy i struktury danych www.pk.edu.pl/~zk/aisd_hp.html Wykładowca: dr inż. Zbigniew Kokosiński zk@pk.edu.pl

Wykład 5: Algorytmy z nawrotami. 1. Wprowadzenie. Starożytne początki. 2. Wyszukiwanie wyczerpujące w przestrzeni rozwiązań a idea algorytmu wyszukiwania z powrotami. 3. Przykład : problem komiwojażera (TSP). 4. Przykłady klasycznych algorytmów z powrotami: problem skoczka szachowego, problem ośmiu hetmanów. 5. Gry. Drzewo gry. Ocena rozwiązań w węzłach. 6. Technika alfa-beta odcinania gałęzi drzewa gry. 7. Wady i zalety algorytmów z powrotami.

Wprowadzenie. Starożytne początki Metoda wyszukiwania z nawrotami została wynaleziona w starożytności. Tezeusz przeszukał zaprojektowany przez Dedala labirynt w podziemiach pałacu w Knossos, aby odnaleźć i zabić w nim Minotaura. Nawroty przy przeszukiwaniu labiryntu oraz znalezienie drogi powrotnej do jego wejścia umożliwiła śmiałkowi nić otrzymana od Ariadny. Poniżej: rzymska mozaika w Recji (obecnie Szwajcaria) oraz labirynt wygenerowany komputerowo.

Idea algorytmu z nawrotami Wyszukiwanie z nawrotami (ang. backtracking) jest ogólną techniką wyszukiwania wszystkich rozwiązań (lub tylko jednego rozwiązania) problemu, która inkrementacyjnie buduje rozwiązanie częściowe, porzucając go gdy dalsze budowanie nie prowadzi już do dopuszczalnego rozwiązania, o czym decyduje stosunkowo prosty test. Jeżeli problem pozwala na zastosowanie wyszukiwania z nawrotami, to metoda ta może być znacznie efektywniejsza niż wyszukiwanie wyczerpujące, zakładające przeszukanie wszystkich potencjalnych rozwiązań, ponieważ pojedynczy test może wyeliminować nie jedno, a wiele rozwiązań niedopuszczalnych. Wyszukiwanie z nawrotami jest techniką bardzo przydatną w problemach zawierających ograniczenia (ang. constraints satisfaction problems), w optymalizacji kombinatorycznej, w analizatorach składniowych (parserach) itp. Termin backtracking zaproponował w latach 50. D.H. Lehmer.

Problem komiwojażera (TSP) Dany jest graf nieskierowany G(V,E) oraz funkcja f przypisująca wagi (koszt) wszystkim krawędziom e należącym do E. Wyznacz trasę z miasta A o minimalnym koszcie tak, aby każde miasto zostało odwiedzone dokładnie jeden raz.

Problem komiwojażera (TSP) - rekurencja Zakładamy następujący porządek przeszukiwania grafu wgłąb (DFS) z wierzchołka A : A B C E F D G H I K J L M. Algorytm z powrotami jest modyfikacją algorytmu DFS, polegającą na czyszczeniu po sobie przez procedurę visit zmian wprowadzonych do zmiennej id (kolejność odwiedzania k-tego wierzchołka) oraz elementu val[k](odnotowanie odwiedzin). Pierwsze wywołanie procedury to visit(1). Stosujemy reprezentację macierzową grafu.

Problem komiwojażera (TSP) - wyszukiwanie wyczerpujące Wszystkie trasy komiwojażera rozpoczynające się w mieście A (A jest korzeniem drzewa, trasy scieżkami od korzenia do liścia). Drzewo wyszukiwania wyczerpującego ma 153 wierzchołki.

Problem komiwojażera (TSP) wyszukiwanie z nawrotami (1) Jeżeli założymy, że na trasie komiwojażera rozpoczynajacej się w mieście A miasto C musi poprzedzać miasto B, to wyszukiwanie dopuszczalnej trasy zostanie znacznie ułatwione a liczba kroków zmaleje (algorytm z nawrotami).

Problem komiwojażera (TSP) wyszukiwanie z nawrotami (2) Jeżeli w poprzednim przykładzie zauważymy, że istnieją trasy dzielące nieodwiedzoną część grafu na niepołączone ze sobą fragmenty (np. AFE), to zadanie wyszukiwania zostanie dalej uproszczone (zmaleje liczba wywołań rekurencyjnych za cenę sprawdzania spójności grafu np. algorytmem DFS).

Problem komiwojażera (TSP) wyszukiwanie z nawrotami (2 c.d.) Drzewo wyszukiwania z nawrotami ma w tym przypadku tylko 19 węzłów.

Problem skoczka szachowego

Algorytm z nawrotami 1. Ustawiamy skoczka na polu startowym. 2. Wyznaczamy współrzędne dostępnych w danym kroku pól pozostających w obrębie szachownicy (ustalając ich uporządkowaną listę). Odwiedzamy kolejne nieodwiedzone dotąd pole. 3. Powtarzamy to postępowanie budując cześciową trasę skoczka. Jeżeli kolejnego ruchu nie da się wykonać, to cofamy się o jeden krok i wiersz i przesuwamy figurę na kolejne dostępne pole. Jeśli takie pole nie istnieje, cofamy się dalej (rekurencja z powrotami). Zbudowanie trasy złożonej z (n^2)-1 ruchów skoczka oznacza znalezienie rozwiazania. 4. Postępowanie można powtarzać do momentu znalezienia pierwszego rozwiązania, albo kontynuować aż skoczek znajdzie wszystkie możliwe rozwiązania z pola startowego.

Problem skoczka szachowego rozwiązania dla szachownicy 5x5 i 6x6

Problem ośmiu hetmanów

Problem ośmiu hetmanów

Algorytm z nawrotami 1. Pierwszego hetmana stawiamy na polu a1 (w wierszu 1, kolumnie a). 2. Dla drugiego hetmana szukamy wolnego, t.j. nieatakowanego pola w wierszu 2, będzie to pole c2. 3. Podobnie postępujemy z kolejnymi hetmanami. Jeżeli któregoś hetmana nie da się postawić w kolejnym wierszu, to cofamy się o jeden wiersz i przesuwamy figurę na kolejne wolne pole. Jeśli takie pole nie istnieje, cofamy się dalej (rekurencja z powrotami). Ustawienie na wolnym polu ósmego hetmana oznacza znalezienie rozwiazania. 4. Postępowanie można powtarzać do momentu znalezienia pierwszego rozwiązania, albo kontynuować aż hetman w wierszu 1 przejdzie przez wszystkie pola i wyznaczone zostana wszystkie możliwe rozwiązania (92, w tym 12 istotnie różnych).

Problem ośmiu hetmanów istotnie różne rozwiazania (N liczba sprawdzanych pól)

Gry. Kółko i krzyżyk - drzewo gry

Rekurencyjne przeszukiwanie z nawrotami

Odcinanie alfa-beta - definicje Wierzchołek minimalny wierzchołek w grafie posiadający wartość minimum z wartości wag swoich dzieci. Wierzchołek maksymalny wierzchołek w grafie posiadający wartość maksimum z wartości wag swoich dzieci. Wyeliminowanie poddrzewa o korzeniu w węźle minimalnym nazywamy odcięciem alfa. Wyeliminowanie poddrzewa o korzeniu w węźle maksymalnym nazywamy odcięciem beta.

Odcinanie alfa-beta

Odcinanie alfa-beta reguły 1 1. Jeżeli każdy z wierzchołków-dzieci wierzchołka n ma ustaloną wartość ostateczną albo został odcięty to dotychczasowa wartość próbna wierzchołka n staje się jego wartością ostateczną. 2. Jeżeli wierzchołek maksymalny x posiada wartość próbną v1, a jego dziecko posiada wartość ostateczną v2, to nową wartością próbną jest dla x wartość max(v1,v2). 3. Jeżeli wierzchołek minimalny y posiada wartość próbną v1, a jego dziecko posiada wartość ostateczną v2, to nową wartością próbną jest dla y wartość min(v1,v2).

Odcinanie alfa-beta reguły 2 4. Jeżeli wierzchołek maksymalny x jest rodzicem wierzchołka mimimalnego y i wartość próbna wierzchołka y jest nie większa od wartości próbnej wierzchołka x, to poddrzewo o korzeniu y możemy wyeliminować z dalszych poszukiwań (odcięcie alfa). 5. Jeżeli wierzchołek minimalny y jest rodzicem wierzchołka maksymalnego x i wartość próbna wierzchołka x jest nie mniejsza od wartości próbnej wierzchołka y, to poddrzewo o korzeniu x możemy wyeliminować z dalszych poszukiwań (odcięcie beta).

Odcinanie alfa-beta - przykład

Zalety algorytmów z nawrotami 1. Algorytm z nawrotami znajduje rozwiązanie dokładne danego problemu. 2. Algorytm z nawrotami jest zwykle efektywniejszy niż algorytm wyszukiwania wyczerpującego. 3. Algorytm z nawrotami nadaje się do uwzglednienia w wyszukiwaniach wszelkiego rodzaju złożonych ograniczeń problemu, zmniejszających rozmiar przestrzeni wyszukiwań. 4. Algorytm z nawrotami jest szczególnie cenny w optymalizacji kombinatorycznej (np. problem plecakowy). 5. Algorytm z nawrotami nadaje się dobrze do modelowania niektórych typów gier, gdzie umozliwia zastosowanie techniki odcinania alfa-beta.

Wady algorytmów z nawrotami 1. Nie wszystkie problemy umożliwiają zastosowanie techniki nawrotów. 2. Ponieważ algorytmy z nawrotami bazują na rekurencji mała liczba wywołań rekurencyjnych ma decydujące znaczenie. Wyeliminowanie jak największej liczby wywołań rekurencyjnych wymaga dodatkowej pracy i czasu. 3. W niektórych przypadkach efektywność algorytmu z nawrotami może być porównywalna jak wyszukiwania wyczerpującego.

Źródła przykładów i rysunków : 1. Aho A.V., Hopcroft J.E., Ullman J.D. : Algorytmy i struktury danych, Helion/Addison-Wesley 2003. 2. Sedgewick R. : Algorithms in C, Addison-Wesley 1990. 3. Wirth N. : Algorytmy + struktury danych = programy, WNT, Warszawa 1989. 4. Wikipedia + strony tematyczne.