Obliczanie 1
Obliczanie Co to jest obliczanie? Czy wszystko można obliczyć? Czy to, co intuicyjnie uznajemy za obliczalne można obliczyć za pomocą mechanicznej procedury? 2
Czym jest obliczanie? Dawid Hilbert (1862-1943) 1900 - ogłasza program składający się z 23 problemów, którego celem jest zbudowanie matematyki na niepodważalnych zasadach; dziesiąty problem Hilberta (Entscheidungsproblem): Czy istnieje ogólna, algorytmiczna procedura rozstrzygania problemów matematycznych? 3
Czym jest obliczanie? Kurt Gödel (1906-1978) This sentence is not provable. 1931 - publikuje twierdzenie, którym rozwiewa nadzieje Hilberta: Dowolny precyzyjny (formalny) system aksjomatów i reguł wnioskowania, na tyle ogólny, aby obejmował proste zdania arytmetyczne, oraz wolny od sprzeczności, musi zawierać pewne zdania, których prawdziwości nie można ani dowieść, ani obalić posługując się środkami dozwolonymi w ramach tego systemu. 4
Czym jest obliczanie? Alonzo Church (1903-1995) twórca rachunku λ i jego zastosowania do analizy obliczalności 1936 - udowadnia, że arytmetyka pierwszego rzędu jest nierozstrzygalna teza Churcha: wszystko, co jest efektywnie obliczalne daje się wyrazić za pomocą funkcji λ-definiowalnych, funkcji rekurencyjnych lub innych formalizmów im równoważnych 5
Czym jest obliczanie? Stephen C. Kleene (1909-1994) 1936 - udowadnia równoważność zdefiniowanej przez Churcha klasy funkcji λ-definiowalnych z podaną przez siebie klasą funkcji rekurencyjnych 6
Czym jest obliczanie? Alan Turing (1912-1954) możliwe jest skonstruowanie maszyny zdolnej wykonać dowolne obliczenia istnieją zagadnienia matematyczne, których nie można rozwiązać za pomocą obliczeń 7
Czym jest obliczanie? Emil Post (1897-1954) niezależna analiza procesu obliczeniowego pierwsze badania nad stopniami nierozwiązalności (klasyfikacja problemów nierozwiązalnych) 1943 - wprowadza koncepcję systemów kanonicznych 8
Czym jest obliczanie? Julia B. Robinson (1919-1985) prace nad nierozwiązalnością dziesiątego problemu Hilberta 1949 - udowadnia, że arytmetyka liczb rzeczywistych jest nierozstrzygalna zasada rezolucji 9
Czym jest obliczanie? Martin Davis (1928) prace nad nierozwiązalnością dziesiątego problemu Hilberta (Davis, Putnam, Robinson, ok. 1950) gdyby istniało chociaż jedno równanie diofantyczne, którego rozwiązania spełniałyby specjalny warunek, to dziesiąty problem Hilberta byłby nierozwiązalny Jurij Matjasewicz (1948) 1970 - dowód istnienia takiego równania 10
Czym jest obliczanie? Antoni A. Markow (1903-1979) 1954 - wprowadza pojęcie algorytmów normalnych wykazuje, że problem słowa dla półgrup jest nierozstrzygalny 11
Czym jest obliczanie? 1963 - J. C. Stepherdson, H. E. Sturgis maszyny z rejestrami 1964 - C. C. Elgot, A. Robinson - maszyny RAM i RASP 12
Teoria obliczeń Teoria obliczeń czyli zastosowanie matematyki do teoretycznego rozumienia obliczeń. Jest to dział matematyki zajmujący się definiowaniem i formalnym badaniem terminu obliczalność. Teoria obliczeń formułuje podstawy teoretyczne algorytmów, programów, procesów obliczeniowych. 13
Klasy zagadnień rozważanych w teorii obliczeń wyznaczenie klasy problemów obliczalnych oraz wskazanie granic obliczalności klasyfikacje problemów obliczalnych złożoność obliczeniowa algorytmów weryfikacja poprawności algorytmów 14
Podejścia do problemu obliczalności podejście modelowe - oparte na idei tworzenia abstrakcyjnych modeli maszyn mogących wykonywać proces zwany obliczaniem: maszyna Turinga, maszyna RAM, maszyna RASP, algorytmy Markowa podejście algebraiczne - podstawę stanowią struktury algebraiczne zawierające tzw. funkcje bazowe oraz schematy definiowania funkcji złożonych w tych strukturach: teoria funkcji rekurencyjnych podejście logiczne - problemy obliczeniowe definiuje się jako formuły w języku pewnego systemu logicznego; obliczenie problemów jest możliwe, gdy potrafimy udowodnić te formuły: logika I rzędu z regułą rezolucji 15
start Algorytmy? stop 16
Pojęcie algorytmu Jednoznaczny, dobrze (krok po kroku) określony przepis mechanicznego rozwiązania dowolnego konkretnego zadania z pewnej klasy zadań. W rozwiązaniu stosuje się skończoną liczbę reguł postępowania (czyli wykonywania kroków prowadzących do rozwiązania). ax 2 + bx + c = 0 = b2-4ac x = (-b ± )/2a 17
Cechy algorytmu składa się z kroków, działa na pewnych danych wejściowych, wytwarza pewne dane wyjściowe, jest dobrze określony (reguły postępowania uwzględniają wszystkie przypadki, jakie mogą wystąpić podczas wykonywania algorytmu), jest skończony (obliczenia są wykonywane w skończonej liczbie kroków) lub cykliczny (np. działanie systemu operacyjnego) jest wykonywalny (każdy krok jest tak zdefiniowany, aby człowiek mógł go skutecznie wykonać dr hab. inż. Joanna w Józefowska, skończonym prof. PP czasie) 18
Maszyna Turinga 19
Maszyna Turinga Problem Hilberta: Czy istnieje ogólna mechaniczna procedura, która w zasadzie pozwoliłaby nam po kolei rozwiązać wszystkie matematyczne problemy (należące do odpowiednio zdefiniowanej klasy)? Maszyna Turinga jest matematyczną idealizacją urządzenia wykonującego pewne (zdefiniowane w skończony sposób) obliczenia. 20
Maszyna Turinga (dodanie 1 do liczby zapisanej w systemie jedynkowym) 0 1 1 zapisz 0 w prawo 0 1 zapisz 1 w prawo zapisz 1 w prawo stop 0 0 0 1 1 1 0 0 0 0 21
Maszyna Turinga (dodanie 1 do liczby zapisanej w systemie jedynkowym) 0 zapisz 0 w prawo 0 0 0 0 1 1 1 0 0 0 0 0 0 22
Maszyna Turinga (dodanie 1 do liczby zapisanej w systemie jedynkowym) 0 1 zapisz 0 w prawo 0 1 0 0 0 1 1 1 0 0 0 zapisz 1 w prawo 1 23
Maszyna Turinga (dodanie 1 do liczby zapisanej w systemie jedynkowym) 0 1 1 zapisz 0 w prawo 0 1 0 0 0 1 1 1 10 0 0 zapisz 1 w prawo 1 1 1 zapisz 1 w prawo 24
Maszyna Turinga (dodanie 1 do liczby zapisanej w systemie jedynkowym) 0 1 1 zapisz 0 w prawo 0 1 zapisz 1 w prawo zapisz 1 w prawo stop 0 0 0 1 1 1 1 0 0 0 25
Maszyna Turinga Maszyna Turinga składa się z następujących elementów: skończonego alfabetu symboli skończonego zbioru stanów nieskończonej taśmy z zaznaczonymi kwadratami, z których każdy może zawierać pojedynczy symbol ruchomej głowicy odczytująco-zapisującej, która może wędrować wzdłuż taśmy przesuwając się na raz o jeden kwadrat diagramu przejść między stanami zawierającego instrukcje, które powodują, że zmiany następują przy każdym zatrzymaniu się 26
Deterministyczna jednotaśmowa maszyna Turinga taśma 0 0 0 1 0 1 1 0 0 q 0 sterowanie głowica zapisującoodczytująca Instrukcja: (q, a, a,, q ) 27
Deterministyczna jednotaśmowa maszyna Turinga 0 0 0 1 0 1 1 0 0 sterowanie taśma głowica zapisującoodczytująca T = Q, A, B, δ, q 0 Q = {q 0, q 1, q 2,..., q p } - skończony zbiór stanów q 0 - wyróżniony stan początkowy q y - wyróżniony stan końcowy ( tak ) q n - wyróżniony stan końcowy ( nie ) A - skończony alfabet symboli B A - wyróżniony symbol pusty δ- funkcja przejść (zbiór instrukcji) δ : (Q {q y, q n }) x A Q x A x { 1, 1} δ(q i, a j ) = (q m, a n, ) 28
Deterministyczna jednotaśmowa maszyna Turinga Mówimy, że DTM rozwiązuje problem decyzyjny π przy kodowaniu e, jeżeli zatrzymuje się dla wszystkich łańcuchów wejściowych i kończy obliczenia w stanie q y, dla wszystkich x(i), takich, że I Y i tylko dla nich. 29
Konfiguracja maszyny Turinga A k - alfabet złożony z k symboli (k>1) zdefiniujemy operację sklejania symboli alfabetu A k następująco: A k 0 = {ε} A k i = A k A k i-1, i>0 oznaczmy przez Α k = U A = * (słowo puste) i 0 i k 30
Przykład A 3 = {a, b, c} A 3 0 = {ε} A 1 3 = {a, b, c} A 2 3 = {aa, ab, ac, ba, bb, bc, ca, cb, cc} A 3 3 = {aaa, aab, aac, aba, abb, abc, aca, acb, acc, baa, bab, bac, bba, bbb, bbc, bca, bcb, bcc caa, cab, cac, cba, cbb, cbc, cca, ccb, ccc}... 31
Konfiguracja maszyny Turinga Φ Ψ 0 0 0 1 0 1 1 0 0 q 0 sterowanie (q, Φ, Ψ) konfiguracja początkowa (q 0, ε, Ψ} q Q Φ A k * Ψ A k *\{ε} 32
Konfiguracja maszyny Turinga Instrukcja (q j, a j, a k,, q k ) jest stosowalna do konfiguracji α = (q, Φ, Ψ) jeśli q = q j oraz Ψ = a j Ψ dla pewnego Ψ A k *. Konfiguracja końcowa - żadna instrukcja nie jest stosowalna. 33
Nastepstwo konfiguracji Φ α = (q, Φ, aψ ) Ψ 0 0 0 1 a 1 1 0 0 q 0 sterowanie (qaa Rq ) 34
Nastepstwo konfiguracji Φ Ψ 0 0 0 1 a 1 1 0 0 q 0 sterowanie β = (q, Φa, Ψ ) 35
Nastepstwo konfiguracji Φ α = (q, Φ c, aψ ) Ψ 0 0 0 c a 1 1 0 0 q 0 sterowanie (qaa Lq ) 36
Nastepstwo konfiguracji Φ Ψ 0 0 0 c a 1 1 0 0 q 0 sterowanie β = (q, Φ, ca Ψ ) 37
Nastepstwo konfiguracji Jeżeli α = (q, Φ, aψ ) nie jest konfiguracją końcową (qaa q ) jest instrukcją stosowalną do α to następnikiem konfiguracji α jest β: (1) jeżeli = R, to (a) jeżeli Ψ ε, to β = (q, Φa, Ψ ) (b) jeżeli Ψ = ε, to β = (q, Φa, B) (2) jeżeli = L (a) jeżeli Φ ε i Φ = Φ c, to β = (q, Φ, ca Ψ ) (b) jeżeli Φ = ε, to β = (q, ε, Ba Ψ ) 38
Następstwo konfiguracji α β (β jest następnikiem α) oznaczmy przez * zwrotne i przechodnie domknięcie relacji α * β wtedy i tylko wtedy gdy albo α = β istnieje skończony ciąg konfiguracji γ 1, γ 2,..., γ n, taki, że: γ 1 = α, γ n = β, γ i γ i+1 dla 1 i n 1 39
Funkcje definiowane przez maszynę Turinga Maszyna Turinga T definiuje rodzinę funkcji f T,n, (gdzie n jest liczbą argumentów) nad alfabetem A k-1 = A k \{B}. f ( * ) n * A k-1 k-1 T, n = A f T,n = {((x 1, x 2,..., x n ), delete (B, yz)) istnieje q Q, takie, że (q 0, ε, x 1 Bx 2 B...Bx n B) * (q, y, z) i (q, y, z) jest konfiguracją końcową} Funkcja delete(b, yz) jest funkcją usuwającą wszystkie wystąpienia symbolu B w słowie yz. 40
Przykład maszyny Turinga T = (Q, A 3, B, I, q 0 ) A 3 = {a, b, B} Q = {q 0, q 1, q 2 } I = {q 0 BBRq 0, q 0 aarq 1, q 0 bbrq 1, q 1 abrq 1, q 1 bbrq 1, q 1 BBRq 2 } b/b, R b/b, R q 0 q 1 q abab 2 a/a, R B/B, R B/B, R a/b, R abbb 41
Normalna maszyna Turinga Niech n 1 będzie liczbą całkowitą i niech T = (Q, A k, B, I, q 0 ) będzie maszyną Turinga. Maszyna Turinga nazywa się n-normalną, jeżeli istnieje stan q f Q spełniający warunek: dla każdej konfiguracji (q, Φ, Ψ), dla której istnieją x 1, x 2,..., x n (A k - {B})*, takie że (q 0, ε, x 1 Bx 2 B...Bx n B) * (q, Φ, Ψ) mamy: (1) q q f gdy (q, Φ, Ψ) nie jest konfiguracją końcową (2) q = q f, Φ {B}*, Ψ (A k - {B})* {B}* gdy (q, Φ, Ψ) jest konfiguracją końcową. 42
Normalna maszyna Turinga Zatem n-normalna maszyna Turinga obliczając wartość funkcji od n argumentów zatrzymuje się wtedy i tylko wtedy, gdy znajduje się w szczególnym stanie. Ponadto, wartość funkcji jest słowem nie zawierającym wewnątrz symbolu B, a głowica stoi nad pierwszym od lewej symbolem słowa. 43
Normalna maszyna Turinga TWIERDZENIE Dla dowolnej pary (T, n), gdzie T jest maszyną Turinga i n 1 jest liczbą całkowitą, można skonstruować maszynę Turinga P definiującą tę samą n-arną funkcję co T i będącą maszyną n-normalną. 44
Zadanie domowe Jaki jest wynik działania następującej maszyny Turinga dla ciągu wejściowego: 11110111? Jaki algorytm realizuje ta maszyna? T = (Q, A 2, 0, I, q 0 ) A 2 = {0, 1} Q = {q 0, q 1, q 10, q 11, q 100, q 101, q 110, q 111, q 1000, q 1001, q 1010 } I = {q 0 00Rq 0, q 0 11Lq 1, q 1 01Rq 10, q 1 11Lq 1, q 10 00Rq 1010, q 10 10Rq 11, q 11 00Rq 100, q 11 11Rq 11, q 100 00Rq 1000, q 100 10Rq 101, q 101 00Lq 11, q 101 11Lq 110, q 110 00Lq 110, q 110 11Lq 1, q 111 00Lq 111, q 111 11Lq 1000, q 1000 00Lq 1001, q 1000 11Lq 1000, q 1001 00Rq 10, q 1001 11Lq 1, q 1010 00STOPq 0, q 1010 11Rq 1010 } 45