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

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

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

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

Efektywność Procedur Obliczeniowych. wykład 5

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

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

Projektowanie i analiza algorytmów

PRZEWODNIK PO PRZEDMIOCIE

PROBLEMY NIEROZSTRZYGALNE

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

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

Algorytmy i Struktury Danych.

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

Zasady analizy algorytmów

Analiza algorytmów zadania podstawowe

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

wstęp do informatyki i programowania część testowa (25 pyt. / 60 min.)

PRZEWODNIK PO PRZEDMIOCIE

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

Struktura danych. Sposób uporządkowania informacji w komputerze.

Matematyczne Podstawy Informatyki

Problem decyzyjny naley do klasy NP. (Polynomial), jeeli moe by rozwizany w czasie conajwyej wielomianowym przez algorytm A dla DTM.

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew

dodatkowe operacje dla kopca binarnego: typu min oraz typu max:

Analiza algorytmów zadania podstawowe

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

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

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

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

Wykład 8. Drzewo rozpinające (minimum spanning tree)

Podstawy Informatyki. Sprawność algorytmów

Algorytmy i Struktury Danych

Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to

Logika stosowana. Ćwiczenia Złożoność obliczeniowa problemu spełnialności. Marcin Szczuka. Instytut Informatyki, Uniwersytet Warszawski

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

Wprowadzenie do złożoności obliczeniowej

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

Lista 6 Problemy NP-zupełne

PRZEWODNIK PO PRZEDMIOCIE

Laboratorium nr 7 Sortowanie

Algorytmy i złożoności Wykład 5. Haszowanie (hashowanie, mieszanie)

9. Schematy aproksymacyjne

Podstawowe algorytmy i ich implementacje w C. Wykład 9

Algorytmy zachłanne. dr inż. Urszula Gałązka

Projektowanie i Analiza Algorytmów

KARTA MODUŁU KSZTAŁCENIA

Typy algorytmów losowych. ALP520 - Wykład z Algorytmów Probabilistycznych p.2

Algorytmy i struktury danych

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

KARTA MODUŁU KSZTAŁCENIA

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

1 Wprowadzenie do algorytmiki

Wprowadzenie do złożoności obliczeniowej

Wykład 10 Grafy, algorytmy grafowe

KARTA PRZEDMIOTU. Algorytmy i struktury danych, C4

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

Algorytmy i Struktury Danych.

Algorytmy Równoległe i Rozproszone Część III - Układy kombinacyjne i P-zupełność

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

Programowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Sortowanie - wybrane algorytmy

OBLICZALNOŚĆ I NIEOBLICZALNOŚĆ

Wykład 1_2 Algorytmy sortowania tablic Sortowanie bąbelkowe

Plan wykładu. Przykład. Przykład 3/19/2011. Przykład zagadnienia transportowego. Optymalizacja w procesach biznesowych Wykład 2 DECYZJA?

Algorytmy i Struktury Danych

Informatyka 1. Złożoność obliczeniowa

Algorytmy i struktury danych.

Wstęp do programowania

INFORMATYKA SORTOWANIE DANYCH.

Programowanie dynamiczne i algorytmy zachłanne

Zaawansowane algorytmy. Wojciech Horzelski

MATEMATYKA DYSKRETNA - MATERIAŁY DO WYKŁADU GRAFY

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

Programowanie dynamiczne cz. 2

Matematyka dyskretna Literatura Podstawowa: 1. K.A. Ross, C.R.B. Wright: Matematyka Dyskretna, PWN, 1996 (2006) 2. J. Jaworski, Z. Palka, J.

KARTA MODUŁU KSZTAŁCENIA

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

Podstawy Programowania

Algorytmy sortujące. Sortowanie bąbelkowe

Szeregowanie zadań. Wykład nr 3. dr Hanna Furmańczyk

Maszyna Turinga języki

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

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

2004 Goodrich, Tamassia

Przykªady problemów optymalizacji kombinatorycznej

Grafy i sieci w informatyce - opis przedmiotu

Przykład: Σ = {0, 1} Σ - zbiór wszystkich skończonych ciagów binarnych. L 1 = {0, 00, 000,...,1, 11, 111,... } L 2 = {01, 1010, 001, 11}

Programowanie dynamiczne (optymalizacja dynamiczna).

Karta (sylabus) przedmiotu

Zadanie projektowe 1: Struktury danych i złożoność obliczeniowa

Równoległy algorytm wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami

Wykład na Politechnice Krakowskiej w dniu 18 stycznia 2012 r. ZADAŃ I ALGORYTMÓW W OPTYMALIZACJI DYSKRETNEJ

Podstawy Programowania. Złożoność obliczeniowa

Metody optymalizacji Optimization methods Forma studiów: stacjonarne Poziom studiów II stopnia. Liczba godzin/tydzień: 1W, 1Ć

Informacja w perspektywie obliczeniowej. Informacje, liczby i obliczenia

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

Hierarchia Chomsky ego Maszyna Turinga

Metodyki i techniki programowania

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

Transkrypt:

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

Formy zajęć: Wykład 1 godz., Ćwiczenia 1 godz., Projekt 2 godz.. Adres strony z materiałami do wykładu: http://www.zio.iiar.pwr.wroc.pl/sdizo.html

Struktury danych wchodzące w zakres kursu: Tablice, Listy, Kolejki, Stosy, Grafy, Drzewa binarne, Kopce, Tablice haszujące.

Złożoność obliczeniowa Wg teorii złożoności obliczeniowej efektywnym jest algorytm o złożoności czasowej ograniczonej od góry przez wielomian od rozmiarów problemu. Algorytmy o wykładniczej złożoności obliczeniowej uważane są za nieefektywne.

Problem dodawania macierzy kwadratowych Dane: Macierze A n n, B n n Zadanie: Wyznaczyć macierz C n n = A n n + B n n

Algorytm dodawania macierzy kwadratowych Algorytm wyrażony w języku zawierającym elementy języka naturalnego i formalnego Dla każdej pary < i, j > {1, n} {1, n} wykonaj c ij = a ij +b ij Oznaczenia: 1, n = {1,2,, n}, X Y - iloczyn kartezjański zbiorów X, Y Złożoność obliczeniowa algorytmu n jest rozmiarem problemu. k n 2

Rozmiar problemu dla danych w postaci zbioru {x 1, x 2,, x n } Przykłady rozmiaru: Liczba elementów czyli n, Liczba znaków w dziesiętnym kodowaniu n elementów, Liczba znaków w dwójkowym kodowaniu n elementów, Liczba znaków w jedynkowym kodowaniu n elementów. Kodowanie (7) 10 = (111) 2 = (1111111) 1

Przykłady problemów o więcej niż jednym rozmiarze danych: Problem mnożenia macierzy nie kwadratowych 3 rozmiary, Problem najkrótszej drogi w grafie rozmiarami mogą być: liczba wierzchołków, liczba łuków.

Problem mnożenia macierzy kwadratowych Dane: Macierze A n n, B n n Zadanie: Wyznaczyć macierz C n n = A n n B n n

Algorytm mnożenia macierzy kwadratowych Algorytm wyrażony w języku zawierającym elementy języka naturalnego i formalnego Dla każdej pary < i, j > {1, n} {1, n} wykonaj c ij = n k=1 a ik b kj Złożoność obliczeniowa algorytmu k n 3

Złożoność algorytmów Algorytmu dodawania macierzy kwadratowych k n 2 Algorytmu mnożenia macierzy kwadratowych k n 3 Powyższe funkcje są wielomianami, a zatem te algorytmy są uważane za efektywne.

Problem wyznaczania elementu maksymalnego w zbiorze max = max{a1, A2,, An} Pseudokod algorytmu max(a1, A2,, to An integers); max := A1; for i:= 2 to n do if max < Ai then max := Ai; return max {max is the largest element} Złożoność obliczeniowa algorytmu k n

Problem sortowania zbioru niemalejąco. {x 1, x 2,, x n } Idea algorytmu sortowania bąbelkowego Algorytm opiera się na zasadzie: każda liczba jest mniejsza lub równa od liczby maksymalnej. Porównując kolejno liczby można wyznaczyć największą z nich. Następnie ciąg częściowo posortowany (mający na końcu posortowane liczby maksymalne), można skrócić o te liczby i ponowić szukanie maksimum, już bez elementów posortowanych i tak długo, aż zostanie nam jeden element. Otrzymane kolejne maksima są coraz mniejsze przez co ciąg jest uporządkowany.

Algorytm sortowania bąbelkowego w kodzie C void bubblesort(int table[], int size) { int i, j, temp; for (i = 0; i<size; i++) { for (j=0; j<size-1-i; j++) { if (table[j] > table[j+1]) { temp = table[j+1]; table[j+1] = table[j]; table[j] = temp; } } } }

Złożoność algorytmu sortowania bąbelkowego k n 2

Problem podziału zbioru Dane: X = x 1,, x i,, x k zbiór k elementów x i N +, gdzie N + = 1,2,, B N +, k i=1 x i = 2B. Pytanie: Czy istnieje podzbiór X 1 X taki, że x i X 1 x i = B?

Problem: Czy istnieje algorytm wielomianowy dla problemu podziału zbioru?

Problem: Czy istnieje algorytm wielomianowy dla problemu podziału zbioru? Udowodniono: Problem podziału zbioru jest tzw. Problemem NP-zupełnym czyli wydaje się prawie pewne, że algorytmu wielomianowego nie uda się zbudować.

Intuicyjne pojmowanie klas P i NP Klasa P zawiera te wszystkie problemy decyzyjne, dla których znaleziono wielomianowe algorytmy ich rozwiązania. Klasa NP zawiera te wszystkie problemy decyzyjne, dla których znaleziono ponadwielomianowe algorytmy ich rozwiązania (w wielomianowym czasie można odgadnąć rozwiązanie i sprawdzić czy to rozwiązanie daje odpowiedź "tak").

Problem decyzyjny π 1 jest nazywany NP-zupełnym, jeśli: 1. π 1 εnp, 2. Dla każdego innego problemu decyzyjnego π 2 εnp jest π 2 π 1. Zatem, jeśli istniałby algorytm wielomianowy do rozwiązywania jakiegokolwiek problemu NP-zupełnego, to każdy problem z klasy NP (w tym również problemy NP-zupełne) mógłby być rozwiązany za pomocą algorytmu wielomianowego. Z bezskuteczności poszukiwań algorytmu wielomianowego dla któregokolwiek problemu NP-zupełnego wynika, że prawie na pewno wszystkie problemy NP-zupełne można rozwiązać tylko przy użyciu algorytmów ponadwielomianowych.

Decyzyjny problem szeregowania zadań niezależnych na dwu maszynach (procesorach) Dane: T = t 1,, t i,, t k zbiór czasów wykonania k zadań niezależnych (bez ograniczeń kolejności wykonywania) gdzie t i N +, B N +, k i=1 t i = 2B. Pytanie: Czy można te zadania tak rozłożyć na dwie maszyny, że sumaryczny czas wykonania będzie równy B?

Czy rozwiązanie jednego z dwu problemów: Decyzyjnego problemu szeregowania zadań niezależnych na dwu maszynach i Problemu podziału zbioru można wyznaczyć na postawie rozwiązania drugiego? Powyższe pytanie dotyczy redukcji (transformacji) jednego problemu do drugiego.

Problem podziału zbioru Dane: X = x 1,, x i,, x k zbiór k elementów x i N +, gdzie N + = 1,2,, k B N +, i=1 x i = 2B. Pytanie: Czy istnieje podzbiór X 1 X taki, że x i X 1 x i = B? Decyzyjny problem szeregowania zadań niezależnych na dwu maszynach (procesorach) Dane: T = t 1,, t i,, t k zbiór czasów wykonania k zadań niezależnych (bez ograniczeń kolejności wykonywania) gdzie t i N +, k B N +, i=1 t i = 2B. Pytanie: Czy można te zadania tak rozłożyć na dwie maszyny, że sumaryczny czas wykonania będzie równy B?

Jakie ograniczenie narzucilibyśmy na złożoność obliczeniową transformacji? Czy rozwiązanie jednego z dwu problemów: Decyzyjnego problemu szeregowania zadań niezależnych na dwu maszynach i Problemu podziału zbioru można wyznaczyć na postawie rozwiązania drugiego? Powyższe pytanie dotyczy redukcji (transformacji) jednego problemu do drugiego.

Problem charakteryzowany jest poprzez Dane (dane wejściowe) i Zadanie do wykonania lub Pytanie.

Problem dodawania macierzy kwadratowych Dane: Macierze A n n, B n n Zadanie: Wyznaczyć macierz C n n = A n n + B n n Problem podziału zbioru Dane: X = x 1,, x i,, x k zbiór k elementów x i N +, gdzie N + = 1,2,, k B N +, i=1 x i = 2B. Pytanie: Czy istnieje podzbiór X 1 X taki, że x i X 1 x i = B?

Problemy rozstrzygalne i nierozstrzygalne Problem rozstrzygalny (rozwiązywalny) to problem, dla którego istnieje algorytm znajdujący rozwiązanie w skończonej liczbie kroków. Problem nierozstrzygalny (nierozwiązywalny) to problem, dla którego udowodniono, że nie istnieje algorytm znajdujący rozwiązanie w skończonej liczbie kroków. Złożoność obliczeniową badamy dla problemów rozstrzygalnych.

Algorytm to procedura do rozwiązywania problemu. Algorytm może być wyrażony w: Języku naturalnym, Języku formalnym, Języku zawierającym konstrukcje języka naturalnego i formalnego, Pseudokodzie, Języku programowania.

Złożoność obliczeniowa algorytmu a złożoność problemu Algorytm rozwiązujący problem może mieć złożoność obliczeniową logarytmiczną, liniową, wielomianową, wykładniczą i wiele innych. Analizowana jest złożoność czasowa i pamięciowa. Jeśli problem jest NP-zupełny, to prawie na pewno nie zostanie znaleziony wielomianowy algorytm rozwiązujący. Nie można mówić, że dla problemu NP-zupełnego najprawdopodobniej nie zostanie znaleziony wielomianowy algorytm rozwiązujący.

Następny slajd pochodzi z Krajowych Ram Kwalifikacyjnych kursu Struktury danych i złożoność obliczeniowa

Forma zajęć - wykład Wy1 Zajęcia organizacyjne: program, wymagania, literatura. 1 Wy2 Wprowadzenie do teorii złożoności obliczeniowej kodowanie danych wejściowych. 2 Eksplozja kombinatoryczna. Algorytmy wielomianowe Wy3, i ponadwielomianowe. Klasy złożoności problemów Wy4 decyzyjnych (P, NP, NP-zupełne i silnie NP-zupełne). 4 Relacja pomiędzy NP-zupełnością i NP-trudnością. Przykłady problemów wielomianowo rozwiązywalnych Wy5, i NP-zupełnych. Transformacja wielomianowa. Zarys Wy6 przeprowadzania dowodów NP-zupełności. 4 Wy7 Algorytmy pseudowielomianowe. Problemy liczbowe i silna NP-zupełność. 2 Wy8 Kolokwium 2 Suma godzin 15

Oceny (F formująca (w trakcie semestru), P podsumowująca (na koniec semestru) F1 F2 F3 P = 0,25 F1 + 0,25 F2 + 0,5 F3 Sposób oceny osiągnięcia efektu kształcenia Odpowiedzi ustne, Wyniki kolokwiów cząstkowych. Wyniki realizacji zadań projektowych Kolokwium pisemne

Literatura [1] T. Cormen, C.E. Leiserson, R.L. Rivest, Wprowadzenie do algorytmów, WNT 2003. [2] J. Błażewicz, Problemy optymalizacji kombinatorycznej, PWN, Warszawa 1996. [3] M. Garey, D. Johnson, Computers and Intractability: A Guide to the Theory of NP- Completeness, W. H. Freeman and Co., New York, 1979.

Instancją I problemu π jest konkretny problem ze zdefiniowanymi wszystkimi danymi wejściowymi. Zbiór instancji problemu π oznaczać będziemy symbolem D π. Należy rozróżniać problemy i ich instancje.

Problem podziału zbioru Dane: X = x 1,, x i,, x k zbiór k elementów x i N +, gdzie N + = 1,2,, k B N +, i=1 x i = 2B. Pytanie: Czy istnieje podzbiór X 1 X taki, że x i X 1 x i = B? Instancja problemu podziału zbioru Dane: X = x 1,, x i,, x k = 3,11,7,23,18 zbiór pięciu elementów, 5 B = 31, i=1 x i = 2 B. Pytanie: Czy istnieje podzbiór X 1 X taki, że x i X 1 x i = B?

Kodowanie danych wejściowych Sposób kodowania danych wejściowych ma wpływ na rozmiar problemu (długość danych wejściowych) Czy każdy z następujących sposobów kodowania liczb: Dziesiętny, Binarny, Jedynkowy jest właściwy?

Alfabet jest skończonym zbiorem symboli. Alfabet oznaczamy symbolem. Przykłady Alfabet dziesiętny jest separatorem. = {0,1,2,, 8,9, }, gdzie Alfabet dwójkowy = {0,1, }. Alfabet jedynkowy = {1, }.

Słowem alfabetu nazywamy skończony ciąg symboli alfabetu \{ }. Szczególnym przypadkiem jest słowo puste czyli nie zawierające żadnego symbolu Przykłady Słowa dziesiętne: 536, 1429, 374502 Słowa dwójkowe: 10, 0, 1001011 Słowa jedynkowe: 111, 11111, 1, 11111111

Słownikiem alfabetu alfabetu \{ }. jest zbiór wszystkich słów Przykłady Słownik dziesiętny: {0,1,2,,9,10,11,,99,100, 101, } Słownik dwójkowy: {0,1,10,11,100,101, } Słownik jedynkowy: {1,11,111,1111, }

Językiem L alfabetu jest skończony ciąg słów tego alfabetu oddzielonych separatorami. Przykłady Język dziesiętny: 402 31 58 Język dwójkowy: 1011 101111 11 1000 Język jedynkowy: 11 1111 1 111 111