Wykład 3. Algorytmy i maszyny Turinga
Transkrypt
Wykład 3. Algorytmy i maszyny Turinga
O ALGORYTMACH I MASZYNACH TURINGA −− Wykład 3. Algorytmy i maszyny Turinga −− ALGORYTM (objaśnienie ogólne) Algorytm Pojęcie o rodowodzie matematycznym, oznaczające współcześnie precyzyjny schemat mechanicznej lub maszynowej realizacji zadań określonego typu; schemat możliwy do zakodowania w postaci programu komputerowego. Algorytm potocznie: przepis na rozwiązanie pewnego problemu. Ważne! Algorytm nie musi gwarantować rozwiązania problemu; wystarczy, że opisuje w sposób precyzyjny procedurę (nie zawsze skuteczną) poszukiwania rozwiązań. Krótko: Algorytm może być heurystyczny. −− Wykład 3. Algorytmy i maszyny Turinga −− ALGORYTM (w informatyce – dwa ujęcia) W sensie wąskim Algorytmem nazywa się każdy ogólny schemat procedury możliwej do wykonania przez uniwersalną maszynę Turinga (UMT). (Ze względu na obliczeniową równoważność UMT i komputerów cyfrowych jest to pojęcie algorytmu dla maszyn cyfrowych.) W sensie szerszym Algorytmem nazywa się ogólny schemat procedury możliwej do wykonania przez pewną maszynę – niekoniecznie cyfrową i deterministyczną (np. analogową, kwantową, ewolucyjną – lista nie jest zamknięta). −− Wykład 3. Algorytmy i maszyny Turinga −− ALGORYTMY (typy i własności) Algorytm ≈ program komputerowy Różne typy algorytmów cyfrowe vs analogowe determ. vs niedeterm. szeregowe vs równoległe szeregowe vs rekurencyjne klasyczne vs populacyjne działania vs uczenia się (…) Różne informatyczne własności algorytmów skuteczność złożoność czasowa złożoność pamięciowa złożoność struktury stabilność (numeryczna) Uwaga: typ algorytmu zależy często (być może najczęściej) od typu maszyny, na której będzie realizowany. −− Wykład 3. Algorytmy i maszyny Turinga −− Kim był Alan TURING? (1912 – 1954) 1931 do 1939 – studiuje, a następnie pracuje w King’s College w Cambridge. 1936 – publikuje swoją najważniejszą pracę „On Computable Numbers…”. Wprowadza w niej podział na liczby obliczalne i nieobliczalne, oraz ideę abstrakcyjnej maszyny, która uściśla w sposób ostateczny pojęcie algorytmu, a dziś stanowi najprostszy model komputera cyfrowego. 1939 do 1945 – pracuje jako kryptolog w służbie wywiadu brytyjskiego; konstruuje specjalne maszyny deszyfrujące (tzw. bomby Turinga), które powalają rozszyfrowywać tajne depesze niemieckie kodowane za pomocą maszyny Enigma. 1946 do 1950 – uczestniczy w pracach nad skonstruowaniem pierwszego angielskiego komputera cyfrowego. 1950 – publikuje artykuł „Computing Machinery and Intelligence”, w którym formułuje swoje filozoficzne poglądy n.t. możliwości zaistnienia sztucznej inteligencji. 1954 – popełnia samobójstwo; jest to dramatyczna reakcja na publiczne szykany wobec jego orientacji homoseksualnej. −− Wykład 3. Algorytmy i maszyny Turinga −− O co pytał Alan TURING? Czym jest algorytm? Czy wszystkie problemy da się rozwiązać algorytmicznie? Czy wszystkie liczby można obliczyć? Czy maszyna może myśleć? −− Wykład 3. Algorytmy i maszyny Turinga −− Jak jest ZBUDOWANA maszyna Turinga ? Maszyna Turinga składa się z: (1) nieskończonej, podzielonej na odrębne komórki, taśmy; (2) głowicy do odczytu-zapisu danych; (3) rejestru stanów; (4) tablicy przejść między stanami. Automat ten działa na podstawie programu zawartego w tablicy (4). −− Wykład 3. Algorytmy i maszyny Turinga −− Jak wygląda PROGRAM maszyny Turinga ? symbole a b 0 (1,a,P) (0,b,L) 1 (0,a,P) (1,b,L) # (#,b,L) (#,c,P) c – stan końcowy stany rozkazy −− Wykład 3. Algorytmy i maszyny Turinga −− Czym jest UNIWERSALNA maszyna Turinga? UMT jest specjalną maszyną Turinga, której program ma za zadanie symulować działanie dowolnej, konkretnej MT. Wykazano, że UMT może wykonać dowolnie złożony program dla dowolnie zaawansowanej technicznie maszyny cyfrowej. −− Wykład 3. Algorytmy i maszyny Turinga −− Czy maszyna uniwersalna jest naprawdę UNIWERSALNA ? NIE ! A oto oryginalny nierozstrzygalny problem Turinga (tzw. problem stopu) Dla dowolnej maszyny MTi i jej dowolnych danych wejściowych Dj odpowiedz jednoznacznie, czy MTi zatrzyma się dla danych Dj tj. zakończy przetwarzanie danych Dj? −− Wykład 3. Algorytmy i maszyny Turinga −− Czy programy komputerowe mogą być WSZECHWIEDZĄCE? NIE ! Nie istnieje bowiem taki uniwersalny program komputerowy, który dla dowolnego innego programu i dowolnych jego danych wejściowych, jest w stanie rozstrzygnąć, czy dla tych właśnie danych program ów zakończy pracę, czyli zatrzyma się ! −− Wykład 3. Algorytmy i maszyny Turinga −− Jakie jeszcze problemy są NIEROZSTRZYGALNE? Równania diofantyczne Równania diofantyczne Czy dane równanie diofantyczne, z dowolną liczbą niewiadomych i całkowitymi współczynnikami, ma choć jedno rozwiązanie w zbiorze liczb całkowitych ? x2 + 2 y3 − 4 y2 + z4 = 0 (1) −− Wykład 3. Algorytmy i maszyny Turinga −− Jakie jeszcze problemy są NIEROZSTRZYGALNE? Równoważność Równoważność składniowaskładniowa języków programowania języków programowania Czy dla dwóch dowolnych języków programowania, określonych co do składni i co do zbioru instrukcji podstawowych, możemy stwierdzić, że z ich instrukcji podstawowych daje się zbudować takie same zbiory instrukcji złożonych ? (2) −− Wykład 3. Algorytmy i maszyny Turinga −− Czy problemy nierozstrzygalne są nierozstrzygalne W OGÓLE? Teza Churcha-Turinga Każdy problem, dla którego istnieje efektywny algorytm rozwiązania, można rozwiązać za pomocą maszyn Turinga. ( maszyna Turinga dostatecznie dobrze opisuje pojęcia algorytmu i algorytmizowalności ) Czy istnieją jednak maszyny alternatywne? neurokomutery komputery kwantowe maszyny analogowe (… ? ...) −− Wykład 3. Algorytmy i maszyny Turinga −− Czym są liczby NIEOBLICZALNE ? Liczby obliczalne… ? Liczby nieobliczalne… ? Istnieje dla nich algorytm obliczania. Nie istnieje dla nich algorytm obliczania. Istnieje maszyna Turinga obliczająca je z dowolną dokładnością. Żadna maszyna Turinga nie potrafi obliczyć ich z dowolną zadaną dokładnością. Istnieje algorytm obliczania ich kolejnych cyfr. Nie istnieje algorytm obliczania ich kolejnych cyfr. −− Wykład 3. Algorytmy i maszyny Turinga −− Czy liczby niewymierne są NIEOBLICZALNE? NIE WSZYSTKIE! 4 4 4 (−1)n π = 4 − + − +...= 4⋅ 3 5 7 2n +1 n=0 ∞ ∑ 1 1 1 e = 1 + + + + ... = 1! 2! 3! ∞ 1 n! n =0 ∑