background image

Automaty abstrakcyjne 

maszyna Turinga

Wykład nr 3 z Podstaw Informatyki

background image

Maszyna Turinga

Abstrakcyjna maszyna zdolna wykonywać 
algorytmy (Alan Mathison Turing – On Com-
putable Numbers
, 1936)

Obecnie stosowana głównie do udowadnia-
nia nierozstrzygalności problemów matema-
tycznych

background image

Elementy 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

Φ  Φ   b   a   b   Φ   Φ  Φ

G

background image

Program dla maszyny Turinga

Aktualny stan maszyny S

ij

 = ( s

i

, q

j

 )

s

i

 symbol na taśmie pod głowicą

q

j

 wewnętrzny stan głowicy

Ruch maszyny R

ij

 = ( s

k

, K, q

l

 )

s

k

 nowy symbol zapisany na taśmie

K kierunek ruchu głowicy

q

l

 nowy wewnętrzny stan głowicy

Program to zbiór reguł (rozkazów) postaci 
R

ij

 = T( S

ij

 ) zwany tablicą charakterystyczną

background image

Tablica charakterystyczna

T

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

q

1

 

q

2

q

j

q

m

s

1

R

11

R

12

R

1j

R

1m

s

2

R

21

R

22

R

2j

R

2m

s

i

R

i1

R

i2

R

ij

R

im

s

n

R

n1

R

n2

R

nj

R

nm

background image

Twierdzenie Turinga

Każdy algorytm może być realizowany przez 
odpowiednio zaprogramowaną maszynę Tu-
ringa

background image

Przykład 1

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

background image

Przykł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.

background image

Przykład 1 – tablica charaktery-

styczna

a

b

c

q

1

q

2

q

3

q

4

q

5

aPq

2

aNq

4

aNq

4

aNq

4

aNq

5

bNq

4

bPq

3

bNq

4

bNq

4

bNq

5

cNq

4

cNq

4

cNq

5

cNq

4

cNq

5

background image

Przykład 1 – algorytm

a

b

c

q

1

q

2

q

3

q

4

q

5

aPq

2

aNq

4

aNq

4

aNq

4

aNq

5

bNq

4

bPq

3

bNq

4

bNq

4

bNq

5

cNq

4

cNq

4

cNq

5

cNq

4

cNq

5

↓      
a a c

background image

Przykład 1 – algorytm

a

b

c

q

1

q

2

q

3

q

4

q

5

aPq

2

aNq

4

aNq

4

aNq

4

aNq

5

bNq

4

bPq

3

bNq

4

bNq

4

bNq

5

cNq

4

cNq

4

cNq

5

cNq

4

cNq

5

↓      
a a c

background image

Przykład 1 – algorytm

a

b

c

q

1

q

2

q

3

q

4

q

5

aPq

2

aNq

4

aNq

4

aNq

4

aNq

5

bNq

4

bPq

3

bNq

4

bNq

4

bNq

5

cNq

4

cNq

4

cNq

5

cNq

4

cNq

5

a a c

background image

Przykład 1 – algorytm

a

b

c

q

1

q

2

q

3

q

4

q

5

aPq

2

aNq

4

aNq

4

aNq

4

aNq

5

bNq

4

bPq

3

bNq

4

bNq

4

bNq

5

cNq

4

cNq

4

cNq

5

cNq

4

cNq

5

a a c

background image

Przykład 1 – algorytm

a

b

c

q

1

q

2

q

3

q

4

q

5

aPq

2

aNq

4

aNq

4

aNq

4

aNq

5

bNq

4

bPq

3

bNq

4

bNq

4

bNq

5

cNq

4

cNq

4

cNq

5

cNq

4

cNq

5

a a c

background image

Automat kończy pracę w stanie q

4

.

Napis niepoprawny

Przykład 1 – algorytm

a

b

c

q

1

q

2

q

3

q

4

q

5

aPq

2

aNq

4

aNq

4

aNq

4

aNq

5

bNq

4

bPq

3

bNq

4

bNq

4

bNq

5

cNq

4

cNq

4

cNq

5

cNq

4

cNq

5

background image

Przykład 1 – algorytm

a

b

c

q

1

q

2

q

3

q

4

q

5

aPq

2

aNq

4

aNq

4

aNq

4

aNq

5

bNq

4

bPq

3

bNq

4

bNq

4

bNq

5

cNq

4

cNq

4

cNq

5

cNq

4

cNq

5

↓      
a b c

background image

Przykład 1 – algorytm

a

b

c

q

1

q

2

q

3

q

4

q

5

aPq

2

aNq

4

aNq

4

aNq

4

aNq

5

bNq

4

bPq

3

bNq

4

bNq

4

bNq

5

cNq

4

cNq

4

cNq

5

cNq

4

cNq

5

↓      
a b c

background image

Przykład 1 – algorytm

a

b

c

q

1

q

2

q

3

q

4

q

5

aPq

2

aNq

4

aNq

4

aNq

4

aNq

5

bNq

4

bPq

3

bNq

4

bNq

4

bNq

5

cNq

4

cNq

4

cNq

5

cNq

4

cNq

5

↓ 

a b c

background image

Przykład 1 – algorytm

a

b

c

q

1

q

2

q

3

q

4

q

5

aPq

2

aNq

4

aNq

4

aNq

4

aNq

5

bNq

4

bPq

3

bNq

4

bNq

4

bNq

5

cNq

4

cNq

4

cNq

5

cNq

4

cNq

5

↓ 

a b c

background image

Przykład 1 – algorytm

a

b

c

q

1

q

2

q

3

q

4

q

5

aPq

2

aNq

4

aNq

4

aNq

4

aNq

5

bNq

4

bPq

3

bNq

4

bNq

4

bNq

5

cNq

4

cNq

4

cNq

5

cNq

4

cNq

5

       ↓ 

a b c

background image

Przykład 1 – algorytm

a

b

c

q

1

q

2

q

3

q

4

q

5

aPq

2

aNq

4

aNq

4

aNq

4

aNq

5

bNq

4

bPq

3

bNq

4

bNq

4

bNq

5

cNq

4

cNq

4

cNq

5

cNq

4

cNq

5

       ↓ 

a b c

background image

Przykład 1 – algorytm

a

b

c

q

1

q

2

q

3

q

4

q

5

aPq

2

aNq

4

aNq

4

aNq

4

aNq

5

bNq

4

bPq

3

bNq

4

bNq

4

bNq

5

cNq

4

cNq

4

cNq

5

cNq

4

cNq

5

       ↓ 

a b c

background image

Przykład 1 – algorytm

a

b

c

q

1

q

2

q

3

q

4

q

5

aPq

2

aNq

4

aNq

4

aNq

4

aNq

5

bNq

4

bPq

3

bNq

4

bNq

4

bNq

5

cNq

4

cNq

4

cNq

5

cNq

4

cNq

5

Automat kończy pracę w stanie q

5

.

Napis poprawny

background image

Przykład 2 – inkrementacja liczby

Na taśmie umieszczono liczbę całkowitą ze 
znakiem zapisaną w zapisie uzupełnienio-
wym do 2

W miejsce tej liczby wpisać liczbę o 1 więk-
szą (dodać jedynkę)

Głowica znajduje się na prawo od liczby na 
symbolu pustym Φ

background image

Binarna reprezentacja liczby całkowitej bez 
znaku:

a

6

∙2

6

+a

5

∙2

5

+a

4

∙2

4

+a

3

∙2

3

+a

2

∙2

2

+a

1

∙2

1

+a

0

∙2

0

a

6

∙64+a

5

∙32+a

4

∙16+a

3

∙8+a

2

∙4+a

1

∙2+a

0

∙1

Binarna reprezentacja liczby

background image

Binarna reprezentacja liczby całkowitej bez 
znaku:

a

6

∙2

6

+a

5

∙2

5

+a

4

∙2

4

+a

3

∙2

3

+a

2

∙2

2

+a

1

∙2

1

+a

0

∙2

0

a

6

∙64+a

5

∙32+a

4

∙16+a

3

∙8+a

2

∙4+a

1

∙2+a

0

∙1

Np. 23

23 = 16 + 4 + 2 + 1

23 = 0∙64+0∙32+1∙16+0∙8+1∙4+1∙2+1∙1

Binarna reprezentacja liczby

background image

Binarna reprezentacja liczby całkowitej bez 
znaku:

a

6

∙2

6

+a

5

∙2

5

+a

4

∙2

4

+a

3

∙2

3

+a

2

∙2

2

+a

1

∙2

1

+a

0

∙2

0

a

6

∙64+a

5

∙32+a

4

∙16+a

3

∙8+a

2

∙4+a

1

∙2+a

0

∙1

Np. 23

23 = 16 + 4 + 2 + 1

23 = 0∙64+0∙32+1∙16+0∙8+1∙4+1∙2+1∙1

23 ≡ 0010111

Binarna reprezentacja liczby

background image

Znak reprezentowany w postaci dodatkowe-
go bitu zwanego bitem znaku

Liczba dodatnia – 0, liczba ujemna – 1

3 formy zapisu:

znak moduł

uzupełnieniowy do 1

uzupełnieniowy do 2

Co zrobić ze znakiem ?

background image

Z lewej strony liczby binarnej umieścić bit 
znaku

Np. 23

Liczba dodatnia w zapisie U2

background image

Z lewej strony liczby binarnej umieścić bit 
znaku

Np.   23

   0 0 1 0 1 1 1

Liczba dodatnia w zapisie U2

background image

Z lewej strony liczby binarnej umieścić bit 
znaku

Np. 

+

23

0

 0 0 1 0 1 1 1

Liczba dodatnia w zapisie U2

background image

Znaleźć reprezentację liczby przeciwnej

Zanegować wszystkie bity

Dodać jedynkę

Liczba ujemna w zapisie U2

background image

Znaleźć reprezentację liczby przeciwnej

Zanegować wszystkie bity 

Dodać jedynkę

Np. 

-

23

0

 0 0 1 0 1 1 1  (+23)

Liczba ujemna w zapisie U2

background image

Znaleźć reprezentację liczby przeciwnej

Zanegować wszystkie bity 

Dodać jedynkę

Np. 

-

23

0

 0 0 1 0 1 1 1  (+23)

1

 1 1 0 1 0 0 0           

Liczba ujemna w zapisie U2

background image

Znaleźć reprezentację liczby przeciwnej

Zanegować wszystkie bity 

Dodać jedynkę

Np. 

-

23

0

 0 0 1 0 1 1 1  (+23)

1

 1 1 0 1 0 0 0           

+                       1               

Liczba ujemna w zapisie U2

background image

Znaleźć reprezentację liczby przeciwnej

Zanegować wszystkie bity 

Dodać jedynkę

Np. 

-

23

0

 0 0 1 0 1 1 1  (+23)

1

 1 1 0 1 0 0 0           

+                       1               

1

 1 1 0 1 0 0 1  (-23) 

Liczba ujemna w zapisie U2

background image

Dodawanie jedynki do liczby parzystej

0 1 1 0 1 1 0 0 (+108)

+                        1                 

0 1 1 0 1 1 0 1 (+109)

Inkrementacja liczb binarnych

background image

Dodawanie jedynki do liczby parzystej

0 1 1 0 1 1 0 0 (+108)

+                        1                 

0 1 1 0 1 1 0 1 (+109)

1 1 1 1 0 1 1 0 (-10)

+                         1               

   1 1 1 1 0 1 1 1 (-9)     

Inkrementacja liczb binarnych

background image

Dodawanie jedynki do liczby parzystej

Inkrementacja liczby nieparzystej

0 0 0 0 1 0 1 1 (+11)   

+                        1                 

0 0 0 0 1 1 0 0 (+12)  

Inkrementacja liczb binarnych

background image

Dodawanie jedynki do liczby parzystej

Inkrementacja liczby nieparzystej

Sytuacje szczególne

1 1 1 1 1 1 1 1 (-1)     

+                        1                 

0 0 0 0 0 0 0 0 (0)      

Inkrementacja liczb binarnych

background image

Dodawanie jedynki do liczby parzystej

Inkrementacja liczby nieparzystej

Sytuacje szczególne

0 1 1 1 1 1 1 1 (+127)

+                        1                 

1 0 0 0 0 0 0 0 (-128) 

Inkrementacja liczb binarnych

background image

Dodawanie jedynki do liczby parzystej

Inkrementacja liczby nieparzystej

Sytuacje szczególne

0 1 1 1 1 1 1 1 (+127)

+                        1                 

1 0 0 0 0 0 0 0 (-128) 

Inkrementacja liczb binarnych

background image

Dodawanie jedynki do liczby parzystej

Inkrementacja liczby nieparzystej

Sytuacje szczególne

0 1 1 1 1 1 1 1 (+127)

+                        1                 

0 1 0 0 0 0 0 0 0 (-128)    

Inkrementacja liczb binarnych

background image

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.

Algorytm inkrementacji liczb binar-

nych

background image

Stan q

1

 – poszukiwanie najmniej znaczącego 

bitu liczby

Przykład 2 – tablica charaktery-

styczna

Φ

0

1

q

1

q

2

q

3

q

4

ΦLq

1

1Nq

4

0Lq

2

background image

Przykład 2 – tablica charaktery-

styczna

Φ

0

1

q

1

q

2

q

3

q

4

ΦLq

1

ΦNq

4

1Nq

4

1Lq

3

0Lq

2

0Lq

2

Stan q

2

 – zamiana jedynek na zera aż do napo-

tkania zera i zamiana go na jedynkę

background image

Przykład 2 – tablica charaktery-

styczna

Φ

0

1

q

1

q

2

q

3

q

4

ΦLq

1

ΦNq

4

0Nq

4

1Nq

4

1Lq

3

0Nq

4

0Lq

2

0Lq

2

1Nq

4

Stan q

3

 – sprawdzenie czy nie zmieniono zna-

ku liczby

background image

Przykład 2 – tablica charaktery-

styczna

Φ

0

1

q

1

q

2

q

3

q

4

ΦLq

1

ΦNq

4

0Nq

4

ΦNq

4

1Nq

4

1Lq

3

0Nq

4

0Nq

4

0Lq

2

0Lq

2

1Nq

4

1Nq

4

Stan q

4

 – stan końcowy

background image

Przykład 2 – tablica charaktery-

styczna

Φ

0

1

q

1

q

2

q

3

q

4

ΦLq

1

ΦNq

4

0Nq

4

ΦNq

4

1Nq

4

1Lq

3

0Nq

4

0Nq

4

0Lq

2

0Lq

2

1Nq

4

1Nq

4

                                   ↓

Φ Φ 0 0 1 0 1 1 1 1 Φ Φ

47

background image

Przykład 2 – tablica charaktery-

styczna

Φ

0

1

q

1

q

2

q

3

q

4

ΦLq

1

ΦNq

4

0Nq

4

ΦNq

4

1Nq

4

1Lq

3

0Nq

4

0Nq

4

0Lq

2

0Lq

2

1Nq

4

1Nq

4

                                   ↓

Φ Φ 0 0 1 0 1 1 1 1 Φ Φ

background image

Przykład 2 – tablica charaktery-

styczna

Φ

0

1

q

1

q

2

q

3

q

4

ΦLq

1

ΦNq

4

0Nq

4

ΦNq

4

1Nq

4

1Lq

3

0Nq

4

0Nq

4

0Lq

2

0Lq

2

1Nq

4

1Nq

4

                            ↓

Φ Φ 0 0 1 0 1 1 1 1 Φ Φ

background image

Przykład 2 – tablica charaktery-

styczna

Φ

0

1

q

1

q

2

q

3

q

4

ΦLq

1

ΦNq

4

0Nq

4

ΦNq

4

1Nq

4

1Lq

3

0Nq

4

0Nq

4

0Lq

2

0Lq

2

1Nq

4

1Nq

4

                     ↓

Φ Φ 0 0 1 0 1 1 1 1 Φ Φ

background image

Przykład 2 – tablica charaktery-

styczna

Φ

0

1

q

1

q

2

q

3

q

4

ΦLq

1

ΦNq

4

0Nq

4

ΦNq

4

1Nq

4

1Lq

3

0Nq

4

0Nq

4

0Lq

2

0Lq

2

1Nq

4

1Nq

4

               ↓

Φ Φ 0 0 1 0 1 1 1 0 Φ Φ

background image

Przykład 2 – tablica charaktery-

styczna

Φ

0

1

q

1

q

2

q

3

q

4

ΦLq

1

ΦNq

4

0Nq

4

ΦNq

4

1Nq

4

1Lq

3

0Nq

4

0Nq

4

0Lq

2

0Lq

2

1Nq

4

1Nq

4

         ↓

Φ Φ 0 0 1 0 1 1 0 0 Φ Φ

background image

Przykład 2 – tablica charaktery-

styczna

Φ

0

1

q

1

q

2

q

3

q

4

ΦLq

1

ΦNq

4

0Nq

4

ΦNq

4

1Nq

4

1Lq

3

0Nq

4

0Nq

4

0Lq

2

0Lq

2

1Nq

4

1Nq

4

    ↓

Φ Φ 0 0 1 0 1 0 0 0 Φ Φ

background image

Przykład 2 – tablica charaktery-

styczna

Φ

0

1

q

1

q

2

q

3

q

4

ΦLq

1

ΦNq

4

0Nq

4

ΦNq

4

1Nq

4

1Lq

3

0Nq

4

0Nq

4

0Lq

2

0Lq

2

1Nq

4

1Nq

4

↓   

Φ Φ 0 0 1 0 0 0 0 0 Φ Φ

background image

Przykład 2 – tablica charaktery-

styczna

Φ

0

1

q

1

q

2

q

3

q

4

ΦLq

1

ΦNq

4

0Nq

4

ΦNq

4

1Nq

4

1Lq

3

0Nq

4

0Nq

4

0Lq

2

0Lq

2

1Nq

4

1Nq

4

↓        

Φ Φ 0 0 1 1 0 0 0 0 Φ Φ

background image

Przykład 2 – tablica charaktery-

styczna

Φ

0

1

q

1

q

2

q

3

q

4

ΦLq

1

ΦNq

4

0Nq

4

ΦNq

4

1Nq

4

1Lq

3

0Nq

4

0Nq

4

0Lq

2

0Lq

2

1Nq

4

1Nq

4

↓        

Φ Φ 0 0 1 1 0 0 0 0 Φ Φ

48

background image

Przykład 2 – tablica charaktery-

styczna

Φ

0

1

q

1

q

2

q

3

q

4

ΦLq

1

ΦNq

4

0Nq

4

ΦNq

4

1Nq

4

1Lq

3

0Nq

4

0Nq

4

0Lq

2

0Lq

2

1Nq

4

1Nq

4

background image

Przykład 2 – tablica charaktery-

styczna

Φ

0

1

q

1

q

2

q

3

q

4

ΦLq

1

ΦNq

4

0Nq

4

ΦNq

4

1Nq

4

1Lq

3

0Nq

4

0Nq

4

0Lq

2

0Lq

2

1Nq

4

1Nq

4

                   ↓

Φ Φ 0 1 1 1 1 Φ Φ

15

background image

Przykład 2 – tablica charaktery-

styczna

Φ

0

1

q

1

q

2

q

3

q

4

ΦLq

1

ΦNq

4

0Nq

4

ΦNq

4

1Nq

4

1Lq

3

0Nq

4

0Nq

4

0Lq

2

0Lq

2

1Nq

4

1Nq

4

            ↓

Φ Φ 0 1 1 1 1 Φ Φ

background image

Przykład 2 – tablica charaktery-

styczna

Φ

0

1

q

1

q

2

q

3

q

4

ΦLq

1

ΦNq

4

0Nq

4

ΦNq

4

1Nq

4

1Lq

3

0Nq

4

0Nq

4

0Lq

2

0Lq

2

1Nq

4

1Nq

4

      ↓

Φ Φ 0 1 1 1 0 Φ Φ

background image

Przykład 2 – tablica charaktery-

styczna

Φ

0

1

q

1

q

2

q

3

q

4

ΦLq

1

ΦNq

4

0Nq

4

ΦNq

4

1Nq

4

1Lq

3

0Nq

4

0Nq

4

0Lq

2

0Lq

2

1Nq

4

1Nq

4

Φ Φ 0 1 1 0 0 Φ Φ

background image

Przykład 2 – tablica charaktery-

styczna

Φ

0

1

q

1

q

2

q

3

q

4

ΦLq

1

ΦNq

4

0Nq

4

ΦNq

4

1Nq

4

1Lq

3

0Nq

4

0Nq

4

0Lq

2

0Lq

2

1Nq

4

1Nq

4

↓      

Φ Φ 0 1 0 0 0 Φ Φ

background image

Przykład 2 – tablica charaktery-

styczna

Φ

0

1

q

1

q

2

q

3

q

4

ΦLq

1

ΦNq

4

0Nq

4

ΦNq

4

1Nq

4

1Lq

3

0Nq

4

0Nq

4

0Lq

2

0Lq

2

1Nq

4

1Nq

4

↓            

Φ Φ 0 0 0 0 0 Φ Φ

background image

Przykład 2 – tablica charaktery-

styczna

Φ

0

1

q

1

q

2

q

3

q

4

ΦLq

1

ΦNq

4

0Nq

4

ΦNq

4

1Nq

4

1Lq

3

0Nq

4

0Nq

4

0Lq

2

0Lq

2

1Nq

4

1Nq

4

↓                   

Φ Φ 1 0 0 0 0 Φ Φ

background image

Przykład 2 – tablica charaktery-

styczna

Φ

0

1

q

1

q

2

q

3

q

4

ΦLq

1

ΦNq

4

0Nq

4

ΦNq

4

1Nq

4

1Lq

3

0Nq

4

0Nq

4

0Lq

2

0Lq

2

1Nq

4

1Nq

4

↓                   

Φ 0 1 0 0 0 0 Φ Φ

16

background image

Przykład 3 – obliczanie wartości 

bezwzględnej liczby

Na taśmie umieszczono liczbę całkowitą ze 
znakiem zapisaną w zapisie uzupełnienio-
wym do 2

W miejsce tej liczby wpisać jej wartość bez-
względną

Głowica znajduje się na lewo od liczby na 
symbolu pustym Φ

background image

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ę

background image

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

background image

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
   

0

 0 0 0 1 0 1 1

background image

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
   

1

 1 1 1 0 1 0 1

background image

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
   1 1 1 1 0 1 0 1

background image

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
   

0

 1 1 1 0 1 0 1

background image

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
   

0

 

0

 1 1 0 1 0 1

background image

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
   

0

 

0

 

0

 1 0 1 0 1

background image

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
   

0

 

0

 

0

 

0

 0 1 0 1

background image

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
   

0

 

0

 

0

 

0

 

1

 1 0 1

background image

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
   

0

 

0

 

0

 

0

 

1

 

0

 0 1

background image

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
   

0

 

0

 

0

 

0

 

1

 

0

 

1

 1

background image

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
   

0

 

0

 

0

 

0

 

1

 

0

 

1

 

0

background image

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
   0 0 0 0 1 0 1 0
 +                     1

background image

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
   0 0 0 0 1 0 1 

1

background image

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 roz-
wiązania w jedno.
Założenie: głowica z lewej strony liczby

background image

q

1

 – szukanie bitu znaku

q

2

 – stan końcowy, liczba dodatnia

q

3

 – stan końcowy liczba ujemna

Przykład 3 – testowanie bitu znaku

Φ

-

-

0

-

1

-

q

1

q

2

q

3

ΦPq

1

0Nq

2

0Nq

2

1Nq

3

1Nq

3

background image

q

1

 – szukanie początku liczby

q

2

 – zamiana bitów

q

3

 – stan końcowy 

Przykład 3 – negowanie bitów

Φ

0

-

1

-

q

1

q

2

q

3

ΦPq

1

ΦNq

3

ΦNq

3

1Pq

2

1Pq

2

0Pq

2

0Pq

2

background image

Przykład 3 – inkrementacja

Φ

0

1

q

1

q

2

q

3

q

4

ΦLq

1

ΦNq

4

0Nq

4

ΦNq

4

1Nq

4

1Lq

3

0Nq

4

0Nq

4

0Lq

2

0Lq

2

1Nq

4

1Nq

4

background image

Przykład 3 – całe zadanie

Φ

-

-

0

-

1

-

q

1

q

2

q

3

ΦPq

1

0Nq

2

0Nq

2

1Nq

3

0Nq

3

Badanie znaku liczby

background image

Przykład 3 – całe zadanie

Φ

-

-

0

-

1

-

q

1

q

2

q

3

ΦPq

1

0Nq

2

0Nq

2

1Nq

3

0Nq

3

2 stany końcowe:

q

2

 – liczba dodatnia

q

3

 – liczba ujemna

background image

Przykład 3 – całe zadanie

Φ

-

-

0

-

1

-

q

1

q

2

q

3

ΦPq

1

0Nq

2

0Nq

2

1Nq

3

0Nq

3

W miejsce stanu q

3

 wstawiamy tablicę z nega-

cją bitów

background image

Przykład 3 – całe zadanie

Φ

-

0

1

-

q

1

q

2

q

3

q

4

q

5

ΦPq

1

ΦPq

3

ΦNq

5

ΦNq

5

0Nq

2

0Nq

2

1Pq

4

1Pq

4

0Nq

5

1Nq

3

0Pq

4

0Pq

4

1Nq

5

Negowanie bitów

background image

W miejsce stanu końcowego q

5

 wstawiamy ta-

blicę inkrementującą.

Przykład 3 – całe zadanie

Φ

-

0

1

-

q

1

q

2

q

3

q

4

q

5

ΦPq

1

ΦPq

3

ΦNq

5

ΦNq

5

0Nq

2

0Nq

2

1Pq

4

1Pq

4

0Nq

5

1Nq

3

0Pq

4

0Pq

4

1Nq

5

background image

Przykład 3 – całe zadanie

Φ

-

0

1

-

q

1

q

2

q

3

q

4

q

5

q

6

q

7

q

8

ΦPq

1

ΦPq

3

ΦNq

5

ΦLq

5

ΦLq

8

0Lq

8

ΦLq

8

0Nq

2

0Nq

2

1Pq

4

1Pq

4

1Lq

8

1Lq

7

0Lq

8

0Lq

8

1Nq

3

0Pq

4

0Pq

4

0Lq

6

0Lq

6

1Lq

8

1Lq

8

Inkrementacja liczby

background image

Przykład 3 – całe zadanie

Φ

-

0

1

-

q

1

q

2

q

3

q

4

q

5

q

6

q

7

q

8

ΦPq

1

ΦPq

3

ΦNq

5

ΦLq

5

ΦLq

8

0Lq

8

ΦLq

8

0Nq

2

0Nq

2

1Pq

4

1Pq

4

1Lq

8

1Lq

7

0Lq

8

0Lq

8

1Nq

3

0Pq

4

0Pq

4

0Lq

6

0Lq

6

1Lq

8

1Lq

8

Dwa stany końcowe:

q

2

 – gdy liczba była nieujemną

q

8

 – gdy była liczba ujemna

background image

Podsumowanie

Elementy tworzące maszynę Turinga

Tablica charakterystyczna jako zapis pro-
gramu dla maszyny Turinga

Przykłady algorytmów i zaprogramowania 
ich na maszynie Turinga

Twierdzenie Turinga o realizowalności algo-
rytmów