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

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

Przykłady problemów optymalizacyjnych

PRZEWODNIK PO PRZEDMIOCIE

Podstawy Informatyki. Sprawność algorytmów

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

Zakładamy, że maszyna ma jeden stan akceptujacy.

O LICZBACH NIEOBLICZALNYCH I ICH ZWIĄZKACH Z INFORMATYKĄ

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

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

Wstęp do programowania

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

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

Lista 6 Problemy NP-zupełne

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

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

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

Projektowanie i Analiza Algorytmów

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

Informacja w perspektywie obliczeniowej. Informacje, liczby i obliczenia

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15

Matematyczne Podstawy Informatyki

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}

Matematyczne Podstawy Informatyki

Metoda tabel semantycznych. Dedukcja drogi Watsonie, dedukcja... Definicja logicznej konsekwencji. Logika obliczeniowa.

O ALGORYTMACH I MASZYNACH TURINGA

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

Algorytmika Problemów Trudnych

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

Teoretyczne podstawy informatyki

Algorytmy i Struktury Danych

Algorytmy i Struktury Danych.

OBLICZALNOŚĆ I NIEOBLICZALNOŚĆ

Imię, nazwisko, nr indeksu

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

Alan M. TURING. Matematyk u progu współczesnej informatyki

Reprezentacje grafów nieskierowanych Reprezentacje grafów skierowanych. Wykład 2. Reprezentacja komputerowa grafów

Zasady analizy algorytmów

Wprowadzenie do złożoności obliczeniowej

Literatura. 1) Pojęcia: złożoność czasowa, rząd funkcji. Aby wyznaczyć pesymistyczną złożoność czasową algorytmu należy:

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

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

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

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

Zaliczenie. Egzamin. lub. Wykład. Zaliczenie. Ćwiczenie. 3 zadania. Projekty. Ocena. Na ocenę

Metody Programowania

Technologie Informacyjne

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

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

Drzewa spinające MST dla grafów ważonych Maksymalne drzewo spinające Drzewo Steinera. Wykład 6. Drzewa cz. II

Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne

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

Sortowanie topologiczne skierowanych grafów acyklicznych

KARTA MODUŁU KSZTAŁCENIA

PRZEWODNIK PO PRZEDMIOCIE

Obliczenia inspirowane Naturą

Metody teorii gier. ALP520 - Wykład z Algorytmów Probabilistycznych p.2

PRZEWODNIK PO PRZEDMIOCIE

1 abbbaabaaabaa -wzorzec: aaba

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

Problem P = NP. albo czy informacja może. biec na skróty

Algorytm. a programowanie -

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

Efektywność Procedur Obliczeniowych. wykład 5

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer

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

Złożoność algorytmów. Wstęp do Informatyki

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

Programowanie dynamiczne i algorytmy zachłanne

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

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

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

Złożoność obliczeniowa. wykład 1

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

Zaawansowane algorytmy i struktury danych

Minimalne drzewa rozpinające

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

Badania operacyjne: Wykład Zastosowanie kolorowania grafów w planowaniu produkcji typu no-idle

Efektywność algorytmów

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

Algorytm. Krótka historia algorytmów

Automatyczne planowanie oparte na sprawdzaniu spełnialności

Kombinatoryczne problemy optymalizacyjne to problemy wyboru najlepszego rozwiązania z pewnego zbioru rozwiązań

1 Wprowadzenie do algorytmiki

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

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

PROBLEMY NIEROZSTRZYGALNE

Matematyczne Podstawy Informatyki

Złożoność obliczeniowa klasycznych problemów grafowych

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

PRZEWODNIK PO PRZEDMIOCIE

Wykład 10 Grafy, algorytmy grafowe

Tomasz M. Gwizdałła 2012/13

Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

MATEMATYKA DYSKRETNA - MATERIAŁY DO WYKŁADU GRAFY

Algorytmy. Programowanie Proceduralne 1

Algorytmy i Struktury Danych.

Algorytmy. Programowanie Proceduralne 1

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

Transkrypt:

Teoria obliczeń i złożoność obliczeniowa Kontakt: dr hab. inż. Adam Kasperski, prof. PWr. pokój 509 B4 adam.kasperski@pwr.wroc.pl materiały + informacje na stronie www. Zaliczenie: Egzamin

Literatura Problemy obliczeniowe Podstawowa: 1 M. Sipser. Wprowadzenie do teorii obliczeń. WNT Warszawa 2009. 2 C. Papadimitriou. Złożoność obliczeniowa. WNT Warszawa 2002. 3 J. E. Hopcroft, J. D. Ullman. Wprowadzenie do teorii automatów, języków i obliczeń. PWN Warszawa 2003. Dodatkowa: 1 S. Arora, B. Barak. Computational complexity. A modern approach. Cambridge University Press 2009. 2 A. Kościelski. Teoria obliczeń. Wykłady z matematycznych podstaw informatyki. Wydawnictwo Uniwersytetu Wrocławskiego 1997. 3 V. Vazirani. Algorytmy aproksymacyjne. WNT Warszawa 2005. 4 R. Penrose. Nowy umysł cesarza: o komputerach, umyśle i prawach fizyki. PWN Warszawa 1995. 5 D. Harel. Rzecz o istocie informatyki. WNT Warszawa 2008.

Cele wykładu Problemy obliczeniowe 1 Co to jest problem obliczeniowy? 2 Co to jest algorytm? 3 Czy sa naturalne problemy, których nie można rozwiazać algorytmicznie? 4 Co to znaczy, że algorytm jest efektywny? 5 Czy sa naturalne problemy, których nie można rozwiazać za pomoca efektywnego algorytmu? 6 Jakie ograniczenia posiadaja współczesne komputery?

Cele wykładu Problemy obliczeniowe 1 Co to jest problem obliczeniowy? 2 Co to jest algorytm? 3 Czy sa naturalne problemy, których nie można rozwiazać algorytmicznie? 4 Co to znaczy, że algorytm jest efektywny? 5 Czy sa naturalne problemy, których nie można rozwiazać za pomoca efektywnego algorytmu? 6 Jakie ograniczenia posiadaja współczesne komputery?

Cele wykładu Problemy obliczeniowe 1 Co to jest problem obliczeniowy? 2 Co to jest algorytm? 3 Czy sa naturalne problemy, których nie można rozwiazać algorytmicznie? 4 Co to znaczy, że algorytm jest efektywny? 5 Czy sa naturalne problemy, których nie można rozwiazać za pomoca efektywnego algorytmu? 6 Jakie ograniczenia posiadaja współczesne komputery?

Cele wykładu Problemy obliczeniowe 1 Co to jest problem obliczeniowy? 2 Co to jest algorytm? 3 Czy sa naturalne problemy, których nie można rozwiazać algorytmicznie? 4 Co to znaczy, że algorytm jest efektywny? 5 Czy sa naturalne problemy, których nie można rozwiazać za pomoca efektywnego algorytmu? 6 Jakie ograniczenia posiadaja współczesne komputery?

Cele wykładu Problemy obliczeniowe 1 Co to jest problem obliczeniowy? 2 Co to jest algorytm? 3 Czy sa naturalne problemy, których nie można rozwiazać algorytmicznie? 4 Co to znaczy, że algorytm jest efektywny? 5 Czy sa naturalne problemy, których nie można rozwiazać za pomoca efektywnego algorytmu? 6 Jakie ograniczenia posiadaja współczesne komputery?

Cele wykładu Problemy obliczeniowe 1 Co to jest problem obliczeniowy? 2 Co to jest algorytm? 3 Czy sa naturalne problemy, których nie można rozwiazać algorytmicznie? 4 Co to znaczy, że algorytm jest efektywny? 5 Czy sa naturalne problemy, których nie można rozwiazać za pomoca efektywnego algorytmu? 6 Jakie ograniczenia posiadaja współczesne komputery?

Przykłady problemów obliczeniowych OSIAGALNOŚĆ (REACHABILITY) Zadany jest graf skierowany G = (V, A). Czy w G istnieje ścieżka między dwoma zadanymi wierzchołkami s i t? Istnieje: 2 Nie istnieje: 2 s t s t 1 1

Przykłady problemów obliczeniowych CYKL HAMILTONA (HAMILTONIAN CYCLE) Zadany jest graf nieskierowany G = (V, E). Czy w G istnieje droga zamknięta przechodzaca dokładnie raz przez każdy wierzchołek? Istnieje: 4 Nie istnieje: 1 5 3 2

Przykłady problemów obliczeniowych PIERWSZOŚĆ (PRIMES) Zadana jest liczba naturalna N. Czy N jest liczba pierwsza? ROZKŁAD NA CZYNNIKI (FACTORING) Dla zadanej liczby naturalnej N wyznaczyć jej rozkład na czynniki pierwsze, tj. znaleźć liczby pierwsze p 1, p 2,...,p k takie, że N = p 1 p 2... p k.

Przykłady problemów obliczeniowych SPEŁNIALNOŚĆ (SATISFIABILITY) Zadana jest formuła logiczna φ(x 1,...,x n ). Czy formuła ta jest spełnialna, tj. czy jest prawdziwa dla pewnego wartościowania zmiennych logicznych? TAUTOLOGIA (TAUTOLOGY) Zadana jest formuła logiczna φ(x 1,...,x n ). Czy formuła ta jest tautologia, tj. czy jest prawdziwa dla wszyskich wartościowań zmiennych logicznych?

Przykłady problemów obliczeniowych PROBLEM STOPU (HALTING PROBLEM) Zadany jest kod algorytmu (np. w języku C) oraz dane wejściowe dla tego algorytmu. Czy algorytm ten zakończy pracę dla tych danych? KOSTKI WANGA Zadany jest skończony zbiór kwadratowych kostek. Ściany tych kostek sa pomalowane kolorami. Kostki wolno układać w ten sposób aby sasiednie ściany miały ten sam kolor. Czy posługujac się tylko kostkami z tego zbioru (wolno tworzyć dowolna ilość kopii danej kostki i je obracać) można pokryć cała płaszczyznę?

Przykłady problemów obliczeniowych NAJKRÓTSZA ŚCIEŻKA (SHORTEST PATH) W zadanym grafie skierowanym G = (V, A) z zadanymi odległościami d ij, (i, j) A, wyznacz najkrótsza ścieżka od wierzchołka s do wierzchołka t. Przykład: 2 7 5 s 5 8 3 3 9 1 5 t 2 1 2 5 5 4 5

Przykłady problemów obliczeniowych PROBLEM KOMIWOJAŻERA Dla zadanego zbioru miast, oraz czasów przejazdu między nimi znaleźć najkrótsza trasę zamknięta odwiedzajac a dokładnie raz każde miasto. Przykład: 3 6 1 5 2 3 5 4 1 4 7 2 5 5

Przykłady problemów obliczeniowych PROGRAMOWANIE LINIOWE (PL) c 1 x 1 + c 2 x 2 + + c n x n max a 11 x 1 + a 12 x 2 + + a 1n x n b 1... a m1 x 1 + a m2 x 2 + + a mn x n b m x 1,...,x n 0 Przykład: 3x 1 + 5x 2 4x 3 max 2x 1 + x 2 120 x 1 x 2 + x 3 300 x 1, x 2, x 3 0

Przykłady problemów obliczeniowych LICZBA DRZEW ROZPINAJACYCH (# SPANNING TREE) Dany jest graf nieskierowany G = (V, E). Ile różnych drzew rozpinajacych znajduje się w tym grafie? LICZBA PRZYPORZADKOWAŃ (PERMANENT) Dany jest graf dwudzielny G = (V 1 V 2, E). Ile różnych przyporzadkowań znajduje się w tym grafie?

Klasyfikacja problemów obliczeniowych Rodzaje problemów obliczeniowych: 1 Problemy decyzyjne OSIAGALNOŚĆ, CYKL HAMILTONA PIERWSZOŚĆ SPEŁNIALNOŚĆ, TAUTOLOGIA PROBLEM STOPU 2 Problemy wyszukiwania ROZKŁAD NA CZYNNIKI 3 Problemy optymalizacyjne NAJKRÓTSZA ŚCIEŻKA PROBLEM KOMIWOJAŻERA PROGRAMOWANIE LINIOWE 4 Problemy zliczania LICZBA DRZEW ROZPINAJACYCH LICZBA PRZYPORZADKOWAŃ

Reprezentacja problemu Każdy problem obliczeniowy Π składa się ze zbioru danych wejściowych (instancji) X oraz zbioru wyników (odpowiedzi) Y. Dla zadanych danych x X chcemy uzyskać poprawna odpowiedź y Y. Założenie (nie restrykcyjne): Każdy obiekt x X (y Y ) można przedstawić w postaci skończonego ciagu bitów (0 i 1). Każdy problem decyzyjny Π można traktować jako obliczanie funkcji f Π : {0, 1} {0, 1}, której wyjściem jest jeden bit. Bit 1 utożsamiamy z odpowiedzia tak a bit 0 z odpowiedzia nie.

Reprezentacja problemu Każdy problem obliczeniowy Π składa się ze zbioru danych wejściowych (instancji) X oraz zbioru wyników (odpowiedzi) Y. Dla zadanych danych x X chcemy uzyskać poprawna odpowiedź y Y. Założenie (nie restrykcyjne): Każdy obiekt x X (y Y ) można przedstawić w postaci skończonego ciagu bitów (0 i 1). Każdy problem decyzyjny Π można traktować jako obliczanie funkcji f Π : {0, 1} {0, 1}, której wyjściem jest jeden bit. Bit 1 utożsamiamy z odpowiedzia tak a bit 0 z odpowiedzia nie.

Reprezentacja problemu Każdy problem obliczeniowy Π składa się ze zbioru danych wejściowych (instancji) X oraz zbioru wyników (odpowiedzi) Y. Dla zadanych danych x X chcemy uzyskać poprawna odpowiedź y Y. Założenie (nie restrykcyjne): Każdy obiekt x X (y Y ) można przedstawić w postaci skończonego ciagu bitów (0 i 1). Każdy problem decyzyjny Π można traktować jako obliczanie funkcji f Π : {0, 1} {0, 1}, której wyjściem jest jeden bit. Bit 1 utożsamiamy z odpowiedzia tak a bit 0 z odpowiedzia nie.

Nieformalnie algorytmem nazywamy program napisany w pewnym języku programowania (np. C), którego danymi wejściowymi sa obiekty z X a wyjściem sa obiekty z Y. Rozmiarem danych wejściowych x X nazywamy liczbę bitów w reprezentacji binarnej x. Algorytm rozwiazuje problem obliczeniowy Π, jeżeli dla każdego wejścia x X kończy pracę i zwraca poprawny wynik y Y.

Nieformalnie algorytmem nazywamy program napisany w pewnym języku programowania (np. C), którego danymi wejściowymi sa obiekty z X a wyjściem sa obiekty z Y. Rozmiarem danych wejściowych x X nazywamy liczbę bitów w reprezentacji binarnej x. Algorytm rozwiazuje problem obliczeniowy Π, jeżeli dla każdego wejścia x X kończy pracę i zwraca poprawny wynik y Y.

Problemy obliczalne (rozstrzygalne) Problem obliczeniowy jest obliczalny (rozstrzygalny), jeżeli istnieje algorytm, który go rozwiazuje. Które z zaprezentowanych wcześniej problemów sa na pewno obliczalne? Jaka metodę można dla nich zastosować?

Notacja asymptotyczna Niech f i g będa dwoma funkcjami z N w N. Mówimy, że f(n) = O(g(n)) jeżeli istnieje stała c > 0 taka, że f(n) cg(n) dla wszystkich dostatecznie dużych n. Podstawowe fakty: a k n k + a k 1 n k 1 + + a 0 = O(n k ) 2 n O(n k ) dla żadnego k = 1, 2,... n! O(2 k ) dla żadnego k = 1, 2,...

Zasoby zużywane przez algorytm Algorytm działa w czasie T(n) jeżeli liczba elementarnych kroków (zawierajacych elementarne instrukcje) dla danych wejściowych o rozmiarze n wynosi nie więcej niż T(n).

Przykład Problemy obliczeniowe WYSZUKAJ Zadana jest tablica 32-bitowych liczb całkowitych A = [a 1, a 2,...,a n ] i 32-bitowa liczba całkowita b. Czy liczba b występuje w tablicy A? for i:=1 to n if a[i]=b then return 1; return 0;

Przykład Problemy obliczeniowe Analiza algorytmu: 1 Do zakodowania < A, b > potrzeba około 32(n + 1) bitów. Stałe pomijamy i przyjmujemy, że rozmiarem danych < A, b > jest n. 2 Krokiem elementarnym jest każdy wiersz algorytmu. Algorytm może zakończyć pracę w drugim kroku (jeżeli a 1 = b) ale w najgorszym przypadku zakończy pracę w kroku 2n + 1 (jeżeli a n = b). Tak więc T(n) = 2n + 1. 3 Algorytm działa w czasie O(n)*. (*) Użycie notacji O uprawomocnia punkt 1 oraz ukrywa szczegóły implementacji. Funkcję f Π można zaimplementować w czasie O(n) na dowolnym komputerze i używajac dowolnego (wystarczajaco silnego) języka programowania.

Przykład Problemy obliczeniowe SPEŁNIALNOŚĆ Zadana jest formuła logiczna φ(x 1,...,x n ). Czy formuła ta jest spełnialna, tj. czy jest prawdziwa dla pewnego wartościowania zmiennych logicznych x 1,...,x n? for i:=0 to n x[i]:=0 {Reprezentacja binarna 0,...,2 n 1 } end for if Spelnia(x,φ) then return 1 for i:=1 to 2 n 1 x:=x+1 {Dodaj 1 do reprezentacji binarnej} if Spelnia(x,φ) then return 1 end for return 0;

Przykład Problemy obliczeniowe Analiza algorytmu: 1 Do zakodowania formuły logicznej φ potrzeba O(n) bitów. Rozmiarem danych wejściowych jest ilość zmiennych n. 2 Funkcja Spełnia(x, φ) nie jest krokiem elementarnym i wymaga czasu f(n). 3 Algorytm działa w czasie O(2 n f(n)).

Czas działania algorytmu Załóżmy, że krok elementarny wykonujemy w czasie 10 6 s. T(n) n = 10 n = 20 n = 50 n = 100 n 0.00001 s. 0.00002 s. 0.00005 s. 0.0001 s. n 2 0.0001 s. 0.0004 s. 0.025 s. 0.01 s. n 3 0.001 s. 0.008 s. 0.125 s. 1 s. 2 n 0.001 s. 1.048 s. ok. 35.7 lat ok. 10 16 lat n! 3.6 s. 77 146 lat ok. 10 50 lat!! Wniosek: Tylko algorytmy O(n), O(n 2 ) i O(n 3 ) sa efektywne!

Czas działania algorytmu Algorytm działa w czasie wielomianowym (jest wielomianowy) jeżeli jego czas działania jest O(n k ) dla pewnego ustalonego k, gdzie n jest rozmiarem danych wejściowych. Przyjmujemy, że problem obliczeniowy może być efektywnie rozwiazany jeżeli potrafimy skonstruować dla niego algorytm wielomianowy.

Podsumowanie

Podsumowanie Aby określić precyzyjnie takie pojęcia jak algorytm, krok elementarny, komórka pamięci, czas obliczeń itd. należy precyzyjnie zdefiniować model obliczeń. W trakcie dalszych wykładów omówione zostana następujace modele obliczeń: 1 Automaty skończone 2 Automaty ze stosem 3 Maszyny Turinga