Maszyny RAM
Transkrypt
Maszyny RAM
Z ŁO ŻONO Ś Ć OBLICZENIOWA ALGORYTMÓW
M ASZYNY O D OST EPIE
˛
SWOBODNYM (RAM)
Bartosz Zieliński
Katedra Fizyki Teoretycznej i Informatyki
Zima 2011-2012
I NSTRUKCJE M ASZYNY RAM
Instrukcja Argument Znaczenie
READ
j
r0 := ij
READ
↑j
r0 := irj
STORE
j
rj := r0
STORE
↑j
rij := r0
LOAD
x
r0 := x
ADD
x
r0 := r0 + x
SUB
x
r0 := r0 −
x
HALF
r0 := r20
JUMP
j
κ := j
JPOS
j
if r0 > 0 then κ := j
JZERO
j
if r0 = 0 then κ := j
JNEG
j
if r0 < 0 then κ := j
HALT
κ := 0
gdzie x ma form˛e = j, j lub ↑ j.
B AR TOSZ Z IELI ŃSKI (KFT I I)
Z ŁO ŻONO Ś Ć ...
2011/12
2 / 12
M NO ŻENIE LICZB , PSEUDOKOD
log y
xy =
X
2k xy[k]
k=0
P ROGRAM
1:
2:
3:
4:
5:
6:
7:
8:
9:
OBLICZA ILOCZYN
x
I
y
sum := 0; x̂ := x; ŷ := y;
while ŷ 6=
j 0kdo
ŷ2 := 2ŷ ;
if ŷ2 + ŷ2 − ŷ 6= 0 then
sum := sum + x̂;
end if
x̂ := x̂ + x̂; ŷ = ŷ2 ;
end while
P RINT(sum);
B AR TOSZ Z IELI ŃSKI (KFT I I)
Z ŁO ŻONO Ś Ć ...
. sum = xy
2011/12
3 / 12
M NO ŻENIE L ICZB , P ROGRAM RAM
1.
2.
3.
4.
5.
6.
READ 1
STORE 1
READ 2
STORE 2
JZERO 20
HALF
7.
STORE 4
8.
9.
10.
11.
12.
13.
14.
15.
16.
ADD 4
SUB 2
JZERO 14
LOAD 3
ADD 1
STORE 3
LOAD 1
ADD 1
STORE 1
B AR TOSZ Z IELI ŃSKI (KFT I I)
x̂ := x
ŷ := y
while ŷ 6= 0 do
ŷ2 :=
17.
18.
19.
20.
21.
LOAD 4
STORE 2
JUMP 5
LOAD 3
HALT
ŷ = ŷ2
end while
P RINT ( SUM )
j k
ŷ
2
if ŷ2 + ŷ2 − ŷ 6= 0 then
sum := sum + x̂
end if
x̂ := x̂ + x̂
Z ŁO ŻONO Ś Ć ...
2011/12
4 / 12
S YMULACJA M ASZYNY T URINGA P RZEZ RAM
Niech Σ = {σ1 , . . . , σk } alfabet maszyny Turinga. Niech
DΣ = {(i1 , . . . , in ) | 1 ≤ ij ≤ k, j = 1, . . . , n}.
Jeśli L ⊆ (Σ − t)∗ jest je˛ zykiem to φL : DΣ → {0, 1},
1 gdy σi1 . . . σin ∈ L
φL (i1 , . . . , in ) =
/L
0 gdy σi1 . . . σin ∈
T WIERDZENIE
Niech L bedzie
˛
j˛ezykiem należacym
˛
do T IME(f (n)). Wówczas
istnieje program RAM który oblicza funkcje˛ φL w czasie O(f (n)).
B AR TOSZ Z IELI ŃSKI (KFT I I)
Z ŁO ŻONO Ś Ć ...
2011/12
5 / 12
D OWÓD T WIERDZENIA O SYMULACJI MT
Niech M = (K, Σ, δ, s) – maszyna Turinga rozstrzygajac
˛ a˛ jezyk
˛
L
w czasie f (n). Niech n – długość słowa wejściowego.
Symulacja zaczyna od skopiowania danych do rejestrów o
numerach od 4 do n + 3.
Rejestr 1 zawiera numer rejestru zawierajacy
˛ kod znaku
pod aktualna˛ pozycja˛ kursora (na poczatku
˛
4).
Program składa sie˛ z ciagu
˛ instrukcji dla każdego stanu
q ∈ K.
Każdy z ciagów
˛
składa sie˛ z |Σ| podciagów
˛
(dla każdego
symbolu z Σ).
Niech podciag
˛ odpowiadajacy
˛ stanowi q i symbolowi σj
zaczyna si˛e od linii Nq,σj
B AR TOSZ Z IELI ŃSKI (KFT I I)
Z ŁO ŻONO Ś Ć ...
2011/12
6 / 12
S YMULACJA JEDNEGO KROKU MT
N IECH δ(q, σj ) = (p, σ` , D)
Nq,σj .
Nq,σj + 1.
Nq,σj + 2.
Nq,σj + 3.
Nq,σj + 4.
Nq,σj + 5.
Nq,σj + 6.
Nq,σj + 7.
Nq,σj + 8.
Nq,σj + 9.
LOAD ↑ 1
SUB = j
JZERO Nq,σj + 4
JUMP Nq,σj+1
LOAD = `
STORE ↑ 1
LOAD 1
ADD = d
STORE 1
JUMP Np,σ1
B AR TOSZ Z IELI ŃSKI (KFT I I)
(pobierz symbol pod kursorem)
(odejmij numer tego symbolu)
(jeśli symbolem nie jest σj
to skok do obsługi σj+1 )
(Zapisujemy σ` pod kursorem)
(Przesuwamy kursor o d gdzie
d = 1 dla D = →, d = −1 dla
D = ← i d = 0 dla D = −)
(Rozpocznij symulacje˛ stanu p)
Z ŁO ŻONO Ś Ć ...
2011/12
7 / 12
S YMULACJA RAM PRZEZ MASZYN E˛ T URINGA
R EPREZENTACJA
Niech b(i) – binarna reprezentacja i.
Niech I = (i1 , . . . , in ) – ciag
˛ liczb całkowitych. Wtedy binarna
reprezentacja b(I) := b(i1 ); . . . b(in ).
Niech D – zbiór skończonych ciagów
˛
liczb całkowitych.
Niech φ : D → Z. Maszyna Turinga M oblicza φ gdy
M(b(I)) = b(φ(I)).
T WIERDZENIE
Jeżeli program Π maszyny RAM oblicza funkcje˛ φ w czasie f (n)
to istnieje maszyna Turinga z 7 ciagami
˛
która oblicza φ w czasie
O(f (n)3 ).
B AR TOSZ Z IELI ŃSKI (KFT I I)
Z ŁO ŻONO Ś Ć ...
2011/12
8 / 12
D OWÓD T WIERDZENIA O S YMULACJI RAM
C I AGI
˛
MASZYNY
T URINGA M
Ciag
˛ 1 to ciag
˛ wejściowy tylko do odczytu.
Ciag
˛ 2 – reprezentacje zawartości (zmodyfikowanych)
rejestrów R. Sekwencje słów b(i) : b(ri ) odzielonych
średnikami, znaki puste, koniec – znak /.
Uaktualnienie rejestru i – para b(i) : b(ri ) zastepowana
˛
spacjami, nowa para dopisywana na końcu.
Ciag
˛ 3 – bieżaca
˛ wartość licznika rozkazów κ.
Ciag
˛ 4 – adres aktualnie poszukiwanego rejestru.
CIagi
˛ 5,6,7 – ciagi
˛ robocze.
B AR TOSZ Z IELI ŃSKI (KFT I I)
Z ŁO ŻONO Ś Ć ...
2011/12
9 / 12
K ROKI
SYMULACJI
Stany maszyny M podzielone sa˛ na m grup gdzie m jest
liczba˛ instrukcji w programie Π.
Zawartość potrzebnego w danej instrukcji rejestru jest
odnajdywana przez przegladanie
˛
ciagu
˛ 2:
Dla każdej pary b(i) : b(ri ) słowo b(i) jest porównywane z
zawartościa˛ ciagu
˛ 4. Jeśli sie˛ zgadzaja˛ to b(ri ) jest kopiowane
do jednego z pozostałych ciagów
˛
celem przetworzenia. W
przeciwnym wypadku szukamy dalej.
Trzy operacje arytmetyczne wykonywane sa˛ na ciagach
˛
4, 5,
6. Dwa zawieraja˛ argumenty a w trzecim zapisujemy wynik.
Po obliczeniu aktualizujemy ciag
˛ 2.
Dla instrukcji HALT zawartość rejestru 0 przenoszona jest z
ciagu
˛ 2 do ciagu
˛ 7.
B AR TOSZ Z IELI ŃSKI (KFT I I)
Z ŁO ŻONO Ś Ć ...
2011/12
10 / 12
C ZAS DZIAŁANIA SYMULACJI
L EMAT
Po t krokach obliczeń programu RAM na danych I zawartość
każdego rejestru ma długość najwyżej t + `(I) + `(B) gdzie B jest
najwieksz
˛
a˛ liczba˛ zapisana˛ jawnie w instrukcji programu Π.
D OWÓD
OGRANICZENIA CZASOWEGO
Wystarczy dowieść że symulacja jednej instrukcji programu Π
zabiera M czas O(f (n)2 )
Zdekodowanie instrukcji i stałych – stały czas.
Pobranie wartości rejestrów z ciagu
˛ 2 – O(f (n)2 ):
Ciag
˛ zawiera O(f (n)) par, każda długości O(f (n)) (Lemat).
Proste operacje (ADD, SUB, HALF) – czas O(f (n)) – liniowy do
rozmiaru argumentów.
B AR TOSZ Z IELI ŃSKI (KFT I I)
Z ŁO ŻONO Ś Ć ...
2011/12
11 / 12
Z ADANIE /P RZYKŁAD
Dane wejściowe: Ciag
˛ dwóch liczb całkowitych
K OD RAM
1.
2.
3.
4.
5.
6.
READ 1
JZERO 6
STORE 1
READ 2
ADD 1
HALT
Zadanie: Zdefiniować MT symulujac
˛ a˛ powyższy program.
B AR TOSZ Z IELI ŃSKI (KFT I I)
Z ŁO ŻONO Ś Ć ...
2011/12
12 / 12