Elementy Teorii Obliczeń



Podobne dokumenty
MODELOWANIE RZECZYWISTOŚCI

Hierarchia Chomsky ego Maszyna Turinga

Języki, automaty i obliczenia

Obliczenia inspirowane Naturą

Maszyna Turinga języki

Matematyczne Podstawy Informatyki

MASZYNA TURINGA UPRASZCZANIE DANYCH

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

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

Języki formalne i automaty Ćwiczenia 9

PROBLEMY NIEROZSTRZYGALNE

O ALGORYTMACH I MASZYNACH TURINGA

Turing i jego maszyny

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

Maszyna Turinga, ang. Turing Machine (TM)

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

Efektywność Procedur Obliczeniowych. wykład 5

Podstawy Informatyki Maszyna Turinga

Maszyna Turinga (Algorytmy Część III)

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

Obliczenia inspirowane Naturą

Teoretyczne 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}

Informacja w perspektywie obliczeniowej. Informacje, liczby i obliczenia

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

Teoretyczne podstawy informatyki

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

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

Języki, automaty i obliczenia

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

Języki formalne i automaty Ćwiczenia 7

KONKURS MATEMATYCZNY KOMA 2018

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

iks plus trzy dzielone na dwa iks razy iks plus pięć

Informatyka. Michał Rad

Języki, automaty i obliczenia

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

Algorytm. Krótka historia algorytmów

Logika i teoria mnogości Wykład 14

Teoria obliczeń czyli czego komputery zrobić nie mogą

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

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

InŜynieria oprogramowania. Język UML

2. Wymagania wstępne w zakresie wiedzy, umiejętności oraz kompetencji społecznych (jeśli obowiązują):

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

O ISTOTNYCH OGRANICZENIACH METODY

Wprowadzenie do maszyny Turinga

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

JAKIEGO RODZAJU NAUKĄ JEST

Matematyczne Podstawy Informatyki

M T E O T D O ZI Z E E A LG L O G R O Y R TM

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

Imię, nazwisko, nr indeksu

Logika dla socjologów Część 3: Elementy teorii zbiorów i relacji

Języki formalne i automaty Ćwiczenia 4

Hierarchia Chomsky ego

Programowanie komputerów

Dialog z przyroda musi byc prowadzony w jezyku matematyki, w przeciwnym razie przyroda nie odpowiada na nasze pytania.

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

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

Podstawy Informatyki dla Nauczyciela

Jaki język zrozumie automat?

LOGIKA Klasyczny Rachunek Zdań

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

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

Definicje. Algorytm to:

Problemy studentów na I roku

O LICZBACH NIEOBLICZALNYCH I ICH ZWIĄZKACH Z INFORMATYKĄ

Uwaga 1. Zbiory skończone są równoliczne wtedy i tylko wtedy, gdy mają tyle samo elementów.

JAO - Wprowadzenie do Gramatyk bezkontekstowych

2.2. Gramatyki, wyprowadzenia, hierarchia Chomsky'ego

Systemy liczbowe. 1. Przedstawić w postaci sumy wag poszczególnych cyfr liczbę rzeczywistą R = (10).

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

Poprawność semantyczna

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

1 Automaty niedeterministyczne

Matematyczne Podstawy Informatyki

Teoretyczne podstawy informatyki

Systemy ekspertowe i ich zastosowania. Katarzyna Karp Marek Grabowski

Wstęp do Informatyki

Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

Informatyczna Wieża Babel, czyli o różnych językach programowania. Informatyczna Wieża Babel, czyli o różnych językach programowania

PROLOG WSTĘP DO INFORMATYKI. Akademia Górniczo-Hutnicza. Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej.

Tajna wiadomość. Scenariusz lekcji

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

Wykład z Podstaw Informatyki dla I roku BO. Piotr Mika

Def. Kod jednoznacznie definiowalny Def. Kod przedrostkowy Def. Kod optymalny. Przykłady kodów. Kody optymalne

O rekurencji i nie tylko

Abstrakcyjny model maszyny przetwarzającej dane To pomysł jak zapisać komputer jako działające urządzenie i tu pojawia się pomysł na maszynę Turinga.

Wstęp do informatyki. Architektura co to jest? Architektura Model komputera. Od układów logicznych do CPU. Automat skończony. Maszyny Turinga (1936)

Języki formalne i automaty Ćwiczenia 1

Materiały: kartki papieru (5 x 5 kolorów), piłeczki pingpongowe (5 x 5 kolorów), worek (nieprzeźroczysty).

Logika Stosowana. Wykład 1 - Logika zdaniowa. Marcin Szczuka. Instytut Informatyki UW. Wykład monograficzny, semestr letni 2016/2017

Techniki multimedialne

Przetwarzanie i transmisja danych multimedialnych. Wykład 5 Kodowanie słownikowe. Przemysław Sękalski.

Algorytmy ewolucyjne NAZEWNICTWO

Równoliczność zbiorów

Automaty Büchi ego i równoważne modele obliczeń

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 9,

O badaniach nad SZTUCZNĄ INTELIGENCJĄ

Transkrypt:

Wykład 2 Instytut Matematyki i Informatyki Akademia Jana Długosza w Częstochowie 10 stycznia 2009

Maszyna Turinga uwagi wstępne Maszyna Turinga (1936 r.) to jedno z najpiękniejszych i najbardziej intrygujacych odkryć 20 wieku. Odkrycie to stworzyło podstawy dla rozwoju informatyki teoretycznej. Maszyna Turinga jest prostym ale użytecznym modelem obliczeń (modelem komputerów) wystarczajaco ogólnym, aby reprezentować dowolny program komputerowy. Z powodu prostego opisu i działania maszyna Turinga poddaje się matematycznym rozważaniom, które doprowadziły do lepszego zrozumienia istoty obliczeń oraz komputerów. Jednym z najważniejszych odkryć teorii obliczeń jest fakt mówiacy, że istnieja problemy obliczeniowe, które nie moga zostać rozwiazane na żadnym komputerze, niezależnie od ilości dostępnej pamięci i czasu.

Maszyna Turinga komponenty Potencjalnie nieskończona taśma, na której umieszcza się dane wejściowe, wyniki pośrednie oraz wyniki końcowe. Taśma podzielona jest na komórki. W każdej z komórek znajduje się w danym momencie jeden z symboli skończonego alfabetu. Głowica czytajaco-pisz aca, która w danym momencie znajduje się nad jedna komórka taśmy zwana komórka aktywna. W każdym kroku głowica czyta symbol z aktywnej komórki i albo pozostawia go bez zmiany albo zapisuje w komórce aktywnej inny symbol. Każdy krok kończy się zmiana stanu oraz przesunięciem głowicy w lewo lub w prawo.

Maszyna Turinga komponenty Jednostka sterujaca w postaci diagramu przejść pomiędzy stanami. W zależności od bieżacego stanu oraz symbolu znajdujacego się w aktywnej komórce maszyna Turinga zapisuje na taśmie jednoznacznie określony symbol oraz przechodzi do jednoznacznie określonego stanu. Każda tranzycja wiaże dwa stany (nazwijmy je t oraz s) i jest etykietowana para symboli (nazwijmy je A oraz X). Oznacza to, że jeżeli maszyna Turinga znajduje się w stanie t a w aktywnej komórce znajduje się symbol A, to w wyniku wykonania tej tranzycji maszyna wpisuje do aktywnej komórki symbol X i przechodzi do stanu t. Każdy stan etykietowany jest jednym z pięciu oznaczeń: L (left), R (right), Y (yes), N (no) lub H (halt). Po wykonania przejścia do stanu t maszyna Turinga w zależności od etykiet tego stanu albo przesuwa głowicę (w lewo lub w prawo) albo zatrzymuje się.

Przykładowa maszyna Turinga Example (Zamiana liczby z postaci unarnej na binarna)

Działanie maszyny Turinga Maszyna Turinga rozpoczyna pracę w wyróżnionym stanie nazywanym stanem poczatkowym; głowica maszyny Turinga znajduje się nad wyróżniona komórka nazywana komórka poczatkow a. Dla każdej pary (stan, symbol) istnieje co najwyżej jedna tranzycja zwiazana z ta para; jeżeli takiej tranzycji nie ma, to maszyna Turinga nie zmienia stanu i nie zmienia symbolu w aktywnej komórce. Każdy krok działania maszyny Turinga przebiega jak następuje: czyta symbol z aktywnej komórki szuka tranzycji zwiazanej z bieżacym stanem i z przeczytanym symbolem zmienia symbol w bieżacej komórce zmienia stan zgodnie z tranzycja przesuwa głowicę w lewo lub w prawo lub zatrzymuje się

Działanie maszyny Turinga Kroki maszyny Turinga powtarzane sa dopóty, dopóki nie znajdzie się ona w stanie etykietowanym przez: H (zatrzymanie), Y (akceptacja) lub N (odrzucenie). Jest możliwe, że maszyna Turinga nigdy się nie zatrzyma. Założenie o potencjalnie nieskończonej taśmie oznacza, że maszyna Turinga jest modelem obliczeń a nie komputerów. Example (Symulator maszyny Turinga) Program turing.jar

Uniwersalność Na potrzeby teorii obliczeń możemy zdefiniować algorytm jako maszynę Turinga. W tym sensie maszyny Turinga odpowiadają programom komputerowym. Uniwersalna Maszyna Turinga (UTM) to specyficzna maszyna Turinga potrafiaca symulować działanie dowolnej innej maszyny Turinga (także samej siebie!). UTM pozwala odpowiadać na pytania dotyczace innych TM (także samej siebie!). Pierwsza UTM opisał Alan Turing. Istnienie UTM oznacza, że istnieje TM, która potrafi wykonać dowolny algorytm. Kluczowa idea polega na sposobie zakodowania dowolnej TM przy pomocy słowa nad skończonym alfabetem.

Kodowanie maszyny Turinga na przykładzie Kodowanie stanów: 0L, 1R, 2R, 3Y, 4R, 5N Kodowanie tranzycji: 01##, 201x, 400x, 120x, 13##, 141x, 25##, 45##

Kodowanie maszyny Turinga Aby otrzymać kodowanie konkretnej maszyny Turinga konkatenujemy słowa kodujace stany oraz słowa kodujace tranzycje w słowo nad alfabetem {0, 1, 2, 3, 4, 5, x,#}: 0L1R2R3Y 4R5N01##201x...45## i zapisujemy je na taśmie UMT. Po tym słowie umieszczamy słowo nad alfabetem {0, 1} będace słowem wejściowym dla zakodowanej TM oddzielajac je nowym symbolem. Do tego słowa można również dołaczyć stan poczatkowy oraz poczatkow a pozycję głowicy. UTM jako wejście otrzymuje kodowanie konkretnej TM oraz poczatkow a zawartość taśmy tej TM.

Uwagi na temat istniejacych UTM Pierwsza UTM opisał Alan Turing w swojej pracy z 1937 roku: On Computable Numbers, with an Application to the Entscheidungsproblem. W 1962 roku M. Minsky odkrył siedmiostanowa UTM nad czteroznakowym alfabetem. Z niej można otrzymać UTM nad dwuznakowym alfabetem, ale wymaga to 43 stanów. Inne UTM zostały odkryte w 1996 roku przez Rogozhina. Oznaczane sa parami liczb (m, n), gdzie m to liczba stanów a n to ilość znaków alfabetu. Sa to maszyny: (24, 2), (10, 3), (7, 4), (5, 5), (4, 6), (3, 10) oraz (2, 18). W 2002 roku Wolfram odkrył UTM typu (2, 5). Uważano, że cztery TM typu (2, 4) oraz czternaście maszyn typu (2, 3) (wszystkie odkryte przez Wolframa) sa prawdopodobnie UTM, ale potrafiono tego udowodnić.

Najmniejsza Uniwersalna Maszyna Turinga 24 października 2007 roku 20-letni brytyjczyk Alex Smith, student uniwersytetu w Birmingham, zgłosił dowód twierdzenia mówiacego, że zaproponowana przez Wolframa dwustanowa maszyna Turinga używajaca tylko trzech symboli jest uniwersalna maszyna Turinga. Za to odkrycie Alex Smith otrzymał wcześniej wyznaczona nagrodę w wysokości 25 000 dolarów. Rozważana maszyna ma w numeracji Wolframa numer 596 440. Istnieje (2 3 2 + 1) (2 3) = 13 6 = 4 826 809 dwustanowych maszyn Turinga używajacych trzech symboli (w tym symbolu pustego).

Najmniejsza Uniwersalna Maszyna Turinga

Hipoteza Churcha-Turinga W 1936 roku Alonzo Church i Alan Turing zaproponowali niezależnie od siebie różne modele obliczeń: Church wymyslił rachunek lambda a Turing abstrakcyjna maszynę nazwana później na jego cześć maszyna Turinga. Chociaż oba formalizmy bardzo się różnia Turing udowodnił wkrótce, że sa one równoważne. W 1943 roku Stephen Kleene sformułował następujacy wniosek zwany hipoteza (również teza) Churcha-Turinga: Każdy problem, który może być intuicyjnie uznany za obliczalny, jest rozwiazywalny przez maszynę Turinga. Sformułowanie intuicyjnie uznany za obliczalny uniemożliwia przeprowadzenie matematycznego dowodu tej hipotezy.

Rozszerzenia maszyn Turinga Poniższe rozszerzone modele maszyn Turinga maja taka sama moc obliczeniowa jak oryginalna maszyna Turinga: Maszyny Turinga z wieloma niezależnymi głowicami. Maszyny Turinga z wieloma taśmami. Maszyny Turinga z taśma dwuwymiarową. Niedeterministyczne maszyny Turinga. Probabilistyczne maszyny Turinga. Równoważność powyższych modeli stanowi argument przemawiajacy za prawdziwościa hipotezy Churcha-Turinga

Maszyny Turinga z ograniczeniami Poniższe ograniczone modele maszyn Turinga maja taka sama moc obliczeniowa jak oryginalna maszyna Turinga: Maszyny Turinga z jednostronnie ograniczona taśma. Maszyny Turinga nad alfabetem binarnym. Dwustanowe maszyny Turinga. Maszyny Turinga, które nigdy nie nadpisuja zapisanych symboli. Maszyny Turinga, dla których poprzedni stan może być zawsze jednoznacznie wyznaczony przez stan bieżacy oraz przez zawartość taśmy. Równoważność powyższych modeli stanowi kolejny argument przemawiajacy za prawdziwościa hipotezy Churcha-Turinga

Inne modele obliczeń równoważne z TM Systemy formalne Posta (Emil Post 1920) reguły zamiany słów zaprojektowane do dowodzenia twierdzeń ze zbioru aksjomatów. Funkcje ogólnie rekurencyjne (Kurt Gödel 1934). Funkcje częściowo rekurencyjne (Alonzo Church 1932, Stephen Kleene 1935). Algorytmy Markova (1960) reguły zamiany słów w ustalonej kolejności. Gramatyki nieograniczone (Noam Chomsky 1950) Logika klauzul Horna (Horn 1951) system dowodzenia twierdzeń stanowiacy podstawę dla języka programowania Prolog. Języki programowania: C, C++, Java, Python, Ruby, Perl, Lisp,...