2004 Goodrich, Tamassia

Podobne dokumenty
2004 Goodrich, Tamassia

2004 Goodrich, Tamassia

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott

PRZEWODNIK PO PRZEDMIOCIE

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA Realizacja w roku akademickim 2016/17

PRZEWODNIK PO PRZEDMIOCIE

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

IZ2ZSD2 Złożone struktury danych Advanced data structures. Informatyka II stopień ogólnoakademicki niestacjonarne

ID2ZSD2 Złożone struktury danych Advanced data structures. Informatyka II stopień ogólnoakademicki stacjonarne

KARTA KURSU. Algorytmy, struktury danych i techniki programowania. Algorithms, Data Structures and Programming Techniques

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

PRZEWODNIK PO PRZEDMIOCIE

PRZEWODNIK PO PRZEDMIOCIE

KARTA MODUŁU KSZTAŁCENIA

KARTA MODUŁU KSZTAŁCENIA

Modele Obliczeń. Wykład 1 - Wprowadzenie. Marcin Szczuka. Instytut Matematyki, Uniwersytet Warszawski

Opisy efektów kształcenia dla modułu

Metodyki i techniki programowania

Metodyki i techniki programowania

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

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

NAZWA PRZEDMIOTU/MODUŁU KSZTAŁCENIA:

Efektywność Procedur Obliczeniowych. wykład 5

Uniwersytet w Białymstoku Wydział Ekonomiczno-Informatyczny w Wilnie SYLLABUS na rok akademicki 2012/2013

Grafy i sieci w informatyce - opis przedmiotu

Algorytmy i struktury danych.

Rok akademicki: 2018/2019 Kod: ITE s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne

Załącznik KARTA PRZEDMIOTU. KARTA PRZEDMIOTU Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2009/2010.

PRZEWODNIK PO PRZEDMIOCIE

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

PRZEWODNIK PO PRZEDMIOCIE

Język programowania C C Programming Language. ogólnoakademicki

Opis efektów kształcenia dla modułu zajęć

Algorytmy i Struktury Danych.

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

Tomasz M. Gwizdałła 2012/13

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

PRZEWODNIK PO PRZEDMIOCIE

Wykład 1 Wprowadzenie do algorytmów. Zawartość wykładu 1. Wstęp do algorytmów i struktur danych 2. Algorytmy z rozgałęzieniami.

KARTA PRZEDMIOTU. 1. NAZWA PRZEDMIOTU: Struktury danych i algorytmy. 2. KIERUNEK: Matematyka. 3. POZIOM STUDIÓW: I stopnia

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA Realizacja w roku akademickim 2016/17

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

METODY OPISU ALGORYTMÓW KOMPUTEROWYCH

Języki programowania II - opis przedmiotu

Algorytmy wspomagania decyzji Czyli co i jak andrzej.rusiecki.staff.iiar.pwr.wroc.pl s. 230/C-3

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

Załącznik Nr 5 do Zarz. Nr 33/11/ Kod przedmiotu:aisd2

KARTA MODUŁU KSZTAŁCENIA

Ciasto z serem i musem truskawkowym

ALGORYTMY I STRUKTURY DANYCH

koordynator modułu dr hab. Michał Baczyński rok akademicki 2012/2013

Kierunek i poziom studiów: Matematyka, studia I stopnia (licencjackie), rok I

Wprowadzenie do złożoności obliczeniowej

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1

Heurystyki. Strategie poszukiwań

Haszowanie. dr inż. Urszula Gałązka

Załącznik KARTA PRZEDMIOTU. KARTA PRZEDMIOTU Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2009/2010

WYDZIAŁ BUDOWNICTWA LĄDOWEGO I WODNEGO

Grupa kursów: Wykład Ćwiczenia Laboratorium Projekt Seminarium 15 30

Karta (sylabus) modułu/przedmiotu Mechanika i Budowa Maszyn Studia I stopnia. Technologie informacyjne Rodzaj przedmiotu:

Matematyczne Podstawy Informatyki

Sylabus modułu: Matematyczne podstawy informatyki (kod modułu:03-mo2n-12-mpln)

kierunkowy (podstawowy / kierunkowy / inny HES) nieobowiązkowy (obowiązkowy / nieobowiązkowy) polski drugi semestr letni (semestr zimowy / letni)

Elektrotechnika I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny) Niestacjonarne (stacjonarne / niestacjonarne)

Nazwa Wydziału Nazwa jednostki prowadzącej moduł Nazwa modułu kształcenia Kod modułu Język kształcenia Efekty kształcenia dla modułu kształcenia

Algorytmy i struktury danych

przedmiot kierunkowy (podstawowy / kierunkowy / inny HES) obowiązkowy (obowiązkowy / nieobowiązkowy) polski semestr I

KARTA PRZEDMIOTU. Algorytmy i struktury danych, C4

Zadania laboratoryjne i projektowe - wersja β

Kierunek i poziom studiów: Matematyka, studia I stopnia (licencjackie), rok I

Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie

Algorytmy Równoległe i Rozproszone Część X - Algorytmy samostabilizujące.

ALGORYTMY GENETYCZNE (wykład + ćwiczenia)

Algorytmy i Struktury Danych

PRZEWODNIK PO PRZEDMIOCIE

Algorytmy wspomagania decyzji Czyli co i jak andrzej.rusiecki.staff.iiar.pwr.wroc.pl s.

Matematyczne podstawy informatyki Mathematical Foundations of Computational Sciences. Matematyka Poziom kwalifikacji: II stopnia

K.Pieńkosz Badania Operacyjne Wprowadzenie 1. Badania Operacyjne. dr inż. Krzysztof Pieńkosz

Kompletna dokumentacja kontenera C++ vector w -

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

PRZEWODNIK PO PRZEDMIOCIE

Zał nr 4 do ZW. Dla grupy kursów zaznaczyć kurs końcowy. Liczba punktów ECTS charakterze praktycznym (P)

Metody Optymalizacji: Przeszukiwanie z listą tabu

WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI

Egzamin / zaliczenie na ocenę* 0,5 0,5

Optymalizacja. Wybrane algorytmy

Karta (sylabus) przedmiotu

przedmiot kierunkowy (podstawowy / kierunkowy / inny HES) obowiązkowy (obowiązkowy / nieobowiązkowy) polski semestr I

Algorytm - pojęcie algorytmu, sposób zapisu, poziom szczegółowości, czynności proste i strukturalne. Pojęcie procedury i funkcji.

Kierunek: Informatyka. Przedmiot:

PRZEWODNIK PO PRZEDMIOCIE

PRZEWODNIK PO PRZEDMIOCIE

Programowanie komputerów

KARTA PRZEDMIOTU. zaliczenie na ocenę WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI

SYLABUS/KARTA PRZEDMIOTU

Nazwa przedmiotu: METODY SZTUCZNEJ INTELIGENCJI W ZAGADNIENIACH EKONOMICZNYCH Artificial intelligence methods in economic issues Kierunek:

Wykład organizacyjny

Teoria obliczeń i złożoność obliczeniowa

Algorytmy i złożoność obliczeniowa. Wojciech Horzelski

Algorytmika i pseudoprogramowanie

Transkrypt:

PROJEKTOWANIE ALGORYTMÓW I METODY SZTUCZNEJ INTELIGENCJI INFORMACJE PODSTAWOWE Kontakt pok. 230 C-3, tel.: 071 320 4226 Wykład 1 dr inż. Łukasz Jeleń Na podstawie wykładów dr. T. Fevensa e-mail: lukasz.jelen@pwr.edu.pl www: lukasz.jelen.staff.iiar.pwr.wroc.pl EFEKTY KSZTAŁCENIA Z zakresu wiedzy (dot. wykładu): PEK_W01 zna podstawowe i zaawansowane struktury danych (tablice, listy, stosy, kolejki, kopce, tablice haszujące, drzewa, grafy) i efektywność podstawowych operacji na nich (dodawanie, usuwanie, wyszukiwanie elementów). PEK_W02 zna zasadę działania i efektywność podstawowych algorytmów sortowania, wyszukiwania, wyznaczania minimalnego drzewa rozpinającego, najkrótszych ścieżek, maksymalnego przepływu. PEK_W03 jest w stanie wyjaśnić budowę i zasadę działania Deterministycznej oraz Niedeterministycznej Maszyny Turinga oraz różnice między nimi. PEK_W04 zna reguły kodowania danych wejściowych problemów, ich efektywność oraz wpływ na rozmiar instancji problemu. PEK_W05 zna definicje algorytmu wielomianowego i ponadwielomianowego. PEK_W06 zna podstawowe klasy złożoności obliczeniowej problemów kombinatorycznych decyzyjnych (P, NP, NP-zupełne, silnie NP-zupełne), relacje między nimi oraz konsekwencje i ograniczenia wynikające z przynależności problemu do danej klasy. Z zakresu wiedzy (dot. wykładu) - c.d.: PEK_W07 zna definicje wielomianowej i pseudowielomianowej transformacji. PEK_W08 zna kroki dowodzenia NP-zupełności problemów decyzyjnych oraz sposób dowodzenia przynależności problemów do klasy P. PEK_W09 jest w stanie scharakteryzować analizę najgorszego przypadku, eksperymentalną oraz probabilistyczną, a także miary oceny jakości algorytmów przybliżonych. PEK_W10 jest w stanie wyjaśnić istotę algorytmów oraz schematów aproksymacyjnych. PEK_W11 zna zasadę działania wybranych algorytmów metaheurystycznych (poszukiwania z zakazami, symulowanego wyżarzania, poszukiwania genetycznego, poszukiwania mrówkowego). PEK_W12 zna podstawowe metody sztucznej inteligencji: strategie przeszukiwań drzew rozwiązań, algorytm A*, algorytm MINIMAKS, algorytm cięć alfa-beta. EFEKTY KSZTAŁCENIA

ZALICZENIE LITERATURA Efekty kształcenia http://weka.pwr.wroc.pl/ Studenci -> Plany i programy studiów -> Karty przedmiotów Ocena z wykładu Ocena końcowa = 60% oceny z kolokwium + 40% oceny z laboratorium Kolokwium zaliczeniowe: ostatni wykład -> 18.06.2018 data może ulec zmianie!!! LITERATURA PODSTAWOWA LITERATURA [1] T. Cormen, C.E. Leiserson, R.L. Rivest, Wprowadzenie do algorytmów, WNT 2003. [2] N. Wirth, Algorytmy + struktury danych = programy, WNT 2004. [3] J. Błażewicz, Problemy optymalizacji kombinatorycznej, PWN, Warszawa 1996. [4] A. Janiak, Wybrane problemy i algorytmy szeregowania zadań i rozdziału zasobów, Akademicka Oficyna Wydawnicza PLJ, Warszawa 1999. [5] C. Smutnicki, Algorytmy szeregowania, Exit, Warszawa 2002. [6] L. Bolc, J. Cytowski, Metody przeszukiwania heurystycznego, PWN 1989. [7] P. Wróblewski, Algorytmy, struktury danych i techniki programowania, Helion 2003. LITERATURA UZUPEŁNIAJĄCA: [1] M. Sysło, N. Deo, J. Kowalik, Algorytmy optymalizacji dyskretnej, PWN, Warszawa 1999. [2] T. Sawik, Badania operacyjne dla inżynierów zarządzania, Wydawnictwa AGH, Kraków 1998. [3] N.J. Nilsson, Principles of Artificial Intelligence, Springer-Verlag, 1982. [4] S. Kirkpatrick, C.D. Gelatt, M.P. Vecchi, Optimization by Simulated Annealing, Science 220 (4598), str. 671 680, 1983. [5] F. Glover, Tabu Search - Part I, ORSA Journal on Computing, 1 (3), str. 190-206, 1989. [6] F. Glover, Tabu Search - Part II, ORSA Journal on Computing, 2 (1), str. 4-32, 1990. [7] Z. Michalewicz Algorytmy genetyczne + struktury danych = programy ewolucyjne, Warszawa, WNT 1996. [8] M. Dorigo, Ant Colony Optimization, MIT Press, 2004. LITERATURA

JAK DOSTAĆ DOBRĄ OCENĘ? ISTOTA KURSU Być systematycznym Robić zadania z list zadań Przychodzić na zajęcia Sprawdzona metoda: zaimplementować przykłady przerabiane na wykładzie Szukać dodatkowych przykładów w Internecie I will, in fact, claim that the difference between a bad programmer and a good one is whether he considers his code or his data structures more important. Bad programmers worry about the code. Good programmers worry about data structures and their relationships. Torvalds, Linus (2006-06-22). Message to Git mailing list PROBLEM VS. ALGORYTM PRZEPIS NA CIASTO Co to jest? Ciasto: 1 szklanka wody 150g margaryny 1 szklanka mąki pszennej Przygotuj Piekarnik : 180 0 Woda: 250ml Olej: 83ml Instrukcje Podgrzej piekarnik do 180 0. Posmaruj formę margaryną Ciasto Pieczenie W wysokim naczyniu wymieszać zawartość torebki z wodą i olejem. Ubijać przez 2 minuty na wysokich obrotach 32x22 cm: 30 40 min. ø 20 cm: 30 40 min. Forma do babeczek: 15 20 min. 1. Przygotować ciasto. Wodę zagotować z margaryną. ( ) po jednym jajku, szczyptę soli i proszek do pieczenia. 5 jajek szczypta soli szczypta proszku do pieczenia Mając dane wejściowe (składniki) mamy rozwiązać problem pieczenia ciasta Jak? 2. Ciasto podzielić na 2 części. 3. Formę prostokątną o wymiarach ok. 35x 24cm wysmarować margaryną i posypać mąką. Połowę ciasta rozprowadzić łyżką w formie. 4. Piec w nagrzanym piekarniku, na złoty kolor, ok. 30min. w temperaturze 180 C. W ten sam sposób upiec drugą połowę ciasta. 5. Przygotować masę budyniową. 2 szklanki mleka i cukier zagotować. ( ) dodawać stopniowo zimny budyń. 6. Masę rozsmarować na jednej części ciasta. ( ) Ciasto wstawić do lodówki, na co najmniej 2 godz. 7. Gotowe posypać cukrem pudrem.

PRZEPIS NA CIASTO A PROGRAM KOMPUTEROWY Przepis DEFINICJA PROBLEMU Zbiór danych wraz z poleceniem wykonania daje nam specyfikację potrzebnych przedmiotów i przedstawia szczegółowy opis instrukcji ich użycia opis składników i czynności potrzebnych do upieczenia ciasta. rozwiązanie problemu pieczenia ciasta Dokładne wykonanie instrukcji skutkuje poprawnie upieczonym ciastem. Producent rozwiązał za nas problem pieczenia ciasta. Program jest zestawem instrukcji potrzebnych do poprawnego rozwiązania problemu. Pisząc program analizujemy problem i rozwiązujemy go tworząc przepis (program). dane wejściowe definicja danych opis problemu pytanie polecenie Dane wejściowe Opis problemu Rozwiązanie problemu Dane wyjściowe Czy rozwiązanie jest optymalne? Algorytm PRZYKŁAD: PROBLEM OPTYMALIZACJI Ogólny problem optymalizacji: Mając daną funkcję f: X IR oraz zbiór X należy znaleźć x* X, dla którego f(x*) jest minimalne, tzn: f(x*) = minx X f(x) Klasyczne przykłady optymalizacji: Problem komiwojażera dane jest n miast oraz odległość/czas podróży pomiędzy każdą parą miast. Należy znaleźć najkrótszą/najszybszą drogę łączącą wszystkie miasta zaczynającą się i kończącą w określonym punkcie. Problem plecakowy problem wyboru przedmiotów, tak by ich sumaryczna wartość była jak największa i jednocześnie mieściły się w plecaku. www.mini.pw.edu.pl/miniwyklady/ grafy/prob-komiw.html Wikipedia PROGRAM KOMPUTEROWY (KOD) = STRUKTURA(Y) DANYCH + ALGORYTM(Y) Musimy znać podstawowe algorytmy i struktury danych aby móc tworzyć kod dobrej jakości Przez dobrą jakość rozumieć będziemy program, który: jest wydajny rozwiązuje problem zgodnie z nałożonymi ograniczeniami sprzętowymi Nie można zostać dobrym programistą bez dobrej znajomości algorytmów i struktur danych Struktury danych organizują informację Algorytm przetwarza informację

ALGORYTM Jest zbiorem dobrze zdefiniowanych zasad niezbędnych do rozwiązania problemu. Przetwarza dane wejściowe problemu na dane wyjściowe, które ten problem rozwiązują. Problem może zawierać wiele algorytmów ALGORYTM Właściwości: Musi być poprawny Musi się składać ze ściśle zdefiniowanych kroków Kolejność kroków musi być ściśle określona Musi się składać ze skończonej ilości kroków Musi się zakończyć dla wszystkich danych wejściowych Dane wejściowe Algorytm Dane wyjściowe Program komputerowy jest instancją lub konkretną reprezentacją algorytmu w dowolnym języku programowania STRUKTURY DANYCH - DEFINICJE Typ jest to zbiór wartości np.: Integer, Boolean Typ danych jest typem i zbiorem operacji, które przetwarzają ten typ. np.: Suma, Iloczyn Dana jest elementem typu danych - informacją Np.: Typy danych w C++: prosty: int, float, bool zagregowany: array, struct, vector, string Zagregowany typ danych jest przykładem struktury danych składający się z: prostych pól powiązań między polami operacji na strukturze danych, które pozwalają na manipulację tych pól STRUKTURY DANYCH W językach programowania, niektóre struktury danych są wbudowane (np.: tablice, łańcuchy znakowe) Wiele innych struktur danych jest często niezbędnych możemy je zaimplementować z wykorzystaniem wbudowanych struktur danych Nazywamy je strukturami zdefiniowanymi przez użytkownika (user-defined) STL dla C++ Do zdefiniowania struktur danych w C++ wykorzystuje się klasy Na wykładzie poznamy struktury danych i algorytmy, które są najczęściej wykorzystywane w wielu aplikacjach

ABSTRACT DATA TYPE (ADT) Definicja typu danych tylko za pomocą wartości i operacji na tym typie danych Jest specyfikacją typu danych, która: ukazuje istotne cechy ukrywa detale implementacyjne Definiuje typ danych przez zależności wejścia - wyjścia np.: każda operacja ADT jest zdefiniowana przez jej wejścia i wyjścia ADT radzą sobie ze złożonością poprzez abstrakcję: metaforę PRZYKŁAD ADT Słownik D : Zbiór słów i ich znaczeń Operacje: D.find(k,y); przeszukaj D dla słowa k i jeśli znalezione, y jest definicją k D.insertItem(k,y); wstaw nowe słowo k o znaczeniu y do D D.removeElement(k); usuń słowo k i jego definicję z D STRUKTURA DANYCH VS. ADT Struktura danych jest konkretną implementacją ADT - Typ - Operacje Typ Danych Dane: Forma Logiczna WYBÓR IMPLEMENTACJI ADT Wszystkie struktury danych posiadają swoje wady i zalety. Bardzo rzadko jedna struktura danych jest lepsza od innych we wszystkich sytuacjach. Struktura danych wymaga: przestrzeni dla każdej przechowywanej danej - Pamięć - Podalgorytmy Dane: Forma Fizyczna czasu do przeprowadzenia każdej podstawowej operacji wysiłku programistycznego.

PRZYKŁAD: SD VS. ADT Dane: Uporządkowane Wartości Operacje: Wstaw, Usuń, Struktura danych: Lista na tablicy Dane: Wartości zapisane w tablicy WYBÓR IMPLEMENTACJI ADT Tylko po dokładnej analizie charakterystyki problemu możemy wybrać najlepszą strukturę danych dla danego zadania Przykład z banku: Operacje: Wstaw, Usuń,, implementowane na tablicy Implementacja Struktura danych: Lista jednokierunkowa Dane: Wartości zapisane w liście jednokierunkowej Operacje: Wstaw, Usuń,, implementowane na liście Otwarcie konta: kilka minut Transakcje: kilka sekund Zamknięcie konta: doba ZŁOŻONOŚĆ OBLICZENIOWA SIEDEM WAŻNYCH FUNKCJI Najlepszy przypadek Średni przypadek Najgorszy przypadek Większość algorytmów przekształca obiekty wejściowe w obiekty wyjściowe Czas działania (złożoność obliczeniowa) algorytmu zazwyczaj wzrasta wraz z rozmiarem danych wejściowych Średni czas działania jest najczęściej trudny do określenia koncentrujemy się na przypadku najgorszym łatwiejszy do analizy Istotny w aplikacjach takich jak gry, finanse i robotyka T(n) 1E+30 1E+27 1E+24 1E+21 1E+18 1E+15 1E+12 1E+9 1E+6 1E+3 1E+0 Sześcienna Kwadratowa Liniowa 1E+0 1E+2 1E+4 1E+6 1E+8 1E+10 n Siedem funkcji często wykorzystywanych w analizie algorytmów: Stała 1 Logarytmiczna log n Liniowa n N-Log-N n log n Kwadratowa n 2 Sześcienna n 3 Wykładnicza 2 n Na wykresie log-log, nachylenie linii świadczy o wzroście funkcji

DOŚWIADCZENIA OGRANICZENIE EKSPERYMENTÓW Czas (ms) 9000 6750 4500 2250 0 0 23 45 68 90 Rozmiar danych wejściowych Napisz program implementujący algorytm Przetestuj napisany program na danych o różnych rozmiarach Wykorzystaj metodę typu System.currentTimeMillis() do dokładnego oszacowania czasu działania algorytmu Zrób wykres dla otrzymanych wyników. Niezbędne jest zaimplementowanie algorytmu, który może być trudny Wyniki złożoności obliczeniowej mogą nie być znaczące dla danych wejściowych, które nie były wykorzystywane w eksperymentach W celu porównania dwóch algorytmów należy korzystać z tego samego sprzętu i oprogramowania ANALIZA TEORETYCZNA Wykorzystuje formalną reprezentację algorytmu zamiast implementacji Charakteryzuje złożoność obliczeniową jako funkcję rozmiaru danych wejściowych, n Bierze pod uwagę wszystkie możliwe dane wejściowe Pozwala nam na ocenę szybkości działania algorytmu niezależnie od sprzętu/oprogramowania DEFINICJA Złożoność obliczeniowa algorytmu A jest zdefiniowana przez: t - czas - ilość operacji niezbędnych do rozwiązania dowolnej instancji I problemu o rozmiarze N(I) przez algorytm A => N(I) = n fa(n) = max(t) Nas interesuje jak wygląda funkcja fa, a nie jej wartości