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

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 MODUŁU KSZTAŁCENIA

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

KARTA MODUŁU KSZTAŁCENIA

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

PRZEWODNIK PO PRZEDMIOCIE

PRZEWODNIK PO PRZEDMIOCIE

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

Metodyki i techniki programowania

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

Opisy efektów kształcenia dla modułu

PRZEWODNIK PO PRZEDMIOCIE

Ciasto z serem i musem truskawkowym

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

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

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

Algorytmy i struktury danych.

Metodyki i techniki programowania

PRZEWODNIK PO PRZEDMIOCIE

NAZWA PRZEDMIOTU/MODUŁU KSZTAŁCENIA:

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

Algorytmy i Struktury Danych.

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

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

PRZEWODNIK PO PRZEDMIOCIE

Tomasz M. Gwizdałła 2012/13

Wprowadzenie do złożoności obliczeniowej

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

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

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

Matematyczne Podstawy Informatyki

KARTA MODUŁU KSZTAŁCENIA

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

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

Haszowanie. dr inż. Urszula Gałązka

Grafy i sieci w informatyce - opis przedmiotu

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

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

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

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

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

METODY OPISU ALGORYTMÓW KOMPUTEROWYCH

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

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

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

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

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

Kierunek: Informatyka. Przedmiot:

ALGORYTMY GENETYCZNE (wykład + ćwiczenia)

WYDZIAŁ BUDOWNICTWA LĄDOWEGO I WODNEGO

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

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:

Programowanie komputerów

Szablony funkcji i szablony klas

Heurystyki. Strategie poszukiwań

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

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

SYLABUS/KARTA PRZEDMIOTU

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

Zadania laboratoryjne i projektowe - wersja β

Kompletna dokumentacja kontenera C++ vector w -

ALGORYTMY I STRUKTURY DANYCH

Języki programowania II - opis przedmiotu

Projektowanie i Analiza Algorytmów

Aproksymacja funkcji a regresja symboliczna

KARTA PRZEDMIOTU. Algorytmy i struktury danych, C4

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

1. Analiza algorytmów przypomnienie

Efektywność Procedur Obliczeniowych. wykład 5

Algorytmika i pseudoprogramowanie

PRZEWODNIK PO PRZEDMIOCIE

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p.

PRZEWODNIK PO PRZEDMIOCIE

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa).

Algorytmy i struktury danych. wykład 1

Wykład I. Wprowadzenie do baz danych

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

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

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

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

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

Barwne serniki. Sprawdzone przepisy

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

Metody Optymalizacji: Przeszukiwanie z listą tabu

Karta (sylabus) przedmiotu

Wstęp do programowania

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

PRZEWODNIK PO PRZEDMIOCIE

PRZEWODNIK PO PRZEDMIOCIE

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI EFEKTY KSZTAŁCENIA

Plan. Zakres badań teorii optymalizacji. Teoria optymalizacji. Teoria optymalizacji a badania operacyjne. Badania operacyjne i teoria optymalizacji

Transkrypt:

PROJEKTOWANIE ALGORYTMÓW I METODY SZTUCZNEJ INTELIGENCJI INFORMACJE PODSTAWOWE Kontakt pok. 230 C-3, tel.: 071 320 2480 1 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 2 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. 3 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 4

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: przedostatni wykład -> 05.06.2015 LITERATURA PODSTAWOWA 5 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. 7 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 LITERATURA [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. 8

JAK DOSTAĆ DOBRĄ OCENĘ? Być systematycznym Robić zadania z list zadań PROBLEM VS. ALGORYTM Co to jest? Przychodzić na zajęcia Sprawdzona metoda: zaimplementować przykłady przerabiane na wykładzie Szukać dodatkowych przykładów w Internecie 9 10-1 PROBLEM VS. ALGORYTM PROBLEM VS. ALGORYTM Ciasto: Ciasto: Co to jest? 1 szklanka wody Co to jest? 1 szklanka wody 150g margaryny 150g margaryny 1 szklanka mąki pszennej 1 szklanka mąki pszennej 5 jajek 5 jajek szczypta soli szczypta soli szczypta proszku do pieczenia szczypta proszku do pieczenia Mając dane wejściowe (składniki) mamy rozwiązać problem pieczenia ciasta 10-2 10-3

PROBLEM VS. ALGORYTM PRZEPIS NA CIASTO Ciasto: Co to jest? 1 szklanka wody 150g margaryny 1 szklanka mąki pszennej 5 jajek szczypta soli szczypta proszku do pieczenia Mając dane wejściowe (składniki) mamy rozwiązać problem pieczenia ciasta 10-4 Jak? 1. Przygotować ciasto. Wodę zagotować z margaryną. ( ) po jednym jajku, szczyptę soli i proszek do pieczenia. 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 jednym blacie ciasta. ( ) Ciasto wstawić do lodówki, na co najmniej 2 godz. 7. Gotowe posypać cukrem pudrem. 11-1 PRZEPIS NA CIASTO PRZEPIS NA CIASTO 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. Przepis 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. 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 jednym blacie ciasta. ( ) Ciasto wstawić do lodówki, na co najmniej 2 godz. 7. Gotowe posypać cukrem pudrem. 11-2 1. Przygotować ciasto. Wodę zagotować z margaryną. ( ) po jednym jajku, szczyptę soli i proszek do pieczenia. 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 jednym blacie ciasta. ( ) Ciasto wstawić do lodówki, na co najmniej 2 godz. 7. Gotowe posypać cukrem pudrem. 11-3

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. dane wejściowe definicja danych Opis problemu rozwiązanie problemu pieczenia ciasta opis problemu Dokładne wykonanie instrukcji skutkuje poprawnie upieczonym ciastem. Producent rozwiązał za nas problem pieczenia ciasta. pytanie Dane wejściowe Rozwiązanie problemu Dane wyjściowe Program jest zestawem instrukcji potrzebnych do poprawnego rozwiązania problemu. polecenie Algorytm Pisząc program analizujemy problem i rozwiązujemy go tworząc przepis (program). 12 13 PRZYKŁAD: PROBLEM OPTYMALIZACJI 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*) = min x X f(x) 14-1 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*) = min x 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. 14-2 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 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 Struktury danych organizują informację Algorytm przetwarza informację Dane wejściowe Algorytm Dane wyjściowe 15 16 ALGORYTM 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 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 Program komputerowy jest instancją lub konkretną reprezentacją algorytmu w dowolnym języku programowania 17-1 17-2

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 Javie: 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 18 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ę 20-1 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 Javie wykorzystuje się klasy Na wykładzie poznamy struktury danych i algorytmy, które są najczęściej wykorzystywane w wielu aplikacjach 19 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ę 20-2

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 21 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 danej, którą przechowuje czasu do przeprowadzenia każdej podstawowej operacji wysiłku programistycznego. 23 STRUKTURA DANYCH VS. ADT Struktura danych jest konkretną implementacją ADT - Typ - Operacje - Pamięć - Podalgorytmy Typ Danych 22 Dane: Forma Logiczna Dane: Forma Fizyczna PRZYKŁAD: SD VS. ADT Dane: Uporządkowane Wartości Operacje: Wstaw, Usuń, Struktura danych: Lista na tablicy Dane: Wartości zapisane w tablicy 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 24

WYBÓR IMPLEMENTACJI ADT Tylko po dokładnej analizie charakterystyki problemu możemy wybrać najlepszą strukturę danych dla danego zadania WYBÓR IMPLEMENTACJI ADT Tylko po dokładnej analizie charakterystyki problemu możemy wybrać najlepszą strukturę danych dla danego zadania Przykład z banku: 25-1 WYBÓR IMPLEMENTACJI ADT Tylko po dokładnej analizie charakterystyki problemu możemy wybrać najlepszą strukturę danych dla danego zadania Przykład z banku: Otwarcie konta: kilka minut 25-2 WYBÓR IMPLEMENTACJI ADT Tylko po dokładnej analizie charakterystyki problemu możemy wybrać najlepszą strukturę danych dla danego zadania Przykład z banku: Otwarcie konta: kilka minut Transakcje: kilka sekund 25-3 25-4

WYBÓR IMPLEMENTACJI ADT ZŁOŻONOŚĆ OBLICZENIOWA Tylko po dokładnej analizie charakterystyki problemu możemy wybrać najlepszą strukturę danych dla danego zadania Przykład z banku: Otwarcie konta: kilka minut 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 Transakcje: kilka sekund Zamknięcie konta: doba łatwiejszy do analizy Istotny w aplikacjach takich jak gry, finanse i robotyka 25-5 SIEDEM WAŻNYCH FUNKCJI 26 DOŚWIADCZENIA 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 27 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. 28

OGRANICZENIE EKSPERYMENTÓ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 29 30 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 f A (n) = max(t) Nas interesuje jak wygląda funkcja F A, a nie jej wartości 31