Mașină URM

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

URM ( acronim pentru Unlimited Register Machine ) este o idealizare matematică a unui computer bazat pe o mașină inventată în 1963 de JC Shepherdson și HE Sturgis .

URM este o mașină ideală echipată cu registre infinite (un pic ca mașina Turing ) numită R 1 , R 2 , R 3 , ..., care conțin un număr natural . Se notează cu r n conținutul registrului R n.

Pentru a efectua calcule, mașina URM trebuie încărcată cu un program P și cu o configurație inițială a numerelor naturale în registrele R 1 , R 2 , R 3 , .... URM începe calculul prin accesarea instrucțiunii I 1 , I 2 , .... Conform instrucțiunilor pe care le citește, conținutul registrelor poate fi modificat sau nu.

Instrucțiunile URM sunt doar patru, dar cu acestea este posibil să se rezolve orice problemă calculabilă .

Instrucțiuni

  1. Z (n), n = 1, 2, 3, .... Ca răspuns la această instrucțiune, URM schimbă valoarea registrului n la zero, lăsând celelalte registre nealterate: r n : = 0.
  2. S (n), n = 1, 2, 3, .... Ca răspuns la această instrucțiune, URM crește conținutul registrului n cu o unitate, lăsând celelalte registre nealterate, r n : = r n + 1.
  3. T (m, n), m, n = 1, 2, 3, .... Ca răspuns la această instrucțiune, URM transferă conținutul registrului m în registrul n, toate celelalte registre, inclusiv R m, rămân neschimbate, r n : = r m .
  4. J (m, n, q); m, n, q = 1, 2, 3, ... Ca răspuns la această instrucțiunea URM compară conținutul registrelor R m și R n dacă:
  • r m ≠ r n continuă apoi cu următoarea instrucțiune din program,
  • r m = r n sare apoi la instrucțiunea q din program.

Un program simplu

Acest program calculează suma a două numere x și y . Pentru ca acest program să funcționeze trebuie inițializat cu x, y, 0,0, ...; programul va continua să adauge unul la r 1 folosind un alt registru ca contor, în acest caz R 3 , pentru a număra de câte ori r 1 a fost incrementat. Programul se va termina când r 3 = y returnează valoarea 'x + y' în R 1 .

I 1 - J (3,2,5)
I 2 - S (1)
I 3 - S (3)
I 4 - J (1,1,1)

Alte referințe pot fi găsite în paragraful privind URI-urile