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

Podobne dokumenty
ZLOŻONOŚĆ OBLICZENIOWA - WYK. 2

Języki, automaty i obliczenia

Języki, automaty i obliczenia

Imię, nazwisko, nr indeksu

Maszyna Turinga. Algorytm. czy program???? Problem Hilberta: Przykłady algorytmów. Cechy algorytmu: Pojęcie algorytmu

Języki, automaty i obliczenia

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

Maszyna Turinga, ang. Turing Machine (TM)

Hierarchia Chomsky ego Maszyna Turinga

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

Obliczenia inspirowane Naturą

Matematyczne Podstawy Informatyki

Maszyna Turinga języki

Dopełnienie to można wyrazić w następujący sposób:

Elementy Teorii Obliczeń

PROBLEMY NIEROZSTRZYGALNE

1 Automaty niedeterministyczne

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

Efektywność Procedur Obliczeniowych. wykład 5

Zadanie 1. (6 punktów) Słowo w nazwiemy anagramem słowa v jeśli w można otrzymać z v poprzez zamianę kolejności liter. Niech

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

1 Maszyny Turinga. stan 1 litera 1 litera 2 ruch stan 2. Matematycznie P S (Q {B}) (Q {B}) {L, R, } S

Języki formalne i automaty Ćwiczenia 9

Jak należy się spodziewać, mamy. Zauważmy jednak, że nie zachodzi równość

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

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

Obliczanie. dr hab. inż. Joanna Józefowska, prof. PP 1

O ALGORYTMACH I MASZYNACH TURINGA

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

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

Dowód pierwszego twierdzenia Gödela o. Kołmogorowa

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}

MODELOWANIE RZECZYWISTOŚCI

Maszyny Turinga. Jerzy Pogonowski. Funkcje rekurencyjne. Zakład Logiki Stosowanej UAM

Zasady analizy algorytmów

Wprowadzenie do maszyny Turinga

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

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

Lista 0. Kamil Matuszewski 1 marca 2016

Wprowadzenie do złożoności obliczeniowej

(j, k) jeśli k j w przeciwnym przypadku.

Maszyna Turinga (Algorytmy Część III)

Automat ze stosem. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra Informatyki

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

Teoria obliczeń czyli czego komputery zrobić nie mogą

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

Turing i jego maszyny

Lista 6 Problemy NP-zupełne

10110 =

Obliczenia inspirowane Naturą

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

TEORETYCZNE PODSTAWY INFORMATYKI

Odmiany maszyny Turinga. dr hab. inż. Joanna Józefowska, prof. PP 1

Poprawność semantyczna

Teoretyczne podstawy informatyki

Wyrażenie nawiasowe. Wyrażenie puste jest poprawnym wyrażeniem nawiasowym.

Teoretyczne podstawy informatyki

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

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

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

Podstawy Informatyki. Sprawność algorytmów

Indukcja matematyczna

Matematyczne Podstawy Informatyki

Podstawy Informatyki Maszyna Turinga

R O Z D Z I A Ł V I I I

Efektywność algorytmów

TEORIA ZŁOŻONOŚCI PROBLEMY I ALGORYTMY OGRANICZENIE DOLNE I GÓRNE PROJEKTOWANIE ALGORYTMÓW I METODY SZTUCZNEJ INTELIGENCJI

JAO - Wprowadzenie do Gramatyk bezkontekstowych

Hierarchia Chomsky ego

Kolorowanie wierzchołków Kolorowanie krawędzi Kolorowanie regionów i map. Wykład 8. Kolorowanie

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

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

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

Algorytmiczna teoria grafów

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

Maszyna Turinga Złożoność obliczeniowa

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

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

Języki, automaty i obliczenia

Złożoność Obliczeniowa Algorytmów

O ROLI TEZY CHURCHA W DOWODZIE PEWNEGO TWIERDZENIA

Niestandardowe modele obliczeń

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

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

złożony ze słów zerojedynkowych o długości co najmniej 3, w których druga i trzecia litera od końca sa

Złożoność informacyjna Kołmogorowa. Paweł Parys

Problemy Decyzyjne dla Systemów Nieskończonych

CZY INFORMATYKOM MUSI WYSTARCZYĆ NIESKOŃCZONOŚĆ POTENCJALNA?

Minimalizacja automatów niedeterministycznych na słowach skończonych i nieskończonych

0 --> 5, 1 --> 7, 2 --> 9, 3 -->1, 4 --> 3, 5 --> 5, 6 --> 7, 7 --> 9, 8 --> 1, 9 --> 3.

Matematyczna wieża Babel. 4. Ograniczone maszyny Turinga o językach kontekstowych materiały do ćwiczeń

MASZYNA TURINGA UPRASZCZANIE DANYCH

Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami

1 Funkcje uniwersalne

O ISTOTNYCH OGRANICZENIACH METODY

Języki formalne i automaty Ćwiczenia 7

Paradygmaty dowodzenia

1. Analiza algorytmów przypomnienie

Topologia zbioru Cantora a obwody logiczne

Logika i teoria mnogości Wykład 14

Transkrypt:

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

Dwa wykłady: wtorek / środa różnice niewielkie Sprawy organizacyjne wtorek: trochę szybciej, parę dodatkowych rzeczy dedykowana grupa ćw. M. Pilipczuka - ale śmiało mogą przychodzić we wtorek osoby z innych grup zadania domowe, kolokwium, egzamin wspólne Slajdy (i inne materiały) będą dostępne na stronie www.

Zasady zaliczania: Sprawy organizacyjne zadania domowe (3 serie) 1.5 pkt kolokwium 1.5 pkt każdy może podejść do egzaminu w pierwszym terminie (nie ma progu zaliczenia ćwiczeń) egzamin 1. termin 3 pkt do oceny liczy się: zad_dom + kolokwium + egzamin egzamin poprawkowy 4.5 pkt do oceny liczy się: zad_dom + egzamin egzamin = zadania + teoria

O czym jest ten przedmiot? przedmiot badań: problemy obliczeniowe podstawowe pytanie: jak szybko można rozwiązać dany problem? co to znaczy, że problem jest trudny? (może tylko nie jesteśmy wystarczająco inteligentni, aby go rozwiązać?) JAiO: są problemy rozstrzygalne i nierozstrzygalne tutaj: są (rozstrzygalne) problemy łatwe i trudne (w różnym sensie) algorytmika: mamy szybki algorytm tutaj: szybki algorytm nie istnieje

Maszyna Turinga formalna definicja obliczenia David Hilbert: Czy istnieje algorytm rozstrzygający dowolną hipotezę matematyczną? ( Entscheidungsproblem - 1928) Alonzo Church (1936), Alan Turing (1937) NIE Odpowiedź wymagała formalnej definicji co to jest algorytm maszyna Turinga (rachunek lambda - Church)

Maszyna Turinga formalna definicja obliczenia Składniki maszyny Turinga: skończony alfabet roboczy, gdzie, alfabet wejściowy \{, } skończony zbiór stanów Q stany: początkowy, akceptujący, odrzucający q I,q A,q R Q funkcja przejścia :(Q\{qA,q R }) Q {L,R,Z} taka, że

Maszyna Turinga formalna definicja obliczenia Składniki maszyny Turinga: skończony alfabet roboczy, gdzie, alfabet wejściowy \{, } skończony zbiór stanów Q stany: początkowy, akceptujący, odrzucający q I,q A,q R Q funkcja przejścia :(Q\{qA,q R }) Q {L,R,Z} taka, że Konfiguracja maszyny Turinga: zawartość taśmy, nieskończonej w prawo położenie głowicy stan a b a a a a b c d... q 5 formalnie np: a b a a q 5 a a b c d...

Maszyna Turinga formalna definicja obliczenia Obliczenie: funkcja M między konfiguracjami Przykład: (q 5,a)=(q 8,x,L) zwyczajowa notacja: q 5,a q 8,x,L jeśli stan to q 5, litera pod głowicą to a to przejdź do stanu q 8 zapisz x na taśmie przesuń głowicę w lewo q 5 a b a a a a b c d... q 8 a b a a x a b c d...

Maszyna Turinga formalna definicja obliczenia Dodatkowe założenia o konfiguracji: taśma od pewnego miejsca zawiera tylko pierwszy symbol taśmy to później nie występuje Dodatkowe założenia o funkcji przejścia: maszyna nie chce nadpisać ani postawić go gdzieś dalej nie chce też pójść w lewo gdy widzi

Maszyna Turinga formalna definicja obliczenia Obliczenie na słowie wejściowym w *: konfiguracja początkowa: q I w maszyna akceptuje w, jeśli wpada w stan q A a b a a a b c a b c d... maszyna odrzuca w, jeśli wpada w stan q R wpp. obliczenie jest nieskończone (maszyna się zapętla)

Maszyna Turinga formalna definicja obliczenia Obliczenie na słowie wejściowym w *: konfiguracja początkowa: q I w maszyna akceptuje w, jeśli wpada w stan q A a b a a a b c a b c d... maszyna odrzuca w, jeśli wpada w stan q R wpp. obliczenie jest nieskończone (maszyna się zapętla) oznaczmy: L(M)={w : M akceptuje w} M ma własność stopu, jeśli zatrzymuje się na każdym słowie język L * jest częściowo obliczalny (lub rekurencyjnie przeliczalny) jeśli istnieje maszyna, która akceptuje dokładnie słowa z L (czyli L(M)=L) jeśli ta maszyna ma własność stopu, to L jest obliczalny (rozstrzygalny)

Maszyna Turinga formalna definicja obliczenia M ma własność stopu, jeśli zatrzymuje się na każdym słowie język L * jest częściowo obliczalny (lub rekurencyjnie przeliczalny) jeśli istnieje maszyna, która akceptuje dokładnie słowa z L jeśli ta maszyna ma własność stopu, to L jest obliczalny (rozstrzygalny) Ćwiczenia: jeśli L i dopełnienie L są częściowo obliczalne, to są obliczalne

Maszyna Turinga formalna definicja obliczenia M ma własność stopu, jeśli zatrzymuje się na każdym słowie język L * jest częściowo obliczalny (lub rekurencyjnie przeliczalny) jeśli istnieje maszyna, która akceptuje dokładnie słowa z L jeśli ta maszyna ma własność stopu, to L jest obliczalny (rozstrzygalny) Ćwiczenia: jeśli L i dopełnienie L są częściowo obliczalne, to są obliczalne Obliczanie funkcji: funkcja częściowa f: * * jest obliczalna, jeśli istnieje M, która akceptuje każde w dom(f) w konfiguracji z taśmą f(w) oraz odrzuca każde w dom(f)

Warianty maszyn Turinga taśma nieskończona w obie strony wiele stanów akceptujących / odrzucających maszyny k-taśmowe :(Q\{q A,q R }) k Q k {L,R,Z} k maszyny niedeterministyczne, alternujące (te były deterministyczne)...

Warianty maszyn Turinga taśma nieskończona w obie strony wiele stanów akceptujących / odrzucających maszyny k-taśmowe :(Q\{q A,q R }) k Q k {L,R,Z} k maszyny niedeterministyczne, alternujące (te były deterministyczne)... Fakt: Wszystkie rozpoznają tę samą klasę języków. Uwaga: wystarczy pokazać, że dla każdej maszyny typu X istnieje równoważna maszyna typu Y. W praktyce te konstrukcje są obliczalne, ale nie musimy tego wiedzieć. To będzie częsty motyw na tym przedmiocie: kiedy wystarczy, że coś istnieje, a kiedy musimy umieć to (szybko) policzyć?

Przykład: osiągalność w grafie Problemy decyzyjne vs. języki Wejście: zbiór wierzchołków, zbiór krawędzi, dwa wyróżnione wierzch. Wejście jest skomplikowanym obiektem, a nie słowem. Maszyna Turinga wczytuje słowa. Ale - graf możemy zapisać jako słowo: liczba_wierzchołków, liczba_krawędzi, lista par wierzchołków połączonych krawędziami (zakładając, że wierzchołki są numerowane kolejnymi liczbami naturalnymi); poszczególne liczby pooddzielane jakimś znakiem $. Wiele możliwych reprezentacji grafów Można łatwo przekształcić jedną reprezentację w drugą.

Problemy decyzyjne vs. języki Rozważając konkretny problem myślimy o algorytmie rozumianym abstrakcyjnie, zwykle nie odwołując się do konkretnej reprezentacji lecz mamy świadomość tego, że można zaimplementować standardowe konstrukcje programistyczne (zmienne, pętle, itp.) na maszynie Turinga. Dowodząc ogólnych twierdzeń rozważamy maszyny Turinga (model prosty, ale mocny).

Problemy decyzyjne vs. języki Rozważając konkretny problem myślimy o algorytmie rozumianym abstrakcyjnie, zwykle nie odwołując się do konkretnej reprezentacji lecz mamy świadomość tego, że można zaimplementować standardowe konstrukcje programistyczne (zmienne, pętle, itp.) na maszynie Turinga. Dowodząc ogólnych twierdzeń rozważamy maszyny Turinga (model prosty, ale mocny). Teza Turinga-Churcha: wszystko, co można obliczyć w intuicyjnym sensie, można obliczyć na maszynie Turinga. (to nie jest twierdzenie matematyczne co to znaczy obliczyć w intuicyjnym sensie?) Teza mocniejsza: problemy łatwe maszyny Turinga rozwiązują szybko.

Złożoność czasowa Maszyna M działa w czasie T(n) (dla funkcji T:N N) jeśli dla każdego słowa w * zatrzymuje się po co najwyżej T( w ) krokach. (w szczególności ma własność stopu) Język L * jest rozpoznawalny w czasie T(n) jeśli istnieje maszyna wielotaśmowa, która go akceptuje w czasie T(n). Aby szczegóły definicji maszyny nie grały roli, mówimy zwykle o czasie O(T(n)).

Złożoność czasowa Maszyna M działa w czasie T(n) (dla funkcji T:N N) jeśli dla każdego słowa w * zatrzymuje się po co najwyżej T( w ) krokach. (w szczególności ma własność stopu) Język L * jest rozpoznawalny w czasie T(n) jeśli istnieje maszyna wielotaśmowa, która go akceptuje w czasie T(n). Aby szczegóły definicji maszyny nie grały roli, mówimy zwykle o czasie O(T(n)). Ćwiczenia: Język palindromów jest rozpoznawalny w czasie liniowym, lecz maszyna jednotaśmowa potrzebuje czasu kwadratowego.

Złożoność czasowa Maszyna M działa w czasie T(n) (dla funkcji T:N N) jeśli dla każdego słowa w * zatrzymuje się po co najwyżej T( w ) krokach. (w szczególności ma własność stopu) Język L * jest rozpoznawalny w czasie T(n) jeśli istnieje maszyna wielotaśmowa, która go akceptuje w czasie T(n). Aby szczegóły definicji maszyny nie grały roli, mówimy zwykle o czasie O(T(n)). Ćwiczenia: Język palindromów jest rozpoznawalny w czasie liniowym, lecz maszyna jednotaśmowa potrzebuje czasu kwadratowego. Twierdzenie (o liniowym przyspieszeniu): Jeśli język L jest rozpoznawalny w czasie T(n), to dla każdej stałej c>0 jest on rozpoznawalny w czasie c. T(n)+O(n). Dowód: na ćwiczeniach (pomysł: liczymy liczbę kroków, więc wystarczy wykonywać klika kroków na raz).

Złożoność czasowa podstawowe klasy DTIME(T(n)) języki rozpoznawalne w czasie O(T(n)) P= k N DTIME(n k ) czyli języki rozpoznawalne w czasie p(n) dla pewnego wielomianu p EXPTIME= k N DTIME(2 nk )

Złożoność pamięciowa Mierząc pamięć, nie chcemy uwzględniać rozmiaru wejścia (istotne w przypadku zużycia pamięci mniejszego niż liniowe) Dlatego definiując złożoność pamięciową rozważamy maszyny off-line: taśma wejściowa, tylko do odczytu (gdy widzę, to nie mogę iść dalej w prawo) taśmy robocze przy obliczaniu funkcji: taśma wyjściowa, gdzie głowica idzie tylko w prawo (czyli: tylko do zapisu)

Złożoność pamięciowa Mierząc pamięć, nie chcemy uwzględniać rozmiaru wejścia (istotne w przypadku zużycia pamięci mniejszego niż liniowe) Dlatego definiując złożoność pamięciową rozważamy maszyny off-line: taśma wejściowa, tylko do odczytu (gdy widzę, to nie mogę iść dalej w prawo) taśmy robocze przy obliczaniu funkcji: taśma wyjściowa, gdzie głowica idzie tylko w prawo (czyli: tylko do zapisu) Maszyna M działa w pamięci S(n) (dla funkcji S:N N) jeśli dla każdego słowa w * odwiedza co najwyżej S( w ) komórek na taśmach roboczych. Język L * jest rozpoznawalny w pamięci S(n) jeśli istnieje maszyna wielotaśmowa mająca własność stopu, akceptująca L w pamięci S(n). Mówimy zwykle o pamięci O(S(n)). Łatwo zmniejszyć zużycie pamięci razy stała - pamiętamy kilka komórek w jednej. Możemy też zamienić maszynę wielotaśmową na maszynę z jedną taśmą roboczą, zużywającą tyle samo pamięci.

Złożoność pamięciowa podstawowe klasy DSPACE(S(n)) języki rozpoznawalne w pamięci O(S(n)) L=DSPACE(log n) PSPACE= k N DSPACE(n k ) czyli języki rozpoznawalne w pamięci p(n) dla pewnego wielomianu p EXPSPACE= k N DSPACE(2 nk )

DTIME(f(n)) DSPACE(f(n)) Czas a pamięć Dowód: W czasie f(n) maszyna może odwiedzić co najwyżej k. f(n) komórek (k = liczba taśm)

Czas a pamięć Odwrotnie: DSPACE(f(n)) c>0 DTIME(n. c f(n) ) jeśli f(n) log(n), to po prostu: DSPACE(f(n)) c>0 DTIME(c f(n) ) Dowód: Weźmy L DSPACE(f(n)), rozpoznawany przez M. M się nie zapętla, więc (liczba odwiedzonych konfiguracji) = (liczba kroków) (liczba wszystkich konfiguracji) (liczba kroków) konfiguracji jest: Q. (n+2). (4 ) df(n) stan zawartość taśm roboczych + specjalny znacznik na: pozycję głowicy ostatnią odwiedzoną komórka na taśmie pozycja na taśmie wejściowej

Czas a pamięć DTIME(f(n)) DSPACE(f(n)) c>0 DTIME(n. c f(n) ) Zatem: L P PSPACE EXPTIME EXPSPACE

Czas a pamięć DTIME(f(n)) DSPACE(f(n)) c>0 DTIME(n. c f(n) ) Zatem: L P PSPACE EXPTIME EXPSPACE Czy te klasy faktycznie są różne? NIE wiadomo, czy: L P P PSPACE PSPACE EXPTIME EXPTIME EXPSPACE Wiadomo (i wkrótce to udowodnimy), że L PSPACE EXPSPACE P EXPTIME

Twierdzenie Sipsera Tw. Rozważmy maszynę M działającą w pamięci S(n), ale bez własności stopu. Wówczas istnieje maszyna M' taka, że: L(M')=L(M) M' działa w pamięci S(n) M' zatrzymuje się na każdym wejściu

Twierdzenie Sipsera Tw. Rozważmy maszynę M działającą w pamięci S(n), ale bez własności stopu. Wówczas istnieje maszyna M' taka, że: L(M')=L(M) M' działa w pamięci S(n) M' zatrzymuje się na każdym wejściu Zatem: w poniższej definicji Język L * jest rozpoznawalny w pamięci S(n) jeśli istnieje maszyna wielotaśmowa mająca własność stopu, akceptująca L w pamięci S(n). ten warunek był zbędny

Twierdzenie Sipsera Tw. Rozważmy maszynę M działającą w pamięci S(n), ale bez własności stopu. Wówczas istnieje maszyna M' taka, że: L(M')=L(M) M' działa w pamięci S(n) M' zatrzymuje się na każdym wejściu Dowód Podejście 1: (w którym wynikowy M' zużywa dużo pamięci) Kluczowa obserwacja: w biegu akceptującym żadna konfiguracja się nie powtarza. po każdym ruchu kopiujemy aktualną konfigurację na dodatkową taśmę roboczą, a także sprawdzamy, czy aktualna konfiguracja jest równa którejś zapisanej wcześniej konfiguracja się powtórzyła pętla odrzucamy

Twierdzenie Sipsera Tw. Rozważmy maszynę M działającą w pamięci S(n), ale bez własności stopu. Wówczas istnieje maszyna M' taka, że: L(M')=L(M) M' działa w pamięci S(n) M' zatrzymuje się na każdym wejściu Dowód Podejście 2: licznik ruchów: bieg akceptujący ma co najwyżej c S(n) kroków, o ile S(n) log(n) aby policzyć do c S(n) wystarczy licznik rozmiaru S(n) więc liczymy, zwiększając licznik o 1 po każdym kroku licznik się przepełnia odrzucamy