Podstawy Informatyki alina.momot@polsl.pl http://zti.polsl.pl/amomot/pi
Plan wykładu 1 Czym jest Programowanie maszyny Turinga Teza Churcha-Turinga 2 3 4
Czym jest Programowanie maszyny Turinga Teza Churcha-Turinga, 1936r. Stworzony w 1936 roku przez Alana Turinga model abstrakcyjnej maszyny obliczeniowej służący do analizy algorytmów. Składa się z: nieskończenie długiej taśmy podzielonej na pola, w których zapisane są symbole głowicy zaspisująco-odczytującej, będącej w jednym ze stanów, przesuwającej się nad taśmą. Podstawowe pojęcia: zbiór symboli, alfabet S = {s i : i = 1, 2,..., n} zbiór stanów maszyny Q = {q j : j = 1, 2,..., m} ruch głowicy R = {P, L, N}
Programowanie maszyny Turinga Czym jest Programowanie maszyny Turinga Teza Churcha-Turinga Algorytm dla maszyny Turinga zapisany jest za pomocą tablicy charakterystycznej. T q 0 q 1... q j... q m s 1... s i......... s k, q l, R....... s n..
Rozkaz maszyny Turinga Czym jest Programowanie maszyny Turinga Teza Churcha-Turinga (s i, q j ) (s k, q l, R) s i q j odczytany symbol na taśmie pod głowicą bieżący wewnętrzny stan głowicy s k q l nowy symbol, który ma być zapisany na taśmie nowy wewnętrzny stan głowicy R kierunek ruchu głowicy
Teza Churcha-Turinga Czym jest Programowanie maszyny Turinga Teza Churcha-Turinga Teza Churcha-Turinga Każdy algorytm może być zrealizowany przez odpowiednio zaprogramowaną maszynę Turinga. Wynika z tego, że: nawet 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 nieograniczoną ilość czasu i pamięci obydwa mogą rozwiązać te same problemy algorytmiczne, a żaden z nich nie może rozwiązać problemów nierozstrzygalnych (nieobliczalnych).
Schemat blokowy algorytmu Sprawdzanie poprawności napisu - sformułowanie problemu Na taśmie zapisano 3-literowy ciąg złożony z symboli: a, b i c. Tylko napis abc jest poprawny Podać algorytm rozpoznawania tego napisu
Schemat blokowy algorytmu Schemat blokowy algorytmu
Schemat blokowy algorytmu Założenie: Głowica na początku znajduje się nad pierwszym symbolem (z lewej). T q 1 q 2 q 3 q 4 q 5 a aq 2 P aq 5 N aq 5 N aq 5 N b bq 5 N bq 3 P bq 5 N bq 5 N c cq 5 N cq 5 N cq 4 N cq 4 N cq 5 N q 1 sprawdź czy stoisz nad a q 2 sprawdź czy stoisz nad b q 3 sprawdź czy stoisz nad c q 4 napis poprawny q 5 napis niepoprawny
Schemat blokowy algorytmu - napis niepoprawny T q 1 q 2 q 3 q 4 q 5 a aq 2 P aq 5 N aq 5 N aq 5 N b bq 5 N bq 3 P bq 5 N bq 5 N c cq 5 N cq 5 N cq 4 N cq 4 N G = q 1 a b b
Schemat blokowy algorytmu - napis niepoprawny T q 1 q 2 q 3 q 4 q 5 a aq 2 P aq 5 N aq 5 N aq 5 N b bq 5 N bq 3 P bq 5 N bq 5 N c cq 5 N cq 5 N cq 4 N cq 4 N G = q 2 a b b
Schemat blokowy algorytmu - napis niepoprawny T q 1 q 2 q 3 q 4 q 5 a aq 2 P aq 5 N aq 5 N aq 5 N b bq 5 N bq 3 P bq 5 N bq 5 N c cq 5 N cq 5 N cq 4 N cq 4 N G = q 3 a b b
Schemat blokowy algorytmu - napis niepoprawny T q 1 q 2 q 3 q 4 q 5 a aq 2 P aq 5 N aq 5 N aq 5 N b bq 5 N bq 3 P bq 5 N bq 5 N c cq 5 N cq 5 N cq 4 N cq 4 N G = q 5 a b b
- napis poprawny Schemat blokowy algorytmu T q 1 q 2 q 3 q 4 q 5 a aq 2 P aq 5 N aq 5 N aq 5 N b bq 5 N bq 3 P bq 5 N bq 5 N c cq 5 N cq 5 N cq 4 N cq 4 N G = q 1 a b c
- napis poprawny Schemat blokowy algorytmu T q 1 q 2 q 3 q 4 q 5 a aq 2 P aq 5 N aq 5 N aq 5 N b bq 5 N bq 3 P bq 5 N bq 5 N c cq 5 N cq 5 N cq 4 N cq 4 N G = q 2 a b c
- napis poprawny Schemat blokowy algorytmu T q 1 q 2 q 3 q 4 q 5 a aq 2 P aq 5 N aq 5 N aq 5 N b bq 5 N bq 3 P bq 5 N bq 5 N c cq 5 N cq 5 N cq 4 N cq 4 N G = q 3 a b c
- napis poprawny Schemat blokowy algorytmu T q 1 q 2 q 3 q 4 q 5 a aq 2 P aq 5 N aq 5 N aq 5 N b bq 5 N bq 3 P bq 5 N bq 5 N c cq 5 N cq 5 N cq 4 N cq 4 N G = q 4 a b c
System pozycyjny trójkowy Inkrementacja liczby trójkowej - sformułowanie problemu Na taśmie zapisano liczbę w systemie pozycyjnym trójkowym. Liczba otoczona jest znakami pustymi Φ. Głowica znajduje się na prawo od liczby. Podać algorytm inkremetujący tę liczbę.
System pozycyjny trójkowy System pozycyjny trójkowy Tylko napisy złożone z cyfr 0, 1, 2 są poprawne, np. (2101) 3 = 2 3 3 + 1 3 2 + 0 3 1 + 1 3 0 = 2 27 + 1 9 + 0 3 + 1 1 = 54 + 9 + 0 + 1 = 64
System pozycyjny trójkowy Założenie: Głowica po wykonaniu algorytmu ma zatrzymać się na pierwszym znaku pustym Φ z lewej strony liczby. q 1 q 2 q 3 q 4 Φ Φq 1 L 1q 3 L Φq 4 N Φq 4 N 0 1q 3 L 1q 3 L 0q 3 L 1 2q 3 L 2q 3 L 1q 3 L 2 0q 2 L 0q 2 L 2q 3 L q 1 szukanie liczby i dodawanie q 2 dodawanie z przeniesiem q 3 przesunięcie głowicy na lewo q 4 stop
System pozycyjny trójkowy q 1 q 2 q 3 q 4 Φ Φq 1 L 1q 3 L Φq 4 N Φq 4 N 0 1q 3 L 1q 3 L 0q 3 L 1 2q 3 L 2q 3 L 1q 3 L 2 0q 2 L 0q 2 L 2q 3 L G = q 1 Φ 1 0 2 2 Φ Φ
System pozycyjny trójkowy q 1 q 2 q 3 q 4 Φ Φq 1 L 1q 3 L Φq 4 N Φq 4 N 0 1q 3 L 1q 3 L 0q 3 L 1 2q 3 L 2q 3 L 1q 3 L 2 0q 2 L 0q 2 L 2q 3 L G = q 1 Φ 1 0 2 2 Φ Φ
System pozycyjny trójkowy q 1 q 2 q 3 q 4 Φ Φq 1 L 1q 3 L Φq 4 N Φq 4 N 0 1q 3 L 1q 3 L 0q 3 L 1 2q 3 L 2q 3 L 1q 3 L 2 0q 2 L 0q 2 L 2q 3 L G = q 1 Φ 1 0 2 2 Φ Φ
System pozycyjny trójkowy q 1 q 2 q 3 q 4 Φ Φq 1 L 1q 3 L Φq 4 N Φq 4 N 0 1q 3 L 1q 3 L 0q 3 L 1 2q 3 L 2q 3 L 1q 3 L 2 0q 2 L 0q 2 L 2q 3 L G = q 2 Φ 1 0 2 0 Φ Φ
System pozycyjny trójkowy q 1 q 2 q 3 q 4 Φ Φq 1 L 1q 3 L Φq 4 N Φq 4 N 0 1q 3 L 1q 3 L 0q 3 L 1 2q 3 L 2q 3 L 1q 3 L 2 0q 2 L 0q 2 L 2q 3 L G = q 2 Φ 1 0 0 0 Φ Φ
System pozycyjny trójkowy q 1 q 2 q 3 q 4 Φ Φq 1 L 1q 3 L Φq 4 N Φq 4 N 0 1q 3 L 1q 3 L 0q 3 L 1 2q 3 L 2q 3 L 1q 3 L 2 0q 2 L 0q 2 L 2q 3 L G = q 3 Φ 1 1 0 0 Φ Φ
System pozycyjny trójkowy q 1 q 2 q 3 q 4 Φ Φq 1 L 1q 3 L Φq 4 N Φq 4 N 0 1q 3 L 1q 3 L 0q 3 L 1 2q 3 L 2q 3 L 1q 3 L 2 0q 2 L 0q 2 L 2q 3 L G = q 3 Φ 1 1 0 0 Φ Φ
System pozycyjny trójkowy q 1 q 2 q 3 q 4 Φ Φq 1 L 1q 3 L Φq 4 N Φq 4 N 0 1q 3 L 1q 3 L 0q 3 L 1 2q 3 L 2q 3 L 1q 3 L 2 0q 2 L 0q 2 L 2q 3 L G = q 4 Φ 1 1 0 0 Φ Φ
Zapis binarnych liczb całkowitych Zakres liczb w zapisie uzupełnieniowym do 2 Wartość bezwzględna liczby - sformułowanie problemu Na taśmie zapisano liczbę całkowitą ze znakiem w systemie pozycyjnym dwójkowym w zapisie uzupełnieniowym do 2. Liczba otoczona jest znakami pustymi Φ. Głowica znajduje się na lewo od liczby. Podać algorytm wyznaczający wartość bezwzględną tej liczby.
Zapis binarnych liczb całkowitych Zapis binarnych liczb całkowitych Zakres liczb w zapisie uzupełnieniowym do 2 Liczba binarna to napis złożony z cyfr 0, 1, np. (1101) 2 = 1 2 3 + 1 2 2 + 0 2 1 + 1 2 0 = 1 8 + 1 4 + 0 2 + 1 1 = 13 Znak reprezentowany w postaci dodatkowego bitu zwanego bitem znaku: 0 - liczba dodatnia, 1 - liczba ujemna. Najpopularniejsze formy zapisu: znak moduł, uzupełnieniowy do 1, uzupełnieniowy do 2.
Zapis binarnych liczb całkowitych Zapis binarnych liczb całkowitych Zakres liczb w zapisie uzupełnieniowym do 2 Liczba binarna to napis złożony z cyfr 0, 1, np. (1101) 2 = 1 2 3 + 1 2 2 + 0 2 1 + 1 2 0 = 1 8 + 1 4 + 0 2 + 1 1 = 13 Znak reprezentowany w postaci dodatkowego bitu zwanego bitem znaku: 0 - liczba dodatnia, 1 - liczba ujemna. Najpopularniejsze formy zapisu: znak moduł, uzupełnieniowy do 1, uzupełnieniowy do 2.
Zapis uzupełnieniowy do 2 Zapis binarnych liczb całkowitych Zakres liczb w zapisie uzupełnieniowym do 2 Liczba dodatnia (liczba bez znaku z dodatkowym bitem 0), np: 13 = (1101) 2 liczba bez znaku
Zapis uzupełnieniowy do 2 Zapis binarnych liczb całkowitych Zakres liczb w zapisie uzupełnieniowym do 2 Liczba dodatnia (liczba bez znaku z dodatkowym bitem 0), np: 13 = (1101) 2 liczba bez znaku + 13 = (01101) 2 liczba dodatnia ze znakiem
Zapis uzupełnieniowy do 2 Zapis binarnych liczb całkowitych Zakres liczb w zapisie uzupełnieniowym do 2 Liczba dodatnia (liczba bez znaku z dodatkowym bitem 0), np: 13 = (1101) 2 liczba bez znaku + 13 = (01101) 2 liczba dodatnia ze znakiem Liczba ujemna (zanegowana liczba bez znaku z dodaną jedynką i dodatkowym bitem 1), np.: 13 = (1101) 2 liczba bez znaku
Zapis uzupełnieniowy do 2 Zapis binarnych liczb całkowitych Zakres liczb w zapisie uzupełnieniowym do 2 Liczba dodatnia (liczba bez znaku z dodatkowym bitem 0), np: 13 = (1101) 2 liczba bez znaku + 13 = (01101) 2 liczba dodatnia ze znakiem Liczba ujemna (zanegowana liczba bez znaku z dodaną jedynką i dodatkowym bitem 1), np.: 13 = (1101) 2 liczba bez znaku (0010) 2 zanegowana liczba bez znaku (inwersja)
Zapis uzupełnieniowy do 2 Zapis binarnych liczb całkowitych Zakres liczb w zapisie uzupełnieniowym do 2 Liczba dodatnia (liczba bez znaku z dodatkowym bitem 0), np: 13 = (1101) 2 liczba bez znaku + 13 = (01101) 2 liczba dodatnia ze znakiem Liczba ujemna (zanegowana liczba bez znaku z dodaną jedynką i dodatkowym bitem 1), np.: 13 = (1101) 2 liczba bez znaku (0010) 2 zanegowana liczba bez znaku (inwersja) (0011) 2 z dodaną liczbą 1
Zapis uzupełnieniowy do 2 Zapis binarnych liczb całkowitych Zakres liczb w zapisie uzupełnieniowym do 2 Liczba dodatnia (liczba bez znaku z dodatkowym bitem 0), np: 13 = (1101) 2 liczba bez znaku + 13 = (01101) 2 liczba dodatnia ze znakiem Liczba ujemna (zanegowana liczba bez znaku z dodaną jedynką i dodatkowym bitem 1), np.: 13 = (1101) 2 liczba bez znaku (0010) 2 zanegowana liczba bez znaku (inwersja) (0011) 2 z dodaną liczbą 1 13 = (10011) 2 liczba ujemna ze znakiem
Zapis binarnych liczb całkowitych Zakres liczb w zapisie uzupełnieniowym do 2 Zakres liczb w zapisie uzupełnieniowym do 2 Zakres liczb 4-bitowych: dodatnich liczba binarna liczba dziesiętna 0 000 0 0 001 1 0 010 2 0 011 3 0 100 4 0 101 5 0 110 6 0 111 7
Zapis binarnych liczb całkowitych Zakres liczb w zapisie uzupełnieniowym do 2 Zakres liczb w zapisie uzupełnieniowym do 2 Zakres liczb 4-bitowych: dodatnich ujemnych liczba binarna liczba dziesiętna liczba binarna liczba dziesiętna 0 000 0 1 111-1 0 001 1 1 110-2 0 010 2 1 101-3 0 011 3 1 100-4 0 100 4 1 011-5 0 101 5 1 010-6 0 110 6 1 001-7 0 111 7 1 000-8
Zapis binarnych liczb całkowitych Zakres liczb w zapisie uzupełnieniowym do 2 Zakres liczb w zapisie uzupełnieniowym do 2 Zakres liczb 4-bitowych: dodatnich ujemnych liczba binarna liczba dziesiętna liczba binarna liczba dziesiętna 0 000 0 1 111-1 0 001 1 1 110-2 0 010 2 1 101-3 0 011 3 1 100-4 0 100 4 1 011-5 0 101 5 1 010-6 0 110 6 1 001-7 0 111 7 1 000-8 Zakres liczb N-bitowych: [ 2 N 1 ; 2 N 1 1].
Zapis binarnych liczb całkowitych Zakres liczb w zapisie uzupełnieniowym do 2 Założenie: Głowica po wykonaniu algorytmu ma zatrzymać się na pierwszym znaku pustym Φ z lewej strony liczby. Jeśli liczba była dodatnia (bit znaku 0), to KONIEC. Jeśli liczba była ujemna (bit znaku 1), to dokonaj inwersji bitów i dodaj jedynkę.
Zapis binarnych liczb całkowitych Zakres liczb w zapisie uzupełnieniowym do 2 q 0 q 1 q 2 q 3 q 4 q 5 Φ Φq 0 P Φq 1 N Φq 3 L 0q 1 L Φq 1 N 0 0q 1 L 1q 2 P 1q 4 L 0q 5 L 0q 5 L 1 0q 2 P 0q 2 P 0q 3 L 1q 5 L 1q 5 L q 0 szukanie liczby i sprawdzanie znaku q 1 KONIEC q 2 negacja bitów q 3 dodawanie jedynki (negacja bitów aż do napotkania 0 włącznie) q 4 sprawdzenie czy zanegowane 0 nie było bitem znaku q 5 przesunięcie głowicy na lewo