Środowisko programowe do nauki podstawowych algorytmów sztucznej inteligencji

Wielkość: px
Rozpocząć pokaz od strony:

Download "Środowisko programowe do nauki podstawowych algorytmów sztucznej inteligencji"

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ń

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ółowo

Uniwersytet 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 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ółowo

Wstęp do Sztucznej Inteligencji

Wstę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

Ć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ółowo

Maciej Piotr Jankowski

Maciej 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ółowo

Rozwiązywanie problemów metodą przeszukiwania

Rozwią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ółowo

SZTUCZNA INTELIGENCJA

SZTUCZNA 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ółowo

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

Marcel 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ółowo

Heurystyczne metody przeszukiwania

Heurystyczne 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ółowo

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

Dział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ółowo

Badania 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 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ółowo

Podręcznik użytkownika Obieg dokumentów

Podrę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ółowo

AiSD zadanie trzecie

AiSD 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ółowo

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

a) 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ółowo

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

OSTASZEWSKI 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 Ć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ółowo

Podsumowanie wyników ankiety

Podsumowanie 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ółowo

Backend Administratora

Backend 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ółowo

Zadanie 1: Piętnastka

Zadanie 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ółowo

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

Algorytmy 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ółowo

TEORETYCZNE PODSTAWY INFORMATYKI

TEORETYCZNE 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ółowo

1. Synteza automatów Moore a i Mealy realizujących zadane przekształcenie 2. Transformacja automatu Moore a w automat Mealy i odwrotnie

1. 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ółowo

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32

Analiza 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ółowo

Zad. 3: Układ równań liniowych

Zad. 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ółowo

PRZEWODNIK PO PRZEDMIOCIE

PRZEWODNIK 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ółowo

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

XQTav - 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ółowo

Automatyczne tworzenie trójwymiarowego planu pomieszczenia z zastosowaniem metod stereowizyjnych

Automatyczne 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ółowo

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

1. 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ółowo

Opis. Wymagania wstępne (tzw. sekwencyjny system zajęć i egzaminów) Liczba godzin zajęć dydaktycznych z podziałem na formy prowadzenia zajęć

Opis. 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ółowo

Instrukcja 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. 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ółowo

Uniwersytet 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 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ółowo

Algorytm genetyczny (genetic algorithm)-

Algorytm 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ółowo

Kurs programowania. Wykład 12. Wojciech Macyna. 7 czerwca 2017

Kurs 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ółowo

Algorytmy sztucznej inteligencji

Algorytmy 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ółowo

Metody przeszukiwania

Metody 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ółowo

Zapisywanie algorytmów w języku programowania

Zapisywanie 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ółowo

Budowa 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 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ółowo

Aplikacja (oprogramowanie) będzie umożliwiać przygotowanie, przeprowadzenie badania oraz analizę wyników według określonej metody.

Aplikacja (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ółowo

Poró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ę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ółowo

Zad. 6: Sterowanie robotem mobilnym

Zad. 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ółowo

Nauczanie na odległość

Nauczanie 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ółowo

Scenariusz 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 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ółowo

Elementy 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) 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ółowo

Uniwersytet w Białymstoku Wydział Ekonomiczno-Informatyczny w Wilnie SYLLABUS na rok akademicki 2012/2013 http://www.wilno.uwb.edu.

Uniwersytet 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ółowo

Zastosowanie CP-grafów do generacji siatek

Zastosowanie 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ółowo

Technologie informacyjne - wykład 12 -

Technologie 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ółowo

SCENARIUSZ LEKCJI. Streszczenie. Czas realizacji. Podstawa programowa

SCENARIUSZ 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ółowo

Konkurs z przedmiotu eksploracja i analiza danych: problem regresji i klasyfikacji

Konkurs 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ółowo

Sortowanie przez wstawianie Insertion Sort

Sortowanie 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ółowo

PRZEWODNIK PO PRZEDMIOCIE

PRZEWODNIK 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ółowo

Zad. 5: Sterowanie robotem mobilnym

Zad. 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ółowo

Wymagania edukacyjne z informatyki dla klasy szóstej szkoły podstawowej.

Wymagania 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ółowo

Analiza 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 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ółowo

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04

Laboratorium 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ółowo

Przewodnik użytkownika (instrukcja) AutoMagicTest

Przewodnik 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ółowo

Plan. Raport. Tworzenie raportu z kreatora (1/3)

Plan. 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ółowo

KATEDRA INFORMATYKI TECHNICZNEJ. Ćwiczenia laboratoryjne z Logiki Układów Cyfrowych. ćwiczenie 204

KATEDRA 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ółowo

5c. Sieci i przepływy

5c. 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ółowo

9.9 Algorytmy przeglądu

9.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ółowo

Metody eksploracji danych w odkrywaniu wiedzy (MED) projekt, dokumentacja końcowa

Metody 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ółowo

Algorytmy 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 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ółowo

PRZEWODNIK PO PRZEDMIOCIE

PRZEWODNIK 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ółowo

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

Zł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ółowo

Teoria 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 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ółowo

Algorytm. a programowanie -

Algorytm. 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ółowo

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

Elementy 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ółowo

Programowanie i techniki algorytmiczne

Programowanie 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ółowo

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

Zofia 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ółowo

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

Przykł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ółowo

Dodawanie grafiki i obiektów

Dodawanie 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ółowo

mgr inż. Magdalena Deckert Poznań, r. Metody przyrostowego uczenia się ze strumieni danych.

mgr 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ółowo

zna metody matematyczne w zakresie niezbędnym do formalnego i ilościowego opisu, zrozumienia i modelowania problemów z różnych

zna 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ółowo

REFERAT PRACY DYPLOMOWEJ

REFERAT 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ółowo

Automatyczna klasyfikacja zespołów QRS

Automatyczna 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ółowo

O badaniach nad SZTUCZNĄ INTELIGENCJĄ

O 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ółowo

Algorytmy genetyczne

Algorytmy 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ółowo

KARTA PRZEDMIOTU. 1. Informacje ogólne. 2. Ogólna charakterystyka przedmiotu. Algorytmy i struktury danych, C3

KARTA 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ółowo

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

LABORATORIUM 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ółowo

KARTA MODUŁU KSZTAŁCENIA

KARTA 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ółowo

Zagadnienia (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) 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ółowo

Programowanie dynamiczne i algorytmy zachłanne

Programowanie 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ółowo

Program 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 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ółowo

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

Przeszukiwanie 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ółowo

Klasa 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 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ółowo

Podstawy 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 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ółowo

OPTYMALIZACJA HARMONOGRAMOWANIA MONTAŻU SAMOCHODÓW Z ZASTOSOWANIEM PROGRAMOWANIA W LOGICE Z OGRANICZENIAMI

OPTYMALIZACJA 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ółowo

PROLOG WSTĘP DO INFORMATYKI. Akademia Górniczo-Hutnicza. Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej.

PROLOG 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ółowo

KARTA PRZEDMIOTU. Algorytmy i struktury danych, C4

KARTA 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ółowo

Zad. 3: Rotacje 2D. Demonstracja przykładu problemu skończonej reprezentacji binarnej liczb

Zad. 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ółowo

PRZEWODNIK PO PRZEDMIOCIE

PRZEWODNIK 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

Ć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ółowo

EFEKTY 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 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ółowo

Zadanie 1: rozproszona wiedza SKJ (2016)

Zadanie 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ółowo

znalezienia elementu w zbiorze, gdy w nim jest; dołączenia nowego elementu w odpowiednie miejsce, aby zbiór pozostał nadal uporządkowany.

znalezienia 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ółowo

Wykorzystanie algorytmów mrówkowych w dynamicznym problem

Wykorzystanie 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ółowo

Nazwa 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. 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ółowo

Teraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres rozszerzony. Część 1.

Teraz 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ółowo

problem w określonym kontekście siły istotę jego rozwiązania

problem 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ółowo

Metody Kompilacji Wykład 3

Metody 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