Articulo de referencia

Pointer machine

In theoretical computer science , a pointer machine is an atomistic abstract computational machine whose storage structure is a graph . A pointer algorithm could also be an algo...

In theoretical computer science, a pointer machine is an atomistic abstract computational machine whose storage structure is a graph. A pointer algorithm could also be an algorithm restricted to the pointer machine model.[1]

Some particular types of pointer machines are called a linking automaton, a KU-machine, an SMM, an atomistic LISP machine, a tree-pointer machine, etc.[2]

Pointer machines do not have arithmetic instructions. Computation proceeds only by reading input symbols, modifying and doing various tests on its storage structure—the pattern of nodes and pointers, and outputting symbols based on the tests. In this sense, the model is similar to the Turing machine.

Types of "pointer machines"

Both Gurevich and Ben-Amram list a number of very similar "atomistic" models of "abstract machines";[3][2] Ben-Amram believes that the "atomistic models" must be distinguished from "high-level" models. The following atomistic models will be presented below:

  • Schönhage's storage modification machines (SMM),[4]
  • Kolmogorov–Uspenskii machines (KUM or KU-Machines).[5]

Ben-Amram also presents the following varieties, not further discussed in this article:

  • Atomistic pure-LISP machine (APLM)
  • Atomistic full-LISP machine (AFLM),
  • General atomistic pointer machines,
  • Jone's I language (two types).

Schönhage's storage modification machine (SMM) model

The following presentation follows van Emde Boas.[6]

The machine consists of a fixed alphabet of input symbols, a fixed program, and a mutable directed graph with its arrows labelled by alphabet symbols. The graph is the machine's storage. Each node of the graph has exactly one outgoing arrow labelled with each symbol, although some of these may loop back into the original node. One fixed node of the graph is identified as the start or "active" node.

Each word of symbols in the alphabet can then be translated to a pathway through the machine; for example, 10011 would translate to taking edge 1 from the start node, then edge 0 from the resulting node, then edge 0, then edge 1, then edge 1. Thus a word identifies a node, the final node of the path, but this identification will change as the graph changes during the computation.

The machine can receive instructions which change the layout of the graph. The basic instructions are:

(1) nueva instrucción w , que crea un nuevo nodo al final del camino w , con todos sus bordes dirigidos al penúltimo nodo en w .

(2) instrucción de establecer w a v que (re)dirige una arista a un nodo diferente. Aquí w y v representan palabras . La instrucción da como resultado cambiar el destino de la última arista en la ruta w .

Algunos pasos en la ejecución de una máquina {0,1} de 2 símbolos con instrucciones: (1) nuevo ε; (2) nuevo 1; (3) nuevo 11. La instrucción n.° 1 inicializa el grafo de almacenamiento como un único nodo, el nodo 1, en el grafo de almacenamiento.

(3) Si v = w, entonces instrucción z  : Instrucción condicional que compara dos rutas representadas por las palabras w y v para ver si terminan en el mismo nodo; si es así, salta a la instrucción z; de lo contrario, continúa. Esta instrucción cumple la misma función que el comando if en cualquier lenguaje de programación imperativo .

Evolución del grafo de almacenamiento en una máquina {0,1} de 2 símbolos con las instrucciones: (1) nuevo ε; (2) nuevo 1; (3) nuevo 11; (4) nuevo 10; (5) establecer 111 a 10. En este momento, si la máquina hiciera si 10=111 entonces xxx, entonces la prueba sería exitosa y la máquina saltaría efectivamente a xxx.

(4) leer y escribir instrucciones de entrada/salida, accediendo a una cinta de entrada de solo lectura y a una cinta de salida de solo escritura, ambas conteniendo símbolos del alfabeto.

Knuth señaló que el modelo SMM coincide con un tipo de "autómata de enlace" explicado brevemente en el primer volumen de El arte de la programación informática . [ 4 ]

Modelo de máquina Kolmogorov-Uspenskii (máquina KU)

KUM se diferencia de SMM en que solo permite punteros invertibles: por cada puntero de un nodo x a un nodo y, debe existir un puntero inverso de y a x, etiquetado con el mismo símbolo. En otras palabras, el grafo de almacenamiento no está dirigido. Dado que los punteros salientes deben estar etiquetados con símbolos distintos del alfabeto, tanto los grafos KUM como SMM tienen un grado de salida de O(1). Sin embargo, la invertibilidad de los punteros KUM también restringe el grado de entrada a O(1). Esto resuelve algunas preocupaciones relacionadas con el realismo físico (en contraposición al realismo puramente informacional).

Existen otras diferencias menores entre los modelos, como la forma del programa: una tabla de estados en lugar de una lista de instrucciones.

Consideraciones relativas al modelo de máquina de punteros

Uso del modelo en la teoría de la complejidad : van Emde Boas (1990) expresa su preocupación de que esta forma de modelo abstracto sea:

"Un modelo teórico interesante, pero... su atractivo como modelo fundamental para la teoría de la complejidad es cuestionable. Su medida de tiempo se basa en un tiempo uniforme en un contexto donde se sabe que esta medida subestima la verdadera complejidad temporal. La misma observación se aplica a la medida de espacio para la máquina" (van Emde Boas (1990), p. 35).

Gurevich también expresa su preocupación:

"En términos prácticos, el modelo de Schönhage proporciona una buena medida de la complejidad temporal en el estado actual de la técnica (aunque yo preferiría algo similar a las computadoras de acceso aleatorio de Angluin y Valiant)". [ 7 ]

Schönhage demuestra las equivalencias en tiempo real de dos tipos de máquinas de acceso aleatorio con la SMM. [ 4 ]

Algoritmos en el modelo SMM : Schönhage demuestra que el SMM puede realizar multiplicaciones enteras en tiempo lineal. [ 4 ]

Usos potenciales del modelo : Gurevich se pregunta si una máquina KU paralela "se asemeja de alguna manera al cerebro humano" [ 8 ].

Computación paralela : Todos los modelos mencionados anteriormente son secuenciales. Cook y Dymond propusieron un modelo de máquina de punteros paralelo (atomista); [ 9 ] también se ha utilizado un modelo de máquina de punteros paralelo de alto nivel (no atomista) [ 10 ].

Véase también

Máquina de registros: modelo computacional de máquina abstracta genérica basada en registros

Máquina de Turing: modelo computacional de máquina abstracta genérica basada en cinta.

  • Máquina post-Turing : una máquina minimalista de una cinta, dos direcciones, 1 símbolo {en blanco, marca} similar a Turing, pero con ejecución de instrucciones secuencial por defecto de una manera similar a las máquinas básicas de contador de 3 instrucciones.

Lecturas adicionales

La mayoría de las referencias y la bibliografía se encuentran en el artículo " Máquina de registro" . Lo siguiente es específico de este artículo:

  • Amir Ben-Amram (1995), ¿Qué es una "máquina de punteros"?, SIGACT News (ACM Special Interest Group on Automata and Computability Theory)", volumen 26, 1995. En el que Ben-Amram describe los tipos y subtipos: (tipo 1a) Máquinas abstractas: modelos atomísticos que incluyen máquinas de Kolmogorov-Uspenskii (KUM), máquinas de modificación de almacenamiento de Schönhage (SMM), "autómata de enlace" de Knuth, APLM y AFLM (máquina atomística Pure-LISP) y (máquina atomística Full-LISP), máquinas de punteros atomísticas generales, lenguaje I de Jones; (tipo 1b) Máquinas abstractas: modelos de alto nivel, (tipo 2) algoritmos de punteros.
  • Yuri Gurevich (2000), Sequential Abstract State Machines Capture Sequential Algorithms , ACM Transactions on Computational Logic, vol. 1, n.º 1, (julio de 2000), páginas 77-111. En una sola frase, Gurevich compara las "máquinas de modificación de almacenamiento" de Schönhage [1980] con las "máquinas de punteros" de Knuth. Para más información, Gurevich hace referencia a modelos similares como las "máquinas de acceso aleatorio":
    • John E. Savage (1998), Modelos de computación: Explorando el poder de la computación . Addison Wesley Longman.
  • Yuri Gurevich (1988), Sobre las máquinas de Kolmogorov y cuestiones relacionadas , columna sobre "Lógica en la informática", Boletín de la Asociación Europea de Informática Teórica, número 35, junio de 1988, 71-82. Introdujo la descripción unificada de las máquinas de Schönhage y Kolmogorov-Uspenskii que se utiliza aquí.
  • Arnold Schönhage (1980), Storage Modification Machines , Society for Industrial and Applied Mathematics, SIAM J. Comput. Vol. 9, No. 3, agosto de 1980. En el que Schönhage muestra la equivalencia de su SMM con la "RAM sucesora" (Random Access Machine), etc. Se refiere a un artículo anterior donde introduce la SMM:
    • Arnold Schönhage (1970), Universelle Turing Speicherung , Automatentheorie und Formale Sprachen, Dörr, Hotz, eds. Bibliografía. Instituto, Mannheim, 1970, págs.  69–383.
  • Peter van Emde Boas , Modelos y simulaciones de máquinas, págs.  3-66, publicado en:
Jan van Leeuwen , ed. Manual de Informática Teórica. Volumen A: Algoritmos y Complejidad , The MIT PRESS/Elsevier, 1990. ISBN 0-444-88071-2(volumen A).
El análisis de van Emde Boas sobre los SMM aparece en las páginas 32-35. Este análisis aclara el trabajo de Schönhage (1980); lo sigue de cerca, pero lo amplía ligeramente. Ambas referencias pueden ser necesarias para una comprensión efectiva.

Referencias

  1. Cloteaux, Brian; Ranjan, Desh (2006). "Algunos resultados de separación entre clases de algoritmos de punteros" .
  2. 1 2 Amir Ben-Amram (1995). ¿Qué es una "máquina de punteros"?, SIGACT News (ACM Special Interest Group on Automata and Computability Theory), volumen 26, 1995.
  3. Yuri Gurevich (2000), Sequential Abstract State Machines Capture Sequential Algorithms , ACM Transactions on Computational Logic, vol. 1, no. 1, (julio de 2000), páginas 77–111.
  4. ^ Arnold Schönhage ( 1980 ), Máquinas de modificación de almacenamiento , SIAM Journal on Computing vol. 9, núm. 3, agosto de 1980.
  5. Andrey Kolmogorov y V. Uspenskii , Sobre la definición de un algoritmo, Uspekhi Mat. Nauk 13 (1958), 3-28. Traducción al inglés en American Mathematical Society Translations, Serie II, Volumen 29 (1963), pp. 217–245.
  6. Peter van Emde Boas , Machine Models and Simulations, págs. 3–66 en: Jan van Leeuwen , ed. Handbook of Theoretical Computer Science. Volumen A: Algorithms and Complexity , The MIT PRESS/Elsevier, 1990. ISBN 0-444-88071-2(volumen A).
  7. Gurevich (1988) pág. 6 con referencia a Angluin D. y Valiant LG, "Algoritmos probabilísticos rápidos para circuitos y emparejamientos hamiltonianos", Journal of Computer and System Sciences 18 (1979) 155-193.
  8. Yuri Gurevich (1988), Sobre las máquinas de Kolmogorov y cuestiones relacionadas , columna sobre "Lógica en la informática", Boletín de la Asociación Europea de Informática Teórica, número 35, junio de 1988, 71-82.
  9. Cook, Stephen A.; Dymond, Patrick W. (marzo de 1993). "Máquinas de punteros paralelos". Computational Complexity . 3 : 19–30 . doi : 10.1007/BF01200405 .
  10. Goodrich, MT; Kosaraju, SR (1996). "Ordenación en una máquina de punteros paralela con aplicaciones a la evaluación de expresiones de conjuntos". Journal of the ACM . 43 (2): 331– 361. doi : 10.1145/226643.226670 .