Automaty abstrakcyjne maszyna Turinga
Wyk艂ad nr 3 z Podstaw InformatykiMaszyna Turinga
Abstrakcyjna maszyna zdolna wykonywa膰 algorytmy (Alan Mathison Turing - On Com-putable Numbers, 1936) Obecnie stosowana g艂贸wnie do udowadniania nierozstrzygalno艣ci problem贸w matematycznychElementy tworz膮ce maszyn臋 Turinga
• Niesko艅czenie d艂uga ta艣ma podzielona na pola (z zapisanymi w nich symbolami)
• Ruchoma g艂owica czytaj膮co-pisz膮ca znajdu j膮ca si臋 w jednym z m mo偶liwych stan贸w wewn臋trznych
Program dla maszyny Turinga
• Aktualny stan maszyny Sr = ( s., q.)
• s symbol na ta艣mie pod g艂owic膮
• q wewn臋trzny stan g艂owicy
• Ruch maszyny Ry = ( sk, K, q,)
• sk nowy symbol zapisany na ta艣mie
• K kierunek ruchu g艂owicy
• q, nowy wewn臋trzny stan g艂owicy
• Program to zbi贸r regu艂 (rozkaz贸w) postaci R. = T( Sr) zwany tablic膮 charakterystyczn膮Tablica charakterystyczna
Twierdzenie Turinga
• Ka偶dy algorytm mo偶e by膰 realizowany przez odpowiednio zaprogramowan膮 maszyn臋 Turinga
Przyk艂ad 1
• Na ta艣mie zapisano 3-literowy ci膮g z艂o偶ony z symboli: a, b i c.
• Tylko napis abcjest poprawny
• Poda膰 algorytm rozpoznawania tego napisuPrzyk艂ad 1 - algorytm
1. Pobierz symbol. Je偶eli jest nim a to przejd藕 do 2, w przeciwnym przypadku przejd藕 do 4.
2. Przesu艅 g艂owic臋 w prawo, pobierz symbol, je偶eli jest nim b to przejd藕 do 3, je艣li nie
- przejd藕 do 4.
3. Przesu艅 g艂owic臋 w prawo, pobierz symbol, je偶eli jest nim c to przejd藕 do 5, je艣li nie
- przejd藕 do 4.
4. Sygnalizuj nieprawid艂owy napis. Koniec.
5. Sygnalizuj napis prawid艂owy. Koniec.Przyk艂ad 1 - tablica charakterystyczna
Przyk艂ad 1 - algorytm
Przyk艂ad 1 - algorytm
Przyk艂ad 1 - algorytm
Przyk艂ad 1 - algorytm
Przyk艂ad 1 - algorytm
Przyk艂ad 1 - algorytm
Automat ko艅czy prac臋 w stanie q4.
Napis niepoprawny
Przyk艂ad 1 - algorytm
Przyk艂ad 1 - algorytm
Przyk艂ad 1 - algorytm
Przyk艂ad 1 - algorytm
Przyk艂ad 1 - algorytm
Przyk艂ad 1 - algorytm
Przyk艂ad 1 - algorytm
Przyk艂ad 1 - algorytm
Automat ko艅czy prac臋 w stanie q5.
Napis poprawny
Przyk艂ad 2 - inkrementacja liczby
Algorytm inkrementacji liczb binarnych
• Przesuwaj si臋 od prawej do lewej i zamieniaj wszystkie jedynki na zera a偶 do napotkania zera, kt贸re nale偶y zamieni膰 na jedynk臋
• Dodatkowo sprawdzaj czy zamienione na jedynk臋 zero nie by艂o bitem znaku. Je艣li tak rozszerz liczb臋 o nowy bit znaku.Przyk艂ad 2 - tablica charakterystyczna
Stan qi - poszukiwanie najmniej znacz膮cego bitu liczby
Przyk艂ad 2 - tablica charakterystyczna
Stan q2 - zamiana jedynek na zera a偶 do napotkania zera i zamiana go na jedynk臋
Przyk艂ad 2 - tablica charakterystyczna
Stan q - sprawdzenie czy nie zmieniono zna-
o
ku liczby
Przyk艂ad 2 - tablica charakterystyczna
Stan q4 - stan ko艅cowy
Przyk艂ad 2 - tablica charakterystyczna
Przyk艂ad 2 - tablica charakterystyczna
Przyk艂ad 2 - tablica charakterystyczna
Przyk艂ad 2 - tablica charakterystyczna
Przyk艂ad 2 - tablica charakterystyczna
Przyk艂ad 2 - tablica charakterystyczna
Przyk艂ad 2 - tablica charakterystyczna
Przyk艂ad 2 - tablica charakterystyczna
Przyk艂ad 2 - tablica charakterystyczna
Przyk艂ad 2 - tablica charakterystyczna
Przyk艂ad 2 - tablica charakterystyczna
Przyk艂ad 2 - tablica charakterystyczna
Przyk艂ad 2 - tablica charakterystyczna
Przyk艂ad 2 - tablica charakterystyczna
Przyk艂ad 2 - tablica charakterystyczna
Przyk艂ad 2 - tablica charakterystyczna
Przyk艂ad 2 - tablica charakterystyczna
Przyk艂ad 2 - tablica charakterystyczna
Przyk艂ad 2 - tablica charakterystyczna
Przyk艂ad 3 - obliczanie warto艣ci
bezwzgi臋dnej liczby
• Na ta艣mie umieszczono liczb臋 ca艂kowit膮 ze znakiem zapisan膮 w zapisie uzupe艂nieniowym do 2
• W miejsce tej liczby wpisa膰 jej warto艣膰 bezwzgl臋dn膮
• G艂owica znajduje si臋 na lewo od liczby na
symbolu pustym (DPrzyk艂ad 3 - algorytm
1. Czy liczba na ta艣mie jest liczb膮 nieujemn膮 ? Je偶eli tak - STOP, je艣li nie - id藕 do 2
2. Oblicz liczb臋 przeciwn膮:
1. Zaneguj wszystkie bity liczby
2. Dodaj jedynk臋Przyk艂ad 3 - algorytm
1. Czy liczba na ta艣mie jest liczb膮 nieujemn膮 ? Je偶eli tak - STOP, je艣li nie - id藕 do 2
2. Oblicz liczb臋 przeciwn膮:
1. Zaneguj wszystkie bity liczby
2. Dodaj jedynk臋
Np. + 11Przyk艂ad 3 - algorytm
1. Czy liczba na ta艣mie jest liczb膮 nieujemn膮 ? Je偶eli tak - STOP, je艣li nie - id藕 do 2
2. Oblicz liczb臋 przeciwn膮:
1. Zaneguj wszystkie bity liczby
2. Dodaj jedynk臋
Przyk艂ad 3 - algorytm
1. Czy liczba na ta艣mie jest liczb膮 nieujemn膮 ? Je偶eli tak - STOP, je艣li nie - id藕 do 2
2. Oblicz liczb臋 przeciwn膮:
1. Zaneguj wszystkie bity liczby
2. Dodaj jedynk臋
Przyk艂ad 3 - algorytm
1. Czy liczba na ta艣mie jest liczb膮 nieujemn膮 ? Je偶eli tak - STOP, je艣li nie - id藕 do 2
2. Oblicz liczb臋 przeciwn膮:
1. Zaneguj wszystkie bity liczby
2. Dodaj jedynk臋
Np.-11 11110101Przyk艂ad 3 - algorytm
1. Czy liczba na ta艣mie jest liczb膮 nieujemn膮 ? Je偶eli tak - STOP, je艣li nie - id藕 do 2
2. Oblicz liczb臋 przeciwn膮:
1. Zaneguj wszystkie bity liczby
2. Dodaj jedynk臋
Przyk艂ad 3 - algorytm
1. Czy liczba na ta艣mie jest liczb膮 nieujemn膮 ? Je偶eli tak - STOP, je艣li nie - id藕 do 2
2. Oblicz liczb臋 przeciwn膮:
1. Zaneguj wszystkie bity liczby
2. Dodaj jedynk臋
Przyk艂ad 3 - algorytm
1. Czy liczba na ta艣mie jest liczb膮 nieujemn膮 ? Je偶eli tak - STOP, je艣li nie - id藕 do 2
2. Oblicz liczb臋 przeciwn膮:
1. Zaneguj wszystkie bity liczby
2. Dodaj jedynk臋
Przyk艂ad 3 - algorytm
1. Czy liczba na ta艣mie jest liczb膮 nieujemn膮 ? Je偶eli tak - STOP, je艣li nie - id藕 do 2
2. Oblicz liczb臋 przeciwn膮:
1. Zaneguj wszystkie bity liczby
2. Dodaj jedynk臋
Przyk艂ad 3 - algorytm
1. Czy liczba na ta艣mie jest liczb膮 nieujemn膮 ? Je偶eli tak - STOP, je艣li nie - id藕 do 2
2. Oblicz liczb臋 przeciwn膮:
1. Zaneguj wszystkie bity liczby
2. Dodaj jedynk臋
Przyk艂ad 3 - algorytm
1. Czy liczba na ta艣mie jest liczb膮 nieujemn膮 ? Je偶eli tak - STOP, je艣li nie - id藕 do 2
2. Oblicz liczb臋 przeciwn膮:
1. Zaneguj wszystkie bity liczby
2. Dodaj jedynk臋
Przyk艂ad 3 - algorytm
1. Czy liczba na ta艣mie jest liczb膮 nieujemn膮 ? Je偶eli tak - STOP, je艣li nie - id藕 do 2
2. Oblicz liczb臋 przeciwn膮:
1. Zaneguj wszystkie bity liczby
2. Dodaj jedynk臋
Przyk艂ad 3 - algorytm
1. Czy liczba na ta艣mie jest liczb膮 nieujemn膮 ? Je偶eli tak - STOP, je艣li nie - id藕 do 2
2. Oblicz liczb臋 przeciwn膮:
1. Zaneguj wszystkie bity liczby
2. Dodaj jedynk臋
Przyk艂ad 3 - algorytm
1. Czy liczba na ta艣mie jest liczb膮 nieujemn膮 ? Je偶eli tak - STOP, je艣li nie - id藕 do 2
2. Oblicz liczb臋 przeciwn膮:
1. Zaneguj wszystkie bity liczby
2. Dodaj jedynk臋
Przyk艂ad 3 - algorytm
1. Czy liczba na ta艣mie jest liczb膮 nieujemn膮 ? Je偶eli tak - STOP, je艣li nie - id藕 do 2
2. Oblicz liczb臋 przeciwn膮:
1. Zaneguj wszystkie bity liczby
2. Dodaj jedynk臋
Przyk艂ad 3 - algorytm
1. Czy liczba na ta艣mie jest liczb膮 nieujemn膮 ? Je偶eli tak - STOP, je艣li nie - id藕 do 2
2. Oblicz liczb臋 przeciwn膮:
1. Zaneguj wszystkie bity liczby
2. Dodaj jedynk臋
Ka偶dy fragment algorytmu mo偶na zrealizowa膰 niezale偶nie a potem po艂膮czy膰 uzyskane rozwi膮zania w jedno. Za艂o偶enie: g艂owica z lewej strony liczbyPrzyk艂ad 3 - testowanie bitu znaku
Przyk艂ad 3 - negowanie bit贸w
Przyk艂ad 3 - inkrementacja
Przyk艂ad 3 - ca艂e zadanie
Przyk艂ad 3 - ca艂e zadanie
Przyk艂ad 3 - ca艂e zadanie
Przyk艂ad 3 - ca艂e zadanie
Negowanie bit贸w
Przyk艂ad 3 - ca艂e zadanie
Przyk艂ad 3 - ca艂e zadanie
Inkrementacja liczby
Przyk艂ad 3 - ca艂e zadanie
Podsumowanie
• Elementy tworz膮ce maszyn臋 Turinga
• Tablica charakterystyczna jako zapis programu dla maszyny Turinga
• Przyk艂ady algorytm贸w i zaprogramowania ich na maszynie Turinga
• Twierdzenie Turinga o realizowalno艣ci algo rytm贸w