Środowisko programowe do nauki podstawowych algorytmów sztucznej inteligencji
|
|
- Edward Czajkowski
- 7 lat temu
- Przeglądów:
Transkrypt
1 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut Informatyki Rok akademicki 2011/2012 PRACA DYPLOMOWA INŻYNIERSKA Tomasz Szalast Środowisko programowe do nauki podstawowych algorytmów sztucznej inteligencji Opiekun pracy mgr inż. Piotr Parewicz Ocena:... Podpis Przewodniczącego Komisji Egzaminu Dyplomowego
2 Specjalność: Inżynieria Systemów Informatycznych Data urodzenia: Data rozpoczęcia studiów: Życiorys Urodziłem się 15 listopada 1988 r. w Radzyniu Podlaskim w rodzinie nauczycielskiej. Uczęszczałem do szkoły podstawowej nr 1, następnie gimnazjum nr 1, po czym uzyskałem wykształcenie średnie, kończąc w 2007 roku liceum nr 1 w Radzyniu Podlaskim w klasie o profilu matematyczno-fizyczno-informatycznym. W październiku 2007 rozpocząłem studia o kierunku Informatyka na Politechnice Warszawskiej na wydziale Elektroniki i Technik Informacyjnych, rozwijając tym samym swoje zainteresowania z dziedziny technik komputerowych i programowania. EGZAMIN DYPLOMOWY... Podpis studenta Złożył egzamin dyplomowy w dniu r z wynikiem... Ogólny wynik studiów:... Dodatkowe wnioski i uwagi Komisji:......
3 STRESZCZENIE Celem niniejszej pracy dyplomowej było utworzenie zestawu narzędzi oraz opartego na nich zbioru ćwiczeń wspierających naukę i zrozumienie podstawowych metod sztucznej inteligencji. W ramach tego zadania zostały zaimplementowane wybrane algorytmy sztucznej inteligencji oraz odpowiedni interfejs graficzny. Aplikacja udostępnia możliwość testowania algorytmów, eksperymentowania na nich, śledzenie ich wykonywania, a także graficznej wizualizacji przebiegu na wybranych przykładach często poruszanych w tej dziedzinie. Przeznaczeniem pracy jest dostarczenie materiału dydaktycznego stanowiącego wstęp do tematyki sztucznej inteligencji. Słowa kluczowe: sztuczna inteligencja, środowisko do ćwiczeń, algorytmy, ćwiczenia, testowanie, wizualizacja graficzna, śledzenie przebiegu, materiały dydaktyczne THESIS TITLE IN ENGLISH The purpose of this thesis was to create a set of tools and a list of exercises that support training and understanding of basic artificial intelligence methods. The program required to implement common artificial intelligence algorithms and an appropriate graphical interface. The application provides a possibility to test algorithms, experiment over them, trace their execution and demonstrate graphical visualization basing on the most popular examples within this area. The destination of the thesis is to provide didactic materials that are an introduction to the thematic of artificial intelligence. Keywords: artificial intelligence, training environment, algorithms, exercises, testing, graphical visualization, tracing of execution, didactic materials
4 Spis treści 1 Wstęp Cel i zakres pracy Wymagania funkcjonalne Część pierwsza Wybrane algorytmy sztucznej inteligencji Wprowadzenie Sztuczna inteligencja słaba i mocna Przeszukiwanie Przestrzeni Stanów Algorytmy niepoinformowane ( ślepe ) Algorytm Przeszukiwania W głąb ( Depth-First ) Algorytm Przeszukiwania Wszerz ( Breadth-First ) Algorytm Błądzenia Losowego ( Random-Walk ) Algorytmy poinformowane Algorytm Best-First Algorytm A* Algorytm Wspinaczkowy ( Hill-Climbing ) Planowanie sekwencji akcji Zastosowanie algorytmów przeszukiwania przestrzeni stanów Algorytm Means-Ends ( Cele-Środki ) Część druga Środowisko dydaktyczne Przegląd funkcjonalności środowiska Ćwiczenia Ćwiczenie pierwsze Ćwiczenie drugie Ćwiczenie trzecie Ćwiczenie czwarte Ćwiczenie piąte Ćwiczenie szóste Część trzecia - Implementacja Implementacja algorytmów Przeszukiwanie w głąb Przeszukiwanie Wszerz... 40
5 4.1.3 Błądzenie Losowe Best-First strategia zachłanna A* Hill-Climbing Opis Implementacji Algorytmu Means-Ends w różnych wersjach Algorytm Means-Ends : Wersja klasyczna Algorytm Means-Ends : Wersja z regresją celów Algorytm Means-Ends : Wersja z nieukonkretnionymi celami Ogólny zarys implementacji aplikacji Ogólna architektura aplikacji Struktura skryptów języka Prolog w programie Uruchamianie algorytmów Interakcje między Javą a Prologiem w trakcie działania algorytmu Zakończenie Materiały pomocnicze Dodatki Instrukcja obsługi Definiowanie własnej przestrzeni stanów Definiowanie własnej heurystyki Definiowanie stanów początkowego i docelowego Definiowanie stanu docelowego Uruchomienie algorytmu Podmiana heurystyki Podgląd drzewa poszukiwań Graf Planer Puzzle 3x Dodatkowe narzędzia Instrukcja do ćwiczeń Ćwiczenie pierwsze Ćwiczenie drugie Ćwiczenie trzecie Ćwiczenie czwarte Ćwiczenie piąte... 68
6 7.2.6 Ćwiczenie szóste Ręczne dostosowanie aplikacji Dodanie języka Dodanie algorytmu Dodanie funkcji Dodanie tekstu Dodanie ćwiczenia Dodanie własnoręcznie napisanej heurystyki Dodanie własnoręcznie napisanej przestrzeni stanów Dodanie własnoręcznie napisanego zadania... 72
7 1 Wstęp 1.1 Cel i zakres pracy Celem niniejszej pracy dyplomowej było utworzenie zestawu narzędzi oraz opartego na nich zbioru ćwiczeń wspierających naukę i zrozumienie podstawowych metod sztucznej inteligencji. Zakres dydaktyczny zestawu ćwiczeń obejmuje algorytmy implementujące klasyczne, ogólne metody przeszukiwania przestrzeni stanów oraz, jako przykład metod wyspecjalizowanych, algorytmy stosowane do zadania planowania sekwencji akcji. Ćwiczenia są zorganizowane w sekwencję według kryterium wzrastającego stopnia trudności pojęciowej. Ćwiczenia polegają na: zademonstrowaniu przebiegu działania algorytmów na przykładowych wejściowych opisach problemu, ze zwróceniem uwagi (objaśnienia) na główne właściwości przedstawianych algorytmów, obserwacji wpływu rozmiaru dziedziny problemu na efektywność i przebieg algorytmów, porównaniu efektywności różnych algorytmów implementujących określoną metodę, obserwacji przebiegu działania algorytmów dla problemów sformułowanych przez użytkownika. Do każdego algorytmu dobrano sposób wizualizacji przebiegu dostosowany do jego specyfiki. Zapewnienie takiego wsparcia dla dydaktycznych założeń programu ćwiczeń wymagało opracowania interfejsu graficznego dobrze sprzężonego z implementacją algorytmów, cechującego się przejrzystym obrazowaniem poszczególnych kroków działania algorytmów i ich wyników, umożliwiającego łatwą nawigację w środowisku oraz dostosowywanie go do własnych potrzeb. Implementacje algorytmów używane w ćwiczeniach są częściowo zaczerpnięte na poziomie kodu źródłowego z literatury, a częściowo opracowane przez autora pracy z przystosowaniem do zamierzonych celów dydaktycznych.
8 1.2 Wymagania funkcjonalne Uruchamianie algorytmów Niezbędną funkcjonalnością aplikacji jest dostarczenie możliwości uruchamiania różnych algorytmów sztucznej inteligencji. Na wejściu każdego algorytmu powinno być możliwe zdefiniowanie: przestrzeni stanów/problematyki, warunków początkowych oraz celu zadania, a także ewentualnej heurystyki (o ile uruchamiany algorytm tego wymaga). Wynikiem wykonania przebiegu algorytmu powinien być komunikat podający rozwiązanie, bądź też komunikat o jego braku lub błędzie w wykonywaniu (np. w przypadku braku wystarczających zasobów). Pożądane jest włączenie do aplikacji dwóch lub więcej różnych implementacji tego samego algorytmu, w celu umożliwienia użytkownikowi porównania ich skuteczności Wizualizacja drzewa poszukiwań Wizualizacja przebiegu działania powinna mieć najogólniej postać drzewa, którego korzeniem jest stan początkowy na wejściu algorytmu, a pozostałe węzły reprezentują kolejno rozpatrywane stany, przy czym powinno być możliwe odczytanie informacji zawartych w danym węźle. Krawędzie drzewa powinny zawierać informację o kolejności jego ekspansji. Wyznaczone przez algorytm rozwiązanie powinno zostać naniesione na powstałe drzewo Wizualizacja drzewa celów W przypadku metody cele-środki aplikacja powinna posiadać możliwość podejrzenia drzewa celów dla przebiegu działania różnych implementacji algorytmów, które operują na celach planera. Węzły powinny reprezentować zbiór celów, które zostały przekazane na wejście danego kroku algorytmu. Jeśli w danym stanie cele zostały spełnione, powinno to zostać naniesione na graf, poprzez zmianę koloru węzła Śledzenie przebiegu algorytmu W celu lepszego zrozumienia przebiegu algorytmu ważną funkcjonalnością, którą aplikacja powinna dostarczać, jest możliwość śledzenia przebiegu algorytmu. Implementacja algorytmu powinna zawierać możliwość wstrzymania wykonywania przed rozpoczęciem kolejnego kroku algorytmu i kontynuacji po sygnale od użytkownika Pomiar parametrów drzewa poszukiwań/celów Wygenerowane drzewo poszukiwań/celów powinno zostać opisane za pomocą następujących parametrów: szerokość drzewa, głębokość oraz ilość węzłów. W przypadku śledzenia algorytmu parametry powinny opisywać stan drzewa odpowiedni do stanu aktualnej wizualizacji Pomiar czasu wykonania całego algorytmu Istotnym parametrem przy porównywaniu efektywności różnych algorytmów jest czas wykonania dla zadanego przykładu. Aplikacja powinna dostarczać możliwość prezentacji tej wartości po każdym wykonaniu algorytmu Pomiar czasu wykonania pojedynczego kroku algorytmu W przypadku, gdy algorytm został uruchomiony w trybie śledzenia, pomiar czasu powinien być wykonany dla każdego kroku.
9 Zmiana heurystyki w trakcie działania algorytmu W przypadku algorytmów heurystycznych użytkownik powinien mieć wpływ na przebieg algorytmu poprzez udostępnienie mu możliwości zastąpienia aktualnie wykorzystywanej heurystyki przez inną, wybraną przez niego funkcję oceny dla przestrzeni stanów, na której aktualnie operuje algorytm Demonstracja działania algorytmów na grafie w układzie współrzędnych Dobrym przykładem do demonstracji algorytmów przeszukiwania przestrzeni stanów jest graf naniesiony na układ współrzędnych. Przestrzeń stanów reprezentowana jest tym samym przez węzły reprezentujące stany, których parametrami są współrzędne wierzchołka, zaś krawędzie symbolizują możliwe przejścia między stanami, a co za tym idzie określają, które stany są następnikami. Koszt przejścia między stanami jest równy odległości między reprezentowanymi przez nich wierzchołkami. Oprócz wizualizacji grafu powinna istnieć możliwość wskazania dwóch wierzchołków, między którymi zostanie wyznaczona ścieżka według wskazanego algorytmu. Rozwiązanie zostanie odpowiednio zaznaczone na grafie Tworzenie własnych przestrzeni stanów Użytkownikowi powinna zostać zapewniona możliwość definiowania własnej problematyki w postaci przestrzeni stanów. Nowa przestrzeń stanów powinna być określona przez unikalną nazwę oraz parametry najprostszych typów (liczba rzeczywista, słowo, lista) identyfikowanych po unikalnej w skali definicji stanu nazwie. Oprócz formatu samej struktury, przestrzeń stanów powinna również zawierać definicje następników, które muszą być dyskretnym zbiorem bez narzutu na ograniczenie Definiowanie własnych heurystyk Użytkownikowi powinien być udostępniony zestaw narzędzi służący do definiowania nowych heurystyk dla zadanej przestrzeni stanów. Oprócz wskazania odpowiedniej nazwy przestrzeni stanów, dla której ma zostać utworzona heurystyka, powinna istnieć możliwość zdefiniowania różnych wartości wynikowych dla poszczególnych stanów. Do definiowania wartości powinny móc posłużyć wbudowane procedury i opisy stanu początkowego i docelowego Definiowanie własnych danych na wejście algorytmu Testowanie algorytmów powinno przebiegać dla różnych zadań do rozwiązania, dlatego też użytkownikowi powinna zostać zapewniona możliwość definiowania własnych przykładów w postaci par stan początkowy cel, które stanowiłyby dane wejściowe dla algorytmu, na podstawie których zostałoby wyznaczone rozwiązanie (o ile istnieje). Definiowanie tych parametrów powinno bazować na wybranej użytkownika przestrzeni stanów/problematyce i nie powinno wybiegać poza tę dziedzinę Tworzenie danych wejściowych algorytmów dla puzzli 3x3 Ze względu na częste wykorzystanie w przykładach sztucznej inteligencji problemu puzzli 3x3, aplikacja powinna zawierać wsparcie graficzne dla tworzenia takich przykładów w postaci odpowiedniej wizualizacji, w której użytkownik mógłby utworzyć stany początkowy i końcowy poprzez odpowiednie umiejscowienie puzzli na planszy, bez dodatkowego definiowania sytuacji za pomocą tekstu Wizualizacja graficzna problematyki puzzli 3x3 Do wsparcia graficznego przypadku puzzli 3x3 powinna również zaliczać się możliwość wizualizacji wyznaczonego rozwiązania dla tego przykładu. Demonstracja powinna odbywać się na zasadzie
10 przesuwania klocków w obrębie kwadratu podzielonego na 9 równych części, przy czym każdy ruch powinien być wykonany zgodnie z kolejnością wyznaczoną w rozwiązaniu uprzednio uruchomionego algorytmu dla tej tematyki Wizualizacja wykonania planu W ramach problematyki planowania sekwencji akcji w świecie klocków aplikacja powinna dostarczać możliwość wizualizacji przebiegu wyznaczonego planu. Kluczowe w tej demonstracji jest zachowanie kolejności wyznaczonej w rozwiązaniu algorytmu planowania sekwencji akcji Gramatyka wyrażeń przy definiowaniu wartości Przy definiowaniu wyrażeń wykorzystywanych do definiowania własnych przykładów oraz definicji powinna być zapewniona możliwość wykorzystania intuicyjnego zapisu wyrażenia. Tzn. jako argumenty funkcji można przekazywać wynik działania innej funkcji bez konieczności wyliczania zmiennych pośrednich, itp Udostępnienie materiałów dydaktycznych w aplikacji Materiały dydaktyczne do ćwiczeń z zakresu podstawowych metod sztucznej inteligencji powinny być dostępne z poziomu aplikacji w formie tekstu wzbogaconego o grafikę, przy czym pisemna zawartość materiałów powinna w miarę potrzeby charakteryzować się czcionką różnych rozmiarów, koloru i stylu Wybór języka aplikacji Aplikacja jest przeznaczona dla jak największej liczby użytkowników, dlatego też jednym z założeń jest, aby problem bariery językowej nie stanowił na dłuższą metę większej przeszkody. Zatem program powinien udostępniać możliwość zmiany języka tekstu interfejsu graficznego oraz udostępniać możliwość tworzenia ewentualnych modyfikacji mających na celu dodanie nowego języka, bądź też uzupełnienia w brakującego tekstu w danej mowie Dostosowywanie aplikacji do potrzeb użytkownika Przyjęta struktura plików konfiguracyjnych środowiska oraz ich zawartości powinna umożliwiać dostosowywanie aplikacji do potrzeb użytkownika poprzez ręczne dodawanie lub modyfikację danych statycznych (niezmiennych w trakcie działania programu) bez dodatkowej ingerencji w kod źródłowy aplikacji. W skład możliwej do modyfikacji zawartości aplikacji powinny wchodzić teksty wyświetlane w programie, język interfejsu graficznego oraz materiały dydaktyczne Rozbudowa kluczowych funkcjonalności aplikacji Środowisko powinno udostępniać możliwość poszerzania zbioru kluczowych funkcjonalności programu (takich jak algorytmy lub funkcje) z poziomu systemu operacyjnego, np. poprzez dodanie lub modyfikację odpowiednich plików. Celem tej funkcjonalności jest umożliwienie rozbudowy środowiska o kolejne przykłady Przenośność aplikacji między systemami operacyjnymi Jednym z kryteriów wyboru technologii, na których będzie bazować środowisko, powinna być przenośność kodu wykonawczego programu między systemami operacyjnymi. Wykorzystane technologie mogą wymagać osobnej instalacji i konfiguracji ich środowisk wykonawczych.
11 2 Część pierwsza Wybrane algorytmy sztucznej inteligencji 2.1 Wprowadzenie Podstawowymi zagadnieniami dla metod sztucznej inteligencji są: reprezentacja wiedzy o dziedzinie problemu, poszukiwanie rozwiązań w dziedzinie problemu. Zakres dydaktyczny opracowanego w ramach tej pracy środowiska do ćwiczeń został zawężony do tak zwanych symbolicznych metod sztucznej inteligencji. Specyfika tej kategorii metod polega na reprezentacji wiedzy o obiektach i związkach z dziedziny problemu w postaci struktur danych symbolicznych. W konsekwencji metody poszukiwania rozwiązań na poziomie implementacyjnym polegają na przetwarzaniu struktur symboli. Bardzo istotną z punktu widzenia użytkowego cechą podstawowych metod poszukiwania rozwiązań jest w pewnym uproszczeniu zastąpienie intuicji opartej na wiedzy z dziedziny problemu, jaką stosuje człowiek, masywnym przeszukiwaniem przestrzeni potencjalnych rozwiązań. Konsekwencją zastosowania takiego podejścia jest zasadniczy dla tych metod problem eksplozji kombinatorycznej.
12 2.2 Sztuczna inteligencja słaba i mocna Głównym problemem, z jakim napotyka się każda próba wdrożenia metod sztucznej inteligencji jest zapotrzebowanie na zasoby, które wraz ze złożonością dziedziny problemu podlegającego analizie, rosną do niebotycznych rozmiarów, a każda dodatkowa komplikacja dziedziny problemu może znacząco pogorszyć efektywność używanych algorytmów. Dlatego główną motywacją dla poszukiwania nowych metod i modyfikowania już znanych jest często przeciwdziałanie eksplozji kombinatorycznej, a w konsekwencji nadmiernej złożoności pamięciowej i czasochłonności. Przyjął się podział metod na słabe i mocne, przy czym pod tymi pojęciami kryje się dość ogólna klasyfikacja ze względu na efektywność algorytmu. W myśl zasady co jest od wszystkiego, to jest do niczego, jednym z czynników obniżających efektywność algorytmów jest ich uniwersalność. Zatem możliwym sposobem uzyskania metody o lepszej wydajności bywa często wyspecjalizowanie jej do konkretnej problematyki. Pojęcie mocnych metod sztucznej inteligencji obejmuje algorytmy ukierunkowane na konkretną dziedzinę problemu ich działanie raczej nie nadaje się do poszukiwania rozwiązania w dziedzinie spoza wejściowej tematyki. Owocem takiego podejścia są na przykład algorytmy oparte na metodzie celeśrodki, który znajdują zastosowanie przy planowaniu sekwencji akcji, gdzie koncepcja poszukiwania rozwiązania jest dostosowana do charakterystycznych dla planowania operacji. Natomiast pojęcie metod słabych obejmuje klasyczne ogólne metody przeszukiwania przestrzeni rozwiązań niezależne od dziedziny problemu. W konsekwencji przyjętych założeń wykreowała się również bardziej filozoficzna interpretacja niniejszego podziału, w której to punktem odniesienia stała się inteligencja w pierwotnym tego słowa znaczeniu. Pod pojęciem mocnych algorytmów sztucznej inteligencji, zaczęto rozumieć te metody, których działanie w większym stopniu było zbliżone do funkcjonowania ludzkiego mózgu, natomiast jako słaba sztuczna inteligencja była rozumiana koncepcja wyznaczania rozwiązania metodami ogólnie mówiąc siłowymi (brute force).
13 2.3 Przeszukiwanie Przestrzeni Stanów W obszarze słabych metod sztucznej inteligencji jednym z kluczowych zagadnień jest problematyka przeszukiwania przestrzeni stanów. Jako że otaczający nas świat rzeczywisty jest swego rodzaju zbiorem stanów, które pod wpływem zjawisk naturalnych, działania człowieka a także innych czynników ulega ciągłym zmianom, tak też sztuczna inteligencja często musi rozpatrywać swoją dziedzinę jako swoistą przestrzeń stanów, które również ulegają wpływowi zarówno czynników zewnętrznych, jak też na skutek akcji wykonywanych przez agenta wyposażonego w tę sztuczną inteligencję. Zadaną przestrzeń stanów wyznaczają fakty, stany, możliwości operacji na stanach oraz opisy sytuacji. Relacja następnika, występująca między stanami, określa w przestrzeni stanów strukturę typu graf. W grafie tym węzłami są poszczególne stany, a krawędzie reprezentują poszczególne pary należące do relacji następnika. Jako że przejście między stanami wymaga wykonania pewnej akcji, krawędź może mieć przypisany pewien koszt. Idea przeszukiwania przestrzeni stanów polega na znalezieniu drogi między wskazanym stanem początkowym a stanem, w którym będą spełnione zadane cele. W ten sposób wyznaczone zostają operacje, jakie należy przedsięwziąć, by z danej sytuacji wejściowej osiągnąć cele. Jako że algorytm bierze swój początek w pojedynczym stanie, a przeszukiwanie opiera się na jego potomkach, w efekcie rozpatrzone stany można powiązać w drzewo o korzeniu znajdującym się w stanie startowym. Opracowano różne strategie przeszukiwania przestrzeni stanów, których efektywność ocenia się przede wszystkim według następujących kryteriów: zupełność czy dany algorytm gwarantuje znalezienie rozwiązania, o ile ono istnieje, złożoność czasowa jak czas wykonania algorytmu zależy od rozmiaru przeszukiwanej przestrzeni stanów, złożoność pamięciowa jak duża przestrzeń pamięci potrzebna jest do wyznaczenia rozwiązania, tzn. jak wiele węzłów algorytm musi magazynować w trakcie swojego działania, optymalność czy pierwsze wyznaczone rozwiązanie jest najlepsze z możliwych np. pod kątem kosztu osiągnięcia celu. Złożoności czasową i pamięciową można zdefiniować za pomocą następujących parametrów: b maksymalne rozgałęzienie drzewa przeszukiwania przestrzeni stanów, d głębokość rozwiązania o najmniejszym koszcie, m maksymalna głębokość/wysokość drzewa. Główną klasyfikacją strategii przeszukiwania przestrzeni stanów jest podział na algorytmy niepoinformowane ( ślepe ) oraz poinformowane (heurystyczne).
14 2.4 Algorytmy niepoinformowane ( ślepe ) Tytułowe niepoinformowanie polega na tym, że algorytmy te nie dysponują żadną wiedzą, która w osiągniętym w danym kroku stanie pozwalałaby przewidzieć, która z możliwych ścieżek wychodzących z tego stanu doprowadzi do optymalnego rozwiązania. W związku z tym algorytmy niepoinformowane nie posiadają żadnych wskazówek skracających czas wykonania zadania Algorytm Przeszukiwania W głąb ( Depth-First ) Algorytm przeszukiwania w głąb realizuje dość prostą koncepcję przeszukiwania przestrzeni stanów. Próba odnalezienia rozwiązania polega na stopniowym schodzeniu w dół drzewa poszukiwań, rozpatrując na każdym etapie drzewa pojedynczy węzeł. W razie braku możliwości przedłużenia ścieżki z danego węzła (brak następników), bądź w przypadku osiągnięcia zadanej maksymalnej głębokości, algorytm wykonuje nawrót do wcześniejszego węzła, kontynuując swoje działanie z tego poziomu dla kolejnego następnika tego węzła. Rysunek 1 - Kolejność ekspansji drzewa poszukiwań dla algorytmu depth-first Przeszukiwanie w głąb nie gwarantuje odnalezienia optymalnego rozwiązania. Strategia ta staje się dość efektywna w momencie, gdy w przestrzeni stanów rozwiązania są gęsto rozlokowane, a sama przestrzeń jest ograniczona. Algorytm nie nadaje się do przeszukiwania nieskończonych przestrzeni stanów, ponieważ gdy na budowanej ścieżce nie ma rozwiązania, algorytm nie zakończy swojego działania. W takich sytuacjach dobrą praktyką jest nadanie ograniczenia na maksymalną głębokość poszukiwań, jednakże ryzykuje się przy tym, że rozwiązanie nie zostanie znalezione Algorytm Przeszukiwania Wszerz ( Breadth-First ) Algorytm przeszukiwania wszerz jest jedną z najprostszych metod przeszukiwania przestrzeni stanów. Strategia ta umożliwia odnalezienie najkrótszej drogi ze stanu startowego do stanu docelowego pod względem ilości stanów pośrednich, jednak odbywa się to kosztem złożoności obliczeniowej i pamięciowej. Dodatkową wadą algorytmu jest to, że w przypadku, gdy przejścia między stanami charakteryzują się różnymi kosztami, wyznaczona ścieżka wcale nie musi oznaczać najtańszej. W pierwszym kroku graf, składający się tylko ze stanu początkowego jest poszerzany o wszystkie stany będące jego następnikami, tworząc w ten sposób pierwszy poziom. W następnym kroku wszystkie stany z pierwszego poziomu są sprawdzane pod kątem warunków zakończenia algorytmu, innymi słowy czy wśród nich znajduje się stan docelowy. Jeśli żaden ze stanów na tym poziomie nie
15 spełnia wymogów, algorytm tworzy kolejny poziom, składający się z następników wszystkich stanów z poprzedniego poziomu. Procedura ta jest powtarzana dla każdego nowopowstałego stopnia (d) grafu, dopóki algorytm nie natrafi na stan spełniający wymogi zakończenia algorytmu, przy czym każdy kolejny stopień (d+1) składa się z następników wszystkich węzłów poprzedniego poziomu (d). Rysunek 2 - Kolejność ekspansji drzewa poszukiwań dla algorytmu breadth-first Algorytm Błądzenia Losowego ( Random-Walk ) Algorytm błądzenia losowego działa w myśl zasady: spróbujmy szczęścia, by szybciej osiągnąć cel. Cechą charakterystyczną tej metody jest losowy wybór stanu do sprawdzenia w danym kroku działania, przy czym decyzja podejmowana jest nad zbiorem następników dotychczas sprawdzonych stanów. Zastosowanie losowości w algorytmie wprowadza niezerową szansę na wyznaczenie optymalnego rozwiązania w stosunkowo krótkim czasie, jednakże w ten sposób istnieje pewne prawdopodobieństwo, że otrzymane rozwiązanie nie będzie optymalne. Podobnie jak w poprzednich algorytmach ekspansja drzewa poszukiwań przebiega w oparciu o następniki sprawdzanego stanu. W przypadku metody błądzenia losowego do weryfikacji i ewentualnej rozbudowy zostaje wybrany losowo jeden węzeł będący liściem aktualnego drzewa poszukiwań.
16 2.5 Algorytmy poinformowane Opisane dotychczas metody przeszukiwania przestrzeni stanów dla dużych przestrzeni są mało efektywne. Lepsze wyniki można osiągnąć w poinformowanych algorytmach przeszukiwania przestrzeni stanów, których koncepcja jest oparta na przypisaniu węzłom drzewa poszukiwań wartości oceniającej szacowaną jakość rozwiązania. W ten sposób w trakcie przeszukiwania przestrzeni stanów, do każdego węzła jest dołączona podpowiedź dla algorytmu Algorytm Best-First Algorytm best-first można określić jako rozszerzenie metody breadth-first (przeszukiwania wszerz). Obie metody przetwarzają zbiór węzłów kandydujących do rozbudowy drzewa. Podstawową cechą algorytmu best-first, która odróżnia go od przeszukiwania wszerz, jest to, że kolejność rozpatrywania stanów ze zbioru kandydatów, jak też ich ekspansji uwarunkowane są przez funkcję oceny stanu, zwaną inaczej heurystyką. W prostej wersji tej metody funkcja oceny stanu może być oparta na przewidywanym dalszym koszcie rozwiązania. W przypadku breadth-first każdy stan z listy kandydatów jest kolejno rozpatrywany i ekspandowany, przez co rozpatrywane są stany o dotychczasowej najkrótszej ścieżce pod względem ilości stanów pośrednich. W przypadku algorytmu best-first uzyskane rozwiązanie może być optymalne tylko przy zastosowaniu odpowiedniej heurystyki: jeśli funkcja oceny została źle dobrana, rozwiązanie może okazać się dalekie od perfekcji. Tym samym w każdym kolejnym kroku, drzewo poszukiwań jest rozbudowywane od najbardziej obiecującego w danym momencie węzła z listy kandydatów tzn. realizuje się podejście najpierw najlepszy ( best-first ) Algorytm A* Algorytm A* stanowi specyficzną, a zarazem bardzo praktyczną, wersję metody best-first. Podstawową jego cechą jest to, że funkcja oceny jest oparta nie tylko na koszcie dotychczasowej ścieżki, lecz również na przewidywanym dalszym koszcie osiągnięcia celu. W algorytmie A* to właśnie ten sumaryczny koszt jest wyznacznikiem, który kolejny stan ma zostać rozpatrzony. Wartość przewidywanego całkowitego kosztu dla stanu X wynosi więc: F(X) = G(X) + H(X) F(X) przewidywana wartość całkowitego kosztu odnalezienia stanu docelowego, w momencie rozpatrywania stanu X G(X) koszt, jaki został poniesiony, by ze stanu początkowego znaleźć się w stanie X H(X) wartość heurystyki, czyli szacowanego dalszego kosztu, dla stanu X Jednym z zastosowań algorytmu A* jest problem komiwojażera. W tym przypadku, miasta reprezentowane są jako stany algorytmu, zaś kosztami przejść między stanami są odległości między poszczególnymi miastami. Wtedy najczęściej stosowaną heurystyką jest funkcja wyznaczająca najbliższą fizyczną odległość między miastem, w którym podróżnik znajduje się w danym momencie, a docelową miejscowością. W podobny sposób intuicyjnie człowiek wybiera sobie drogę do celu na mapie poprzez rozpatrywanie kolejnych punktów będących coraz bliżej celu Algorytm Wspinaczkowy ( Hill-Climbing ) Zadaniem algorytmu wspinaczkowego jest wyznaczenie ścieżki ze stanu początkowego do docelowego poprzez badanie kolejnych najbardziej obiecujących sąsiadów. Algorytm hill-climbing stanowi tym samym poinformowaną wersję metody błądzenia losowego. Należy zaznaczyć, że
17 algorytm nie wykonuje nawrotów w razie niepowodzenia, lecz wyznacza najbliższe lokalne maksimum funkcji oceny, które określa jak bardzo dany stan jest obiecujący. W ten sposób algorytm nie gwarantuje uzyskania optymalnej ścieżki, ani nawet wyznaczenia rozwiązania, nawet jeśli ono istnieje, jednakże odpowiednio dobrana heurystyka może znacząco poprawić efektywność metody poprzez dokładniejsze naprowadzenie działania algorytmu w kierunku zadanego celu. h(x) Wyznaczone rozwiązanie Właściwe rozwiązanie Xn+1 = s(xn) X1 X2 X3 X4 X5 X6 X7 X Rysunek 3 - Problem lokalnych maksimów dla algorytmu wspinaczkowego s(x) następnik stanu X; H(X) wartość heurystyki dla stanu X
18 2.6 Planowanie sekwencji akcji Jedną z dziedzin sztucznej inteligencji jest planowanie sekwencji akcji. Planowanie samo w sobie polega na wyznaczeniu uporządkowanej sekwencji czynności, których wykonanie pozwoli osiągnąć zadane cele, wyznaczając ewentualne cele pośrednie, których realizacja jest niezbędna do pozytywnego wykonania algorytmu. Podstawowym problemem planowania jest złożoność obliczeniowa, spowodowana obszernym zbiorem akcji, które mogą zostać wykonane w danym stanie. Pozornie proste zadanie, jak np. ustawienie kilku klocków w odpowiednich miejscach może dostarczać tysięcy sytuacji do rozpatrzenia, chociaż w rzeczywistości na skutek lat doświadczenia, ludzki mózg jest w stanie sobie poradzić z takim problemem bez większych przeszkód. W celu zawężenia przestrzeni poszukiwań niezbędne było stworzenie odpowiednich algorytmów, których dziedzina nie będzie opierać się wyłącznie na rozpatrywaniu kolejnych stanów. W celu wyraźniejszego przedstawienia zagadnienia planowania sekwencji akcji, będzie ono w tej pracy oparte o problematykę świata klocków, którego dziedziną są nieruchome podstawy, na których stoją klocki, które również mogą być postawione na sobie nawzajem, zaś akcje są reprezentowane, jako przeniesienia pojedynczych klocków z jednego miejsca na drugie. Zadanie w takiej sytuacji polega na ustaleniu kolejności konkretnych ruchów, które należy wykonać, aby począwszy od zadanego stanu startowego poprzestawiać klocki do takiego stanu, w którym zadany zbiór celów jest spełniony, tzn. każdy pojedynczy cel został osiągnięty. Każdy stan świata klocków można opisać za pomocą dwóch predykatów: Clear(x) oznacza, że na obiekcie x nic nie stoi, x może być w tym przypadku zarówno klockiem jak i miejscem na podłożu, On(x, y) oznacza, że klocek x znajduje się na obiekcie y, którym może być zarówno inny klocek jak i podłoże Natomiast każdą akcję można opisać odwołując się do predykatu Move (akcja określa przeniesienie pojedynczego klocka): przenieś klocek x z miejsca y na miejsce z Aby akcja mogła zostać wykonana, muszą być spełnione następujące warunki: Innymi słowy aby móc przenieść klocek x z miejsca y na pozycję z, musi on w danym stanie znajdować się na miejscu y oraz nic innego nie może na nim stać, podczas gdy miejsce docelowe z musi być puste. Wszystkie obiekty x, y oraz z muszą być od siebie różne. Jako że po przeniesieniu klocka, nie tylko miejsce docelowe staje się zapełnione, ale także zwolni się pozycja, na której przedmiot uprzednio się znajdował, po wykonaniu akcji Move(x, y, z) w konkretnym stanie świata klocków, przestanie on być opisywany przez fakty On(x, y) oraz Clear(z), a do jego opisu zostaną dodane jeszcze dwa nowe fakty: On(x, z) oraz Clear(y). Clear(X) dalej pozostanie częścią definiującą nowy stan. Dla każdego klocka, na którym nic nie stoi, można wykonać tyle akcji, ile jest miejsc, na które można go postawić (czyli liczba podstaw minus jeden, jako że ten klocek w danym stanie już na czymś stoi).
19 Zatem w świecie składającym się z n klocków i m podstaw liczba następników dla jednego stanu może mieć wartość z przedziału. Przedział ten bierze się z dwóch skrajnych sytuacji: pierwsza w danym stanie można przenieść tylko jeden klocek (wszystkie stoją w jednej kolumnie), druga każdy klocek może zostać przemieszczony (, wszystkie klocki stoją na podstawkach). Ogólną łączną liczbę możliwych stanów (zakładając, że sytuacja początkowa umożliwia osiągnięcie wszystkich możliwych kombinacji) można opisać wzorem: W ten sposób gołym okiem widać, że wraz ze wzrostem wartości n i m przestrzeń stanów rozrasta się do niebotycznych rozmiarów. Można zatem twierdzić, że główną przeszkodą, z jaką spotyka się problematyka planowania jest rozmiar przestrzeni poszukiwań.
20 2.6.1 Zastosowanie algorytmów przeszukiwania przestrzeni stanów Jako że planowanie polega również na ustaleniu uporządkowanej listy stanów pośrednich między stanem początkowym a końcowym, czyli de facto jest zagadnieniem z dziedziny przeszukiwania przestrzeni stanów, można pokusić się o stawienia czoła temu problemowi stosując dotychczas poznane, klasyczne algorytmy przeszukiwania przestrzeni stanów. Planowanie sekwencji akcji wymaga ustalenia sposobu wyznaczania następników konkretnego stanu, co jest nieodłączną cechą przeszukiwania przestrzeni stanów. Aby pozyskać zbiór stanów następujących po jednym konkretnym stanie, należy wyznaczyć wszystkie możliwe akcje, które mogą zostać w nim wykonane. 4. Przykładowe następniki dla stanu składającego się z trzech miejsc na podłożu oraz trzech klocków Jednym z zabezpieczeń przed eksplozją kombinatoryczną i/lub złożonością pamięciową jest wykorzystanie odpowiedniej heurystyki dla algorytmów poinformowanych. Jednak nie posiadając odpowiedniej funkcji oceny - przy czym wyznaczenie uniwersalnej heurystyki nie jest prostym zadaniem - zastosowanie klasycznych algorytmów przeszukiwania przestrzeni stanów jest nieopłacalne dla świata klocków większych rozmiarów.
21 2.6.2 Algorytm Means-Ends ( Cele-Środki ) Próbą zawężenia przestrzeni poszukiwań jest algorytm means-ends. Metoda Cele-Środki działa w nieco inny sposób, niż dotychczas przedstawione algorytmy, które poszukiwania rozpoczynają w zadanym stanie początkowym a wyznaczając kolejne akcje usiłują dotrzeć do celu. W tym przypadku algorytm rozpoczyna działanie od zadanego zbioru celów. Obserwując, jak człowiek próbuje zaplanować swoje czynności, by osiągnąć jakiś wyznaczony przez siebie cel, zapewne stwierdzimy, że w większości przypadków podejmowane decyzje w pierwszej kolejności bazowały na planach znajdujących się bliżej celu. Zatem algorytm means-ends, jako metoda koncentrująca się na celach i dobierająca do nich stan, z którego te cele są łatwo osiągalne, wydaje się być bardziej intuicyjna niż dotychczas poznane metody biorące początek w stanie inicjalnym. Jako że cel jest osiągany w wyniku pewnych akcji wykonanych nad jakimś stanem, algorytm w każdym kroku swojego działania usiłuje wyznaczyć pojedynczą akcję realizującą cel. Niekiedy może się również zdarzyć, że jedna akcja może zrealizować kilka celów. Jednakże żeby jakaś operacja mogła zostać wykonana, zawsze muszą zostać spełnione określone warunki, więc po wyznaczeniu akcji realizującej cel, pierwotny zbiór celów do zrealizowania zostaje zastąpiony przez nowe cele. Ze zbioru celów jednocześnie ubywają te, które są realizowane przez daną akcję. O ile ciągłe modyfikacje zbioru celów mogą wydawać się zniechęcające, to przy przeanalizowaniu określonej liczby akcji wstecz, powinno dojść do sytuacji, w której wszystkie aktualne cele zostały spełnione w stanie początkowym. Algorytm w ten sposób kontynuuje działanie dla pozostałych niespełnionych celów ze zbioru, wyznaczając nowe akcje a w konsekwencji też warunki przeprowadzenia tych czynności. Algorytm kończy działanie w momencie, gdy wszystkie wyznaczone cele są spełnione w zadanym stanie wejściowym rozwiązaniem jest uporządkowana lista wyznaczonych dotąd akcji.
22 - kierunek modyfikacji zbioru celów - wyznaczona sekwencja akcji Y Z Y Z E - element składowy aktualnego stanu A Z A - cel wybrany do realizacji - cel jeszcze nie rozpatrzony X X Z E - wyznaczenie nowych celów B C A B E A Z C Z B C A B E A D C D Wyznaczone cele są spełnione w zadanym stanie wejściowym Rysunek 5 - Przykładowa wizualizacja koncepcji cele-środki
23 3 Część druga Środowisko dydaktyczne 3.1 Przegląd funkcjonalności środowiska Uruchamianie algorytmów Program udostępnia możliwość uruchomienia algorytmu z parametrami wskazanymi przez użytkownika. W gestii osoby korzystającej z programu pozostaje wskazanie algorytmu, który ma zostać wykonany, dziedziny problemu/ przestrzeni stanów, parametrów wejściowych (stanu początkowego i celu) oraz ewentualnie heurystyki, która jest wymagana tylko w przypadku algorytmów poinformowanych. Po uruchomieniu algorytmu przebieg jest demonstrowany w postaci drzewa poszukiwań. Wybór algorytmu warunkuje możliwości wyboru dziedziny problemu (np. algorytm cele-środki może zostać uruchomiony tylko dla świata klocków), a ta z kolei uzależnia od siebie dostępne zadania i heurystyki zależności te zostały uwzględnione poprzez zastosowanie filtrów wyboru. Śledzenie przebiegu algorytmów Aplikacja umożliwia uruchomienie algorytmu z funkcją oczekiwania na reakcję użytkownika. Algorytm przebiega zgodnie ze swoją strategią, jednak po każdym kroku, następuje wizualizacja dotychczasowego przejścia, a także, o ile nie zostało właśnie wyznaczone rozwiązanie, wykonanie algorytmu przechodzi w stan oczekiwania, przy czym zostaje podany czas, w jakim dany krok został wykonany. Wizualizacja działania algorytmu aktualizowana jest na bieżąco wraz z przebiegiem algorytmu. Generowanie drzewa poszukiwań dla przebiegu algorytmu Aplikacja umożliwia demonstrację przebiegu algorytmu w postaci drzewa poszukiwań. Drzewo jest kreślone za pomocą węzłów koloru żółtego oznaczających stany sprawdzone oraz krawędzi ponumerowanych zgodnie z kolejnością ekspansji drzewa. Zawartość każdego węzła można podejrzeć przez wskazanie na niego myszką - ukazują się wtedy wartości parametrów danego stanu. Oprócz samej wizualizacji drzewa interfejs graficzny przedstawia również jego parametry: szerokość, wysokość oraz ilość węzłów. Rozwiązanie algorytmu (o ile zostało wyznaczone) zostaje naniesione na rysunek drzewa przez zaznaczenie kolorem zielonym węzłów wchodzących w skład rozwiązania. Ze względu na niską czytelność w przypadku, gdy na skutek działania algorytmu zostało wygenerowane drzewo poszukiwań dużych rozmiarów (szerokość lub wysokość są większe od 70), wizualizowana jest tylko ścieżka prowadzącą do rozwiązania. Oznacza to, że drzewo składa się wyłącznie z węzłów uprzednio zaznaczonych kolorem zielonym, ale krawędzie zachowują swoje etykiety zawierające numer w kolejności wyznaczenia stanu, do którego prowadzą. Podobna sytuacja ma miejsce dla algorytmów typu means-ends, dla których drzewo poszukiwań sprowadza się jedynie do nakreślenia samego rozwiązania, które jest sekwencją stanów otrzymanej przez wykonanie wybranej sekwencji akcji na stanie początkowym.
24 Generowanie drzewa celów dla algorytmów typu means-ends Przebieg algorytmu means-ends jest napędzany kolejnymi zbiorami celów na wejściu kolejnych kroków algorytmu. Z tego powodu wizualizacja przebiegu algorytmów typu means-ends opiera się na demonstracji drzewa celów. Drzewo celów przedstawione jest podobnie jak drzewo poszukiwań, z tą różnicą, że węzły nie reprezentują poszczególnych stanów, lecz zbiory celów na wejściu kolejnych rekurencyjnych kroków algorytmu. Cele powiązane z węzłem można podejrzeć wskazując dany węzeł kursorem myszy - ukazuje się wtedy lista celów lub też w przypadku implementacji algorytmu means-ends z nieukonkretnionymi celami tabela zawierająca listę celów oraz listę warunków odpowiadających każdemu celowi. W przypadku drzewa celów kolor zielony nie symbolizuje wyłącznie rozwiązania, lecz również sytuację, gdy cele w danym kroku algorytmu zostają spełnione w stanie wejściowym. Właściwość ta jest szczególnie użyteczna w przypadku śledzenia przebiegu algorytmu krok po kroku. Krawędzie drzewa celów nie są ponumerowane. Kolejność rozbudowy jest w przybliżeniu podobna jak w przypadku rozbudowy drzewa poszukiwań dla strategii przeszukiwania wszerz. Dlatego też krawędzie drzewa celów są oznaczone jedynie za pomocą etykiet sugerujących etap planowania (przydatne w momencie rozróżnienia na wyznaczanie pre-planu i post-planu). Definiowanie przestrzeni stanów W ramach ćwiczeń i prób własnych użytkownikowi została udostępniona możliwość utworzenia własnej przestrzeni stanów. Przestrzeń stanów tworzona jest na podstawie dwóch modułów: definicji stanu składającej się z nazwanych parametrów o określonych typach (słowo, liczba, lista) oraz listy następników. Następnik definiuje się podając: warunki, które definiują relację następnika, wartości atrybutów następnego (przypisane odpowiednim parametrom określonym wcześniej w definicji) oraz koszt przejścia między stanami. Wartości atrybutów, składniki warunków oraz koszt nie muszą być wartościami stałymi. Mogą one być przedstawione jako wyrażenia zależne od wartości atrybutów stanu początkowego, końcowego, aktualnego, wyników funkcji itp. Definiowanie zadań na wejściu algorytmów Użytkownik może uruchamiać algorytmy dla problemów, zdefiniowanych już w aplikacji, a także ma możliwość utworzenia własnych danych wejściowych stanowiących zadanie, dla którego mógłby zostać uruchomiony algorytm. Utworzenie zadania wymaga podania stanu początkowego i stanu końcowego lub celów, które mają być w stanie końcowym spełnione. Każdy z tych stanów wymaga zdefiniowania wartości jego parametrów. Podobnie jak w przypadku tworzenia przestrzeni stanów, parametry nie muszą być wyłącznie stałymi, lecz mogą być zdefiniowane za pomocą bardziej złożonych wyrażeń. Definiowanie heurystyki Dla algorytmów poinformowanych użytkownik może zdefiniować heurystykę. Heurystyczna funkcja wspomagająca wybór kolejnego kroku algorytmu jest definiowana dla wskazanej przestrzeni stanów. Zarówno warunki, jak i funkcja heurystyczna mogą mieć postać dość złożonych wyrażeń.
25 Gramatyka wyrażeń Wyrażenia definiujące parametry przestrzeni stanów oraz funkcje heurystyczne będą w efekcie końcowym zapisane w postaci kodu źródłowego języka Prolog, gdyż umożliwia to dokompilowanie ich bez konieczności ponownego uruchomienia programu. Jednakże ze względu na nieintuicyjne dla przewidywanego użytkownika sposób wprowadzania wyrażeń do programu prologowego, użytkownik ma do dyspozycji gramatykę, która przypomina powszechnie znaną formę zapisu wyrażeń. Graficzna reprezentacja puzzli 3x3 Jednym z najczęściej wykorzystywanych przykładów do ilustracji przeszukiwania przestrzeni stanów, jest problem puzzli 3x3. Specjalnie dla tego problemu opracowano odpowiednią wizualizację graficzną. Dlatego też, jeśli dla puzzli został uruchomiany algorytm, to w wygenerowanym drzewie poszukiwań podgląd węzłów będzie skutkował ukazaniem się grafiki reprezentującej stan reprezentowany przez ten węzeł. Dodatkowo, jeśli dla tej przestrzeni stanów zostało wyznaczone rozwiązanie algorytmu, istnieje możliwość obejrzenia prostej animacji, ukazującej zmianę położeń elementów puzzli na planszy zgodnie z wyznaczoną kolejnością. Wsparcie dla tworzenia zadań dla puzzli 3x3 Ze względu na dość skomplikowany format reprezentacji pojedynczego stanu puzzli 3x3, użytkownikowi został udostępniony interfejs do manualnego definiowania pary stan początkowy/docelowy, stanowiącej zadanie na wejściu algorytmów przeszukiwania przestrzeni stanów. Użytkownik zamiast definiować współrzędne każdego klocka za pomocą liczb, może sformułować zadanie przez rozmieszczenie elementów puzzli w dowolnych polach planszy. Graficzna reprezentacja świata klocków Problematyka planowania sekwencji akcji najczęściej jest ilustrowana na przykładzie świata klocków. Dlatego też aplikacja została wyposażona w możliwość graficznego podglądu stanów takiego przykładowego świata. Wizualizacja polega na interpretacji predykatów opisujących świat klocków i na jej podstawie ułożenia obiektów graficznych w odpowiedniej formie i porządku, aby użytkownikowi została unaoczniona aktualna sytuacja zawarta w danym stanie. Podobnie jak w przypadku puzzli 3x3 graficzna wizualizacja świata klocków znajduje zastosowanie zarówno przy podglądzie drzewa poszukiwań, jak też przy prostej animacji demonstrującej rozwiązanie znalezione przez planer. Wsparcie dla tworzenia zadań dla planera Dla problematyki planowania sekwencji akcji, w której głównym przykładem jest tzw. świat klocków, powinna zostać zapewniona możliwość prostego definiowania stanów. Ponieważ każdy stan w tej dziedzinie problemu jest zdefiniowany w języku rachunku predykatów, stan początkowy i cele powinny być również zapisane w tym języku, przy czym wpisywany tekst podlega weryfikacji, pod kątem poprawności semantycznej. Ponadto definiowanie stanu początkowego jest wspomagane wizualizacją graficzną. Reprezentacja graficzna stanu początkowego jest uaktualniana na bieżąco w trakcie wpisywania listy predykatów opisujących zadany świat. Generowanie spójnego grafu losowego Demonstracje działania algorytmów powinny przebiegać na różnych przykładach grafu, aby niepotrzebnie nie ograniczać możliwej różnorodności przykładów. W tym celu aplikacja została wyposażona w możliwość wygenerowania grafu losowego, przy czym użytkownik ma możliwość
26 ustawienia parametrów określających liczbę węzłów grafu oraz zagęszczenie krawędzi (wartość parametru określającego prawdopodobieństwo istnienia krawędzi między dwoma wierzchołkami). Kluczowa jest spójność wygenerowanego grafu, dzięki czemu wyznaczenie ścieżki między dowolnymi jego węzłami jest zawsze możliwe. Wizualizacja grafu i operacje na nim Po wygenerowaniu grafu możliwe jest wyświetlenie go na ekranie w postaci zbioru punktów połączonych odcinkami. W każdym momencie istnieje możliwość zaznaczenia dwóch dowolnych węzłów, w celu wyznaczenia ścieżki między nimi. Po dokonaniu wyboru, użytkownikowi przestawiona zostaje lista dostępnych algorytmów, które można zastosować do zaznaczonego przypadku. Wyznaczona ścieżka zostaje naniesiona na graf poprzez wyróżnienie odpowiednich krawędzi grafu kolorem czerwonym. W przypadku, gdy wybrany do znalezienia ścieżki algorytm należy do klasy poinformowanych, zostaje mu przypisana domyślna dla grafu heurystyka, która jest funkcją fizycznej odległości między aktualnym węzłem, a docelowym. Po zaznaczeniu dwóch węzłów istnieje możliwość uruchomienia algorytmu dla nich w klasycznej formie, z budową drzewa poszukiwań. Wizualizacja materiałów dydaktycznych Program udostępnia przeglądanie materiałów dydaktycznych z poziomu aplikacji. Wizualizacja ćwiczeń może zawierać w sobie zarówno tekst o różnych czcionkach, jak i obrazu. W razie zmiany ekranu w aplikacji istnieje możliwość ponownego przełączenia panelu do ćwiczeń w miejsce, w którym ostatnio zostało zakończone czytanie.
27 3.2 Ćwiczenia Głównym celem pracy jest dostarczenie środowiska dydaktycznego do ćwiczeń z zakresu podstawowych metod sztucznej inteligencji. Zatem takie ćwiczenia stanowią nieodłączną część aplikacji. Dlatego też oprócz implementacji samego programu przygotowanie środowiska wymagało opracowania zestawu instrukcji i objaśnień stanowiących materiały wprowadzające do dziedziny sztucznej inteligencji. Ćwiczenia mają za zadanie umożliwić użytkownikowi zapoznanie się z podstawowymi algorytmami sztucznej inteligencji oraz zrozumienie koncepcji ich działania. W celu zapewnienia efektywności wykonywanych ćwiczeń, pojęcia i przykłady muszą zostać przedstawione w odpowiednim porządku. Dlatego też zadania zostały przygotowane w kolejności uwzględniającej stopień trudności poruszanej tematyki, a także uwzględniając zależności między ćwiczeniami. Pierwszą poruszoną problematyką jest zagadnienie przestrzeni stanów. Jako że jest to podstawowe pojęcie w dziedzinie sztucznej inteligencji, będzie ono często przewijać się w ramach kolejnych tematów. Dlatego też zanim użytkownik przejdzie do problemów konkretnych algorytmów i ich implementacji, powinien poznać, co kryje się pod pojęciem przestrzeni stanów, jakie są jej właściwości, a także koncepcję jej przeszukiwania. Po poznaniu pojęcia przestrzeni stanów, użytkownik może zacząć zapoznawać się z podstawowymi algorytmami sztucznej inteligencji, których działanie uzależnione jest bezpośrednio od operacji na zadanej przestrzeni stanów. Dlatego też odpowiednią tematyką dla następnego kroku wydaje się być zagadnienie niepoinformowanych algorytmów przeszukiwania przestrzeni stanów, które de facto są pojęciowo najprostszą metodą rozwiązywania typowych problemów z zakresu sztucznej inteligencji i stanowią zazwyczaj wprowadzenie do algorytmów SI w większości publikacji z tej tematyki. Uzbrojony w wiedzę na temat niepoinformowanych algorytmów przeszukiwania przestrzeni stanów, użytkownik może rozpocząć wdrażanie się w tematykę metod heurystycznych. Algorytmy poinformowane stanowią swego rodzaju rozszerzenie algorytmów ślepych, dlatego też w tym przypadku kolejność powinna wydawać się oczywista, gdyż nawet przy opisie konkretnych metod heurystycznych, zostają one porównane z odpowiednikami w dziedzinie algorytmów niepoinformowanych jako ich ulepszenia. Po zapoznaniu się z algorytmami przeszukiwania przestrzeni stanów, można wejść w tematykę nieco bardziej złożoną, a mianowicie planowania sekwencji akcji. Jako że problematyka ta może stanowić obszar zastosowania dla poznanych dotychczas algorytmów przeszukiwania przestrzeni stanów, a zarazem dla innych metod, w których koncepcja wyznaczania rozwiązania jest diametralnie inna, wprowadzenie do tej tematyki stanowi odpowiednią kontynuację dla ćwiczeń dotychczas przerobionych. Mając to na względzie, odpowiednie ćwiczenie służy przede wszystkim do przedstawienia różnic między algorytmami przeszukiwania przestrzeni stanów oraz algorytmami opartymi na koncepcji cele-środki, która charakteryzuje się odmiennym podejściem do wyznaczania sekwencji akcji. Po wykonaniu pierwszych czterech ćwiczeń użytkownik powinien być już w pewnym stopniu zaznajomiony z algorytmami sztucznej inteligencji, których poznanie jest jedną z funkcjonalności dostarczanych przez aplikację, przy czym powinien mieć opanowane teoretyczne podstawy poznanych metod. W tym momencie można się pokusić o wprowadzenie osoby korzystającej z programu na bardziej szczegółowy poziom tych poznanych dotąd algorytmów. Dlatego też kolejne
Heurystyki. Strategie poszukiwań
Sztuczna inteligencja Heurystyki. Strategie poszukiwań Jacek Bartman Zakład Elektrotechniki i Informatyki Instytut Techniki Uniwersytet Rzeszowski DLACZEGO METODY PRZESZUKIWANIA? Sztuczna Inteligencja
Bardziej szczegółowoUniwersytet Zielonogórski Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Sterowania i Systemów Informatycznych
Uniwersytet Zielonogórski Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Sterowania i Systemów Informatycznych ELEMENTY SZTUCZNEJ INTELIGENCJI Laboratorium nr 9 PRZESZUKIWANIE GRAFÓW Z
Bardziej szczegółowoWstęp do Sztucznej Inteligencji
Wstęp do Sztucznej Inteligencji Rozwiązywanie problemów-i Joanna Kołodziej Politechnika Krakowska Wydział Fizyki, Matematyki i Informatyki Rozwiązywanie problemów Podstawowe fazy: Sformułowanie celu -
Bardziej szczegółowoĆWICZENIE 1: Przeszukiwanie grafów cz. 1 strategie ślepe
Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny, Politechnika Śląska www.imio.polsl.pl METODY HEURYSTYCZNE ĆWICZENIE 1: Przeszukiwanie grafów cz. 1 strategie ślepe opracował:
Bardziej szczegółowoMaciej Piotr Jankowski
Reduced Adder Graph Implementacja algorytmu RAG Maciej Piotr Jankowski 2005.12.22 Maciej Piotr Jankowski 1 Plan prezentacji 1. Wstęp 2. Implementacja 3. Usprawnienia optymalizacyjne 3.1. Tablica ekspansji
Bardziej szczegółowoRozwiązywanie problemów metodą przeszukiwania
Rozwiązywanie problemów metodą przeszukiwania Dariusz Banasiak Katedra Informatyki Technicznej W4/K9 Politechnika Wrocławska Reprezentacja problemu w przestrzeni stanów Jedną z ważniejszych metod sztucznej
Bardziej szczegółowoSZTUCZNA INTELIGENCJA
SZTUCZNA INTELIGENCJA WYKŁAD 12. PRZESZUKIWANIE Częstochowa 2014 Dr hab. inż. Grzegorz Dudek Wydział Elektryczny Politechnika Częstochowska ROZWIĄZYWANIE PROBLEMÓW JAKO PRZESZUKIWANIE Istotną rolę podczas
Bardziej szczegółowoMarcel Stankowski Wrocław, 23 czerwca 2009 INFORMATYKA SYSTEMÓW AUTONOMICZNYCH
Marcel Stankowski Wrocław, 23 czerwca 2009 INFORMATYKA SYSTEMÓW AUTONOMICZNYCH Przeszukiwanie przestrzeni rozwiązań, szukanie na ślepo, wszerz, w głąb. Spis treści: 1. Wprowadzenie 3. str. 1.1 Krótki Wstęp
Bardziej szczegółowoHeurystyczne metody przeszukiwania
Heurystyczne metody przeszukiwania Dariusz Banasiak Katedra Informatyki Technicznej W4/K9 Politechnika Wrocławska Pojęcie heurystyki Metody heurystyczne są jednym z ważniejszych narzędzi sztucznej inteligencji.
Bardziej szczegółowoDziałanie algorytmu oparte jest na minimalizacji funkcji celu jako suma funkcji kosztu ( ) oraz funkcji heurystycznej ( ).
Algorytm A* Opracowanie: Joanna Raczyńska 1.Wstęp Algorytm A* jest heurystycznym algorytmem służącym do znajdowania najkrótszej ścieżki w grafie. Jest to algorytm zupełny i optymalny, co oznacza, że zawsze
Bardziej szczegółowoBadania operacyjne: Wykład Zastosowanie kolorowania grafów w planowaniu produkcji typu no-idle
Badania operacyjne: Wykład Zastosowanie kolorowania grafów w planowaniu produkcji typu no-idle Paweł Szołtysek 12 czerwca 2008 Streszczenie Planowanie produkcji jest jednym z problemów optymalizacji dyskretnej,
Bardziej szczegółowoPodręcznik użytkownika Obieg dokumentów
Podręcznik użytkownika Obieg dokumentów Opracowany na potrzeby wdrożenia dla Akademii Wychowania Fizycznego im. Eugeniusza Piaseckiego w Poznaniu W ramach realizacji projektu: Uczelnia jutra wdrożenie
Bardziej szczegółowoAiSD zadanie trzecie
AiSD zadanie trzecie Gliwiński Jarosław Marek Kruczyński Konrad Marek Grupa dziekańska I5 5 czerwca 2008 1 Wstęp Celem postawionym przez zadanie trzecie było tzw. sortowanie topologiczne. Jest to typ sortowania
Bardziej szczegółowoa) 7 b) 19 c) 21 d) 34
Zadanie 1. Pytania testowe dotyczące podstawowych własności grafów. Zadanie 2. Przy każdym z zadań może się pojawić polecenie krótkiej charakterystyki algorytmu. Zadanie 3. W zadanym grafie sprawdzenie
Bardziej szczegółowoOSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) Algorytmy i Struktury Danych PIŁA
OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) 16.01.2003 Algorytmy i Struktury Danych PIŁA ALGORYTMY ZACHŁANNE czas [ms] Porównanie Algorytmów Rozwiązyjących problem TSP 100 000 000 000,000 10 000 000
Bardziej szczegółowoĆwiczenie 1 Planowanie trasy robota mobilnego w siatce kwadratów pól - Algorytm A
Ćwiczenie 1 Planowanie trasy robota mobilnego w siatce kwadratów pól - Algorytm A Zadanie do wykonania 1) Utwórz na pulpicie katalog w formacie Imię nazwisko, w którym umieść wszystkie pliki związane z
Bardziej szczegółowoPodsumowanie wyników ankiety
SPRAWOZDANIE Kierunkowego Zespołu ds. Programów Kształcenia dla kierunku Informatyka dotyczące ankiet samooceny osiągnięcia przez absolwentów kierunkowych efektów kształcenia po ukończeniu studiów w roku
Bardziej szczegółowoBackend Administratora
Backend Administratora mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 W tym celu korzystając z konsoli wydajemy polecenie: symfony generate:app backend Wówczas zostanie stworzona
Bardziej szczegółowoZadanie 1: Piętnastka
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
Bardziej szczegółowoAlgorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek
Algorytmy i str ruktury danych Metody algorytmiczne Bartman Jacek jbartman@univ.rzeszow.pl Metody algorytmiczne - wprowadzenia Znamy strukturę algorytmów Trudność tkwi natomiast w podaniu metod służących
Bardziej szczegółowoTEORETYCZNE PODSTAWY INFORMATYKI
1 TEORETYCZNE PODSTAWY INFORMATYKI WFAiS UJ, Informatyka Stosowana I rok studiów, I stopień Wykład 14c 2 Definicje indukcyjne Twierdzenia dowodzone przez indukcje Definicje indukcyjne Definicja drzewa
Bardziej szczegółowo1. Synteza automatów Moore a i Mealy realizujących zadane przekształcenie 2. Transformacja automatu Moore a w automat Mealy i odwrotnie
Opracował: dr hab. inż. Jan Magott KATEDRA INFORMATYKI TECHNICZNEJ Ćwiczenia laboratoryjne z Logiki Układów Cyfrowych ćwiczenie 207 Temat: Automaty Moore'a i Mealy 1. Cel ćwiczenia Celem ćwiczenia jest
Bardziej szczegółowoAnaliza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32
Analiza i projektowanie oprogramowania Analiza i projektowanie oprogramowania 1/32 Analiza i projektowanie oprogramowania 2/32 Cel analizy Celem fazy określania wymagań jest udzielenie odpowiedzi na pytanie:
Bardziej szczegółowoZad. 3: Układ równań liniowych
1 Cel ćwiczenia Zad. 3: Układ równań liniowych Wykształcenie umiejętności modelowania kluczowych dla danego problemu pojęć. Definiowanie właściwego interfejsu klasy. Zwrócenie uwagi na dobór odpowiednich
Bardziej szczegółowoPRZEWODNIK PO PRZEDMIOCIE
Nazwa przedmiotu: Kierunek: Informatyka Rodzaj przedmiotu: obowiązkowy w ramach treści kierunkowych, moduł kierunkowy oólny Rodzaj zajęć: wykład, laboratorium I KARTA PRZEDMIOTU CEL PRZEDMIOTU PRZEWODNIK
Bardziej szczegółowoXQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery
http://xqtav.sourceforge.net XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery dr hab. Jerzy Tyszkiewicz dr Andrzej Kierzek mgr Jacek Sroka Grzegorz Kaczor praca mgr pod
Bardziej szczegółowoAutomatyczne tworzenie trójwymiarowego planu pomieszczenia z zastosowaniem metod stereowizyjnych
Automatyczne tworzenie trójwymiarowego planu pomieszczenia z zastosowaniem metod stereowizyjnych autor: Robert Drab opiekun naukowy: dr inż. Paweł Rotter 1. Wstęp Zagadnienie generowania trójwymiarowego
Bardziej szczegółowo1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb.
1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb. Algorytmy przeszukiwania w głąb i wszerz są najczęściej stosowanymi algorytmami przeszukiwania. Wykorzystuje się je do zbadania istnienia połączenie
Bardziej szczegółowoOpis. Wymagania wstępne (tzw. sekwencyjny system zajęć i egzaminów) Liczba godzin zajęć dydaktycznych z podziałem na formy prowadzenia zajęć
Załącznik nr 5 do Uchwały nr 1202 Senatu UwB z dnia 29 lutego 2012 r. nazwa SYLABUS A. Informacje ogólne Tę część wypełnia koordynator (w porozumieniu ze wszystkimi prowadzącymi dany przedmiot w jednostce)
Bardziej szczegółowoInstrukcja wprowadzania graficznych harmonogramów pracy w SZOI Wg stanu na 21.06.2010 r.
Instrukcja wprowadzania graficznych harmonogramów pracy w SZOI Wg stanu na 21.06.2010 r. W systemie SZOI została wprowadzona nowa funkcjonalność umożliwiająca tworzenie graficznych harmonogramów pracy.
Bardziej szczegółowoUniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania
Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania Celem ćwiczenia jest zapoznanie studentów z najprostszą dynamiczną strukturą
Bardziej szczegółowoAlgorytm genetyczny (genetic algorithm)-
Optymalizacja W praktyce inżynierskiej często zachodzi potrzeba znalezienia parametrów, dla których system/urządzenie będzie działać w sposób optymalny. Klasyczne podejście do optymalizacji: sformułowanie
Bardziej szczegółowoKurs programowania. Wykład 12. Wojciech Macyna. 7 czerwca 2017
Wykład 12 7 czerwca 2017 Czym jest UML? UML składa się z dwóch podstawowych elementów: notacja: elementy graficzne, składnia języka modelowania, metamodel: definicje pojęć języka i powiazania pomiędzy
Bardziej szczegółowoAlgorytmy sztucznej inteligencji
www.math.uni.lodz.pl/ radmat Przeszukiwanie z ograniczeniami Zagadnienie przeszukiwania z ograniczeniami stanowi grupę problemów przeszukiwania w przestrzeni stanów, które składa się ze: 1 skończonego
Bardziej szczegółowoMetody przeszukiwania
Metody przeszukiwania Co to jest przeszukiwanie Przeszukiwanie polega na odnajdywaniu rozwiązania w dyskretnej przestrzeni rozwiązao. Zwykle przeszukiwanie polega na znalezieniu określonego rozwiązania
Bardziej szczegółowoZapisywanie algorytmów w języku programowania
Temat C5 Zapisywanie algorytmów w języku programowania Cele edukacyjne Zrozumienie, na czym polega programowanie. Poznanie sposobu zapisu algorytmu w postaci programu komputerowego. Zrozumienie, na czym
Bardziej szczegółowoBudowa argumentacji bezpieczeństwa z użyciem NOR-STA Instrukcja krok po kroku
Budowa argumentacji bezpieczeństwa z użyciem NOR-STA Instrukcja krok po kroku NOR-STA jest narzędziem wspierającym budowę, ocenę oraz zarządzanie strukturą argumentacji wiarygodności (assurance case),
Bardziej szczegółowoAplikacja (oprogramowanie) będzie umożliwiać przygotowanie, przeprowadzenie badania oraz analizę wyników według określonej metody.
Załącznik nr 1 Specyfikacja przedmiotu zamówienia Aplikacja (oprogramowanie) będzie umożliwiać przygotowanie, przeprowadzenie badania oraz analizę wyników według określonej metody. Słowniczek pojęć Badanie
Bardziej szczegółowoPorównanie algorytmów wyszukiwania najkrótszych ścieżek międz. grafu. Daniel Golubiewski. 22 listopada Instytut Informatyki
Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu. Instytut Informatyki 22 listopada 2015 Algorytm DFS w głąb Algorytm przejścia/przeszukiwania w głąb (ang. Depth First
Bardziej szczegółowoZad. 6: Sterowanie robotem mobilnym
Zad. 6: Sterowanie robotem mobilnym 1 Cel ćwiczenia Utrwalenie umiejętności modelowania kluczowych dla danego problemu pojęć. Tworzenie diagramu klas, czynności oraz przypadków użycia. Wykorzystanie dziedziczenia
Bardziej szczegółowoNauczanie na odległość
P o l i t e c h n i k a W a r s z a w s k a Nauczanie na odległość a standaryzacja materiałów edukacyjnych Krzysztof Kaczmarski Nauczanie na odległość T Nauczanie ustawiczne T Studia przez Internet? T
Bardziej szczegółowoScenariusz lekcji opartej na programie Program nauczania informatyki w gimnazjum DKW-4014-87/99
Scenariusz lekcji opartej na programie Program nauczania informatyki w gimnazjum DKW-4014-87/99 Techniki algorytmiczne realizowane przy pomocy grafiki żółwia w programie ELI 2,0. Przedmiot: Informatyka
Bardziej szczegółowoElementy kognitywistyki II: Sztuczna inteligencja. WYKŁAD V: Agent wciąż szuka rozwiązania (choć już nie na ślepo)
Elementy kognitywistyki II: Sztuczna inteligencja WYKŁAD V: Agent wciąż szuka rozwiązania (choć już nie na ślepo) Poprzednio: węzeł reprezentowany jest jako piątka: stan odpowiadający węzłowi rodzic węzła
Bardziej szczegółowoUniwersytet w Białymstoku Wydział Ekonomiczno-Informatyczny w Wilnie SYLLABUS na rok akademicki 2012/2013 http://www.wilno.uwb.edu.
SYLLABUS na rok akademicki 01/013 Tryb studiów Studia stacjonarne Kierunek studiów Informatyka Poziom studiów Pierwszego stopnia Rok studiów/ semestr /3 Specjalność Bez specjalności Kod katedry/zakładu
Bardziej szczegółowoZastosowanie CP-grafów do generacji siatek
Zastosowanie CP-grafów do generacji siatek 1 Cel zajęć Celem zajęć jest praktyczne zaznajomienie się z pojęciem CP-grafu i gramatyk grafowych, przy pomocy których można je tworzyć i nimi manipulować. Jako
Bardziej szczegółowoTechnologie informacyjne - wykład 12 -
Zakład Fizyki Budowli i Komputerowych Metod Projektowania Instytut Budownictwa Wydział Budownictwa Lądowego i Wodnego Politechnika Wrocławska Technologie informacyjne - wykład 12 - Prowadzący: Dmochowski
Bardziej szczegółowoSCENARIUSZ LEKCJI. Streszczenie. Czas realizacji. Podstawa programowa
Autorzy scenariusza: SCENARIUSZ LEKCJI OPRACOWANY W RAMACH PROJEKTU: INFORMATYKA MÓJ SPOSÓB NA POZNANIE I OPISANIE ŚWIATA. PROGRAM NAUCZANIA INFORMATYKI Z ELEMENTAMI PRZEDMIOTÓW MATEMATYCZNO-PRZYRODNICZYCH
Bardziej szczegółowoKonkurs z przedmiotu eksploracja i analiza danych: problem regresji i klasyfikacji
Konkurs z przedmiotu eksploracja i analiza danych: problem regresji i klasyfikacji Michał Witczak Data Mining 20 maja 2012 r. 1. Wstęp Dostarczone zostały nam 4 pliki, z których dwa stanowiły zbiory uczące
Bardziej szczegółowoSortowanie przez wstawianie Insertion Sort
Sortowanie przez wstawianie Insertion Sort Algorytm sortowania przez wstawianie można porównać do sposobu układania kart pobieranych z talii. Najpierw bierzemy pierwszą kartę. Następnie pobieramy kolejne,
Bardziej szczegółowoPRZEWODNIK PO PRZEDMIOCIE
Nazwa przedmiotu: MODELOWANIE I ANALIZA SYSTEMÓW INFORMATYCZNYCH Modeling and analysis of computer systems Kierunek: Informatyka Forma studiów: Stacjonarne Rodzaj przedmiotu: Poziom kwalifikacji: obowiązkowy
Bardziej szczegółowoZad. 5: Sterowanie robotem mobilnym
Zad. 5: Sterowanie robotem mobilnym 1 Cel ćwiczenia Wykształcenie umiejętności modelowania kluczowych dla danego problemu pojęć. Tworzenie diagramu klas, czynności oraz przypadków użycia. Wykorzystanie
Bardziej szczegółowoWymagania edukacyjne z informatyki dla klasy szóstej szkoły podstawowej.
Wymagania edukacyjne z informatyki dla klasy szóstej szkoły podstawowej. Dział Zagadnienia Wymagania podstawowe Wymagania ponadpodstawowe Arkusz kalkulacyjny (Microsoft Excel i OpenOffice) Uruchomienie
Bardziej szczegółowoAnaliza i projektowanie obiektowe 2016/2017. Wykład 10: Tworzenie projektowego diagramu klas
Analiza i projektowanie obiektowe 2016/2017 Wykład 10: Tworzenie projektowego diagramu klas Jacek Marciniak Wydział Matematyki i Informatyki Uniwersytet im. Adama Mickiewicza 1 Plan wykładu 1. Projektowy
Bardziej szczegółowoLaboratorium z przedmiotu Programowanie obiektowe - zestaw 04
Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04 Cel zajęć. Celem zajęć jest zapoznanie się ze sposobem działania popularnych kolekcji. Wprowadzenie teoretyczne. Rozważana w ramach niniejszych
Bardziej szczegółowoPrzewodnik użytkownika (instrukcja) AutoMagicTest
Przewodnik użytkownika (instrukcja) AutoMagicTest 0.1.21.137 1. Wprowadzenie Aplikacja AutoMagicTest to aplikacja wspierająca testerów w testowaniu i kontrolowaniu jakości stron poprzez ich analizę. Aplikacja
Bardziej szczegółowoPlan. Raport. Tworzenie raportu z kreatora (1/3)
3 Budowa prostych raportów opartych o bazę danych Plan Co to jest raport? Tworzenie za pomocą kreatora Tworzenie opartego o polecenie SQL Edycja atrybutów Atrybuty regionu Atrybuty Atrybuty kolumn 2 Raport
Bardziej szczegółowoKATEDRA INFORMATYKI TECHNICZNEJ. Ćwiczenia laboratoryjne z Logiki Układów Cyfrowych. ćwiczenie 204
Opracował: prof. dr hab. inż. Jan Kazimierczak KATEDA INFOMATYKI TECHNICZNEJ Ćwiczenia laboratoryjne z Logiki Układów Cyfrowych ćwiczenie 204 Temat: Hardware'owa implementacja automatu skończonego pełniącego
Bardziej szczegółowo5c. Sieci i przepływy
5c. Sieci i przepływy Grzegorz Kosiorowski Uniwersytet Ekonomiczny w Krakowie zima 2016/2017 rzegorz Kosiorowski (Uniwersytet Ekonomiczny w Krakowie) 5c. Sieci i przepływy zima 2016/2017 1 / 40 1 Definicje
Bardziej szczegółowo9.9 Algorytmy przeglądu
14 9. PODSTAWOWE PROBLEMY JEDNOMASZYNOWE 9.9 Algorytmy przeglądu Metody przeglądu dla problemu 1 r j,q j C max były analizowane między innymi w pracach 25, 51, 129, 238. Jak dotychczas najbardziej elegancka
Bardziej szczegółowoMetody eksploracji danych w odkrywaniu wiedzy (MED) projekt, dokumentacja końcowa
Metody eksploracji danych w odkrywaniu wiedzy (MED) projekt, dokumentacja końcowa Konrad Miziński 14 stycznia 2015 1 Temat projektu Grupowanie hierarchiczne na podstawie algorytmu k-średnich. 2 Dokumenty
Bardziej szczegółowoAlgorytmy mrówkowe. H. Bednarz. Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie Inteligentne systemy informatyczne
Algorytmy mrówkowe H. Bednarz Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie Inteligentne systemy informatyczne 13 kwietnia 2015 1 2 3 4 Przestrzeń poszukiwań Ograniczenia
Bardziej szczegółowoPRZEWODNIK PO PRZEDMIOCIE
Nazwa przedmiotu: PROJEKTOWANIE SYSTEMÓW INFORMATYCZNYCH I KARTA PRZEDMIOTU CEL PRZEDMIOTU PRZEWODNIK PO PRZEDMIOCIE C1. Podniesienie poziomu wiedzy studentów z inżynierii oprogramowania w zakresie C.
Bardziej szczegółowoZłożoność obliczeniowa zadania, zestaw 2
Złożoność obliczeniowa zadania, zestaw 2 Określanie złożoności obliczeniowej algorytmów, obliczanie pesymistycznej i oczekiwanej złożoności obliczeniowej 1. Dana jest tablica jednowymiarowa A o rozmiarze
Bardziej szczegółowoTeoria grafów dla małolatów. Andrzej Przemysław Urbański Instytut Informatyki Politechnika Poznańska
Teoria grafów dla małolatów Andrzej Przemysław Urbański Instytut Informatyki Politechnika Poznańska Wstęp Matematyka to wiele różnych dyscyplin Bowiem świat jest bardzo skomplikowany wymaga rozważenia
Bardziej szczegółowoAlgorytm. a programowanie -
Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik
Bardziej szczegółowoElementy kognitywistyki II: Sztuczna inteligencja. WYKŁAD III: Problemy agenta
Elementy kognitywistyki II: Sztuczna inteligencja WYKŁAD III: Problemy agenta To już było: AI to dziedzina zajmująca się projektowaniem agentów Określenie agenta i agenta racjonalnego Charakterystyka PAGE
Bardziej szczegółowoProgramowanie i techniki algorytmiczne
Temat 2. Programowanie i techniki algorytmiczne Realizacja podstawy programowej 1) wyjaśnia pojęcie algorytmu, podaje odpowiednie przykłady algorytmów rozwiązywania różnych 2) formułuje ścisły opis prostej
Bardziej szczegółowoZofia Kruczkiewicz, Algorytmu i struktury danych, Wykład 14, 1
Wykład Algorytmy grafowe metoda zachłanna. Właściwości algorytmu zachłannego:. W przeciwieństwie do metody programowania dynamicznego nie występuje etap dzielenia na mniejsze realizacje z wykorzystaniem
Bardziej szczegółowoPrzykłady grafów. Graf prosty, to graf bez pętli i bez krawędzi wielokrotnych.
Grafy Graf Graf (ang. graph) to zbiór wierzchołków (ang. vertices), które mogą być połączone krawędziami (ang. edges) w taki sposób, że każda krawędź kończy się i zaczyna w którymś z wierzchołków. Graf
Bardziej szczegółowoDodawanie grafiki i obiektów
Dodawanie grafiki i obiektów Word nie jest edytorem obiektów graficznych, ale oferuje kilka opcji, dzięki którym można dokonywać niewielkich zmian w rysunku. W Wordzie możesz zmieniać rozmiar obiektu graficznego,
Bardziej szczegółowomgr inż. Magdalena Deckert Poznań, r. Metody przyrostowego uczenia się ze strumieni danych.
mgr inż. Magdalena Deckert Poznań, 30.11.2010r. Metody przyrostowego uczenia się ze strumieni danych. Plan prezentacji Wstęp Concept drift i typy zmian Algorytmy przyrostowego uczenia się ze strumieni
Bardziej szczegółowozna metody matematyczne w zakresie niezbędnym do formalnego i ilościowego opisu, zrozumienia i modelowania problemów z różnych
Grupa efektów kierunkowych: Matematyka stosowana I stopnia - profil praktyczny (od 17 października 2014) Matematyka Stosowana I stopień spec. Matematyka nowoczesnych technologii stacjonarne 2015/2016Z
Bardziej szczegółowoREFERAT PRACY DYPLOMOWEJ
REFERAT PRACY DYPLOMOWEJ Temat pracy: Projekt i implementacja środowiska do automatyzacji przeprowadzania testów aplikacji internetowych w oparciu o metodykę Behavior Driven Development. Autor: Stepowany
Bardziej szczegółowoAutomatyczna klasyfikacja zespołów QRS
Przetwarzanie sygnałów w systemach diagnostycznych Informatyka Stosowana V Automatyczna klasyfikacja zespołów QRS Anna Mleko Tomasz Kotliński AGH EAIiE 9 . Opis zadania Tematem projektu było zaprojektowanie
Bardziej szczegółowoO badaniach nad SZTUCZNĄ INTELIGENCJĄ
O badaniach nad SZTUCZNĄ INTELIGENCJĄ Wykład 7. O badaniach nad sztuczną inteligencją Co nazywamy SZTUCZNĄ INTELIGENCJĄ? szczególny rodzaj programów komputerowych, a niekiedy maszyn. SI szczególną własność
Bardziej szczegółowoAlgorytmy genetyczne
Algorytmy genetyczne Motto: Zamiast pracowicie poszukiwać najlepszego rozwiązania problemu informatycznego lepiej pozwolić, żeby komputer sam sobie to rozwiązanie wyhodował! Algorytmy genetyczne służą
Bardziej szczegółowoKARTA PRZEDMIOTU. 1. Informacje ogólne. 2. Ogólna charakterystyka przedmiotu. Algorytmy i struktury danych, C3
KARTA PRZEDMIOTU 1. Informacje ogólne Nazwa przedmiotu i kod (wg planu studiów): Nazwa przedmiotu (j. ang.): Kierunek studiów: Specjalność/specjalizacja: Poziom kształcenia: Profil kształcenia: Forma studiów:
Bardziej szczegółowoLABORATORIUM 2: Przeszukiwanie grafów cz. 2 strategie heurystyczne
Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny, Politechnika Śląska www.imio.polsl.pl METODY HEURYSTYCZNE LABORATORIUM 2: Przeszukiwanie grafów cz. 2 strategie heurystyczne
Bardziej szczegółowoKARTA MODUŁU KSZTAŁCENIA
KARTA MODUŁU KSZTAŁCENIA I. Informacje ogólne 1 Nazwa modułu kształcenia Inżynieria 2 Nazwa jednostki prowadzącej moduł Instytut Informatyki, Zakład Informatyki Stosowanej 3 Kod modułu (wypełnia koordynator
Bardziej szczegółowoZagadnienia (1/3) Data-flow diagramy przepływów danych ERD diagramy związków encji Diagramy obiektowe w UML (ang. Unified Modeling Language)
Zagadnienia (1/3) Rola modelu systemu w procesie analizy wymagań (inżynierii wymagań) Prezentacja różnego rodzaju informacji o systemie w zależności od rodzaju modelu. Budowanie pełnego obrazu systemu
Bardziej szczegółowoProgramowanie dynamiczne i algorytmy zachłanne
Programowanie dynamiczne i algorytmy zachłanne Tomasz Głowacki tglowacki@cs.put.poznan.pl Zajęcia finansowane z projektu "Rozwój i doskonalenie kształcenia na Politechnice Poznańskiej w zakresie technologii
Bardziej szczegółowoProgram EWIDENCJA ODZIEŻY ROBOCZEJ INSTRUKCJA UŻYTKOWNIKA Przejdź do strony producenta programu
Program EWIDENCJA ODZIEŻY ROBOCZEJ INSTRUKCJA UŻYTKOWNIKA Przejdź do strony producenta programu http://www.jarsoft.poznan.pl/ 1. STRUKTURA PROGRAMU Program EWIDENCJA ODZIEŻY ROBOCZEJ jest aplikacją wspierającą
Bardziej szczegółowoPrzeszukiwanie z nawrotami. Wykład 8. Przeszukiwanie z nawrotami. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 238 / 279
Wykład 8 J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 238 / 279 sformułowanie problemu przegląd drzewa poszukiwań przykłady problemów wybrane narzędzia programistyczne J. Cichoń, P. Kobylański
Bardziej szczegółowoKlasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny
Klasa 2 INFORMATYKA dla szkół ponadgimnazjalnych zakres rozszerzony Założone osiągnięcia ucznia wymagania edukacyjne na poszczególne oceny Algorytmy 2 3 4 5 6 Wie, co to jest algorytm. Wymienia przykłady
Bardziej szczegółowoPodstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia
Podstawy informatyki Elektrotechnika I rok Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia Katedra Energoelektroniki i Automatyki Systemów Przetwarzania Energii AGH Kraków 2017 Tematyka
Bardziej szczegółowoOPTYMALIZACJA HARMONOGRAMOWANIA MONTAŻU SAMOCHODÓW Z ZASTOSOWANIEM PROGRAMOWANIA W LOGICE Z OGRANICZENIAMI
Autoreferat do rozprawy doktorskiej OPTYMALIZACJA HARMONOGRAMOWANIA MONTAŻU SAMOCHODÓW Z ZASTOSOWANIEM PROGRAMOWANIA W LOGICE Z OGRANICZENIAMI Michał Mazur Gliwice 2016 1 2 Montaż samochodów na linii w
Bardziej szczegółowoPROLOG WSTĘP DO INFORMATYKI. Akademia Górniczo-Hutnicza. Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej.
Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej WSTĘP DO INFORMATYKI Adrian Horzyk PROLOG www.agh.edu.pl Pewnego dnia przyszedł na świat komputer Komputery
Bardziej szczegółowoKARTA PRZEDMIOTU. Algorytmy i struktury danych, C4
KARTA PRZEDMIOTU 1. Informacje ogólne Nazwa przedmiotu i kod (wg planu studiów): Nazwa przedmiotu (j. ang.): Kierunek studiów: Specjalność/specjalizacja: Poziom kształcenia: Profil kształcenia: Forma studiów:
Bardziej szczegółowoZad. 3: Rotacje 2D. Demonstracja przykładu problemu skończonej reprezentacji binarnej liczb
Zad. 3: Rotacje 2D 1 Cel ćwiczenia Wykształcenie umiejętności modelowania kluczowych dla danego problemu pojęć. Definiowanie właściwego interfejsu klasy. Zwrócenie uwagi na dobór odpowiednich struktur
Bardziej szczegółowoPRZEWODNIK PO PRZEDMIOCIE
Nazwa przedmiotu: Algorytmy i programowanie Algorithms and Programming Kierunek: Zarządzanie i Inżynieria Produkcji Rodzaj przedmiotu: kierunkowy Poziom studiów: studia I stopnia forma studiów: studia
Bardziej szczegółowoĆwiczenia nr 7. TEMATYKA: Krzywe Bézier a
TEMATYKA: Krzywe Bézier a Ćwiczenia nr 7 DEFINICJE: Interpolacja: przybliżanie funkcji za pomocą innej funkcji, zwykle wielomianu, tak aby były sobie równe w zadanych punktach. Poniżej przykład interpolacji
Bardziej szczegółowoEFEKTY UCZENIA SIĘ DLA KIERUNKU INŻYNIERIA DANYCH W ODNIESIENIU DO EFEKTÓW UCZENIA SIĘ PRK POZIOM 6
EFEKTY UCZENIA SIĘ DLA KIERUNKU INŻYNIERIA DANYCH W ODNIESIENIU DO EFEKTÓW UCZENIA SIĘ PRK POZIOM 6 studia pierwszego stopnia o profilu ogólnoakademickim Symbol K_W01 Po ukończeniu studiów pierwszego stopnia
Bardziej szczegółowoZadanie 1: rozproszona wiedza SKJ (2016)
Zadanie 1: rozproszona wiedza SKJ (2016) Wstęp Zadanie polega na zaimplementowaniu systemu do utrzymywania rozproszonej wiedzy pomiędzy agentami. Agent to program uruchomiony na hoście posiadający pewną
Bardziej szczegółowoznalezienia elementu w zbiorze, gdy w nim jest; dołączenia nowego elementu w odpowiednie miejsce, aby zbiór pozostał nadal uporządkowany.
Przedstawiamy algorytmy porządkowania dowolnej liczby elementów, którymi mogą być liczby, jak również elementy o bardziej złożonej postaci (takie jak słowa i daty). Porządkowanie, nazywane również często
Bardziej szczegółowoWykorzystanie algorytmów mrówkowych w dynamicznym problem
Wykorzystanie algorytmów mrówkowych w dynamicznym problemie marszrutyzacji Promotor: dr inż. Aneta Poniszewska-Marańda Współpromotor: mgr inż. Łukasz Chomątek 14 czerwca 2013 Przedmiot i cele pracy dyplomowej
Bardziej szczegółowoNazwa przedmiotu: MODELOWANIE I ANALIZA SYSTEMÓW INFORMATYCZNYCH. Modeling and analysis of computer systems Forma studiów: Stacjonarne
Nazwa przedmiotu: MODELOWANIE I ANALIZA SYSTEMÓW INFORMATYCZNYCH Kierunek: Informatyka Modeling and analysis of computer systems Forma studiów: Stacjonarne Rodzaj przedmiotu: obowiązkowy w ramach specjalności:
Bardziej szczegółowoTeraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres rozszerzony. Część 1.
Teraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres rozszerzony. Część 1. Grażyna Koba MIGRA 2019 Spis treści (propozycja na 2*32 = 64 godziny lekcyjne) Moduł A. Wokół komputera i sieci komputerowych
Bardziej szczegółowoproblem w określonym kontekście siły istotę jego rozwiązania
Wzorzec projektowy Christopher Alexander: Wzorzec to sprawdzona koncepcja, która opisuje problem powtarzający się wielokrotnie w określonym kontekście, działające na niego siły, oraz podaje istotę jego
Bardziej szczegółowoMetody Kompilacji Wykład 3
Metody Kompilacji Wykład 3 odbywa się poprzez dołączenie zasad(reguł) lub fragmentów kodu do produkcji w gramatyce. Włodzimierz Bielecki WI ZUT 2 Na przykład, dla produkcji expr -> expr 1 + term możemy
Bardziej szczegółowo