Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Dr Kamila Barylska 1.  Wykład 1: Obliczalność. Maszyna licznikowa.  Ćwiczenia 1: Programy na maszynę licznikową.  Wykład 2: Maszyna Turinga. Problemy,

Podobne prezentacje


Prezentacja na temat: "Dr Kamila Barylska 1.  Wykład 1: Obliczalność. Maszyna licznikowa.  Ćwiczenia 1: Programy na maszynę licznikową.  Wykład 2: Maszyna Turinga. Problemy,"— Zapis prezentacji:

1 dr Kamila Barylska 1

2  Wykład 1: Obliczalność. Maszyna licznikowa.  Ćwiczenia 1: Programy na maszynę licznikową.  Wykład 2: Maszyna Turinga. Problemy, których nie da się rozwiązać.  Ćwiczenia 2: Programy na maszynę Turinga.  Wykład 3: Liczące sieci Petriego.  Ćwiczenia 3: Konstruowanie sieci liczących. 2

3  Naukowcy badający pojęcie obliczalności: Kurt Gödel, Emil Post i Alan Turing  dostrzegli problemy, których „nie da się rozwiązać”  a dokładniej: „nie sposób rozwiązać algorytmicznie, za pomocą algorytmów dla maszyn cyfrowych”.  Takie właśnie problemy nazywamy problemami nieobliczalnymi. 3

4  Jednym z najważniejszych zagadnień nieobliczalnych jest tzw. problem stopu czyli pytanie:  „Czy istnieje uniwersalny algorytm-wyrocznia, który analizując symboliczne zapisy innych algorytmów oraz ich dane wejściowe, byłby w stanie odpowiedzieć jednoznacznie, i to w każdym analizowanym przypadku, CZY DANY ALGORYTM dla podanych danych wejściowych ZATRZYMA SIĘ, czy też będzie przetwarzał dane w nieskończoność?”.  Alan Turing udowodnił, że nie istnieje taki algorytm.  Problem stopu jest jednym z najbardziej znanych problemów nieobliczalnych. 4

5  Istnieje bardzo liczna grupa zagadnień, które mogą zostać rozwiązane, bo istnieją dla nich algorytmy, jednak w praktyce rozwiązanie tych problemów zajmuje astronomicznie dużo czasu.  Czas potrzebny do wykonania algorytmu rośnie wykładniczo lub silniowo w stosunku do rozmiaru danych wejściowych. 5

6 Problem (NWD) Dla danych dwóch liczb naturalnych a i b znaleźć największą liczbę naturalną c, która dzieli bez reszty liczbę a i dzieli bez reszty liczbę b. Rozwiązanie: Algorytm Euklidesa Wejście: a, b – liczby naturalne, których NWD poszukujemy Wyjście: NWD liczb a i b Lista kroków: K01: Dopóki a ≠ b wykonuj krok K02 K02: Jeśli a < b, to b := b – a w przeciwnym przypadku a := a - b K03: Wypisz a K04: Zakończ 6

7 Analiza algorytmu: Ile razy nasz algorytm wykona główną pętlę?  Załóżmy, że dane wejściowe nie przekraczają  Superkomputer wykonuje jeden obrót pętli w czasie jednej dziesięciomiliardowej sekundy.  To daje  obrotów pętli rocznie.  Przyjmijmy wariant pesymistyczny: a=10 30, b=1.  Pamiętając, że od Wielkiego Wybuchu minęło niespełna 14 miliardów lat, gdyby nasz komputer włączyć na początku Wszechświata i uruchomić tak napisany program na tych pesymistycznych danych…  … do dziś wykonałby niespełna jedną dwudziestą niezbędnych obliczeń. 7

8 Maszyną Turinga nazywamy siódemkę uporządkowaną MT = (Q, , , , q 0, q ACC, q REJ ), gdzie:  Q jest skończonym zbiorem stanów   jest alfabetem wejściowym (nie zawierającym specjalnego symbolu pustego  )   jest alfabetem taśmy (   oraz  )   : Q ×   Q ×  × {L, R, S} jest funkcją przejścia  q 0 jest wyróżnionym stanem początkowym  q ACC jest wyróżnionym stanem akceptującym  q REJ jest wyróżnionym stanem odrzucającym (q ACC  q REJ ) 8

9 9 …… pamięć nieskończona (obustronnie) aktualny stan świadomości q0q0 głowica może poruszać się w prawo (R), lewo (L) lub stać w miejscu (S)

10 10 …… 1.Wprowadzamy dane na taśmę (wszystkie pozostałe komórki pamięci są „wyblankowane”). f(x)=0

11 11 …10011… 1.Wprowadzamy dane na taśmę (wszystkie pozostałe komórki pamięci są „wyblankowane”). f(x)=0

12 12 …   … 1.Wprowadzamy dane na taśmę (wszystkie pozostałe komórki pamięci są „wyblankowane”). f(x)=0

13 13 …10011… 1.Wprowadzamy dane na taśmę (wszystkie pozostałe komórki pamięci są „wyblankowane”). f(x)=0

14 14 …10011… 1.Wprowadzamy dane na taśmę (wszystkie pozostałe komórki pamięci są „wyblankowane”). 2.Głowica wskazuje na początek danych wejściowych. f(x)=0

15 15 …10011… 1.Wprowadzamy dane na taśmę (wszystkie pozostałe komórki pamięci są „wyblankowane”). 2.Głowica wskazuje na początek danych wejściowych. 3.Wykonujemy instrukcje programu. f(x)=0

16 16 …0… 1.Wprowadzamy dane na taśmę (wszystkie pozostałe komórki pamięci są „wyblankowane”). 2.Głowica wskazuje na początek danych wejściowych. 3.Wykonujemy instrukcje programu. 4.Na taśmie pozostaje tylko wynik. f(x)=0

17 17 …0… 1.Wprowadzamy dane na taśmę (wszystkie pozostałe komórki pamięci są „wyblankowane”). 2.Głowica wskazuje na początek danych wejściowych. 3.Wykonujemy instrukcje programu. 4.Na taśmie pozostaje tylko wynik. 5.Głowica wskazuje na początek wyniku. f(x)=0

18 18 …… 1.Wprowadzamy dane na taśmę (wszystkie pozostałe komórki pamięci są „wyblankowane”). PALINDROMY

19 19 …abba… 1.Wprowadzamy dane na taśmę (wszystkie pozostałe komórki pamięci są „wyblankowane”). PALINDROMY

20 20 …abba… 1.Wprowadzamy dane na taśmę (wszystkie pozostałe komórki pamięci są „wyblankowane”). 2.Głowica wskazuje na początek danych wejściowych. PALINDROMY

21 21 …abba… 1.Wprowadzamy dane na taśmę (wszystkie pozostałe komórki pamięci są „wyblankowane”). 2.Głowica wskazuje na początek danych wejściowych. 3.Wykonujemy instrukcje programu. PALINDROMY

22 22 …… 1.Wprowadzamy dane na taśmę (wszystkie pozostałe komórki pamięci są „wyblankowane”). 2.Głowica wskazuje na początek danych wejściowych. 3.Wykonujemy instrukcje programu. 4.Taśma pozostaje pusta, zaś maszyna znajduje się w stanie akceptującym, gdy słowo należy do języka. PALINDROMY

23 23 …… 1.Wprowadzamy dane na taśmę (wszystkie pozostałe komórki pamięci są „wyblankowane”). 2.Głowica wskazuje na początek danych wejściowych. 3.Wykonujemy instrukcje programu. 4.Taśma pozostaje pusta, zaś maszyna znajduje się w stanie akceptującym, gdy słowo należy do języka. 5.Maszyna znajduje się w stanie odrzucającym, gdy słowo nie należy do języka. PALINDROMY

24 Pytanie:  Czy możliwe jest stworzenie narzędzia, które dla dowolnego opisu maszyny Turinga M podanego na wejściu potrafi rozstrzygnąć, czy maszyna ta akceptuje ustalone dane wejściowe x? Założenie:  Potrafimy skonstruować maszynę Turinga M R rozstrzygająca powyższy problem:  M R (M,x) = {akceptuj jeśli M akceptuje x {odrzucaj jeśli M nie akceptuje x 24

25 Używając maszyny M R zdefiniujemy maszynę M O zwracającą wynik przeciwny niż maszyna M R  M O (M,x) ={akceptuj jeśli M R odrzuca x {odrzucaj jeśli M R akceptuje x  M O (M,x) ={akceptuj jeśli M nie akceptuje x {odrzucaj jeśli M akceptuje x Jak zachowa się maszyna M O na własnym kodzie?  M O (M O,x) ={akceptuj jeśli M O nie akceptuje x {odrzucaj jeśli M O akceptuje x 25 SPRZECZNOŚĆ!!! Nie da się skonstruować maszyny M R !

26 Maszyna Turinga, która liczy funkcję f(x)=2x+1.  q 0 0  q ACC 1 S  q 0 1  q 1 1 R  q 1 0  q 1 0 R  q 1 1  q 1 1 R  q 1  q 2 1 L  q 2 0  q 2 0 L  q 2 1  q 2 1 L  q 2  q ACC R 26

27 Maszyna Turinga, która liczy funkcję f(x)=2x+1.  q 0 0  q ACC 1 S  q 0 1  q 1 1 R  q 1 0  q 1 0 R  q 1 1  q 1 1 R  q 1  q 2 1 L  q 2 0  q 2 0 L  q 2 1  q 2 1 L  q 2  q ACC R 27 …… q0q0

28 Maszyna Turinga, która liczy funkcję f(x)=2x+1.  q 0 0  q ACC 1 S  q 0 1  q 1 1 R  q 1 0  q 1 0 R  q 1 1  q 1 1 R  q 1  q 2 1 L  q 2 0  q 2 0 L  q 2 1  q 2 1 L  q 2  q ACC R 28 …1011… q0q0

29 Maszyna Turinga, która liczy funkcję f(x)=2x+1.  q 0 0  q ACC 1 S  q 0 1  q 1 1 R  q 1 0  q 1 0 R  q 1 1  q 1 1 R  q 1  q 2 1 L  q 2 0  q 2 0 L  q 2 1  q 2 1 L  q 2  q ACC R 29 …1011… q0q0

30 Maszyna Turinga, która liczy funkcję f(x)=2x+1.  q 0 0  q ACC 1 S  q 0 1  q 1 1 R  q 1 0  q 1 0 R  q 1 1  q 1 1 R  q 1  q 2 1 L  q 2 0  q 2 0 L  q 2 1  q 2 1 L  q 2  q ACC R 30 …1011… q1q1

31 Maszyna Turinga, która liczy funkcję f(x)=2x+1.  q 0 0  q ACC 1 S  q 0 1  q 1 1 R  q 1 0  q 1 0 R  q 1 1  q 1 1 R  q 1  q 2 1 L  q 2 0  q 2 0 L  q 2 1  q 2 1 L  q 2  q ACC R 31 …1011… q1q1

32 Maszyna Turinga, która liczy funkcję f(x)=2x+1.  q 0 0  q ACC 1 S  q 0 1  q 1 1 R  q 1 0  q 1 0 R  q 1 1  q 1 1 R  q 1  q 2 1 L  q 2 0  q 2 0 L  q 2 1  q 2 1 L  q 2  q ACC R 32 …1011… q1q1

33 Maszyna Turinga, która liczy funkcję f(x)=2x+1.  q 0 0  q ACC 1 S  q 0 1  q 1 1 R  q 1 0  q 1 0 R  q 1 1  q 1 1 R  q 1  q 2 1 L  q 2 0  q 2 0 L  q 2 1  q 2 1 L  q 2  q ACC R 33 …1011… q1q1

34 Maszyna Turinga, która liczy funkcję f(x)=2x+1.  q 0 0  q ACC 1 S  q 0 1  q 1 1 R  q 1 0  q 1 0 R  q 1 1  q 1 1 R  q 1  q 2 1 L  q 2 0  q 2 0 L  q 2 1  q 2 1 L  q 2  q ACC R 34 …1011… q1q1

35 Maszyna Turinga, która liczy funkcję f(x)=2x+1.  q 0 0  q ACC 1 S  q 0 1  q 1 1 R  q 1 0  q 1 0 R  q 1 1  q 1 1 R  q 1  q 2 1 L  q 2 0  q 2 0 L  q 2 1  q 2 1 L  q 2  q ACC R 35 …1011… q1q1

36 Maszyna Turinga, która liczy funkcję f(x)=2x+1.  q 0 0  q ACC 1 S  q 0 1  q 1 1 R  q 1 0  q 1 0 R  q 1 1  q 1 1 R  q 1  q 2 1 L  q 2 0  q 2 0 L  q 2 1  q 2 1 L  q 2  q ACC R 36 …1011… q1q1

37 Maszyna Turinga, która liczy funkcję f(x)=2x+1.  q 0 0  q ACC 1 S  q 0 1  q 1 1 R  q 1 0  q 1 0 R  q 1 1  q 1 1 R  q 1  q 2 1 L  q 2 0  q 2 0 L  q 2 1  q 2 1 L  q 2  q ACC R 37 …1011… q1q1

38 Maszyna Turinga, która liczy funkcję f(x)=2x+1.  q 0 0  q ACC 1 S  q 0 1  q 1 1 R  q 1 0  q 1 0 R  q 1 1  q 1 1 R  q 1  q 2 1 L  q 2 0  q 2 0 L  q 2 1  q 2 1 L  q 2  q ACC R 38 …10111… q2q2

39 Maszyna Turinga, która liczy funkcję f(x)=2x+1.  q 0 0  q ACC 1 S  q 0 1  q 1 1 R  q 1 0  q 1 0 R  q 1 1  q 1 1 R  q 1  q 2 1 L  q 2 0  q 2 0 L  q 2 1  q 2 1 L  q 2  q ACC R 39 …10111… q2q2

40 Maszyna Turinga, która liczy funkcję f(x)=2x+1.  q 0 0  q ACC 1 S  q 0 1  q 1 1 R  q 1 0  q 1 0 R  q 1 1  q 1 1 R  q 1  q 2 1 L  q 2 0  q 2 0 L  q 2 1  q 2 1 L  q 2  q ACC R 40 …10111… q2q2

41 Maszyna Turinga, która liczy funkcję f(x)=2x+1.  q 0 0  q ACC 1 S  q 0 1  q 1 1 R  q 1 0  q 1 0 R  q 1 1  q 1 1 R  q 1  q 2 1 L  q 2 0  q 2 0 L  q 2 1  q 2 1 L  q 2  q ACC R 41 …10111… q2q2

42 Maszyna Turinga, która liczy funkcję f(x)=2x+1.  q 0 0  q ACC 1 S  q 0 1  q 1 1 R  q 1 0  q 1 0 R  q 1 1  q 1 1 R  q 1  q 2 1 L  q 2 0  q 2 0 L  q 2 1  q 2 1 L  q 2  q ACC R 42 …10111… q2q2

43 Maszyna Turinga, która liczy funkcję f(x)=2x+1.  q 0 0  q ACC 1 S  q 0 1  q 1 1 R  q 1 0  q 1 0 R  q 1 1  q 1 1 R  q 1  q 2 1 L  q 2 0  q 2 0 L  q 2 1  q 2 1 L  q 2  q ACC R 43 …10111… q2q2

44 Maszyna Turinga, która liczy funkcję f(x)=2x+1.  q 0 0  q ACC 1 S  q 0 1  q 1 1 R  q 1 0  q 1 0 R  q 1 1  q 1 1 R  q 1  q 2 1 L  q 2 0  q 2 0 L  q 2 1  q 2 1 L  q 2  q ACC R 44 …10111… q2q2

45 Maszyna Turinga, która liczy funkcję f(x)=2x+1.  q 0 0  q ACC 1 S  q 0 1  q 1 1 R  q 1 0  q 1 0 R  q 1 1  q 1 1 R  q 1  q 2 1 L  q 2 0  q 2 0 L  q 2 1  q 2 1 L  q 2  q ACC R 45 …10111… q2q2

46 Maszyna Turinga, która liczy funkcję f(x)=2x+1.  q 0 0  q ACC 1 S  q 0 1  q 1 1 R  q 1 0  q 1 0 R  q 1 1  q 1 1 R  q 1  q 2 1 L  q 2 0  q 2 0 L  q 2 1  q 2 1 L  q 2  q ACC R 46 …10111… q2q2

47 Maszyna Turinga, która liczy funkcję f(x)=2x+1.  q 0 0  q ACC 1 S  q 0 1  q 1 1 R  q 1 0  q 1 0 R  q 1 1  q 1 1 R  q 1  q 2 1 L  q 2 0  q 2 0 L  q 2 1  q 2 1 L  q 2  q ACC R 47 …10111… q2q2

48 Maszyna Turinga, która liczy funkcję f(x)=2x+1.  q 0 0  q ACC 1 S  q 0 1  q 1 1 R  q 1 0  q 1 0 R  q 1 1  q 1 1 R  q 1  q 2 1 L  q 2 0  q 2 0 L  q 2 1  q 2 1 L  q 2  q ACC R 48 …10111… q ACC

49 Zadanie 1 Skonstruuj maszynę Turinga, która prawidłowo oblicza funkcję f(x) = 2x (kod argumentów – binarny; alfabet = {0,1}). Zadanie 2 Skonstruuj maszynę Turinga, która prawidłowo oblicza funkcję f(x) = x + 1 (kod argumentów – binarny; alfabet = {0,1}). Zadanie 3 Skonstruuj maszynę Turinga, która prawidłowo oblicza poniższe funkcje (kod argumentów – unarny; alfabet = {1}) a. f(x) = 0 b. f(x) = x+1 c. f(x,y) = x d. f(x,y) = x+y. 49

50 Zadanie 4 Napisz program na maszynę Turinga, który zastępuje w dowolnym tekście zbudowanym z liter A, B, C i D wszystkie literki A literką C. Na przykład, z tekstu BACA ma powstać BCCC. Zadanie 5 Napisz program na maszynę Turinga, który przenosi pierwszą literkę wyrazu zbudowanego z liter A, B, C i D z początku na koniec. Na przykład, z tekstu DAB ma powstać ABD. Zadanie 6 Napisz program na maszynę Turinga, który zbada czy wczytane słowo jest palindromem. (Palindrom – słowo brzmiące tak samo czytane od lewej do prawej i od prawej do lewej.) 50

51 Zadania dodatkowe: 1. Skonstruuj maszynę Turinga, która prawidłowo oblicza funkcję f(x) = 0 (kod argumentów – binarny; alfabet = {0,1}). 2. Napisz program na maszynę Turinga, który podwaja każdy bit wejściowej liczby binarnej. Na przykład, z liczby 101 powinniśmy otrzymać Napisz program na maszynę Turinga, który odwróci kolejność bitów dowolnej liczby binarnej, tzn. z liczby ma powstać


Pobierz ppt "Dr Kamila Barylska 1.  Wykład 1: Obliczalność. Maszyna licznikowa.  Ćwiczenia 1: Programy na maszynę licznikową.  Wykład 2: Maszyna Turinga. Problemy,"

Podobne prezentacje


Reklamy Google