Maszyna Turinga Złożoność obliczeniowa

Podobne dokumenty
PROBLEMY NIEROZSTRZYGALNE

MASZYNA TURINGA UPRASZCZANIE DANYCH

Maszyna Turinga Złożoność obliczeniowa

Podstawy Informatyki Maszyna Turinga

Złożoność problemów. 1 ruch na sekundę czas wykonania ok lat 1 mln ruchów na sekundę czas wykonania ok.

Elementy Teorii Obliczeń

Efektywność Procedur Obliczeniowych. wykład 5

Hierarchia Chomsky ego Maszyna Turinga

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

Maszyna Turinga (Algorytmy Część III)

Maszyna Turinga języki

Języki, automaty i obliczenia

Obliczenia inspirowane Naturą

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

Języki formalne i automaty Ćwiczenia 9

Matematyczne Podstawy Informatyki

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

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

MODELOWANIE RZECZYWISTOŚCI

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

Wprowadzenie do maszyny Turinga

Maszyna Turinga, ang. Turing Machine (TM)

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}

Turing i jego maszyny

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

Informacja w perspektywie obliczeniowej. Informacje, liczby i obliczenia

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

O ALGORYTMACH I MASZYNACH TURINGA

KATEDRA INFORMATYKI TECHNICZNEJ. Ćwiczenia laboratoryjne z Logiki Układów Cyfrowych. ćwiczenie 204

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

1 Automaty niedeterministyczne

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

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

Obliczenia inspirowane Naturą

Dla człowieka naturalnym sposobem liczenia jest korzystanie z systemu dziesiętnego, dla komputera natomiast korzystanie z zapisu dwójkowego

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

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

Informatyka. Michał Rad

Imię, nazwisko, nr indeksu

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

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 4 WSTĘP DO INFORMATYKI

Informatyka 1. Złożoność obliczeniowa

O ISTOTNYCH OGRANICZENIACH METODY

Algorytm. Krótka historia algorytmów

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

Definicje. Algorytm to:

LOGIKA I TEORIA ZBIORÓW

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

Wstęp do programowania

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

Matematyka dyskretna. Andrzej Łachwa, UJ, B/14

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

OBLICZALNOŚĆ I NIEOBLICZALNOŚĆ

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

Języki, automaty i obliczenia

REPREZENTACJA LICZBY, BŁĘDY, ALGORYTMY W OBLICZENIACH

Zaawansowane algorytmy i struktury danych

Lista 6 Problemy NP-zupełne

Algorytmy sztucznej inteligencji

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

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

Arytmetyka liczb binarnych

Temat: Zastosowanie wyrażeń regularnych do syntezy i analizy automatów skończonych

Języki formalne i automaty Ćwiczenia 7

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

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

1. Synteza automatów Moore a i Mealy realizujących zadane przekształcenie 2. Transformacja automatu Moore a w automat Mealy i odwrotnie

Wstęp do informatyki- wykład 2

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

Samodzielnie wykonaj następujące operacje: 13 / 2 = 30 / 5 = 73 / 15 = 15 / 23 = 13 % 2 = 30 % 5 = 73 % 15 = 15 % 23 =

Programowanie komputerów

Podstawy Informatyki. Algorytmy i ich poprawność

Odwrotna Notacja Polska

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je.

Podstawy Programowania. Złożoność obliczeniowa

Podstawy Programowania

O LICZBACH NIEOBLICZALNYCH I ICH ZWIĄZKACH Z INFORMATYKĄ

InŜynieria oprogramowania. Język UML

Jaki język zrozumie automat?

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

REPREZENTACJA LICZBY, BŁĘDY, ALGORYTMY W OBLICZENIACH

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Języki formalne i automaty Ćwiczenia 1

Wprowadzenie do złożoności obliczeniowej

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

Algorytm. Krótka historia algorytmów

Podstawy Programowania. Złożoność obliczeniowa

Koszt literału (literal cost) jest określony liczbą wystąpień literału w wyrażeniu boolowskim realizowanym przez układ.

JAKIEGO RODZAJU NAUKĄ JEST

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

KOŁO MATEMATYCZNE LUB INFORMATYCZNE - klasa III gimnazjum, I LO

1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb.

1. Operacje logiczne A B A OR B

b) bc a Rys. 1. Tablice Karnaugha dla funkcji o: a) n=2, b) n=3 i c) n=4 zmiennych.

Algorytm. Słowo algorytm pochodzi od perskiego matematyka Mohammed ibn Musa al-kowarizimi (Algorismus - łacina) z IX w. ne.

Zadanie 1. Suma silni (11 pkt)

Uniwersytet Kazimierza Wielkiego w Bydgoszczy Zespół Szkół nr 5 Mistrzostwa Sportowego XV Liceum Ogólnokształcące w Bydgoszczy

Logika i teoria mnogości Wykład 14

Temat: Algorytm kompresji plików metodą Huffmana

Transkrypt:

Maszyna Turinga Złożoność obliczeniowa Weryfikacja poprawności programu W celu uniezależnienia się od typu komputera służącego do realizowania obliczeń, musimy się posłużyć ogólnym abstrakcyjnym modelem obliczeń. Model taki powinien być łatwo interpretowany w sensie właściwości obliczeniowych w odniesieniu do komputerów rzeczywistych.

Rodzaje modeli Ideowy teoretyczny Obrazuje ideę działania, reguły pracy Dowodzi poprawności rozważań, możliwości teoretycznych zbudowania danego urządzenia Fizyczny realny Pozwala na bezpośrednią obserwację (czynnościową) Obrazuje zasadę mechaniczną (elektryczną), która może być wykorzystana w urządzeniu rzeczywistym Modele ideowe komputera Abstrakcyjne Rachunek binarny, kodowanie liczb (moduł-znak prosty, moduł-znak odwrotny) Funkcje rekurencyjne Bliskie realizacji Funkcje boolowskie Realizacje funkcji boolowskich za pomocą bramek logicznych

Modele ideowe programowania Abstrakcyjne Maszyny Turinga Służyły do rozważań teoretycznych, można wykorzystać jako ideowy model programowania Bliskie realizacji PMC Przykładowa Maszyna Cyfrowa Służy jako przykład koncepcji programowania niskopoziomowego, można wykorzystać jako model programowania w języku wewnętrznym komputera Maszyna Turinga stworzony w roku 1936 przez Alana Turinga abstrakcyjny model komputera służący do wykonywania algorytmów. powstała jako notacja do wyrażania algorytmów i służyła (głównie logikom) do określenia, jakie problemy są możliwe do algorytmicznego rozwiązania.

Weryfikacja poprawności programu Problem jest rozwiązalny na komputerze, jeśli da się zdefiniować rozwiązującą go maszynę Turinga. Maszyny Turinga częsta używane są do udowadniania nierozstrzygalności różnych problemów. Czas, jak i pamięć zużyta podczas obliczenia maszyny Turinga nie różnią się bardzo od zasobów zużywanych podczas wykonania algorytmów na rzeczywistych komputerach. Wyniki teorii złożoności mówiące o obliczeniach na maszynach Turinga pozostają w ścisłym związku z rzeczywistymi problemami informatyki i praktycznymi implementacjami algorytmów. Maszyna Turinga nieograniczona taśma podzielona na komórki, w których są zapisane zrozumiałe dla maszyny symbole głowica, która może się przesuwać po taśmie oraz odczytywać i zapisywać na niej symbole mechanizm sterujący, który może być w różnych stanach (ale skończenie wielu), który decyduje o działaniu maszyny.

Maszyna Turinga taśma Nieskończona taśma jest odpowiednikiem współczesnej pamięci komputera. Taśma dzieli się na komórki, w których umieszczone zostały symbole, czyli po prostu znaki przetwarzane przez maszynę Turinga. Symbole te stanowią odpowiednik danych wejściowych. Maszyna Turinga taśma Maszyna Turinga odczytuje te dane z kolejnych komórek i przetwarza na inne symbole, czyli dane wyjściowe. Wyniki obliczeń również są zapisywane w komórkach taśmy. Najczęściej rozważa się jedynie symbole 0, 1 oraz tzw. znak pusty - czyli zawartość komórki, która nie zawiera żadnej danej do przetworzenia.

Maszyna Turinga głowica zapisująco-odczytująca Głowica zapisująco-odczytująca odpowiada funkcjonalnie urządzeniom wejścia/wyjścia współczesnych komputerów lub układom odczytu i zapisu pamięci. Głowica zawsze znajduje się nad jedną z komórek taśmy (przed rozpoczęciem pracy jest ustawiana nad komórką taśmy zawierającą pierwszy symbol do przetworzenia) Maszyna Turinga głowica zapisująco-odczytująca Głowica: odczytuje zawartość komórki oraz zapisuje do niej inny symbol wykonuje ruchy w prawo i w lewo do sąsiednich komórek na taśmie. W ten sposób może się ona przemieścić do dowolnie wybranej komórki taśmy.

Maszyna Turinga układ sterowania Odpowiednikiem układu sterującego jest procesor komputera. Układ sterujący: odczytuje za pomocą głowicy symbole z komórek taśmy oraz przesyła do głowicy symbole do zapisu w komórkach. nakazuje on głowicy przemieścić się do sąsiedniej komórki w lewo lub w prawo. Stany układu sterowania Podstawą działania maszyny Turinga są stany układu sterowania. Stan układu sterowania określa jednoznacznie jaką operację wykona, jak zareaguje maszyna Turinga, gdy odczyta z taśmy określony symbol.

Stany układu sterowania Operacje wykonywane przez układ sterowania zależą od dwóch czynników: Symbolu odczytanego z komórki na taśmie. Bieżącego stanu układu sterującego. Stany będziemy określać kolejnymi nazwami: q 0, q 1, q 2,...,q n, gdzie q 0 jest stanem początkowym, w którym znajduje się maszyna Turinga przed rozpoczęciem przetwarzania symboli na taśmie. Maszyna Turinga W zależności od obserwowanego symbolu przez głowicę taśmy oraz stanu sterowania skończonego, maszyna Turinga w pojedynczym ruchu: zmienia stan mechanizmu sterującego, wpisuje symbol w obserwowanej komórce taśmy, zastępując symbol tam wpisany, przesuwa głowicę o jedną komórkę w prawo lub w lewo.

Przykład zadania Dane Maszyna Turinga Taśma z dwoma nieprzerwanymi, skończonymi ciągami jedynek oddzielonymi jedną kratką z zerem Głowica jest ustawiona na pierwszej jedynce pierwszego ciągu (pozostałe jedynki są na prawo od głowicy): Wynik Taśma z jednym nieprzerwanym ciągiem jedynek mający tyle samo jedynek ile było ich na początku (położenie głowicy nieistotne) Maszyna Turinga Rozwiązanie zadania Program 1,1,L,1 1,0,1,2 2,1,L,2 2,0,R,3 3,1,0,3 3,0,S,0

Maszyna Turinga definicja Maszyna Turinga, to siódemka: gdzie: Q M = { Q,, Γ,#, δ, q, F} to skończony zbiór stanów maszyny. 0 Γ # to skończony zbiór symboli wejściowych, które służą do reprezentacji wejścia maszyny i są zapisane na taśmie przed rozpoczęciem obliczenia. to skończony zbiór symboli taśmowych -są to wszystkie symbole jakie mogą się znajdować na taśmie. to symbol pusty - specjalny symbol taśmowy nie należący do symboli wejściowych. Symbol pusty będzie zawsze wypełniał prawie całą taśmę. Maszyna Turinga definicja Maszyna Turinga, to siódemka: gdzie: δ M = { Q,, Γ,#, δ, q, F} to funkcja przejścia. Jest to funkcja częściowa prowadząca z w Q Gamma {, } Wartośćδ ( A, x) = ( B, y, K) oznacza, że maszyna będąca w stanie A i czytając symbol x z taśmy przejdzie do stanu B, zapisze symbol y na taśmie i przesunie głowicę o jedną komórkę w lewo ( K = ) lub w prawo ( K =. ) 0 Q Γ q 0 F to stan początkowy w jakim znajduje się maszyna przed rozpoczęciem obliczenia. to zbiór stanów akceptujących będący podzbiorem Q. Obliczenie maszyny kończy się kiedy osiągnięty zostanie któryś ze stanów F.

Zastosowania maszyny Turinga Przetwarzacz: oblicza wartość funkcji - dane wejściowe to początkowy stan napisu na taśmie, a wynik jest końcowym stanem taśmy w momencie zatrzymania. Gdy maszyna nie zatrzyma się to funkcja nie jest określona dla tych danych (funkcja niezupełna). Zastosowania maszyny Turinga Akceptant: posiada 2 stany końcowe akceptuj i "odrzuć", ale może dać trzy odpowiedzi: akceptuj, odrzuć, "nie wiem". Akceptant rozstrzygacz: akceptant, który zatrzymuje się zawsze, tzn. daje dwie odpowiedzi - "akceptuj" lub "odrzuć".

Zastosowania maszyny Turinga Generator języka: rozpoczyna pracę od pustej taśmy i zapisuje na taśmie słowa danego języka, dla którego został zaprojektowany. Maszyna Turinga - działanie Jak uruchomić formalnie zdefiniowaną maszynę Turinga? Trzeba odpowiednio przygotować taśmę -można rozważać różne reprezentacje wejścia, zakładamy, że taśma jest wypełniona symbolami pustymi # oprócz skończonego spójnego fragmentu, na którym znajduje się słowo wejściowe składające się z symboli wejściowych. Należy ustawić głowicę nad którąś z komórek taśmy - dla wygody będziemy ustawiać głowicę nad pierwszą komórką słowa wejściowego. Należy ustawić mechanizm sterujący na stan q 0 i uruchomić maszynę.

Maszyna Turinga - działanie Maszyna działa zgodnie z algorytmem δ zapisanym w funkcji jeśli będzie zmieniać swój stan, przesuwać głowicę i zmieniać zawartość taśmy. Tak będzie się działo dopóki nie nastąpi jeden z dwóch warunków: Maszyna znajdzie się w stanie akceptującym. Mówimy wtedy, że obliczenie zakończyło się akceptująco. Maszyna znajdując się w stanie A przeczyta z taśmy symbol x, a wartość funkcji częściowej δ ( A, x) nie będzie zdefiniowana. Mówimy wtedy, że obliczenie zakończyło się błędem. Maszyna Turinga - reprezentacja Działanie maszyny Turinga przedstawia się jako diagram przejść między stanami lub jako tabelę stanów. Zarówno dla tabeli stanów jak i grafu przejść wyróżnia się specyficzne stany będące odpowiednio stanem początkowym i stanem (bądź stanami ) końcowym, zwane też stanami biernymi. Zakłada się, że maszyna rozpoczyna swoje działanie od swego stanu początkowego na pierwszym od lewej niepustym kwadracie taśmy i postępuje krok po kroku zgodnie z narzuconym ruchem, zaś kończy działanie po osiągnięciu stanu końcowego.

Diagram przejść Diagram przejść jest grafem skierowanym, którego wierzchołki reprezentują stany. Krawędź prowadząca ze stanu s do stanu t nazywa się przejściem i etykietuje się ją kodem postaci: (a/b, kierunek) Gdzie: a i b są symbolami, kierunek określa ruch głowicy w prawo bądź w lewo. Część a etykiety jest wyzwalaczem przejścia, a część <b,kierunek> akcją. Diagram przejść (a/b, kierunek) W czasie swego działania maszyna Turinga, kiedy znajdzie się w stanie s i odczytywanym symbolem będzie a to nastąpi wpisanie w to miejsce b i przesunięcie o jedno pole w kierunku kierunek.

Diagram przejść Tabela stanów Tabela stanów - obrazuje przejścia między stanami maszyny Turinga zawiera wszystkie symbole z skończonego alfabetu wejściowego jak również wszystkie stany w których może znaleźć się maszyna Turinga. Każde pole tabeli określa: dla danego stanu q i kolejny stan q i+1 symbol, który ma być zapisany na taśmie kierunek (L / P) dla ruchu głowicy

Tabela stanów Tabela stanów

Elementy tabeli stanów Dla rozpatrywanego ciągu wejściowego można określić trzy elementy w tabeli stanów: stan warunkowy - który powoduje przejście do określonej sekcji manipulowania danym symbolem, sekcja manipulowania - stany odpowiadające za przepisywanie symboli, powrót - stan powodujący przejście do początku i rozpoczęcie pracy od nowa Przykład 1 Maszyna Turinga w roli rozstrzygacza W zbiorze napisów 3-literowych utworzonych z {a,b,c} tylko napis abc jest poprawny. 1) Podać algorytm rozpoznawania tego napisu. 2) Zapisać algorytm w postaci tabeli stanów

Przykład 1 Maszyna Turinga w roli rozstrzygacza Zatrzymanie się maszyny w stanie q 4 oznacza, że wprowadzony ciąg znaków nie był poprawny, a w stanie q 5 - że był. Przykład 2 Maszyna Turinga w roli przetwarzacza Zaprojektować tablicę stanów maszyny Turinga zmieniającej kolejność liczb naturalne (dwa ciągi zer oddzielone jedynką). Dla zadanego wejścia: Maszyna ma dać na wyjściu:

Przykład 2 Maszyna Turinga w roli przetwarzacza Najprostszym sposobem na osiągnięcie żądanego wyniku jest przesuwanie jedynki rozdzielającej oba ciągi. Głowica maszyny wędruje od lewej do prawej za każdym razem zamieniając na każdym z końców po jednym zerze na symbol pomocniczy S W przypadku napotkania jedynki przy krawędzi głowica zamienia ją na zero po czym zamienia pierwsze zero na przeciwległym końcu na jedynkę Następnie wymienia wszystkie symbole S na zero. Przykład 2 Maszyna Turinga w roli przetwarzacza Znaczenie stanów: q 1 - przesunięcie do prawej krawędzi (do pierwszego symbolu B lub S) q 4 - przesuwanie do lewej krawędzi q 5 i q 3 - zmiana zera na symbol S zapisanie 0 i odwrócenie kierunku wędrówki głowicy q 5 i q 2 - wykrywanie jedynki przy krawędziach lewej i prawej q 6 i q 7 - zamiana tej jedynki na zero q 8 q 11 - usuwają symbole pomocnicze S i ustawiają głowicę w pozycji wyjściowej

Przykład 2 Maszyna Turinga w roli przetwarzacza Przykładowy przebieg (skrócony) pionowe kreski oznaczają komórkę aktualnie obserwowaną przez głowicę. Przykład 2 Maszyna Turinga w roli przetwarzacza Elementami tworzącymi automat są więc: Σ={0,1}, Γ={0,1,S,B}, Q={q 0,q 1,q 2,q 3,q 4,q 5,q 6,q 7,q 8, q 9,q 10,q 11 }, q start =q 0. Oraz funkcja przejścia:

Przykład 2 Maszyna Turinga w roli przetwarzacza Przykład 3 Maszyna Turinga w roli przetwarzacza Zaprojektować tablicę stanów maszyny Turinga zamieniającej każde podsłowo postaci: 0011 na 0101. Głowica położona jest z prawej strony taśmy. Znaczenie stanów: q0 - stan początkowy, q4 - napotkano 0011, q1 - napotkano 1, q5 - zapisz 0, q2 - napotkano 11, q6 - zapisz 1, q3 - napotkano 011, q7 - wróć.

Przykład 4 dodawanie cyfry 1 Maszyna Turinga dodająca 1 do danej liczby w zapisie dwójkowym (inkrementacja liczby binarnej bez znaku). Analizę liczby rozpoczynamy z prawej strony. Przykład 4 dodawanie cyfry 1

Przykład 5 Słowo - palindrom Maszyna Turinga badająca czy dane słowo z alfabetu wejściowego = {a, b} jest palindromem (to znaczy słowem, które czyta się tak samo z obu stron). Q = { q0, q1, q2, q3, q4, q5, q6, q7} q0 = q0 F = { q6, q7 } Γ = { Φ, a, b } B = Φ Σ = { a, b } Przykład 5 Słowo - palindrom Dodatkowo przyjmuje się, że pojedynczy symbol jest palindromem. Przejście do stanu akceptacji oznacza, że dane słowo jest palindromem, zaś przejście do stanu nieakceptacji oznacza, że słowo nie jest palindromem.

Przykład 5 Słowo - palindrom Symulacja pracy dla slowa abba

Maszyna Turinga przykład ΦabbΦ Przykład 5a Słowo - palindrom Maszyna Turinga przykład ΦabaΦ q0 ΦabaΦ q1 ΦΦbaΦ q1 ΦΦbaΦ q1 ΦΦbaΦ q1 ΦΦbaΦ q3 ΦΦbaΦ q5 ΦΦbΦΦ q5 ΦΦbΦΦ q0 ΦΦbΦΦ q2 ΦΦΦΦΦ q4 ΦΦΦΦΦ q6 TAK ΦΦΦΦΦ

Przykład 5b Słowo - palindrom q0 ΦabbΦ Maszyna Turinga przykład ΦabbΦ q1 ΦΦbbΦ q1 ΦΦbbΦ q1 ΦΦbbΦ q3 ΦΦbbΦ q7 NIE ΦΦbbΦ Niestandardowe modele maszyny Turinga Istnieje szereg wersji maszyny Turinga, które wydają się być silniejsze od tradycyjnej, okazuje się jednak, że mogą one być zasymulowane na wersji pierwotnej.

Wielotaśmowa Maszyna Turinga - k-taśmowa maszyna Turinga różni się od zwykłej maszyny Turinga tym, że ma k niezależnych głowic, które poruszają się po różnych taśmach - każda z nich jest nieograniczona. - W nowym modelu, mechanizm sterujący podejmuje decyzje na podstawie aktualnego stanu i odczytów ze wszystkich głowic. - Dokonuje zapisów i przesunięć na każdej z taśm niezależnie. Maszyna off-line - Maszyna off-line jest zawężeniem modelu maszyny wielotaśmowej. - Modyfikacja polega na tym, że maszynie off-line nie wolno dokonywać zmian taśmy wejściowej. - Rozważa się też maszyny off-line z taśmą wyjściową - wtedy dodatkowym ograniczeniem jest to, że głowica na ostatniej taśmie może tylko zapisywać symbole i przesuwać się tylko w prawo. - Taki model odpowiada sytuacji w której program ma wejście i wyjście na osobnych taśmach, a pozostałe taśmy pełnią funkcję pamięci roboczej.

Niedeterministyczna Maszyna Turinga - Niedeterministyczna maszyna Turinga to taka, dla której mechanizm sterujący może przy konkretnym stanie i odczycie z taśmy postąpić na kilka różnych sposobów. - Wynik obliczeń jest pozytywny, jeśli choć jedna z możliwych dróg działania maszyny doprowadzi do sukcesu. Uniwersalna Maszyna Turinga - Maszyna Turinga po wprowadzeniu w stan początkowy działa samoczynnie, wykonując zadanie dla którego została zaprojektowana. - Proste Maszyny Turninga można składać w złożone i uzyskać maszynę wykonującą bardziej złożone operacje matematyczne. - Do każdego zadania istnieje inna maszyna Turinga

Uniwersalna Maszyna Turinga - Turing zaproponował, aby układ sterowania MT zapisać na taśmie i wyposażyć maszynę w uniwersalny układ sterowania. - Von Neuman rozwinął później UMT w prototyp komputera zaproponował on, aby UMT modyfikowała równie program MT a nie tylko dane. Uniwersalna Maszyna Turinga - UMT jest interpreterem czytającym opis konfiguracji <M> dowolnej maszyny Turinga M i wykonującym operacje na danych taśmie T maszyny M - dokładnie w ten sam sposób co M. - Taśma w UMT: - jej konfiguracje <M> (operacje przejść) zostaną zapisane na początku tamy obszar P taśmy, - potem wystąpi znak rozdzielenia (np. $$) - na koniec dane właściwej tamy T maszyny M. - Uniwersalne sterowanie UMT: pobiera i wykonuje instrukcje <M> zapisane na taśmie w obszarze programu, a UMT przekształca napis umieszczony w obszarze danych tej tamy.

Uniwersalna Maszyna Turinga UMT jest wolniejsza w działaniu od MT, gdy UMT musi przesuwa głowic w tę i z powrotem pomiędzy instrukcjami a danymi. Teza Churcha-Turinga Różnorodność zadań stawianych przed maszyną Turinga postawiło pytanie: Jakie problemy można rozwiązać odpowiednio zaprogramowaną maszyną Turinga (oczywiście pomijając czas)? Otóż okazuje się że: Maszyny Turinga potrafią rozwiązać każdy efektywnie rozwiązywalny problem algorytmiczny.

Teza Churcha-Turinga Każdy problem algorytmiczny dla którego możemy znaleźć algorytm dający się zaprogramować w pewnym dowolnym języku, wykonujący się na pewnym dowolnym komputerze, nawet na takim, którego jeszcze nie zbudowano, ale można zbudować, i nawet na takim, który wymaga nieograniczonej ilości czasu i pamięci dla coraz większych danych, jest także rozwiązywalny przez maszynę Turinga. To stwierdzenie jest jedną z wersji tzw. tezy Churcha- Turinga (Alonz Church, Alan M. Turing), którzy doszli do niej niezależnie w połowie lat trzydziestych. Teza Churcha-Turinga Teza Churcha-Turinga jest tezą a nie twierdzeniem, zatem nie może być dowiedziona w matematycznym tego słowa znaczeniu. Jedno z pojęć, do której się odwołuje, jest bowiem nieformalnym i nieprecyzyjnym, pojęciem efektywnej obliczalności. Skąd biorą się przesłanki aby akceptować tezę Churcha- Turinga, szczególnie, jeśli nie można jej udowodnić?

Rozstrzygalność teorii Badacze proponowali różne modele komputera absolutnego, wszechpotężnego, lub uniwersalnego, ebz sprecyzować ulotne pojęcie efektywnej obliczalności. Turing zaproponował swoją maszynę, Church wymyślił matematyczny formalizm funkcji zwany rachunkiem lambda (jako podstawa języka programowania Lisp). Emil Post zdefiniował pewien typ systemu produkcji do manipulowania symbolami, Stephen Kleene zdefiniował klasę obiektów zwanych funkcjami rekurencyjnymi. Wszyscy oni próbowali użyć tych modeli do rozwiązania wielu problemów algorytmicznych, do których znane były efektywnie wykonalne algorytmy. Rozstrzygalność teorii Przełomowym zdarzeniem istotnym dla wszystkich tych modeli stało się udowodnienie, iż są one równoważne w kategoriach problemów algorytmicznych, które rozwiązują. I ten fakt jest dziś nadal prawdziwy nawet dla najsilniejszych modeli, jakie można sobie wyobrazić.

Rozstrzygalność teorii Z tezy Churcha-Turinga wynika, że najpotężniejszy superkomputer z wieloma najwymyślniejszymi językami programowania, interpretatorami, kompilatorami nie jest potężniejszy od domowego komputera z jego uproszczonym językiem programowania. Mając ograniczoną ilość czasu i pamięci mogą obydwa rozwiązać te same problemy algorytmiczne, jak również żaden z nich nie może rozwiązać problemów nierozstrzygalnych (nieobliczalnych). Rozstrzygalność teorii Schematycznie rozstrzygalność poniższy rysunek: problemów przedstawia

Rozstrzygalność teorii Rozstrzygalność i obliczalność to koncepcyjnie te same pojęcia mówimy: "rozstrzygalny" - gdy oczekujemy binarnego wyniku, "obliczalny" - gdy wynik pochodzi z większego zbioru wartości. Problemy decyzyjne a optymalizacyjne Problemy decyzyjne mają postać pytania na które odpowiedź brzmi tak lub nie Problemy optymalizacyjne klasa problemów wymagająca ekstremalizacji funkcji celu

Problemy decyzyjne a optymalizacyjne Obie klasy problemów mogą być badane w sensie ich natury obliczeniowej w ten sam sposób: Jeśli można w prosty sposób rozwiązać problem optymalizacyjny, to można także prosto rozwiązać związany z nim problem decyzyjny. Jeśli problem decyzyjny jest obliczeniowo trudny, to trudny jest również odpowiadający mu problem optymalizacyjny. Wykazując obliczeniową trudność problemu wystarczy się ograniczyć do jego sformułowania decyzyjnego. Wnioski z tezy Church a- Turninga Maszyny Turinga są w stanie rozwiązać każdy efektywnie rozwiązywalny problem algorytmiczny. Dla każdego efektywnie rozwiązywalnego problemu algorytmicznego da się skonstruować MT (która go rozwiązuje). Jeśli się nie da skonstruować odpowiedniej MT problem jest nierozwiązywalny (nierozstrzygalny).

Problemy nierozstrzygalne Przykład - problem domina Zestaw 1 Czy podanym zestawem kafelków można pokryć dowolny płaski obszar zachowując odpowiedniość kolorów na styku kafelków? (dysponujemy nieograniczoną liczbą kafelków w każdym z rodzajów, ale ich zestaw jest zadany) Dla zestawu 1. - TAK Zestaw 2 Dla zestawu 2. - NIE Problemy nierozstrzygalne Twierdzenie Dla każdego algorytmu (zapisanego w dającym się efektywnie wykonać języku programowania), który byłby przeznaczony do rozstrzygania problemu domina, istnieje nieskończenie wiele dopuszczalnych zestawów danych wejściowych, dla których algorytm ten będzie działał w nieskończoność lub poda błędną odpowiedź. Wniosek Problem domina jest problemem nierozstrzygalnym.

Problemy nierozstrzygalne Nieograniczoność liczby przypadków do sprawdzenia nie jest dostatecznym warunkiem nierozstrzygalności problemu! Jeśli nierozstrzygalność się pojawia, to wynika z natury problemu i jest często sprzeczna z intuicją PROBLEMY NIEROZSTRZYGALNE LUB NIEOBLICZALNE PROBLEMY TRUDNO ROZWIĄZYWALNE PROBLEMY ŁATWO ROZWIĄZYWALNE W ogóle nie istnieją algorytmy Nie istnieją wielomianowe algorytmy Istnieją rozsądne (wielomianowe) algorytmy Problem węża domino Czy dysponując skończonym zbiorem typów kafelków można połączyć dwa dane punkty nieskończonej siatki całkowitoliczbowej wężem domino? Jeżeli postawimy problem węża domino na pewnym obszarze R, to: dla R ograniczonego problem jest rozstrzygalny dla R będącego całą płaszczyzną problem jest rozstrzygalny dla R będącego półpłaszczyzną problem jest nierozstrzygalny X y

Odmiany problemu domina Czy podanym zestawem kafelków można pokryć obszar T zachowując odpowiedniość kolorów na styku kafelków? T = prostokąt C x N (tzw. problem ograniczony ze stałą szerokością) T = kwadrat N x N (tzw. problem ograniczony) T jest nieskończony (tzw. problem nieograniczony) T jest nieskończony i wskazany kafelek ma się powtórzyć nieskończenie wiele razy (tzw. problem okresowy) Rodzaj problemu domina ograniczony ze stałą szerokością ograniczony nieograniczony okresowy Status algorytmiczny łatwo rozwiązywalny trudno rozwiązywalny nierozstrzygalny wysoce nierozstrzygalny Klasy złożoności P i NP Maszyna Turinga jako ścisły model matematyczny umożliwia precyzyjne definiowanie pojęć związanych ze złożonością obliczeniową. Czas działania = liczba kroków maszyny.

Klasy złożoności P i NP Problem należy do klasy złożoności czasowej P, gdy istnieje DTM rozwiązująca ten problem w czasie wielomianowym względem rozmiaru danych wejściowych. Problem należy do klasy złożoności czasowej NP, gdy istnieje NDTM rozwiązująca ten problem w czasie wielomianowym względem rozmiaru danych wejściowych. Intuicja: problem ma złożoność NP, jeśli znając rozwiązanie jesteśmy w stanie sprawdzić w czasie wielomianowym, czy jest ono poprawne. Problemy NP-zupełne Problem P 0 jest NP-zupełny, gdy: a) P 0 należy do klasy NP, b) każdy problem z klasy NP da się sprowadzić w czasie wielomianowym do problemu P 0. Czyli np. znając rozwiązanie problemu P 0 w czasie wielomianowym na DTM, moglibyśmy w czasie wielomianowym rozwiązać każdy problem z klasy NP. Czyli wówczas byłoby P = NP.

Problemy NP-zupełne Klasa problemów NP - zupełnych obejmuje prawie 1000 problemów algorytmicznych o jednakowych cechach: dla wszystkich istnieją wątpliwe rozwiązania w postaci algorytmów wykładniczych dla żadnego nie znaleziono rozsądnego rozwiązania w postaci algorytmu wielomianowego dla żadnego nie udowodniono, że jego rozwiązania wymaga czasu wykładniczego najlepsze znane dolne ograniczenia są liniowe, tzn. O(N) Nowe problemy NP-zupełne powstają w kombinatoryce, badaniach operacyjnych, ekonometrii, teorii grafów, logice itd. Nie wiadomo czy są one trudno, czy łatwo rozwiązywalne! Układanki dwuwymiarowe Powodem braku szybkiego rozwiązania jest istnienie wielu różnych rozwiązań częściowych, nie będących częścią rozwiązania pełnego nie dających się rozszerzyć do jakiegoś rozwiązania pełnego. Zwykłe układanki Puzzle zazwyczaj mają złożoność czasową O(N 2 ) W ogólnym przypadku problem układanek jest także problemem NP zupełnym

Problem komiwojażera Problem polega na znalezieniu w sieci połączeń pomiędzy miastami najkrótszej drogi, która pozwala odwiedzić każde z miast i powrócić do miasta wyjściowego (tzw. cykl). Problem formułowany jest jako poszukiwanie minimalnego pełnego cyklu w grafie z wagami krawędzi. W wersji decyzyjnej problem polega na stwierdzeniu czy istnieje cykl o koszcie nie większym niż podana wartość K. Problem komiwojażera cd. Problem komiwojażera pojawia się na przykład przy: projektowaniu sieci telefonicznych projektowaniu układów scalonych planowaniu linii montażowych programowaniu robotów przemysłowych Naiwne rozwiązanie N! Przypadek nawet dla N = 25 jest beznadziejny

Ścieżka Hamiltona Problem polega na sprawdzeniu czy w grafie istnieje ścieżka, która przez każdy wierzchołek przechodzi dokładnie raz. Ale... Sprawdzenie czy w grafie istnieje ścieżka, która przez każdą krawędź przechodzi dokładnie raz, nazywane jest problemem Eulera i nie jest problemem klasy NPC Kolorowanie map Kolorowanie mapy - problem decyzyjny polegający na ustaleniu czy dana mapa płaska może być pokolorowana k barwami tak, aby sąsiednie państwa nie miały tego samego koloru. dla 2 barw problem jest łatwo rozwiązywalny wystarczy sprawdzić, czy mapa nie zawiera punktów, w których styka się nieparzysta liczba państw dla 3 barw problem jest trudno rozwiązywalny (klasy NPzupełnych) dla 4 barw problem jest banalny - patrz twierdzenie o czterech barwach

Kolorowanie grafów Kolorowanie grafu - wyznaczenie minimalnej liczby barw, którymi można pokolorować wierzchołki danego grafu tak, aby każde dwa wierzchołki bezpośrednio połączone krawędzią miały różne kolory. Łatwo można skonstruować graf wymagający dowolnie dużej liczby kolorów. Klika - zbiór wierzchołków w grafie połączonych każdy z każdym Załadunek plecaka Należy tak poukładać rzeczy w plecaku, żeby zostało w nim jak najwięcej wolnego miejsca.

Ogólna charakterystyka problemów z klasy NP wymagają sprawdzania rozwiązań częściowych i rozszerzania ich w celu znalezienia rozwiązania ostatecznego; jeśli rozwiązanie częściowe nie da się dalej rozszerzyć, to trzeba powrócić na jakiś wcześniejszy etap i po dokonaniu zmian rozpocząć od nowa, postępowanie polegające na systematycznym sprawdzeniu wszystkich możliwości wymaga czasu wykładniczego Ogólna charakterystyka problemów z klasy NP jeśli znamy rozwiązanie, to sprawdzenie jego poprawności może być przeprowadzone w czasie wielomianowym! dla każdego z problemów istnieje niedeterministyczny algorytm o złożoności wielomianowej; są trudno rozwiązywalne, ale stają się łatwo rozwiązywalne, jeśli korzysta się z niedeterministycznej wyroczni

Ogólna charakterystyka problemów NP-zupełnych - każdy problem klasy NP można przekształcić do jednego z nich w czasie wielomianowym (taka jest ich definicja) - każdy problem z tej klasy można przekształcić w czasie wielomianowym do każdego innego! - znalezienie algorytmu wielomianowego dla jednego z problemów oznacza możliwość rozwiązania w czasie wielomianowym wszystkich innych! Ogólna charakterystyka problemów NP-zupełnych - udowodnienie wykładniczego dolnego oszacowania dla jednego z problemów oznacza wykazanie, że żaden z nich nie może być rozwiązany w czasie wielomianowym! - albo wszystkie te problemy są łatwo rozwiązywalne, albo wszystkie trudno - wykazanie, że nowy problem jest NP-zupełny przebiega w dwóch krokach: - trzeba udowodnić, że nowy problem jest klasy NP. - trzeba skonstruować przekształcenie, które w czasie wielomianowym transformuje do niego dowolny znany problem NP-zupełny

Przykłady przekształcania jednego problemu NP-zupełnego w drugi Znalezienie ścieżki Hamiltona problem komiwojażera Istnieje ścieżka Hamiltona w grafie o N wierzchołkach Istnieje cykl komiwojażera w uzupełnionym grafie nie dłuższy niż N + 1 Klasy problemów - Klasa NP - problemy posiadające niedeterministyczne algorytmy o czasie wielomianowym - Klasa P - problemy posiadające zwykłe algorytmy o czasie wielomianowym (łatwo rozwiązywalne) - Klasa NP-zupełne - wzorcowe problemy z klasy NP sprowadzalne jeden do drugiego

Klasy złożoności algorytmów Literatura Harel D., Rzecz o istocie informatyki - algorytmika, WNT, Warszawa 2008 http://uranos.cto.us.edu.pl/~boryczka/ http://pl.wikipedia.org

Literatura Harel D., Rzecz o istocie informatyki - algorytmika, WNT, Warszawa 2008 J. Błażewicz; Złożoność obliczeniowa problemów kombinatorycznych;wnt, Warszawa 1988 http://uranos.cto.us.edu.pl/~boryczka/ http://pl.wikipedia.org