Maszyna RAM

Maszyna RAM – model abstrakcyjnej maszyny będący odmianą maszyny rejestrowej, bardzo podobnej do maszyny licznikowej, lecz z możliwością niebezpośredniego adresowania jej rejestrów. Model RAM wykorzystywany jest podczas analizy złożoności obliczeniowej algorytmów.

Maszyna RAM służy jako wprowadzenie do programowania oraz pomoc do nauki logicznego rozumowania. Ułatwia wyrobienie dobrych nawyków, np. inicjowania zmiennych przed użyciem. Zwykle stosuje się różnego rodzaju emulatory tejże maszyny, które przedstawiają działanie kodu wprowadzonego przez programistę; często instrukcje maszyny RAM upodabnia się do mnemoników asemblera, np. add, sub, mul, div, call oraz halt.

Budowa

Maszyna RAM składa się ze wskaźnika rozkazów, czyli komórki zawierającej aktualnie wykonywaną instrukcję oraz pamięci będącej tablicą o nieskończonej przeliczalnej liczbie elementów. Maszyna RAM realizuje program wyrażony w skończonej liczbie instrukcji:

InstrukcjaZnaczenie
Z(n)mem[n] := 0Wyzeruj komórkę o numerze n. Zwiększ wskaźnik rozkazów o 1.
S(n)mem[n] := mem[n] + 1Dodaj 1 do komórki o numerze n. Zwiększ wskaźnik rozkazów o 1.
T(m, n)mem[n] := mem[m]Skopiuj zawartość komórki o numerze m do komórki o numerze n. Zwiększ wskaźnik rozkazów o 1.
I(m, n, q)jeżeli mem[m] = mem[n] to skocz do qJeśli zawartości komórek o numerach n i m są równe, ustaw wskaźnik rozkazów na q, w przeciwnym wypadku zwiększ go o 1.

Przykład

Przykładowy program RAM:

NrInstrukcja
0Z(3)
1I(1,3,5)
2I(2,3,6)
3S(3)
4I(0,0,1)
5S(0)

Program oblicza funkcję

Jako wejście przyjmuje dwie wartości x i y (umieszczane odpowiednio w komórkach o numerach 1 oraz 2). Pozostałe komórki pamięci są wyzerowane. Wynik działania programu (zwracana wartość) znajduje się w komórce o numerze 0.

Zobacz też