Contactos

Máquina de Turing y algoritmos de Markov. Resolución de problemas. El pensamiento es material: Alan Turing como “calculadora universal” Descripción de la máquina de Turing

Programas Las máquinas de Turing se escriben en forma de tabla, donde la primera columna y la primera fila contienen las letras del alfabeto externo y los posibles estados internos del autómata (el alfabeto interno). El contenido de la tabla representa las instrucciones para la máquina de Turing. La letra que lee el cabezal en la celda (sobre la que se encuentra actualmente) y el estado interno del cabezal determinan qué comando ejecutar. El comando está determinado por la intersección de los caracteres de los alfabetos externo e interno en la tabla.

Para definir una máquina de Turing específica, necesita describir los siguientes componentes para ello:

Alfabeto externo. Un conjunto finito (indicado por la letra A), cuyos elementos se denominan letras (símbolos). Una de las letras de este alfabeto (por ejemplo, a0) debe ser un carácter nulo.

Por ejemplo, el alfabeto de una máquina binaria de Turing se expresa como A = (0, 1, a0).

Una cadena continua de símbolos en una cinta se llama en una palabra.

Automático Se llama dispositivo que funciona sin intervención humana. Un autómata en una máquina de Turing tiene varios estados y, bajo determinadas condiciones, pasa de un estado a otro. El conjunto de estados de un autómata se denomina alfabeto interno.

Alfabeto interno. Un conjunto finito de estados de un carro (autómata). Denotado por la letra Q=(q1,q2...). Uno de los estados - q1- debe ser inicial (lanzamiento del programa). Uno más de los estados (q0) debe ser final (finalizar el programa): el estado de parada.

Mesa de transición. Descripción del comportamiento de la máquina (carro) en función del estado y del símbolo leído.

El autómata de una máquina de Turing durante su funcionamiento está controlado por un programa, durante cada paso del cual se ejecuta secuencialmente lo siguiente: comportamiento:

Escriba un carácter de un alfabeto externo en una celda (incluida una vacía), reemplazando el que está en ella (incluida una vacía).

Mueve una celda hacia la izquierda o hacia la derecha.

Cambia tu estado interior.

Es por eso al elaborar un programa para cada par (símbolo, estado) es necesario determinar tres parámetros: símbolo ai del alfabeto A seleccionado, dirección del movimiento del carro ("←" - izquierda, "→" - derecha, "punto" - sin movimiento) y el nuevo estado de la máquina qk.



Por ejemplo, equipo 1 "←” q2 significa "reemplazar el carácter con 1, mover el cursor una celda a la izquierda y pasar al estado q2".

Se supone que un ejecutor universal debe poder probar la existencia o no de un algoritmo para una tarea particular.

Pregunta 28

La tesis de Turing es una posición fundamental de la teoría de los algoritmos, aceptada sin pruebas, según la cual todo algoritmo puede representarse en forma de una máquina de Turing.

Programa de la máquina de Turing (R) - la totalidad de todos los comandos. El programa se presenta en forma de tabla y se llama Circuito funcional de Turing.

un 0 un 1 un 2
q 1 a 0 Pq 1 un 1 pq 1 un 2 Lq 2
q 2 un 1 pq 2 a 2 Нq 0 a 0 Нq 0

Pregunta 29

Máquinas de Turing con dos salidas.

Supongamos que ampliamos la definición de máquina de Turing añadiendo un cierto estado q* al dispositivo de control de la máquina. Diremos que si el dispositivo de control pasa al estado q0 para una palabra de entrada x dada, entonces la máquina admite x. Si el dispositivo de control alcanza el estado q*, entonces la máquina inhibe x. A este dispositivo lo llamaremos máquina de Turing con dos salidas.

Resulta que si se dan dos máquinas de Turing T1 y T2, que admiten conjuntos disjuntos de palabras X1 y X2, respectivamente, entonces siempre es posible construir una máquina de Turing T3 con dos salidas, que admitirá X1 y prohibirá X2. Estas máquinas de Turing nos serán útiles a la hora de considerar la cuestión de la decidibilidad.

Un conjunto es decidible si existe una máquina de Turing de dos salidas que admite todos los elementos del conjunto y niega los elementos que no pertenecen a él.


Pregunta 30

Una máquina de Turing de cintas múltiples consta de un control finito con k cabezales de cinta, uno en cada cinta (Figura 6.4).

Cada cinta es infinita en ambas direcciones. Con un solo movimiento, dependiendo del estado del control final y del símbolo escaneado de cada uno de los cabezales de la cinta, la máquina puede: 1) cambiar de estado; 2) imprimir un nuevo carácter en cada una de las celdas escaneadas; 3) mover cada uno de sus cabezales de cinta de forma independiente una celda hacia la izquierda, hacia la derecha o dejarlo en el mismo lugar.

Al principio, la cadena de entrada está disponible sólo en la primera cinta y todas las demás cintas están vacías. No definiremos este dispositivo más formalmente, dejándolo en manos del lector.

Teorema 6.2. Si un idioma L es aceptado por una máquina de Turing de múltiples cintas, entonces será aceptado por una máquina de Turing de una sola cinta. Prueba. Sea un idioma L aceptado por una máquina de Turing T1 con k cintas. Construyamos una máquina de Turing T2 de una sola cinta con 2k pistas, dos para cada una de las cintas de la máquina T1. Una pista registra el contenido de la cinta de la máquina T1 correspondiente y la otra está en blanco excepto por un marcador en la celda que contiene el carácter y escaneado por el cabezal de la máquina T1 correspondiente. Un dispositivo de este tipo para modelar tres cintas usando una se ilustra en la Fig. 6.5. El control final de la máquina T2 recuerda qué marcadores del cabezal de la máquina T1 están a la izquierda y cuáles a la derecha del cabezal T2. Los estados de la máquina T1 también se almacenan en el control final de la máquina T2.

Para simular el movimiento de la máquina T1, la máquina T2 debe visitar cada celda del marcador de cabeza, registrando a su vez el carácter escaneado por la cabeza correspondiente de T1. Cuando T2 pasa por un marcador de cabeza, debe aclarar la dirección en la que buscar ese marcador. Después de recopilar toda la información necesaria, la máquina T2 determina el movimiento de la máquina T1. Luego, la máquina T2 visita cada uno de los marcadores de cabeza nuevamente, cambiando las celdas marcadas y moviendo los marcadores una celda si es necesario. Por supuesto, si el nuevo estado es de aceptación, entonces la máquina T2 acepta la cadena de entrada.

Y, según la tesis de Church-Turing, capaz de imitar a todos los artistas(especificando reglas de transición) que de alguna manera implementan el proceso de cálculo paso a paso, en el que cada paso de cálculo es bastante elemental.

Es decir, cualquier algoritmo intuitivo puede implementarse utilizando alguna máquina de Turing.

Dispositivo

La máquina de Turing incluye un ilimitado en ambas direcciones. cinta(Son posibles máquinas de Turing que tengan varias cintas infinitas), divididas en celdas, y dispositivo de control(también llamado cabeza de lectura-escritura (GZCH)), capaz de estar en uno de conjunto de estados. El número de estados posibles del dispositivo de control es finito y está especificado con precisión.

El dispositivo de control puede moverse hacia la izquierda y hacia la derecha a lo largo de la cinta, leer y escribir caracteres de algún alfabeto finito en celdas. Destaca especial vacío un símbolo que llena todas las celdas de la cinta, excepto aquellas (el número final) en las que están escritos los datos de entrada.

El dispositivo de control funciona según reglas de transición, que representan el algoritmo, realizable esta máquina de Turing. Cada regla de transición le indica a la máquina, dependiendo del estado actual y del símbolo observado en la celda actual, que escriba un nuevo símbolo en esta celda, pase a un nuevo estado y mueva una celda hacia la izquierda o hacia la derecha. Algunos estados de la máquina de Turing se pueden etiquetar como Terminal, y pasar a cualquiera de ellos significa el final del trabajo, deteniendo el algoritmo.

Una máquina de Turing se llama determinista, si cada combinación de estado y símbolo de cinta en la tabla corresponde como máximo a una regla. Si hay un par "símbolo de cinta - estado" para el cual hay 2 o más instrucciones, dicha máquina de Turing se llama no determinista.

Descripción de la máquina de Turing

Una máquina de Turing específica se define enumerando los elementos del conjunto de letras del alfabeto A, el conjunto de estados Q y el conjunto de reglas mediante las cuales opera la máquina. Tienen la forma: q i a j →q i1 a j1 d k (si la cabeza está en el estado q i, y la letra a j está escrita en la celda observada, entonces la cabeza pasa al estado q i1, a j1 está escrita en la celda en lugar de una j, la cabeza hace un movimiento d k, que tiene tres opciones: una celda a la izquierda (L), una celda a la derecha (R), permanecer en el lugar (N)). Para cada configuración posible hay exactamente una regla (para una máquina de Turing no determinista puede haber más reglas). No existen reglas sólo para el estado final, una vez en el que el coche se detiene. Además, debe especificar los estados final e inicial, la configuración inicial en la cinta y la ubicación del cabezal de la máquina.

Ejemplo

Un ejemplo de una máquina de Turing para multiplicar números en el sistema numérico unario. La entrada de la regla “q i a j →q i1 a j1 R/L/N” debe entenderse de la siguiente manera: q i es el estado en el que se ejecuta esta regla, a j son los datos de la celda en la que se encuentra la cabeza, q i1 es el estado al que ir, a j1 - lo que hay que escribir en la celda, R/L/N - comando para moverse.

La máquina funciona según el siguiente conjunto de reglas:

q 0 q 1 q 2 q 3 q 4 q 5 q 6 q 7 q 8
1 q 0 1→q 0 1R q 1 1→q 2 aR q 2 1→q 2 1L q 3 1 → q 4 aR q 4 1→q 4 1R q 7 1→q 2 aR
× q 0 ×→q 1 ×R q 2 ×→q 3 ×L q 4 ×→q 4 ×R q 6 ×→q 7 ×R q 8 ×→q 9 ×N
= q 2 =→q 2 =L q 4 =→q 4 =R q 7 =→q 8 =L
a q 2 a→q 2 aL q 3 a→q 3 aL q 4 a→q 4 aR q 6 a→q 6 1R q 7 a→q 7 aR q 8 a→q 8 1L
* q 0 *→q 0 *R q 3 *→q 6 *R q 4 *→q 5 1R
q5 →q2 *L

Descripción de estados:

Comenzar
q 0 estado inicial. Buscamos “x” a la derecha. Cuando lo encontramos, vamos al estado q1.
q 1 reemplace “1” con “a” y pase al estado q2
Transferimos todos los “1” del primer número al resultado
q 2 buscando la “x” de la izquierda. Cuando lo encontramos, vamos al estado q3.
q 3 Buscamos “1” a la izquierda, lo reemplazamos por “a” y pasamos al estado q4.

Si "1" terminó, busque "*" y vaya al estado q6

q 4 vaya al final (busque “*” a la derecha), reemplace “*” con “1” y vaya al estado q5
q 5 agregue “*” al final y vaya al estado q2
Procesamos cada dígito del segundo número.
q 6 Buscamos “x” a la derecha y pasamos al estado q7. Mientras miramos, reemplazamos “a” por “1”
q 7 busque "1" o "=" a la derecha

cuando encontremos "1", reemplácelo con "a" y vaya al estado q2

cuando encontramos “=" vamos al estado q8

Fin
q 8 buscando la “x” de la izquierda. Cuando lo encontramos, pasamos al estado q9. Mientras miramos, reemplazamos “a” por “1”
q 9 estado terminal (parada del algoritmo)

Usando MT multiplicamos 3 por 2 en el sistema de unidades. El protocolo indica los estados inicial y final del MT, la configuración inicial en la cinta y la ubicación del cabezal de la máquina (símbolo subrayado).

Comenzar. Estamos en el estado q 0, ingresamos los datos a la máquina: *111x11=*, el cabezal de la máquina está ubicado en el primer carácter *.

1er paso. Nos fijamos en la tabla de reglas para ver qué hará la máquina cuando esté en el estado q 0 y encima del símbolo “*”. Esta es la regla de la primera columna de la quinta fila: q 0 *→q 0 *R. Esto significa que pasamos al estado q 0 (es decir, no lo cambiamos), el símbolo pasará a ser “*” (es decir, no cambiará) y nos movemos por el texto que ingresamos “*111x11=* ”a la derecha una posición (R), luego hay un 1 en el primer símbolo. A su vez, el estado q 0 1 (primera columna, primera fila) se procesa mediante la regla q 0 1→q 0 1R. Es decir, nuevamente simplemente hay una transición hacia la derecha de 1 posición. Esto sucede hasta que nos encontramos en el símbolo "x". Y así sucesivamente: tomamos el estado (índice en q), tomamos el símbolo en el que nos encontramos (el símbolo subrayado), los conectamos y observamos el procesamiento de la combinación resultante de acuerdo con la tabla de reglas.

En palabras simples, el algoritmo de multiplicación es el siguiente: marcamos la primera unidad del segundo factor, reemplazándola con la letra "a", y transferimos todo el primer factor detrás del signo igual. La transferencia se realiza reemplazando alternativamente las unidades del 1er multiplicador con “a” y sumando la misma cantidad de unidades al final de la línea (a la izquierda del “*”) más a la derecha. Luego cambiamos todas las “a” hasta el signo de multiplicación “x” nuevamente a unidades. Y el ciclo se repite. De hecho, A multiplicado por B se puede representar como A+A+A B veces. Ahora marcamos la 2ª unidad del 2º multiplicador con la letra “a” y volvemos a transferir las unidades. Cuando no hay unidades antes del signo “=", la multiplicación está completa.

integridad de turing

Podemos decir que una máquina de Turing es la máquina informática más simple con memoria lineal, que, de acuerdo con reglas formales, transforma los datos de entrada mediante una secuencia. acciones elementales.

La naturaleza elemental de las acciones radica en el hecho de que la acción cambia sólo un pequeño fragmento de datos en la memoria (en el caso de una máquina de Turing, sólo una celda), y el número de acciones posibles no es infinito. A pesar de la simplicidad de la máquina de Turing, puede calcular todo lo que se puede calcular en cualquier otra máquina que realice cálculos utilizando una secuencia de operaciones elementales. Esta propiedad se llama lo completo.

Una forma natural de demostrar que los algoritmos computacionales que se pueden implementar en una máquina se pueden implementar en otra es simular la primera máquina en una segunda.

La imitación es la siguiente. Se suministra una descripción del programa (reglas de funcionamiento) de la primera máquina a la entrada de la segunda máquina. D (\displaystyle D) y datos de entrada X (\displaystyle X), que debería haber llegado a la entrada de la primera máquina. Es necesario describir dicho programa (reglas para el funcionamiento de la segunda máquina) para que, como resultado de los cálculos, la salida sea la misma que devolvería la primera máquina si recibiera datos como entrada. X (\displaystyle X).

Como se dijo, en una máquina de Turing es posible simular (especificando reglas de transición) todos los demás ejecutores que de alguna manera implementan el proceso de cálculo paso a paso, en el que cada paso del cálculo es bastante elemental.

Una máquina de Turing puede simular una máquina Post, algoritmos normales de Markov y cualquier programa para computadoras comunes que convierta datos de entrada en datos de salida de acuerdo con algún algoritmo. A su vez, una Máquina de Turing se puede simular utilizando varios ejecutores abstractos. Los artistas intérpretes o ejecutantes para quienes esto es posible se llaman Turing completo(Turing completo).

Existen programas para computadoras comunes que simulan el funcionamiento de una máquina de Turing. Pero cabe señalar que esta simulación es incompleta, ya que la máquina de Turing contiene una cinta infinita abstracta. Una cinta interminable con datos no se puede simular completamente en una computadora con memoria finita: la memoria total de la computadora (RAM, discos duros, diversos medios de almacenamiento externo, registros y caché del procesador, etc.) puede ser muy grande, pero, sin embargo, siempre finito. Límite teórico de la cantidad de información que puede contener una superficie determinada, hasta un factor 1 / ln ⁡ 2 (\displaystyle 1/\ln (2)) igual a la entropía de un agujero negro con la misma superficie.

Variantes de la máquina de Turing

El modelo de máquina de Turing se puede ampliar. Se pueden considerar máquinas de Turing con un número arbitrario de cintas y cintas multidimensionales con diversas restricciones. Sin embargo, todas estas máquinas son Turing completas y están modeladas por una máquina de Turing ordinaria.

Máquina de Turing funcionando en una cinta semiinfinita

Como ejemplo de dicha información, considere el siguiente teorema: Para cualquier máquina de Turing, existe una máquina de Turing equivalente que se ejecuta en una cinta semiinfinita (es decir, una cinta infinita en una dirección).

simulador para aprender el intérprete universal

¿Lo que es?

El simulador de la Máquina de Turing es un modelo de entrenamiento de un ejecutor universal (máquina de computación abstracta), propuesto en 1936 por A. Turing para aclarar el concepto de algoritmo. Según la tesis de Turing, cualquier algoritmo puede escribirse como un programa para una máquina de Turing. Se ha demostrado que la máquina de Turing es equivalente en sus capacidades a la máquina de Post y a los algoritmos normales de Markov.

Una máquina de Turing consta de un carro (cabezal de lectura y escritura) y una cinta sin fin dividida en celdas. Cada celda de la cinta puede contener un carácter de algún alfabeto A=(a 0 ,a 1 ,…,a N ). Cualquier alfabeto contiene un carácter de espacio, que se indica como 0 o Λ. Al ingresar comandos, el espacio se reemplaza con un guión bajo "_".

Una máquina de Turing es un autómata controlado por una mesa. Las filas de la tabla corresponden a los caracteres del alfabeto A seleccionado, y las columnas corresponden a los estados de la máquina Q=(q 0 ,q 1 ,…,q M ). Al inicio de su funcionamiento, la máquina de Turing se encuentra en el estado q 1 . El estado q 0 es el estado final: una vez en él, la máquina finaliza su funcionamiento.

En cada celda de la tabla, correspondiente a algún símbolo a i y algún estado q j, hay un comando que consta de tres partes:

  1. carácter del alfabeto A;
  2. dirección del movimiento: > (derecha),
  3. nuevo estado de la maquina

Noticias

  1. Falina I.N. El tema "La máquina de Turing" en el curso de informática de la escuela (inf.1september.ru).
  2. Mayer R.V. Máquinas de Post y Turing (komp-model.narod.ru).
  3. Pilshchikov V.N., Abramov V.G., Vylitok A.A., Goryachaya I.V. Máquina de Turing y algoritmos de Markov. Resolución de problemas, M.: MSU, 2006.
  4. Bekman I.N. Ciencias de la Computación. Conferencia 7. Algoritmos (profbeckman.narod.ru)
  5. Soloviev A. Matemáticas discretas sin fórmulas (lib.rus.ec)
  6. Ershov S.S. Elementos de la teoría de algoritmos, Chelyabinsk, Centro Editorial SUSU, 2009.
  7. Varpakhovsky F.L. Elementos de la teoría de algoritmos, M: Prosveshchenie, 1970.
  8. Vereshchagin N.K., Shen A. Funciones computables, M: MTsNMO, 1999.

¿Qué hacer al respecto?

En la parte superior del programa hay un campo de edición en el que puede ingresar la condición del problema de forma libre.

La cinta se mueve hacia la izquierda y hacia la derecha usando los botones ubicados a su izquierda y derecha. Al hacer doble clic en una celda de la cinta (o al hacer clic derecho), puede cambiar su contenido.

Usando el menú Cinta puede almacenar el estado de la cinta en el búfer interno y restaurar la cinta desde el búfer.

en el campo Alfabeto Se especifican los caracteres del alfabeto seleccionado. Se agrega automáticamente un espacio a los caracteres ingresados.

El programa se escribe en la tabla en la parte inferior de la ventana. La primera columna contiene caracteres alfabéticos y se completa automáticamente. La primera línea enumera todos los estados posibles. Puede agregar y eliminar columnas de la tabla (estado) usando los botones ubicados encima de la tabla.

Al ingresar un comando en una celda de la tabla, primero debe ingresar un nuevo carácter, luego la dirección de la transición y el número de estado. Si se omite un carácter, no se modifica de forma predeterminada. Si se omite el número de estado, de forma predeterminada el estado de la máquina no cambia.

Justo en el campo Un comentario Puede ingresar comentarios de formato libre sobre la solución. La mayoría de las veces explica qué significa cada estado de una máquina de Turing.

El programa se puede ejecutar de forma continua (F9) o en pasos (F8). El comando que ahora se ejecutará está resaltado con un fondo verde. La velocidad de ejecución se puede ajustar mediante el menú. Velocidad.

Los problemas de la máquina de Turing se pueden guardar en archivos. Se guardan la condición de la tarea, el alfabeto, el programa, los comentarios y el estado inicial de la cinta. Cuando una tarea se carga desde un archivo y se guarda en el archivo, el estado de la cinta se almacena automáticamente en el búfer.

Si notas algún error o tienes sugerencias, comentarios, quejas, solicitudes o declaraciones, escribe.

Requerimientos técnicos

El programa se ejecuta bajo los sistemas operativos de la línea. ventanas en cualquier computadora moderna.

Licencia

El programa es gratuito para uso no comercial. El código fuente del programa no se distribuye.

El programa viene " como es", es decir, el autor no asume ninguna responsabilidad por todas las posibles consecuencias de su uso, incluidas pérdidas morales y materiales, fallas de equipos, lesiones físicas y mentales.

Al publicar el programa en otros sitios web, se requiere un enlace a la fuente original.

  1. 1) publicación de materiales en cualquier forma, incluida la publicación de materiales en otros sitios web;
  2. 2) distribución de materiales incompletos o alterados;
  3. 3) inclusión de materiales en colecciones en cualquier soporte;
  4. 4) obtener beneficios comerciales de la venta u otro uso de materiales.

Descargar materiales significa que acepta los términos de este acuerdo de licencia.

Descargar

Después de descomprimir el archivo, el programa está funcionando y no requiere ninguna instalación adicional.

Introducción

Una máquina de Turing es un dispositivo informático muy simple. Consta de una cinta de longitud infinita, dividida en celdas, y un cabezal que se mueve a lo largo de la cinta y es capaz de leer y escribir caracteres. Además, una máquina de Turing tiene una característica como un estado, que puede expresarse como un número entero desde cero hasta algún valor máximo. Dependiendo del estado, una máquina de Turing puede realizar una de tres acciones: escribir un símbolo en una celda, mover una celda hacia la derecha o hacia la izquierda y establecer el estado interno.

El diseño de una máquina de Turing es extremadamente simple, pero puede ejecutar casi cualquier programa. Para realizar todas estas acciones, se proporciona una tabla especial de reglas, que especifica lo que se debe hacer para varias combinaciones de estados actuales y símbolos leídos de la cinta.

En 1947, Alan Turing amplió la definición para describir una "máquina de Turing universal". Posteriormente, para resolver determinadas clases de problemas, se introdujo una variación del mismo, que permitió realizar no una tarea, sino varias.

Descripción de la máquina de Turing

Los antecedentes de la creación de esta obra están relacionados con la formulación de problemas matemáticos no resueltos por David Hilbert en el Congreso Internacional de Matemáticas en París en 1900. Uno de ellos fue el problema de demostrar la coherencia de un sistema de axiomas de la aritmética ordinaria, que Hilbert luego aclaró como el "problema de la decidibilidad": encontrar un método general para determinar la satisfacibilidad de un enunciado dado en el lenguaje de la lógica formal.

El artículo de Turing dio precisamente la respuesta a este problema: el segundo problema de Hilbert resultó irresoluble. Pero la importancia del artículo de Turing iba mucho más allá del problema para el que fue escrito.

Aquí hay una descripción de este trabajo, perteneciente a John Hopcroft: "Trabajando en el problema de Hilbert, Turing tuvo que dar una definición clara del concepto mismo de método. A partir de la idea intuitiva de un método como una especie de algoritmo, es decir, un procedimiento que puede realizarse mecánicamente, sin intervención creativa ", mostró cómo esta idea podría materializarse en forma de un modelo detallado del proceso computacional. El modelo de cálculo resultante, en el que cada algoritmo se dividía en una secuencia de pasos simples y elementales, fue la construcción lógica que más tarde se llamó máquina de Turing".

Una máquina de Turing es una extensión del modelo de máquina de estados finitos, una extensión que incluye una memoria potencialmente infinita con la capacidad de moverse (mover) desde la celda actualmente vista a su vecina izquierda o derecha.

Formalmente, una máquina de Turing se puede describir de la siguiente manera. Sea lo siguiente:

un conjunto finito de estados - Q, en el que puede estar una máquina de Turing;

conjunto finito de símbolos de cinta - Г;

función d (función o programa de transición), que se especifica mapeando un par del producto cartesiano Q x Г (la máquina está en el estado qi y está viendo el símbolo i) en un triple del producto cartesiano Q x Г x (L ,R) (la máquina pasa al estado qi, reemplaza el carácter i con el carácter j y mueve un carácter de cinta hacia la izquierda o hacia la derecha) - Q x Г-->Q x Г x (L,R)

un carácter de Г-->е (vacío);

el subconjunto У є Г - -> se define como un subconjunto de los símbolos de entrada de la cinta, y е є (Г - У);

uno de los estados: q0 є Q es el estado inicial de la máquina.

El problema a resolver se especifica grabando en una cinta un número finito de símbolos del conjunto U є Г - Si є У:

eS1S2S3S4... ... ...Sne

después de lo cual la máquina se transfiere al estado inicial y el cabezal se instala en el símbolo que no está en blanco más a la izquierda (q0,w) -, después de lo cual, de acuerdo con la función de transición especificada (qi,Si) - ->(qj, Sk, L o R), la máquina comienza a reemplazar los símbolos vistos, mueve el cabezal hacia la derecha o hacia la izquierda y pasa a otros estados prescritos por las funciones de transición.

La máquina se detiene si la función de transición para el par (qi,Si) no está definida.

Alan Turing propuso que cualquier algoritmo en el sentido intuitivo de la palabra puede representarse mediante una máquina de Turing equivalente. Esta suposición se conoce como tesis de Church-Turing. Cada computadora puede simular una máquina de Turing (operaciones de reescribir celdas, comparar y pasar a otra celda vecina, teniendo en cuenta los cambios en el estado de la máquina). En consecuencia, puede modelar algoritmos en cualquier formalismo, y de esta tesis se deduce que todas las computadoras (independientemente de su potencia, arquitectura, etc.) son equivalentes en términos de la capacidad fundamental para resolver problemas algorítmicos.

Propiedades de la máquina de Turing como algoritmo

Utilizando la máquina de Turing como ejemplo, se pueden ver claramente las propiedades de los algoritmos. Pida a los estudiantes que demuestren que una máquina de Turing tiene todas las propiedades de un algoritmo.

Discreción. Una máquina de Turing puede pasar al (k + 1)ésimo paso solo después de completar cada paso, ya que es cada paso el que determina cuál será el (k + 1)ésimo paso.

Claridad. En cada paso, se escribe un símbolo del alfabeto en la celda, el autómata realiza un movimiento (L, P, N) y la máquina de Turing entra en uno de los estados descritos.

Determinismo. Cada celda de la tabla de la máquina de Turing contiene sólo una opción para una acción. En cada paso, el resultado se determina de forma única, por lo tanto, la secuencia de pasos para resolver el problema se determina de forma única, es decir, Si a una máquina de Turing se le da la misma palabra de entrada, entonces la palabra de salida será la misma cada vez.

Productividad. En términos de contenido, los resultados de cada paso y toda la secuencia de pasos están determinados de forma única; por lo tanto, una máquina de Turing escrita correctamente irá al estado q0 en un número finito de pasos, es decir, en un número finito de pasos se obtendrá la respuesta a la pregunta del problema.

Carácter masivo. Cada máquina de Turing se define sobre todas las palabras admisibles del alfabeto, esta es la propiedad del carácter masivo. Cada máquina de Turing está diseñada para resolver una clase de problemas, es decir, Para cada problema, se escribe su propia (nueva) máquina de Turing.

Transcripción

1Universidad Estatal de Moscú que lleva su nombre. MV Facultad Lomonosov de Matemática Computacional y Cibernética V.N. Pilshchikov, V.G. Abramov, A.A. Vylitok, I.V. Máquina caliente de Turing y algoritmos de Markov. Resolución de problemas (manual de formación) Moscú, 2006


2 UDC BBK P32 Pilshchikov V.N., Abramov V.G., Vylitok A.A., Goryachaya I.V. Máquina de Turing y algoritmos de Markov. Resolución de problemas. (Manual educativo) - M.: Universidad Estatal de Moscú, p. Departamento de publicaciones de la Facultad de Matemática Computacional y Matemáticas de la Universidad Estatal de Moscú (licencia LR de) El manual está dedicado a la resolución de problemas sobre el tema "Introducción a la teoría de los algoritmos", estudiado en el primer año de la Facultad de Matemática Computacional y Matemáticas de la Universidad Estatal de Moscú dentro de la disciplina “Algoritmos y Lenguajes Algorítmicos”. Se trata de problemas de composición de algoritmos en forma de máquina de Turing y algoritmos normales de Markov, así como problemas de carácter teórico. El manual proporciona la información necesaria sobre la teoría de algoritmos, explica en detalle los métodos típicos para resolver problemas y ofrece un gran conjunto de problemas para su solución independiente. El manual está diseñado para estudiantes de primer año de la Facultad de Matemáticas Computacionales y Matemáticas de la Universidad Estatal de Moscú y profesores que imparten seminarios sobre programación. Revisores: Profesor asociado Baula V.G. Profesor asociado Korukhova L.S. Publicado por decisión del Consejo Editorial y Editorial de la Facultad de Matemática Computacional y Cibernética de la Universidad Estatal de Moscú. MV Lomonósov. ISBN??? Departamento de publicaciones de la Facultad de Matemática Computacional y Cibernética de la Universidad Estatal de Moscú. MV Lomonósov,


3 1. Máquina de Turing Esta sección analiza los problemas de creación de algoritmos para una máquina de Turing. Se proporciona una breve descripción de esta máquina, se explican las técnicas básicas para compilar dichos algoritmos con ejemplos y se proponen problemas para su solución independiente. 1.1 Breve descripción de una máquina de Turing Estructura de una máquina de Turing Una máquina de Turing (MT) consta de dos partes, una cinta y un autómata (ver izquierda): cinta: a b b Λ Λ a b b Λ Λ autómata: q q La cinta se utiliza para almacenar información. Es infinito en ambas direcciones y está dividido en celdas que no están numeradas ni nombradas. Cada celda puede contener un carácter o nada en absoluto. El contenido de la celda puede cambiar; puede escribir otro símbolo en ella o borrar el símbolo que se encuentra allí. Acordemos llamar al contenido vacío de una celda el símbolo "vacío" y designarlo con el signo Λ ("lambda"). Debido a esto, la imagen de la cinta que se muestra en la imagen de la derecha es la misma que la imagen de la izquierda. Este acuerdo es conveniente porque la operación de borrar un símbolo en una celda determinada puede considerarse como escribir el símbolo Λ en esta celda, por lo tanto, en lugar de la frase larga "escribir un símbolo en una celda o borrar un símbolo ubicado allí", simplemente puedes decir "escribir un símbolo en una celda". La máquina es la parte activa del MT. En cada momento, se ubica debajo de una de las celdas de la cinta y ve su contenido; esta es una celda visible y el símbolo que contiene es un símbolo visible; La máquina no ve el contenido de las celdas vecinas ni de otras celdas. Además, en cada momento el autómata se encuentra en uno de los estados, que denotaremos con la letra q con números: q1, q2, etc. Mientras se encuentra en un determinado estado, el autómata realiza una operación específica (por ejemplo, se mueve hacia la derecha a lo largo de la cinta, reemplazando todos los símbolos b por a), mientras se encuentra en un estado diferente, otra operación. Llamaremos configuración al par de un símbolo visible (S) y el estado actual de la máquina (q) y denotaremos . La máquina puede realizar tres acciones elementales: 1) escribir un nuevo símbolo en una celda visible (la máquina no puede cambiar el contenido de otras celdas); 2) la máquina no puede mover una celda hacia la izquierda o hacia la derecha (“saltar” sobre varias celdas a la vez); 3) transición a un nuevo estado. La máquina no puede hacer nada más, por lo que todas las operaciones más complejas, de una forma u otra, deben reducirse a estas tres acciones elementales. 3


4 Ciclo de funcionamiento de la máquina de Turing MT opera en ciclos que se ejecutan uno tras otro. En cada ciclo de reloj, el autómata MT realiza las siguientes tres acciones, y siempre en el orden especificado: 1) escribe algún símbolo S en una celda visible (en particular, se puede escribir el mismo símbolo que estaba en ella, luego el contenido de esta celda no cambian); 2) se mueve una celda hacia la izquierda (designación L, de izquierda), o una celda hacia la derecha (designación R, de derecha), o permanece inmóvil (designación N). 3) pasa a algún estado q (en particular, puede permanecer en el estado anterior). Formalmente escribiremos las acciones de una barra en forma de triplete: S, , q donde la construcción entre corchetes significa que es posible escribir cualquiera de las letras L, R o N en este lugar. Por ejemplo, bar *,L,q8 significa escribir el símbolo * en una celda visible, desplazar una celda hacia la izquierda y pasar al estado q8. El programa para una máquina de Turing MT en sí no hace nada. Para que funcione, es necesario escribir un programa para ello. Este programa está escrito en la forma de la siguiente tabla: q 1 q j q m S 1 S 2 S i S n Λ S, , q A la izquierda están todos los estados en los que puede estar la máquina, arriba están todos los símbolos (incluidos Λ) que la máquina puede ver en la cinta. (Los símbolos y estados que se indican en la tabla los determina el autor del programa). En las intersecciones (en las celdas de la tabla), aquellos ciclos que la máquina debe realizar cuando se encuentra en el estado apropiado y ve el símbolo correspondiente en el se indican las cintas. En general, la tabla define las acciones del MT para todas las configuraciones posibles y, por lo tanto, especifica completamente el comportamiento del MT. Describir un algoritmo en forma de MT significa presentar dicha tabla. (Nota: una MT se define a menudo como compuesta por una cinta, una máquina y un programa, por lo que diferentes programas dan como resultado diferentes MT. Supondremos, en el espíritu de las computadoras modernas, que hay una MT, pero puede ejecutar diferentes programas.) 4


5 Reglas para ejecutar el programa Antes de ejecutar el programa, debe realizar los siguientes pasos preliminares. Primero, debe escribir en la cinta la palabra de entrada a la que se aplicará el programa. La palabra de entrada es una secuencia finita de símbolos escritos en celdas adyacentes de la cinta; No debe haber celdas vacías dentro de la palabra ingresada y solo debe haber celdas vacías a la izquierda y a la derecha de la misma. Una palabra de entrada vacía significa que todas las celdas de la cinta están vacías. En segundo lugar, debe configurar el autómata en el estado q 1 (indicado primero en la tabla) y colocarlo debajo del primer carácter de la palabra de entrada: a b b q 1 Si la palabra de entrada está vacía, entonces el autómata puede mirar cualquier celda, porque están todos vacíos. Después de estos pasos preliminares, comienza la ejecución del programa. En la tabla, se encuentra una celda en la intersección de la primera fila (ya que la máquina está en el estado q 1) y la columna que corresponde al primer carácter de la palabra de entrada (esta no es necesariamente la columna izquierda de la tabla) , y se ejecuta el ciclo especificado en esta celda. Como resultado, la máquina tendrá una nueva configuración. Ahora se repiten las mismas acciones, pero para una nueva configuración: en la tabla se encuentra una celda correspondiente al estado y símbolo de esta configuración, y desde esta celda se ejecuta un ciclo. Etcétera. ¿Cuándo se completa el programa? Introduzcamos el concepto de ciclo de parada. Este es un paso que no cambia nada: la máquina escribe en la celda visible el mismo símbolo que había antes, no se mueve y permanece en el mismo estado, es decir. este es el reloj S,N,q para la configuración . Una vez en el cronómetro, el MT, por definición, se detiene y completa su trabajo. En general, hay dos resultados posibles cuando el MT trabaja en la palabra de entrada: 1) El primer resultado es "bueno": esto es cuando en algún momento el MT se detiene (llega al cronómetro). En este caso, se dice que el MT es aplicable a la palabra de entrada dada. Y la palabra que se ha recibido en la cinta en ese momento se considera palabra de salida, es decir el resultado del trabajo de MT, la respuesta. Al momento de detenerse, se deben cumplir las siguientes condiciones obligatorias: no debe haber celdas vacías dentro de la palabra de salida (tenga en cuenta que durante la ejecución del programa puede haber celdas vacías dentro de la palabra procesada, pero al final no debe haber más a ellos); la máquina debe detenerse debajo de uno de los símbolos de la palabra de salida (cuál no importa), y si la palabra está vacía debajo de cualquier celda de la cinta. 5


6 2) El segundo resultado es “malo”: esto es cuando el MT va en ciclos, sin llegar nunca al cronómetro (por ejemplo, la máquina se mueve hacia la derecha en cada paso y por lo tanto no puede detenerse, porque la cinta es interminable). En este caso, decimos que MT no es aplicable a la palabra de entrada dada. Con tal resultado no se puede hablar de ningún resultado. Tenga en cuenta que el mismo algoritmo (programa MT) puede ser aplicable a algunas palabras de entrada (es decir, detener) y no aplicable a otras (es decir, bucle). Por tanto, la aplicabilidad/inaplicabilidad depende no sólo del algoritmo en sí, sino también de la palabra de entrada. ¿En qué palabras de entrada debería detenerse el algoritmo? Sobre, por así decirlo, buenas palabras, es decir. a aquellos que se relacionan con los datos iniciales permisibles del problema que se está resolviendo, para los cuales el problema es significativo. Pero cualquier palabra de entrada se puede escribir en la cinta, incluidas aquellas para las que la tarea no tiene sentido; El comportamiento del algoritmo no está fijado en tales palabras; puede detenerse (para obtener cualquier resultado) o puede funcionar en ciclos. Convenciones para acortar la notación Pongamos de acuerdo sobre algunas convenciones que acortan la notación del programa para MT. 1) Si el símbolo visible no cambia en un compás, o la máquina no se mueve, o el estado de la máquina no cambia, entonces no escribiremos nada en la posición correspondiente del compás. Por ejemplo, al configurar las siguientes barras son equivalentes: a,r,q3,r,q3 (pero no Λ,R,q3!!) b,n,q2 b,q2 a,l,q1,l, a,n,q1, (esta es el tope de la barra) Nota. Es recomendable no omitir comas en las barras, porque de lo contrario, es posible que se produzca confusión si entre los símbolos de la cinta se encuentran las letras L y R. 2) Si necesita indicar que después de ejecutar un cierto ritmo el MT debe detenerse, entonces en la tercera posición de este ritmo escribiremos la señal "!". Por ejemplo, mida b,l,! significa las siguientes acciones: escribir el carácter b en una celda de cinta visible, desplazarse hacia la izquierda y detenerse. Formalmente, podemos suponer que en el programa MT hay un estado llamado !, en todas las celdas en las que se registran los ciclos de parada. Sin embargo, dicha línea no está escrita explícitamente, sino sólo implícita. 3) Si se sabe de antemano que una determinada configuración no puede aparecer durante la ejecución del programa, entonces, para enfatizar esto explícitamente, dibujaremos una cruz en la celda correspondiente de la tabla. (Formalmente, esta cruz se considera un tic de parada). Estas convenciones son opcionales, pero acortan el programa y lo hacen más fácil de leer. 6


7 1.2 Ejemplos de escritura de programas para MT Veamos ejemplos de escritura de programas para MT para demostrar algunas técnicas de programación típicas para MT. Para acortar la formulación de los problemas, introducimos las dos convenciones siguientes: la letra P denotará la palabra de entrada; La letra A denotará el alfabeto de la palabra ingresada, es decir el conjunto de aquellos símbolos de los cuales y sólo de los cuales puede consistir P (tenga en cuenta, sin embargo, que pueden aparecer otros símbolos en palabras intermedias y de salida). Ejemplo 1 (mover la máquina, reemplazar símbolos) A=(0,1,2,3,4,5,6,7,8,9). Sea P una palabra no vacía; Esto significa que P es una secuencia de dígitos decimales, es decir escribir un número entero no negativo en el sistema decimal. Se requiere obtener en cinta un registro de un número que sea 1 mayor que el número P. Solución. Para solucionar este problema se propone realizar las siguientes acciones: 1. Mover la máquina al último dígito del número. 2. Si se trata de un número del 0 al 8, reemplácelo con un número 1 más y deténgase; por ejemplo: Si este es el número 9, entonces reemplácelo con 0 y mueva la máquina al dígito anterior, y luego aumente este penúltimo dígito en 1 de la misma manera; por ejemplo: Caso especial: P contiene sólo nueves (por ejemplo, 99). Luego, la máquina se moverá hacia la izquierda, reemplazando nueves con ceros, y eventualmente terminará debajo de una celda vacía. Debe escribir 1 en esta celda vacía y detenerse (la respuesta será 100): En forma de programa para MT, estas acciones se describen a continuación: Λ q1 0,R,q1 1,R,q1 2,R ,q1 3,R,q1 4, R,q1 5,R,q1 6,R,q1 7,R,q1 8,R,q1 9,R,q1 Λ,L,q2 q2 1,N,! 2,N,! 3,N,! 4,N,! 5,N,! 6,N,! 7,N,! 8,N,! 9,N,! 0,L,q2 1,N,! Explicaciones. q1 es un estado en el que la máquina "funciona" hasta el último dígito del número. Para ello, se mueve constantemente hacia la derecha, sin cambiar los números visibles y permaneciendo en el mismo estado. Pero aquí hay una peculiaridad: cuando la máquina tiene menos de 7


8 es el último dígito, entonces todavía no lo sabe (después de todo, no ve lo que está escrito en las celdas vecinas) y lo determinará solo cuando llegue a una celda vacía. Por lo tanto, al llegar a la primera celda vacía, la máquina vuelve al último dígito y pasa al estado q2 (no es necesario moverse hacia la derecha). q2 es un estado en el que la máquina suma 1 al dígito que ve en ese momento. Primero es el último dígito del número; si está en el rango de 0 a 8, entonces la máquina lo reemplaza con un número que es 1 más y se detiene. Pero si este es el número 9, entonces la máquina lo reemplaza por 0 y se mueve hacia la izquierda, quedando en el estado q2. Por lo tanto, ahora sumará 1 al dígito anterior. Si este dígito también es 9, entonces la máquina lo reemplaza por 0 y se mueve hacia la izquierda, quedando en el estado q2 como antes, porque debe realizar la misma acción y aumentar en 1 dígito visible. Si la máquina se ha movido hacia la izquierda y no hay ningún número en la celda visible (pero sí está "vacío"), escribe 1 aquí y se detiene. Tenga en cuenta que para una palabra de entrada vacía nuestra tarea no está definida, por lo que el MT puede comportarse como desee en esta palabra. En nuestro programa, por ejemplo, si la palabra de entrada está vacía, el MT se detiene y da la respuesta 1. Arriba hemos proporcionado el programa en su forma completa e íntegra. Ahora presentamos el registro del programa de una forma abreviada y más visual, mientras que a la derecha damos una breve explicación de las acciones que se implementan en los estados correspondientes de la máquina: Λ q1,r,r,r,r,r, r,r,r,r,r, l,q2 bajo el último dígito q2 1,! 2,! 3,! 4,! 5,! 6,! 7,! 8,! 9,! 0,L, 1,! número visible + 1 Así es como escribiremos programas en el futuro. Ejemplo 2 (análisis de símbolos) A=(a,b,c). Mueva el primer carácter de una palabra P que no esté vacía hasta el final. Por ejemplo: a b c b b c b a Solución. Para solucionar este problema se propone realizar los siguientes pasos: 1. Recordar el primer carácter de la palabra P, y luego borrar este carácter. 2. Mueva la máquina hacia la derecha debajo de la primera celda vacía más allá de P y escriba el símbolo recordado en ella. Ya sabemos cómo “correr” hacia la derecha en el ejemplo anterior. ¿Pero cómo recuerdas al primer personaje? Después de todo, en MT no existe ningún otro dispositivo de almacenamiento excepto la cinta, y memorizar un símbolo en alguna celda de la cinta no tiene sentido: tan pronto como la máquina se mueve hacia la izquierda o hacia la derecha de esta celda, inmediatamente olvidará este símbolo. ¿Qué hacer? La solución aquí es utilizar diferentes estados de la máquina. Si el primer carácter es a, entonces debe ir al estado q2, en el que la máquina 8


9 corre hacia la derecha y escribe al final de a. Si el primer símbolo fue b, entonces hay que pasar al estado q3, donde se hace lo mismo, solo que al final se escribe el símbolo b. Si el primer símbolo fue c, entonces pasamos al estado q4, en el que la máquina agrega el símbolo c después de la palabra de entrada. En consecuencia, arreglamos cuál fue el primer símbolo transfiriendo la máquina a diferentes estados. Esta es una técnica típica al programar en MT. Teniendo en cuenta lo anterior, el programa quedará así: a b c Λ q1 Λ,R,q2 Λ,R,q3 Λ,R,q4,R, análisis del 1er carácter, borrándolo, bifurcando q2,r,r, r,a,! entrada a a la derecha q3,r,r,r, b,! entrada b a la derecha q4,r,r,r, c,! registro c a la derecha Consideremos el comportamiento de este programa con palabras de entrada que no contengan más de un carácter. Si hay una palabra vacía que es "mala" para la tarea, el programa entrará en un bucle; la máquina, al estar en el estado q1 y terminar constantemente en celdas vacías, se moverá sin cesar hacia la derecha. (Por supuesto, en este caso el programa podría detenerse, pero hicimos un bucle específicamente para demostrar esta posibilidad). Si hay exactamente un carácter en la palabra ingresada, entonces la máquina borrará este carácter y moverá una celda hacia la derecha. y escribe este carácter en él: c c q1 q4! Por lo tanto, una palabra de un carácter simplemente se moverá una celda hacia la derecha. Esto es aceptable. Después de todo, las celdas de la cinta no están numeradas, por lo que la ubicación de la palabra en la cinta no está fijada de ninguna manera y no se puede notar el movimiento de la palabra hacia la izquierda o hacia la derecha. En este sentido, no es necesario que la palabra de salida esté necesariamente en el mismo lugar donde estaba la palabra de entrada; el resultado puede estar a la izquierda o a la derecha de este lugar. Ejemplo 3 (comparar caracteres, borrar una palabra) A=(a,b,c). Si el primer y el último carácter de la palabra P (no vacía) son iguales, no cambie esta palabra; de lo contrario, reemplácela con una palabra vacía. Solución. Para solucionar este problema se propone realizar las siguientes acciones: 1. Recordar el primer carácter de la palabra ingresada sin borrarlo. 2. Mueva la máquina debajo del último símbolo y compárelo con el recordado. Si son iguales, no hagas nada más. 3. De lo contrario, destruya toda la palabra de entrada. Ya sabemos cómo recordar un símbolo y cómo mover la máquina al último símbolo de una palabra de ejemplos anteriores. Se implementa el borrado de la palabra de entrada 9


10 reemplazando todos sus símbolos por el símbolo Λ. En este caso, como el autómata está al final de la palabra, moveremos el autómata de derecha a izquierda hasta la primera celda vacía. Estas acciones se describen en el siguiente programa para MT (recuerde que una cruz en una celda de la tabla significa que la configuración correspondiente no puede aparecer durante la ejecución del programa): a b c Λ q1,q2,q4,q6,! análisis del primer carácter, bifurcación q2,r,r,r, L,q3 ir al último carácter en el primer carácter a q3,!, q8, q8 comparar el último. símbolo con a, no son iguales a q8 (borrar P) q4,r,r,r, L,q5 similar para el 1er símbolo b q5, q8,!, q8 q6,r,r,r, L,q7 similar para el 1er carácter c q7, q8, q8,! q8 Λ,L, Λ,L, Λ,L,! borrar la palabra entera, moviéndose de derecha a izquierda Ejemplo 4 (eliminar un carácter de una palabra) A=(a,b). Elimina el segundo carácter de la palabra P, si lo hay. Solución. Parecería que este problema es fácil de resolver: debe mover la máquina debajo de la celda con el segundo símbolo y luego borrar esta celda: a b b a a b b a a b a Sin embargo, recuerde que no debe haber celdas vacías dentro de la palabra de salida. Por lo tanto, después de eliminar el segundo carácter, debe "comprimir" la palabra moviendo el primer carácter una celda hacia la derecha. Para ello, la máquina debe volver al primer símbolo, recordarlo y borrarlo, y luego, moviéndose nuevamente hacia la derecha, escribirlo en la celda donde estaba el segundo símbolo. Sin embargo, el “viaje” inicial hacia la derecha al segundo símbolo para borrarlo, y el posterior regreso al primer símbolo son acciones innecesarias: ¿qué más da mover el primer símbolo a una celda vacía o a una celda? con algun simbolo? Por lo tanto, inmediatamente recordamos el primer carácter, lo borramos y escribimos en lugar del segundo carácter: a b b a b b a a b a En forma de programa para MT, todo esto se escribe así: a b Λ q1 Λ,R,q2 Λ,R,q3, ! análisis y eliminación del 1er carácter, bifurcación q2,! a,! a,! reemplazando el segundo carácter con q3 b,!,! b,! reemplazando el segundo carácter con b Ejemplo 5 (compresión de palabras) A=(a,b,c). Elimine la primera aparición del carácter a de la palabra P, si la hay. Solución. En el ejemplo anterior, movimos solo un símbolo a la posición de la derecha: 10


11 vol. En este ejemplo, en un bucle moveremos hacia la derecha todos los caracteres iniciales b y c de la palabra de entrada al primer carácter a o a una celda vacía: b c b c b a a b b a a b c a a b c b a El punto central aquí es cómo mover el carácter x desde la izquierda celda a la siguiente celda, donde se encuentra algún carácter y, de modo que entonces ¿podría este símbolo y moverse a la celda correcta? Si por q x denotamos el estado en el que el símbolo x debe escribirse en la celda visible, que anteriormente estaba en la celda de la izquierda, entonces esta acción se puede representar de la siguiente manera: x y y z x z q x Para hacer esto, se propone realice el paso x,r,q y, que combina las siguientes tres acciones: primero, el símbolo x tomado de la celda de la izquierda se escribe en la celda visible; en segundo lugar, la máquina se mueve hacia la derecha debajo de la celda, en la que será necesario escribir el símbolo y recién reemplazado; en tercer lugar, el autómata pasa al estado q y, en el que realizará esta entrada. La repetición de dichos ciclos en un bucle provocará un desplazamiento hacia la derecha de una posición de los caracteres iniciales de la palabra de entrada. Este ciclo debería terminar cuando la siguiente celda contenga el símbolo a o Λ (y=a o y=λ), y al comienzo del ciclo podemos asumir que el símbolo “vacío” (x=λ) se mueve al lugar del primer símbolo de la izquierda. El resultado es el siguiente programa para MT: a b c Λ q1 Λ,R,! Λ,R,q2 Λ,R,q3,! q Λ : borra el primer carácter y lo mueve hacia la derecha q2 b,!,r, b,r,q3 b,! q b: escribe b, mueve el carácter previamente visible hacia la derecha q3 c,! c,r,q2,r, c,! q c: escribiendo c, moviendo hacia la derecha un carácter previamente visible, en este programa hay que prestar atención al ciclo Λ,R,!, que se ejecuta en la configuración , es decir. cuando el primer carácter de la palabra de entrada es a. Está claro que sólo hay que borrar este símbolo y detenerse. Sin embargo, esta medida también indica un giro hacia la derecha. ¿Para qué? Recordemos que en el momento de detenerse el autómata debe estar debajo de la palabra de salida (debajo de cualquiera de sus símbolos), por lo que trasladamos el autómata de una celda vacía a la celda con el primer símbolo de la palabra de salida, que era el segundo. en la palabra de entrada. b q y Ejemplo 6 (insertar un carácter en una palabra) A=(a,b,c). Si P es una palabra que no está vacía, inserte el símbolo a después de su primer carácter. Solución. Está claro que entre el primer y segundo carácter de la palabra P, se debe liberar una celda para un nuevo carácter a. Para hacer esto, mueva 11 una posición hacia la izquierda.


12 el primer carácter (no es necesario que lo elimines en el lugar anterior por ahora) y luego, volviendo al lugar anterior, escribe el carácter a: b c a b c a b b c a b a c a Mover un carácter una posición hacia la izquierda es similar a mover un carácter a la derecha, como se discutió en los dos ejemplos anteriores, por lo que presentamos un programa para MT sin comentarios adicionales. Solo notemos que en los estados q2, q3 y q4 el autómata solo puede ver una celda vacía, y en el estado q5 necesariamente ve el primer carácter de la palabra de entrada, pero no una celda vacía. a b c Λ q1,l,q2,l,q3,l,q4,! análisis del 1er caracter para moverlo a la izquierda q2 a,r,q5 asignar a a la izquierda q3 b,r,q5 asignar b a la izquierda q4 c,r,q5 asignar c a la izquierda q5,! a,! a,! reemplace el primer carácter anterior con un Ejemplo 7 (expansión de palabra) A=(a,b,c). Inserte el carácter a en la palabra P después de la primera aparición del carácter c, si lo hay. Solución. Escaneamos la palabra ingresada de izquierda a derecha hasta una celda vacía o hasta el primer carácter c. En el primer caso, c no está incluido en P, por lo que no hacemos nada. En el segundo caso, necesitamos dejar espacio para el carácter a insertado, para lo cual desplazamos el comienzo de la palabra P (del primer carácter al carácter encontrado c) una posición hacia la izquierda. En este caso, realizamos dicho desplazamiento de derecha a izquierda desde el símbolo c al principio de la palabra, ya que la máquina se encuentra debajo de este símbolo. Además, para no volver luego a la posición desocupada, comenzamos este cambio escribiendo a en lugar del símbolo encontrado c. Dado que este desplazamiento cíclico hacia la izquierda se implementa de manera similar al desplazamiento cíclico hacia la derecha del Ejemplo 5, no lo explicaremos, pero presentaremos inmediatamente el programa para MT: a b c Λ q1,r,r, a,l,q4, yo,! de derecha a c, inserte a en lugar de c, mueva c a la izquierda q2,l, a,l,q3 a,l,q4 a,! moviendo a hacia la derecha q3 b,l,q2,l, b,l,q4 b,! mueve b hacia la derecha q4 c,l,q2 c,l,q3,l, c,! moviendo c desde la derecha Ejemplo 8 (formando una palabra en un lugar nuevo) A=(a,b,c). Elimina todas las apariciones del carácter a de P. Solución. Los ejemplos anteriores muestran que en MT es bastante difícil implementar la inserción de caracteres en palabras y la eliminación de caracteres de palabras. Por lo tanto, a veces es más fácil no expandir o comprimir la palabra de entrada, sino formar una capa de salida - 12


13 en otro lugar libre de la cinta. Esto es exactamente lo que haremos al resolver este problema. En concreto se propone realizar las siguientes acciones: 1. Construiremos la palabra de salida a la derecha de la palabra de entrada. Para distinguir estas palabras, las separamos con algún símbolo auxiliar, por ejemplo el signo =, diferente a todos los símbolos del alfabeto A (ver paso 1). (Recuerde que en la cinta no sólo se pueden grabar caracteres del alfabeto de la palabra ingresada). 2. Después de esto, volvemos al principio de la palabra ingresada (consulte el paso 2). a b c a b c = a b c = Ahora nuestra tarea es mover en un bucle todos los caracteres de la palabra de entrada, excepto a, hacia la derecha más allá del signo = hacia la palabra de salida generada. Para ello, analizamos el primer carácter de la palabra de entrada. Si es un, bórrelo y pase al siguiente carácter (consulte el paso 3). Si el primer carácter es b o c, entonces lo borramos y “corremos” hacia la derecha hasta la primera celda vacía (ver paso 4), donde escribimos este carácter (ver paso 5). b c = c = c = b Nuevamente regresamos a la izquierda al símbolo que se convirtió en el primero en la palabra ingresada y repetimos las mismas acciones, pero en relación con este símbolo (ver pasos 6-9). c = b = b = b c Este bucle termina cuando volvemos a la izquierda y vemos el signo = como primer carácter. Esta es una señal de que hemos escaneado completamente la palabra de entrada y transferido todos sus caracteres excepto a a la palabra de salida generada a la derecha. Debe borrar este signo, moverse hacia la derecha debajo de la palabra de salida y detenerse (consulte el paso 10). = b c b c 9 10 Teniendo en cuenta todo lo dicho, estamos construyendo un programa para MT. Al mismo tiempo, notamos que además de los símbolos a, byc, en el proceso de resolución del problema, aparece el signo = en la cinta, por lo que la tabla debe tener una columna para este signo. a b c = Λ q1,r,r,r, =,q2 escribe a la derecha el signo = q2,l,l,l,l,r,q3 a la izquierda al 1er caracter de la palabra q3 Λ,R, Λ ,R,q4 Λ, R,q5 Λ,R,! analizándolo y borrándolo, bifurcando q4,r,r,r,r, b,q2 escribiendo b a la derecha, regresando a la izquierda (al bucle) q5,r,r,r,r, c,q2 escribiendo c a la derecha, volviendo a la izquierda (para andar en bicicleta) 13


14 Ejemplo 9 (fijar un lugar en la cinta) A=(a,b). Duplica la palabra P colocando un signo = entre ella y su copia. Por ejemplo: a a b a a b = a a b Solución. Este problema se resuelve de manera similar al anterior: escribimos el signo = al final de la palabra de entrada, luego volvemos al principio de la palabra y en un bucle copiamos todos sus caracteres (incluida a) en celdas vacías del derecha: a a b a a b = a a b = a a b = a 1 2 Sin embargo, también hay una diferencia: los caracteres copiados de la palabra de entrada no se eliminan, y esto conduce al siguiente problema. Habiendo escrito una copia del siguiente carácter a la derecha, debemos regresar a la palabra ingresada en la posición de este carácter y luego movernos hacia la derecha hasta el siguiente carácter para copiarlo. Pero, ¿cómo saber a qué posición en la palabra ingresada debe regresar? Por ejemplo, ¿cómo sabemos en nuestro ejemplo que después de copiar el primer carácter a, debemos volver al primer carácter de la palabra de entrada y no al segundo o tercero? En el problema anterior, siempre volvimos al primer carácter restante de la palabra ingresada, pero ahora guardamos todos los caracteres, por lo que no está claro qué caracteres ya hemos copiado y cuáles aún no. También notamos que en MT las celdas de la cinta no están numeradas de ninguna manera y no hay contadores en MT que nos permitan determinar cuántos caracteres ya hemos copiado. En términos generales, el problema al que nos enfrentamos es el siguiente: ¿cómo fijar en la cinta una determinada posición en la que ya hemos estado y a la que luego debemos volver? Este problema suele solucionarse así. Cuando nos encontramos por primera vez en esta posición, reemplazamos el símbolo ubicado en ella con su doble por un nuevo símbolo auxiliar, y reemplazamos diferentes símbolos por diferentes dobles, por ejemplo, a por A y b por B. Después de esto , realizamos algunas acciones en otros lugares de la cinta. Para luego regresar a nuestra posición, simplemente debemos buscar la celda de la cinta donde se encuentra el símbolo A o B. Luego en esta celda podemos restaurar el símbolo anterior si ya no necesitamos fijar esta posición (era para restaurar el símbolo anterior que teníamos que reemplazar diferentes símbolos por diferentes dobles). Usemos esta técnica en nuestra tarea realizando los siguientes pasos: 1. Como ya se dijo, primero escribimos el signo = detrás de la palabra de entrada (consulte el paso 1 arriba). 2. Luego regresamos bajo el primer carácter de la palabra ingresada (consulte el paso 2 anterior). 3. Luego, reemplace el símbolo visible a con una doble A (consulte el paso 3 a continuación), “corra” hacia la derecha hasta la primera celda libre y escriba el símbolo a en ella (consulte el paso 4). Después de esto, volvemos a la izquierda a la celda con doble A (ver. paso 5), restablezca el símbolo anterior a y avance hacia la derecha hasta el siguiente símbolo (consulte el paso 6). 14


15 a a b = A a b = A a b = a A a b = a a a b = a a A b = a a A b = a a a a B = a a b a a b = a a b Ahora copie el segundo carácter de la misma manera (reemplácelo con A, agregue a al final, etc. ) y todos los caracteres posteriores de la palabra de entrada. 4. Cuando copiamos el último carácter de la palabra de entrada y volvemos a su doble (después del paso 12), luego de desplazarnos una posición hacia la derecha llegaremos al signo = (paso 13). Esta es una señal de que la palabra de entrada se ha copiado por completo, por lo que se debe completar el trabajo del MT. Teniendo en cuenta todo lo dicho, obtenemos el siguiente programa para MT: a b = A B Λ q1,r,r, =,L,q2 poner = a la derecha de la palabra q2,l,l,r,q3 a la izquierda debajo del primer carácter q3 A,R, q4 B,R,q5,! análisis y reemplazo del siguiente carácter q4,r,r,r, a,q6 escribiendo a a la derecha q5,r,r,r, b,q6 escribiendo b a la derecha q6,l,l,l, a,r ,q3 b,r, q3 retorno, recuperación, al siguiente. símbolo Tenga en cuenta que en este programa puede deshacerse del estado q6 si lo combina con el estado q2, proporcionando en q2 un retorno a la izquierda tanto a la celda vacía como a los símbolos A y B: a b = A B Λ... q2 ,l,l ,l, a,r,q3 b,r,q3,r,q3 a la izquierda hasta Λ, A o B Problemas para solución independiente Notas: 1) Los problemas consideran sólo números enteros no negativos, a menos que se indique lo contrario. 2) Por sistema numérico “unitario” nos referimos a escribir un número entero no negativo usando palos; se deben escribir tantos palos como el valor del número; por ejemplo: 2, 5, 0<пустое слово>. 1.1 A=(a,b,c). Agregue el símbolo b (P bp) a la izquierda de la palabra P. 1.2 A=(a,b,c). Añade los símbolos bc (P Pbc) a la derecha de la palabra P. 1.3 A=(a,b,c). Reemplace cada segundo carácter en la palabra P con a. 15


16 1.4 A=(a,b,c). Deje solo el primer carácter de la palabra P (no cambie la palabra vacía). 1,5 A=(a,b,c). Deje solo el último carácter de la palabra P (no cambie la palabra vacía). 1,6 A=(a,b,c). Determina si P es la palabra ab. Respuesta (palabra de salida): la palabra ab si lo es, o la palabra vacía en caso contrario. 1,7 A=(a,b,c). Determina si la palabra P contiene el carácter a. Respuesta: una palabra de un carácter a (sí, incluido) o una palabra vacía (no). 1,8 A=(a,b,c). Si la palabra P no contiene el carácter a, reemplace todos los caracteres b en P con c; de lo contrario, como respuesta, proporcione una palabra que consta de un carácter a. 1.9 A=(a,b,0,1). Determine si la palabra P es un identificador (una palabra no vacía que comienza con una letra). Respuesta: palabra a (sí) o palabra vacía (no) A=(a,b,0,1). Determine si la palabra P es un número binario (una palabra no vacía que consta únicamente de los dígitos 0 y 1). Respuesta: palabra 1 (sí) o palabra A=(0,1). Considerando que una palabra P no vacía es un registro de un número binario, elimine los ceros insignificantes de ella, si los hay A=(0,1). Para una palabra P no vacía, determine si es una potencia de dos (1, 2, 4, 8) en binario. Respuesta: palabra 1 (es) o palabra A=(0,1,2,3). Considerando que una palabra P no vacía es un número en el sistema numérico cuaternario, determine si es un número par o no. Respuesta: 1 (sí) o A=(0,1). Considerando una palabra P no vacía como un número en el sistema binario, obtenga un número binario igual a cuadriplicar el número P (por ejemplo:) A=(0,1). Considerando que una palabra P no vacía es un número en el sistema binario, obtenga un número binario igual al cociente parcial de dividir el número P por 2 (por ejemplo:) A=(a,b,c). Si P es una palabra de longitud par (0, 2, 4,), entonces dé la respuesta a; de lo contrario, una palabra vacía A = (0,1,2). Considerando que una palabra P no vacía es un número en el sistema numérico ternario, determine si es un número par o no. Respuesta: 1 (sí) o 0. (Nota: un número ternario par debe tener un número par de dígitos 1.) 1.18 A=(a,b,c). Sea P una longitud impar. Deje en P solo el símbolo del medio A=(a,b,c). Si la palabra P tiene una longitud par, deje solo la mitad izquierda A=(a,b,c) en ella. Agregue su primer carácter a la izquierda de la palabra P que no esté vacía. dieciséis


17 1.21 A=(a,b). Para una palabra P que no esté vacía, determine si su primer carácter aparece nuevamente. Respuesta: a (sí) o la palabra vacía A=(a,b). En una palabra P que no esté vacía, intercambie su primer y último carácter A=(a,b). Determina si P es un palíndromo (palabra simétrica e invertida) o no. Respuesta: a (sí) o la palabra vacía A=(a,b). Reemplace cada aparición de a en P con bb A=(a,b,c). Reemplace cada aparición de ab en P con c A=(a,b). Duplica la palabra P (por ejemplo: abb abbabb) A=(a,b). Duplica cada carácter de la palabra P (por ejemplo: bab bbaabb) A=(a,b). Invierte la palabra P (por ejemplo: abb bba) A=(0,1). Considerando una palabra P no vacía como un número binario, se obtiene el mismo número, pero en el sistema cuaternario. (Nota: tenga en cuenta que un número binario puede tener un número impar de dígitos). 1,30 A=(0,1,2,3). Considerando que una palabra P no vacía es un número en el sistema numérico cuaternario, obtenga un registro de este número en el sistema binario A = (0,1,2). Considerando que una palabra P no vacía es un registro de un número positivo en el sistema numérico ternario, reduzca este número en A=( ). Considerando que la palabra P es un registro de un número en el sistema numérico unitario, obtenga un registro de este número en el sistema ternario. (Recomendación: en un ciclo se debe quitar un palito del número “unidad” y cada vez sumar 1 al número ternario, que inicialmente fue igual a 0.) 1,33 A=(0,1,2). Considerando que una palabra P no vacía es un registro de un número en el sistema numérico ternario, obtenga un registro de este número en el sistema unitario. Sea la palabra P la siguiente forma: (... (... n m donde uno de los signos es +, /, o, a la izquierda del cual se indican n palos, y a la derecha m palos. Implemente la operación correspondiente en el sistema numérico unitario (como respuesta, dé la palabra indicada al derecha de la flecha): a) suma: (... + (... (... (n 0, m 0) n m n+ m b) resta: (... (... (... (n m 0) n m n m c) multiplicación: (... (... (... (n 0, m 0) n m n m d) división por un número entero: ((... /... (... (n 0, m >0, k=n div m) n m k d) tomando el resto: (... (... (... (n 0, m>0, k=n mod m) n m k 17


18 f) máximo: (... (... (... (n 0, m 0, k=max(n,m)) n m k f) mínimo: (... (... (... ( n 0, m 0, k=min(n,m)) k n m 1.35 A=( ) Considerando que la palabra P es un número en el sistema de unidades, determine si este número es una potencia de 3 (1, 3, 9, 27,). Respuesta: una palabra vacía, si lo es, o una palabra de un palo en caso contrario A = ( ) Considerando que la palabra P es un registro del número n en el sistema unitario, obtenga en el mismo sistema el número 2 n A = ( ) Sea la palabra P un registro del número 2 n (n=0, 1, 2,) en el sistema de unidades. Obtenga el número n en el mismo sistema. Sea P la forma Q+R, donde Q y R son palabras no vacías de los símbolos 0, 1 y 2. Al tratar a Q y R como números de registro en el sistema numérico ternario (posiblemente con ceros insignificantes), dé como respuesta un registro de la suma de estos números en el mismo sistema ternario. Sea P tener la forma Q R, donde Q y R son palabras no vacías de los símbolos 0, 1 y 2. Interpretar Q y R como registros de números en el sistema numérico ternario (posiblemente con ceros insignificantes) y suponiendo que Q R, dé como respuesta un registro de la diferencia de estos números en el mismo sistema ternario. Sea P tenga la forma Q=R, donde Q y R son palabras cualesquiera de los símbolos a y b. Dé la respuesta a si las palabras Q y R son iguales, y una palabra vacía en caso contrario. Sea P de la forma Q=R, donde Q y R son palabras no vacías de los caracteres 0 y 1. como notaciones de números binarios (posiblemente con ceros insignificantes), dé como respuesta la palabra 1 si estos números son iguales, y en caso contrario la palabra 0. Sea P la forma Q>R, donde Q y R son palabras no vacías de los símbolos 0 y 1. Al tratar Q y R como registros de números binarios (posiblemente con ceros insignificantes), genera la palabra 1 como respuesta si el número Q es mayor que el número R, y la palabra 0 en caso contrario A=((,)) . Determina si la palabra P está equilibrada entre paréntesis. Respuesta: D (sí) o N (no) A=(a,b). Si hay más caracteres a que b caracteres en P, entonces genere la respuesta a; si hay menos caracteres a que b caracteres, entonces genere la respuesta b; de lo contrario, genere una palabra vacía como respuesta. 2. Algoritmos normales de Markov Esta sección analiza los problemas de construcción de algoritmos normales de Markov. Se proporciona una breve descripción de estos algoritmos, se explican los métodos principales de su compilación con ejemplos y se proponen problemas para su solución independiente. 18


19 2.1 Breve descripción de los algoritmos normales de Markov Sustituciones Una característica interesante de los algoritmos normales de Markov (NAM) es que utilizan sólo una acción elemental, la llamada sustitución, que se define de la siguiente manera. Una fórmula de sustitución es una notación de la forma α β (léase “reemplazar α con β”), donde α y β son palabras cualquiera (posiblemente vacías). En este caso, α se denomina lado izquierdo de la fórmula y β es el lado derecho. La sustitución en sí (como acción) se especifica mediante la fórmula de sustitución y se aplica a una determinada palabra P. La esencia de la operación es que en la palabra P la parte que coincide con el lado izquierdo de esta fórmula (es decir, con α) es se encuentra y se reemplaza con las fórmulas del lado derecho (es decir, en β). En este caso, las partes restantes de la palabra P (a la izquierda y a la derecha de α) no cambian. La palabra resultante R se llama resultado de la sustitución. Convencionalmente, esto se puede representar de la siguiente manera: P x α y R x β y Aclaraciones necesarias: 1. Si el lado izquierdo de la fórmula de sustitución está incluido en la palabra P, entonces dicen que esta fórmula es aplicable a P. Pero si α no está incluido en P, entonces se considera que la fórmula no es aplicable a P y no se realiza la sustitución. 2. Si el lado izquierdo α aparece en P varias veces, entonces, por definición, sólo la primera aparición de α en P se reemplaza con el lado derecho β: P x α y α z R x β y α z 3. Si el lado derecho de la fórmula de sustitución hay una palabra vacía , entonces la sustitución α se reduce a eliminar la parte α de P (notamos de pasada que en las fórmulas de sustitución no es costumbre designar una palabra vacía de ninguna manera): P x α y R x y 4. Si se indica una palabra vacía en el lado izquierdo de la fórmula de sustitución, entonces la sustitución β se reduce, por definición, a asignar β en el lado izquierdo a la palabra P: P x R β x De esta regla se desprende un hecho muy importante : una fórmula con el lado izquierdo vacío es aplicable a cualquier palabra. Tenga en cuenta también que una fórmula con los lados izquierdo y derecho vacíos no cambia la palabra. Definición de NAM Un algoritmo normal de Markov (NAM) es un conjunto ordenado finito no vacío de fórmulas de sustitución: 19


20 α1 β1 α 2 β 2... (k 1) α k β k Se pueden usar dos tipos de flechas en estas fórmulas: una flecha regular () y una flecha con cola (a). Una fórmula con una flecha regular se llama fórmula regular y una fórmula con una flecha con cola se llama fórmula final. La diferencia entre ellos se explica a continuación. Escribir un algoritmo en forma de NAM significa presentar dicho conjunto de fórmulas. Reglas para ejecutar NAM En primer lugar, se proporciona una palabra de entrada R. No importa dónde esté escrito exactamente, esta pregunta no está especificada en NAM. El trabajo del NAM se reduce a realizar una secuencia de pasos. En cada paso, las fórmulas de sustitución incluidas en el NAM se revisan de arriba a abajo y se selecciona la primera de las fórmulas aplicables a la palabra de entrada P, es decir el superior de aquellos cuyo lado izquierdo está incluido en P. A continuación, se realiza la sustitución de acuerdo con la fórmula encontrada. Se obtiene una nueva palabra P. En el siguiente paso, esta palabra P se toma como la original y se le aplica el mismo procedimiento, es decir. se vuelven a escanear las fórmulas de arriba a abajo comenzando por la superior y se busca la primera fórmula aplicable a la palabra P, tras lo cual se realiza la sustitución adecuada y se obtiene una nueva palabra P. Y así sucesivamente: R R R Se debe prestar especial atención Se presta atención al hecho de que en cada paso de la fórmula en NAM siempre se ven comenzando desde el primero. Aclaraciones necesarias: 1. Si en el siguiente paso se aplicó la fórmula habitual (α β), entonces el trabajo del MNOAL continúa. 2. Si en el siguiente paso se aplicó la fórmula final (α a β), luego de su aplicación se detiene el trabajo del NAM. La palabra que salió en este momento es la palabra de salida, es decir. el resultado de aplicar NAM a la palabra de entrada. Como puede ver, la diferencia entre la fórmula de sustitución habitual y la final se manifiesta sólo en el hecho de que después de aplicar la fórmula habitual, el trabajo de NAM continúa y después de la fórmula final se detiene. 3. Si en el siguiente paso no se aplica ninguna fórmula a la palabra actual, en este caso el trabajo de NAM se detiene y la palabra actual se considera la palabra de salida. Por lo tanto, el NAM se detiene por dos razones: o se aplicó la fórmula final o ninguna de las fórmulas coincidía. Ambos se consideran “buenos” finales para el trabajo de NAM. En ambos casos decimos que NAM se aplica a la palabra de entrada. 20



Universidad Estatal de Moscú que lleva el nombre de M.V. Facultad Lomonosov de Matemática Computacional y Cibernética V.N. Pilshchikov, V.G. Abramov, A.A. Vylitok, I.V. Máquina caliente de Turing y algoritmos de Markov.

MÁQUINA DE TURING EN EL ESTUDIO DE LA TEORÍA DE ALGORITMOS Lebedeva N.Yu. Sucursal Shuya de la Universidad Estatal de Ivanovo MÁQUINA DE TURNEO EN EL ESTUDIO DE LA TEORÍA DE ALGORITMOS Lebedeva N. Yu. Sucursal Shuya

SUMA Sumar 1 a un número significa obtener el número siguiente al dado: 4+1=5, 1+1=14, etc. Sumar los números 5 significa sumar uno a 5 tres veces: 5+1+1+1=5+=8. RESTA Restar 1 de un número significa

Problemas y soluciones de la ronda de clasificación de la Olimpiada DMIT 2014-2015 Todos los problemas, manipuladores y soluciones están disponibles para los participantes en el sitio web de la Olimpiada. Todas las tareas propuestas fueron evaluadas con el mismo número de puntos. Gráficos.

Máquina de Turing 1 La máquina de Turing es un concepto matemático, no una máquina informática real. MT es un modelo matemático de un dispositivo informático. La MT fue propuesta por Alan Turing en 1936.

Resolviendo problemas en la máquina de Turing en línea >>> Resolviendo problemas en la máquina de Turing en línea Resolviendo problemas en la máquina de Turing en línea El contenido de la celda puede cambiar, puede escribir otro símbolo en ella o borrarlo

Sistemas numéricos Hoy en día, la gente se topa con números todo el tiempo. Desde la infancia, todos estamos familiarizados con la notación de números generalmente aceptada utilizando números arábigos. Sin embargo, este método de grabación estuvo lejos de ser utilizado

Algoritmo implementado Usamos la siguiente variación del algoritmo euclidiano para calcular el mcd de los números M y N:. aM, bN; 2. t a-b, si t = 0, detente; 3. a t, b min(a,b), vaya al paso 2. Después de detener MCD(M,N)

Problemas de la ronda de clasificación de la Olimpiada en matemáticas discretas e informática teórica con soluciones (al resolver problemas constructivos, el participante trabaja con emuladores, las soluciones contienen imágenes de sus interfaces)

Capítulo B. Lección de aritmética informática B3. Aritmética Binaria Veamos cómo te fue con los ejercicios de la Lección B2. Aquí están sus soluciones. Ejercicios B2-2 a) La tabla de colocación de pesos se ve así: en numeración

Lección 23 En las condiciones de los problemas, M, x significan, respectivamente, una descripción de la máquina de Turing y la palabra de entrada en el formato que se introdujo en la conferencia (y escrito en el borrador del libro de texto). Problema 23.1. Pruebalo

Sección 6. Teoría de algoritmos. Concepto informal de algoritmo, sus principales características y propiedades. Alfabeto, palabras, algoritmo en el alfabeto. Algoritmos bastante equivalentes. Definición de un algoritmo normal (algoritmo

SISTEMAS NUMERALES POSICIONALES Hay muchas formas de representar números. En cualquier caso, un número está representado por un símbolo o un grupo de símbolos (una palabra) de algún alfabeto. Llamaremos a tales símbolos

Asignaciones para el grado 11 Etapa de clasificación. Primera ronda 1. Codificación de información. Sistemas numéricos (2 puntos) [Permutaciones] ¿Cuántos números hexadecimales de tres dígitos hay para los cuales habrá ambos?

Resolución de problemas sobre el tema “Representación de números en una computadora” Tipos de problemas: 1. Números enteros. Representación de números en formato de punto fijo. 2. Números fraccionarios. Representación de números en formato de coma flotante.

1. Caballeros y bribones. Diagrama lógico - 1. Problemas y soluciones de la ronda de tiempo completo de los Juegos Olímpicos Dmitry-2017-2018 Cuatro personas están sentadas en una mesa redonda. Cada uno de ellos es un caballero o un mentiroso. Los caballeros siempre hablan solo

Sistemas numéricos Un sistema numérico es una forma de escribir números utilizando un conjunto determinado de caracteres especiales (dígitos). En informática se utilizan sistemas numéricos posicionales, en los que el valor de un dígito es

TEMA 3. Algoritmos de procesamiento de arrays unidimensionales. Objeto de la conferencia: Introducción al concepto de matriz. Adquirir habilidades en la construcción de algoritmos diseñados para el procesamiento de matrices unidimensionales. 6. Algoritmos

Versión de demostración de la tarea 6 del Examen Estatal Unificado de 2019. A la entrada del algoritmo se introduce un número natural N. A partir de él, el algoritmo construye un nuevo número R de la siguiente manera. 1) Se construye un registro binario del número N. 2) A este registro

Introducción a los sistemas numéricos A.A. Vylitok El sistema numérico es una forma de registrar números utilizando un conjunto determinado de caracteres especiales (dígitos). Hay sistemas numéricos posicionales y no posicionales. En no posicional

Parte III Lenguas, gramáticas, autómatas 137 Capítulo 10 Lenguas y autómatas finitos 10.1 Lengua de Dick Como sabemos, las estructuras regulares entre paréntesis se enumeran mediante números catalanes. Anotemos todos los paréntesis correctos.

Etapa municipal de la Olimpiada de toda Rusia para escolares de informática Moscú, 0 de diciembre. Tareas para los grados 7-8 Cada tarea recibe 0 puntos. La puntuación final se obtiene como la suma de puntos de las tareas.

Máquinas virtuales Introducción Hace más de cuarenta años, el destacado matemático estadounidense Emil L. Post publicó un artículo en el Journal of Symbolic Logic, “Finite Combinatorial Processes, Formulation!” (su

Yugra Liceo de Física y Matemáticas VP Chuvakov Problema C6 (Teoría de números en el Examen Estatal Unificado) Manual educativo y metodológico Khanty-Mansiysk 0 VP Chuvakov Problema C6 (Teoría de números en el Examen Estatal Unificado): Manual educativo y metodológico, - Khanty-Mansiysk,

9 GRADO 1. En una de las celdas de papel cuadriculado infinito hay un robot al que se le pueden dar los siguientes comandos: arriba (el robot se mueve a la celda adyacente desde arriba); hacia abajo (el robot se mueve hacia

Sistemas numéricos Un sistema numérico es una forma de escribir números utilizando un conjunto determinado de caracteres especiales (dígitos). Hay sistemas numéricos posicionales y no posicionales. En sistemas no posicionales, el peso

Sistemas numéricos Un sistema numérico es una forma de describir números utilizando signos de un determinado alfabeto según reglas conocidas. Sistemas numéricos posicionales En un sistema numérico posicional, el valor de un dígito depende

K. Polyakov, 009-06 6- (nivel básico, tiempo 4 min) Tema: Búsqueda de un algoritmo de duración mínima para el intérprete. Lo que necesita saber: el artista es una persona, grupo de personas, animal, máquina u otro objeto,

Conferencia 5 Conceptos básicos de la presentación de información en máquinas digitales Sistemas numéricos posicionales Un sistema numérico es un conjunto de técnicas y reglas para escribir números en signos digitales. Cualquier intención

Elementos de la teoría de la complejidad Máquina de Turing Alan Turing (23/06/1912-7/06/1954) (Alan Mathison Turing) Matemático, lógico y criptógrafo inglés. En 1936 propuso una “máquina de Turing” informática abstracta.

Ministerio de Educación y Ciencia de la Federación de Rusia Institución educativa estatal de educación profesional de la Federación de Rusia "Universidad Estatal de Rostov" M. E. Abrahamyan

GRADO 10 1. Los números reales satisfacen las relaciones: Encuentra todos los tripletes posibles de números, donde Solución. Tenga en cuenta que denotemos y restemos estas igualdades entre sí, obtenemos Supongamos que todas

Apéndice del artículo Gorbunov K.Yu., Lyubetsky V.A. “Algoritmo lineal para una reestructuración mínima de estructuras” Prueba del Lema 3. Llamemos rígido, semirrígido a un bloque delimitado por ambos lados por genes comunes

Apéndice 1 Trabajo práctico del Capítulo 2 “Representación de información en una computadora” Trabajo práctico del párrafo 2.1 Ejemplo 2.1. Presente los números 2466.675 10, 1011.11 2 como una expansión a potencias de la base.

Liceo de Física y Matemáticas por correspondencia "Avangard" E. N. Filatov ÁLGEBRA 8 Libro de texto experimental Parte 1 MOSCÚ 2016 CONTENIDO 1. Divisibilidad. 2. Par impar 3. Conjuntos. 4. Tareas divertidas. 5. Combinatoria

Libro de problemas de informática para estudiantes de la undécima clase de física y matemáticas de la escuela secundaria 36 en Vladimir Parte II 2016-2017 2 1. Algoritmización. 1.1 Alguna operación en dos arbitrarios.

Tema 7. Presentación de información en un ordenador Unidades de información. Bit - (dígito bit-biry - dígito binario) la unidad más pequeña de información: la cantidad necesaria para distinguir entre dos eventos igualmente probables.

I. V. Yakovlev Materiales sobre matemáticas MathUs.ru Contenido Notación decimal 1 Olimpiada de matemáticas para escolares de toda Rusia.................... 1 2 Olimpiada de Matemáticas de Moscú ......... .................

Tema 1: Sistemas de ecuaciones lineales A. Ya. Ovsyannikov Instituto de Matemáticas e Informática de la Universidad Federal de los Urales Departamento de Álgebra y Matemáticas Discretas Álgebra y Geometría para Ingenieros Físicos

Capítulo 5 Elementos de la teoría de algoritmos 31 Aclaración del concepto de algoritmo Palabras clave: teoría algorítmica de algoritmos ejecutor universal Máquina de Turing Post máquina normal Algoritmo de Markov ¿Por qué es necesario?

Resolver problemas sobre el tema "Representación de números en una computadora". Tipos de tareas. 1. Números enteros. Representación de números en formato de punto fijo. 2. Números fraccionarios. Representación de números en formato flotante.

A. Shen Juegos y estrategias desde el punto de vista de las matemáticas, MCSME Juegos simples y clasificación de posiciones Hay 12 partidos en la mesa. Los jugadores que se turnan pueden jugar de uno a tres partidos. ¿Quién no puede hacer un movimiento?

Teoría de algoritmos 79 3.2. Algoritmos normales j Sea A un alfabeto que no contiene símbolos. Y. Una fórmula de sustitución ordinaria es una notación de la forma P Q, donde P y Q son algunas palabras del alfabeto A. Final

TEMA 2. Algoritmos de estructura cíclica. Objeto de la conferencia: Introducción al concepto de algoritmo de estructura cíclica. Adquirir habilidades en la construcción de algoritmos para una estructura cíclica. 5. Algoritmos cíclicos

Conferencias sobre Matemáticas. vol. TMM-1 Yu.V.Chebrakov TEORÍA DE LAS MATRICES MÁGICAS San Petersburgo, 2010 UDC 511+512 BBK 22 Ch345 REVISORES: Doctor en Ciencias Físicas y Matemáticas, Profesor San Petersburgo. tecnología.

Trabajo practico. Formularios para representar información numérica en una computadora. Parte I. Sistemas numéricos. Un sistema numérico es una forma de representar cualquier número usando algún alfabeto.

Instituto de Física y Tecnología de Moscú Facultad de Innovación y Altas Tecnologías Lógica matemática y teoría de algoritmos, otoño de 2018 Seminario 1: un lenguaje para registrar enunciados formales, con soluciones a algunos

Conferencia 16. Máquina universal de Turing Matemáticas discretas, Escuela Superior de Economía, Facultad de Informática (otoño de 2014, primavera de 2015) La propiedad más importante de las funciones computables es la existencia de un computable universal

16 (nivel avanzado, tiempo min) Tema: Codificación numérica. Sistemas numéricos. Lo que necesita saber: los principios de codificación de números en sistemas numéricos posicionales para convertir un número, digamos 15, del sistema

2015 Expresiones regulares Soluciones a problemas de la ronda de clasificación (dos opciones) Opción 1 Construir una expresión regular que describa un conjunto de palabras de las letras a y b, del cual se han eliminado todas las palabras especificadas por la expresión regular



¿Te gustó el artículo? Compártelo