En informática teórica , un algoritmo de Markov es un sistema de reescritura de cadenas que utiliza reglas gramaticales para operar con cadenas de símbolos. Se ha demostrado que los algoritmos de Markov son Turing-completos , lo que significa que son adecuados como modelo general de computación y pueden representar cualquier expresión matemática a partir de su notación simple. Los algoritmos de Markov reciben su nombre del matemático soviético Andrey Markov Jr.
Refal es un lenguaje de programación basado en algoritmos de Markov.
Descripción
Los algoritmos normales son verbales, es decir, están diseñados para aplicarse a cadenas de caracteres en diferentes alfabetos.
La definición de cualquier algoritmo normal consta de dos partes: un alfabeto , que es un conjunto de símbolos, y un esquema . El algoritmo se aplica a cadenas de símbolos del alfabeto. El esquema es un conjunto finito y ordenado de fórmulas de sustitución . Cada fórmula puede ser simple o final . Las fórmulas de sustitución simples se representan mediante cadenas de la forma, dóndeyson dos cadenas arbitrarias del alfabeto. De manera similar, las fórmulas de sustitución final se representan mediante cadenas de la forma.
Aquí hay un ejemplo de un esquema de algoritmo normal en el alfabeto de cinco letras.:
El proceso de aplicar el algoritmo normal a una cadena arbitrariaEn el alfabeto de este algoritmo hay una secuencia discreta de pasos elementales, que consiste en lo siguiente. Supongamos quees la palabra obtenida en el paso anterior del algoritmo (o la palabra original), si el paso actual es el primero). Si de las fórmulas de sustitución no hay un lado izquierdo que esté incluido en el, entonces el algoritmo termina y el resultado de su trabajo se considera la cadena. De lo contrario, la primera de las fórmulas de sustitución cuyos lados izquierdos están incluidos ense selecciona. Si la fórmula de sustitución es de la forma, entonces de entre todas las posibles representaciones de la cadenade la forma(dóndeyson cadenas arbitrarias) la que tiene la más cortase elige. Luego el algoritmo termina y el resultado de su trabajo se considera que esSin embargo, si esta fórmula de sustitución es de la forma, entonces de entre todas las posibles representaciones de la cadenade la forma deel que tiene el más cortoSe elige, después de lo cual la cadenase considera el resultado del paso actual, sujeto a procesamiento adicional en el siguiente paso.
Por ejemplo, el proceso de aplicar el algoritmo descrito anteriormente a la palabrada como resultado la secuencia de palabras,,,,,,,,,y, después de lo cual el algoritmo se detiene con el resultado.
Para ver otros ejemplos, consulte a continuación.
Cualquier algoritmo normal es equivalente a alguna máquina de Turing , y viceversa : cualquier máquina de Turing es equivalente a algún algoritmo normal. Una versión de la tesis de Church-Turing formulada en relación con el algoritmo normal se denomina «principio de normalización».
Los algoritmos normales han demostrado ser un medio conveniente para la construcción de muchas secciones de las matemáticas constructivas . Además, la definición de un algoritmo normal implica una serie de ideas utilizadas en lenguajes de programación destinados a manejar información simbólica , por ejemplo, en Refal .
Algoritmo
Las reglas son una secuencia de pares de cadenas, generalmente presentadas en forma de patrón → reemplazo . Cada regla puede ser ordinaria o terminante.
Dada una cadena de entrada :
- Comprueba las reglas en orden, de arriba abajo, para ver si alguno de los patrones se encuentra en la cadena de entrada .
- Si no se encuentra ninguno, el algoritmo se detiene.
- Si se encuentra uno (o más), utilice el primero de ellos para reemplazar la aparición más a la izquierda del texto coincidente en la cadena de entrada con su reemplazo .
- Si la regla que se acaba de aplicar es una regla de terminación, el algoritmo se detiene.
- Ve al paso 1.
Tenga en cuenta que después de aplicar cada regla, la búsqueda vuelve a empezar desde la primera regla.
Ejemplo
El siguiente ejemplo muestra el funcionamiento básico de un algoritmo de Markov.
Normas
- "A" -> "manzana"
- "B" -> "bolsa"
- "S" -> "tienda"
- "T" -> "el"
- "la tienda" -> "mi hermano"
- "una regla que nunca se ha usado" -> . "regla de terminación"
Cadena de símbolos
"Le compré una B of A a T S."
Ejecución
Si se aplica el algoritmo al ejemplo anterior, la cadena de símbolos cambiará de la siguiente manera.
- "Le compré una B of A a T S."
- "Le compré una B de manzanas a T S."
- "Le compré una bolsa de manzanas a T S."
- "Compré una bolsa de manzanas en la tienda T."
- "Compré una bolsa de manzanas en la tienda."
- "Le compré una bolsa de manzanas a mi hermano."
El algoritmo finalizará entonces.
Otro ejemplo
Estas reglas ofrecen un ejemplo más interesante. Reescriben los números binarios a sus equivalentes unarios. Por ejemplo, el 101 se reescribe como una secuencia de 5 barras consecutivas.
Normas
- "|0" -> "0||"
- "1" -> "0|"
- "0" -> ""
Cadena de símbolos
"101"
Ejecución
Si se aplica el algoritmo al ejemplo anterior, finalizará después de los siguientes pasos.
- "101"
- "0|01"
- "00||1"
- "00||0|"
- "00|0|||"
- "000|||||"
- "00|||||"
- "0|||||"
- "|||||"
Véase también
Referencias
- Caracciolo di Forino, A. Lenguajes de procesamiento de cadenas y algoritmos de Markov generalizados. En Lenguajes y técnicas de manipulación de símbolos, DG Bobrow (Ed.), North-Holland Publ. Co., Ámsterdam, Países Bajos, 1968, pp. 191–206.
- Andrey Andreevich Markov (1903–1979) 1960. La teoría de los algoritmos. Traducciones de la Sociedad Matemática Americana, serie 2, 15, 1–14. (Traducción del ruso, Trudy Instituta im. Steklova 38 (1951) 176-189 [ 1 ] )
Enlaces externos
- Yad Studio - Entorno de desarrollo integrado (IDE) e intérprete de algoritmos de Markov (Código abierto)
- Intérprete del algoritmo de Markov
- Intérprete del algoritmo de Markov
- Intérpretes de algoritmos de Markov en Rosetta-Code
- A=B, un juego sobre cómo escribir reglas de sustitución para un algoritmo de Markov.
- Teoría de la computación
- Sistemas de reescritura
- Modelos de computación