Zadanie 1: Piętnastka

Podobne dokumenty
Zadanie 1: Piętnastka - uzupełnienie

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

Wstęp do programowania

Heurystyczne metody przeszukiwania

Heurystyki. Strategie poszukiwań

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

Rozwiązywanie problemów metodą przeszukiwania

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

SZTUCZNA INTELIGENCJA

AiSD zadanie trzecie

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

Metody przeszukiwania

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

dr inż. Jarosław Forenc

Podstawy sztucznej inteligencji

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

Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, Grafy dzielimy na grafy skierowane i nieskierowane:

Programowanie dynamiczne

Programowanie obiektowe

Ogólne wiadomości o grafach

Ćwiczenie 1 Planowanie trasy robota mobilnego w siatce kwadratów pól - Algorytm A

Algorytmy i Struktury Danych

Programowanie obiektowe

Wstęp do programowania. Zastosowania stosów i kolejek. Piotr Chrząstowski-Wachtel

Wstęp do Sztucznej Inteligencji

Zadanie 3: Liczenie winogron

Zaawansowane programowanie

Podstawowe struktury danych

Uniwersytet Zielonogórski Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Sterowania i Systemów Informatycznych

Elementy kognitywistyki II: Sztuczna inteligencja. WYKŁAD III: Problemy agenta

Metody systemowe i decyzyjne w informatyce

Wykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

Sztuczna Inteligencja i Systemy Doradcze

Algorytmiczna teoria grafów

Kilka zagadnień dotyczących Sztucznej inteligencji.

Zaawansowane algorytmy i struktury danych

Algorytm selekcji Hoare a. Łukasz Miemus

Planowanie drogi robota, algorytm A*

Podstawy programowania 2. Przygotował: mgr inż. Tomasz Michno

Podstawy Sztucznej Inteligencji (PSZT)

Badania operacyjne: Wykład Zastosowanie kolorowania grafów w planowaniu produkcji typu no-idle

Maciej Piotr Jankowski

PRZEWODNIK PO PRZEDMIOCIE

dr inŝ. Jarosław Forenc

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

Programowanie obiektowe

LABORATORIUM 2: Przeszukiwanie grafów cz. 2 strategie heurystyczne

Rekurencja. Rekurencja zwana także rekursją jest jedną z najważniejszych metod konstruowania rozwiązań i algorytmów.

Zadania laboratoryjne i projektowe - wersja β

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

. Podstawy Programowania 2. Algorytmy dfs i bfs. Arkadiusz Chrobot. 2 czerwca 2019

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

Optymalizacja ciągła

Elementy kognitywistyki II: Sztuczna inteligencja. WYKŁAD V: Agent wciąż szuka rozwiązania (choć już nie na ślepo)

Algorytm DFS Wprowadzenie teoretyczne. Algorytm DFS Wprowadzenie teoretyczne. Algorytm DFS Animacja. Algorytm DFS Animacja. Notatki. Notatki.

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.

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

Wstęp do programowania

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

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

Digraf o V wierzchołkach posiada V 2 krawędzi, zatem liczba różnych digrafów o V wierzchołkach wynosi 2 VxV

Wstęp do Programowania potok funkcyjny

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

Pakiety i interfejsy. Tomasz Borzyszkowski

ĆWICZENIE 1: Przeszukiwanie grafów strategie heurystyczne

Algorytmy i Struktury Danych. Co dziś? Drzewo decyzyjne. Wykład IV Sortowania cd. Elementarne struktury danych

Dopasowywanie modelu do danych

Instytut Fizyki Politechniki Łódzkiej Laboratorium Metod Analizy Danych Doświadczalnych Ćwiczenie 3 Generator liczb losowych o rozkładzie Rayleigha.


Optymalizacja. Przeszukiwanie lokalne

Architektura komputerów

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

Listy, kolejki, stosy

Wykorzystanie algorytmów mrówkowych w dynamicznym problem

Sieciowe Technologie Mobilne. Laboratorium 2

Sprawozdanie do zadania numer 2

SZTUCZNA INTELIGENCJA

PRZEWODNIK PO PRZEDMIOCIE

Znajdowanie wyjścia z labiryntu

Wykład2,24II2010,str.1 Przeszukiwanie przestrzeni stanów powtórka

Temat: Struktury danych do reprezentacji grafów. Wybrane algorytmy grafowe.

Struktury danych (I): kolejka, stos itp.

Algorytmy wyznaczania centralności w sieci Szymon Szylko

2. Tablice. Tablice jednowymiarowe - wektory. Algorytmy i Struktury Danych

dr inż. Jarosław Forenc

Java Collections Framework

Macierze. Rozdział Działania na macierzach

Wybrane podstawowe rodzaje algorytmów

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

Struktury Danych i Złożoność Obliczeniowa

Schemat programowania dynamicznego (ang. dynamic programming)

METODA SYMPLEKS. Maciej Patan. Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski

9.9 Algorytmy przeglądu

Wyznaczanie strategii w grach

Wtyczka Crop3D. Wstęp. Implementacja. Sprawozdanie z realizacji projektu Bartłomiej Trzewiczek Kraków,

Michał Kazimierz Kowalczyk rok 1, semestr 2 nr albumu indeksu: Algorytmy i struktury danych. Problem połączeń

Systemy operacyjne. Laboratorium 8. Perl find

Tabu Search (Poszukiwanie z zakazami)

Projekt Śnieżna wojna

Transkrypt:

Informatyka, studia dzienne, inż. I st. semestr VI Sztuczna Inteligencja i Systemy Ekspertowe 2010/2011 Prowadzący: mgr Michał Pryczek piątek, 12:00 Data oddania: Ocena: Grzegorz Graczyk 150875 Marek Rogalski 150982 Zadanie 1: Piętnastka 1. Cel Celem zadania było doświadczalne sprawdzenie i ocena różnych strategii przeszukiwania przestrzeni stanów. W ramach zadania należało napisać program rozwiązujący układankę piętnastka. Program realizował zadanie przeszukując przestrzeń stanów z pomocą trzech strategii: przeszukiwania wszerz, przeszukiwania wgłąb, best first search, oraz przeszukiwania wiązką. 2. Wprowadzenie Przeszukiwanie przestrzeni stanów jest jednym z podejść do szukania rozwiązań problemów dla których możliwa jest reprezentacja w postaci zbioru stanów. Jeśli rozważany zbiór stanów określa dodatkowo przejścia między stanami, można do jego przeszukiwania zastosować bardziej systematyczne podejście. W szczególności, możliwe staje się szukanie rozwiązań optymalnych pod kątem odległości od stanu początkowego (liczonej w ilości krawędzi). Kolejną właściwością, która często pojawia się w podobnych zadaniach jest możliwość wprowadzenia pewnej funkcji oceny (kosztu). Obecność takiej funkcji pozwala na konstrukcję algorytmów, które przeszukując przestrzeń stanów skupiają się na stanach obiecujących pod kątem funkcji oceny (minimalizujących koszt). SVN: http://serce.ics.p.lodz.pl/svn/labs/sise/mp_pt1030/alois@591 1

Wszystkie powyższe własności występują w rozwiązywanym przez nas problemie. Aby je sprawdzić zbudowaliśmy program korzystający z następujących strategii: przeszukiwanie wszerz - w pierwszej kolejności stany o najmniejszej odległości od stanu początkowego. Taki model przeszukiwania możemy realizować dodając wszystkich nieodwiedzonych sąsiadów aktualnie odwiedzanego stanu do kolejki, a następnie odwiedzając kolejnego kandydata z kolejki według takiego samego schematu. przeszukiwanie wgłąb - kolejność przeszukiwania, w której przeszukując stany /zagłębiamy się/ w kolejne nieodwiedzone wierzchołki z aktualnie odwiedzanego wierzchołka. Model taki możemy zrealizować w sposób analogiczny do przeszukiwania wszerz, jednak zamiast kolejki, stosując stos. przeszukiwanie /best first/ - kolejność przeszukiwania, w której w pierwszej kolejności odwiedzamy najbardziej obiecujące stany (najniższa wartość funkcji kosztu). Analogicznie do poprzednich przypadków, i ta strategia może zostać zrealizowana za pomocą zbioru wierzchołków oczekujących na przejrzenie. W tym przypadku zbiór ten przybierze postać kolejki priorytetowej. przeszukiwanie wiązką - w tej kolejności przeszukiwania, odwiedzamy w pierwszej kolejności stany o najmniejszym koszcie. Dodając stany do zbioru wierzchołków oczekujących dbamy o to by nie przekroczyć pewnego ograniczenia powyżej którego ignorujemy nowo dodawane stany. 3. Manual Projekt składa się z 3 programów: game, display oraz show. Najprostszym sposobem użycia jest./game params in wczytujący opis planszy i wyświetlający wynik. Pozostałe sposoby użycia to:./display params < in./show - szukanie rozwiązania wyświetlając na żywo aktualnie przeszukiwany stan. (cat in; cat)./show - uruchomienie układanki w wersji interaktywnej. (cat in; cat out)./show 500 - prezentacja rozwiązania zapisanego w pliku out poprzez wykonywanie ruchu co pół sekundy 4. Opis implementacji W implementacji należy wyróżnić dwie struktury: strategię oraz stan. Strategia została zaimplementowana jako klasa abstrakcyjna posiadająca metody Push, Pop oraz metodę pozwalającą pobrać kolejność dodawania następników. Rolą strategii jest przechowanie zbioru stanów oraz pobieranie ich w odpowiedniej kolejności. Struktura stan posiada dwie implementacje - optymalną pod kątem czasu przechowującą stan jako tablicę ze stanami wszystkich pól oraz optymalną 2

pod kątem pamięci przechowującą stan jako numer permutacji odpowiadający danemu stanowi (numer jest ograniczony do 64 bitów, więc ta struktura nadaje się tylko dla mniejszych układanek). Wybór struktury następuje za pomocą flag kompilacji - domyślną strukturą jest optymalna pod kątem czasu. 5. Materiały i metody Doświadczenia wykonaliśmy na zestawie układanek: - czterech losowych układankach 3x3 (porównanie wszystkich metod) - czterech losowych układankach 3x4 (porównanie wszystkich metod) - dziesięciu układankach 4x4 których optymalne rozwiązania są długości od 1 do 16 (porównanie wszystkich metod) - czterech losowych układankach 4x4 (porównanie wszystkich metod) - trzech losowych układankach - 5x5, 6x6, oraz 7x7 (funkcje heurystyczne) 6. Wyniki Poniższa tabelka przedstawia długości rozwiązań dla 5 losowych testów o wymiarach 3x3: Test BFS DFS Heurystyka 1 Heurystyka 2 1 18 88962 46 20 2 18 83374 44 28 3 22 24348 52 40 4 20 21632 34 32 5 25 817 45 47 Ponadto podczas prób zauważono, że BFS nawet w wersji niedeterministycznej zwraca rozwiązanie tej samej długości, zaś DFS o długości losowej. Testy wydajnościowe przeprowadzono dla losowych układanek o różnych rozmiarach: Rozmiar BFS DFS Heurystyka 1 Heurystyka 2 3x3 0m0.116s 0m1.416s 0m0.004s 0m0.004s 3x4 0m0.004s 0m0.004s 4x4 0m0.004s 0m0.008s 5x5 0m0.016s 0m0.276s 6x6 0m0.024s 0m7.868s 7x7 0m0.156s 8x8 0m19.709s Przygotowano także testy dla układanek 4x4 o nielosowych stopniach skomplikowania. Pierwsza kolumna oznacza długość optymalnego rozwiązania, zaś + i - symbolizują powodzenie bądź porażkę algorytmu. 3

Optymalne BFS in BFS out BFS DFS in DFS out DFS 1 3 1 + 3 1 + 2 9 4 + 5 2 + 3 16 7 + 6 3 + 4 28 12 + 62155 31916 + 5 60 26 + 82394 42331 + 6 99 43 + 3640991 1870722-7 400 189 + 3641806 1871138-8 972 460 + 82394 42331 + 9 1758 836 + 3629611 1864756-10 3568 1711 + 3623708 1861674 - Optymalne nn1 in nn1 out nn1 nn2 in nn2 out nn2 1 3 1 + 3 1 + 2 5 2 + 5 2 + 3 6 3 + 6 3 + 4 8 4 + 8 4 + 5 10 5 + 10 5 + 6 11 6 + 11 6 + 7 16 8 + 13 7 + 8 24 11 + 15 8 + 9 470 204 + 16 9 + 10 469 203 + 18 10 + 4

7. Dyskusja Pierwsza seria testów pozawala wyciągnąć wnioski dotyczące optymalności rozwiązań. Rozwiązania uzyskane algorytmem DFS w widoczny sposób odbiegają od wyników uzyskanych innymi algorytmami. Na podstawie posiadanej wiedzy możemy stwierdzić, że rozwiązania uzyskane algorytmem BFS są najoptymalniejszymi istniejącymi rozwiązaniami. W wypadku heurystyk znalezione rozwiązania są tego samego rzędu co rozwiązania najoptymalniejsze - są zaledwie 2 dłuższe. Dowodzi to przeszacowania w użytych heurystykach pozwalając jednak odnajdywać rozwiązania znacznie szybciej. Testy wydajnościowe pokazały, że algorytmy BFS i DFS nie nadają się do rozwiązywania układanek większych niż 3x3. W wypadku układanki 3x4 liczba osiągalnych stanów wynosi 240 milionów co przekraczało możliwości naszego sprzętu badawczego. 5

8. Wnioski Algorytm BFS jako jedyny z badanych znajduje optymalne (najmniej ruchów) rozwiązania. Algorytm DFS znajduje rozwiązania bardzo nieoptymalne tysiące razy dłuższe niż optymalne. Z tego powodu nie nadaje się on do tego rodzaju przeszukiwania stanów. Algorytmy heurystyczne znajdują rozwiązania znacznie szybciej niż algorytmy BFS bądź DFS znajdując jednocześnie rozwiązania zaledwie kilka razy gorsze niż optymalne. Literatura [1] http://theory.stanford.edu/ amitp/gameprogramming/ [2] http://xkcd.com/688/ Na końcu należy obowiązkowo podać cytowaną w sprawozdaniu literaturę, z której grupa korzystała w trakcie prac nad zadaniem (przykład na końcu szablonu) 6