stringtranslate.com

Máquina de puntero

En informática teórica , una máquina de punteros es una máquina computacional abstracta y atomística cuya estructura de almacenamiento es un grafo . Un algoritmo de punteros también podría ser un algoritmo restringido al modelo de máquina de punteros. [1]

Algunos tipos particulares de máquinas de puntero se denominan autómata de enlace, máquina KU, SMM, máquina LISP atomística, máquina de puntero de árbol, etc. [2]

Las máquinas de punteros no tienen instrucciones aritméticas. El cálculo se realiza únicamente leyendo símbolos de entrada, modificando y realizando diversas pruebas en su estructura de almacenamiento (el patrón de nodos y punteros) y generando símbolos de salida en función de las pruebas. En este sentido, el modelo es similar a la máquina de Turing .

Tipos de "máquinas de puntero"

Tanto Gurevich como Ben-Amram enumeran una serie de modelos "atomistas" muy similares de "máquinas abstractas"; [3] [2] Ben-Amram cree que los "modelos atomistas" deben distinguirse de los modelos "de alto nivel". A continuación se presentan los siguientes modelos atomistas:

Ben-Amram también presenta las siguientes variedades, que no se analizan más en este artículo:

Modelo de máquina de modificación de almacenamiento (SMM) de Schönhage

La siguiente presentación sigue a van Emde Boas. [6]

La máquina consta de un alfabeto fijo de símbolos de entrada, un programa fijo y un gráfico dirigido mutable con sus flechas etiquetadas con símbolos del alfabeto. El gráfico es el almacenamiento de la máquina . Cada nodo del gráfico tiene exactamente una flecha saliente etiquetada con cada símbolo, aunque algunas de ellas pueden volver al nodo original. Un nodo fijo del gráfico se identifica como el nodo de inicio o "activo".

Cada palabra de símbolos del alfabeto puede entonces traducirse a una ruta a través de la máquina; por ejemplo, 10011 se traduciría en tomar el borde 1 del nodo de inicio, luego el borde 0 del nodo resultante, luego el borde 0, luego el borde 1, luego el borde 1. De este modo, una palabra identifica un nodo, el nodo final de la ruta, pero esta identificación cambiará a medida que el gráfico cambie durante el cálculo.

La máquina puede recibir instrucciones que modifiquen la disposición del gráfico. Las instrucciones básicas son:

(1) instrucción new w , que crea un nuevo nodo al final de la ruta w , con todos sus bordes dirigidos al penúltimo nodo en w . (2) instrucción set w to v , que (re)dirige un borde a un nodo diferente. Aquí w y v representan palabras . La instrucción cambia el destino del último borde en la ruta w .

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

(3) Si v = w entonces instrucción z  : Instrucción condicional que compara dos caminos representados 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 tiene el mismo propósito que el comando if en cualquier lenguaje de programación imperativo.

Evolución del grafo de almacenamiento en una máquina de 2 símbolos {0,1} con instrucciones: (1) nuevo ε; (2) nuevo 1; (3) nuevo 11; (4) nuevo 10; (5) establecer 111 en 10. En este momento, si la máquina hiciera si 10=111 entonces xxx, entonces la prueba sería exitosa y la máquina efectivamente saltaría 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 volumen uno de El arte de la programación informática . [4]

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

KUM difiere de SMM en que solo permite punteros invertibles: por cada puntero de un nodo x a un nodo y, debe estar presente 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 O(1). Sin embargo, la invertibilidad de los punteros KUM también restringe el grado de entrada a O(1). Esto aborda algunas preocupaciones por el realismo físico (en contraposición al puramente informativo).

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

Consideraciones sobre el modelo de puntero-máquina

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

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

Gurevich también expresa preocupación:

"Pragmáticamente hablando, el modelo de Schönhage proporciona una buena medida de la complejidad temporal en el estado actual de la técnica (aunque preferiría algo parecido 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 el SMM. [4]

Algoritmos en el modelo SMM : Schönhage demuestra que el SMM puede realizar la multiplicación de números enteros en tiempo lineal. [4]

Usos potenciales del modelo : Gurevich se pregunta si una máquina KU paralela "se parece un poco 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 paralelos (atomísticos); [9] también se utilizó un modelo de máquina de punteros paralelos de alto nivel (no atomístico) [10].

Véase también

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

Máquina de Turing: modelo computacional genérico de máquina abstracta basado en cinta

Lectura adicional

La mayoría de las referencias y una bibliografía se encuentran en el artículo Máquina de registro . Las siguientes son específicas de este artículo:

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).
El tratamiento que van Emde Boas hace de los SMM aparece en las páginas 32-35. Este tratamiento aclara el planteamiento de Schönhage de 1980: sigue de cerca el tratamiento de Schönhage, pero lo amplía ligeramente. Es posible que se necesiten ambas referencias para una comprensión eficaz.

Referencias

  1. ^ Cloteaux, Brian; Ranjan, Desh (2006). "Algunos resultados de separación entre clases de algoritmos de puntero".
  2. ^ ab Amir Ben-Amram (1995). ¿Qué es una "máquina de punteros"?, SIGACT News (Grupo de interés especial de la ACM sobre autómatas y teoría de la computabilidad), volumen 26, 1995.
  3. ^ Yuri Gurevich (2000), Máquinas de estados abstractos secuenciales capturan algoritmos secuenciales , ACM Transactions on Computational Logic, vol. 1, núm. 1, (julio de 2000), páginas 77–111.
  4. ^ abcd 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), págs. 217-245.
  6. ^ Peter van Emde Boas , Modelos de máquinas y simulaciones , 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. 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 Ciencias de la Computación", Boletín de la Asociación Europea de Ciencias de la Computación Teórica, Número 35, junio de 1988, 71-82.
  9. ^ Cook, Stephen A.; Dymond, Patrick W. (marzo de 1993). "Máquinas de puntero paralelo". Computational Complexity . 3 : 19–30. doi :10.1007/BF01200405.
  10. ^ Goodrich, MT; Kosaraju, SR (1996). "Ordenamiento en una máquina de puntero paralelo con aplicaciones para la evaluación de expresiones de conjuntos". Revista de la ACM . 43 (2): 331–361. doi :10.1145/226643.226670.