¿Por qué el no determinismo es un concepto útil?

23

Un autómata es un modelo abstracto de una computadora digital. Las computadoras digitales son completamente deterministas; su estado en cualquier momento es únicamente predecible a partir de la entrada y el estado inicial.

Cuando intentamos modelar sistemas reales, ¿por qué incluir el no determinismo en la teoría de Autómatas?

tanmoy
fuente
1
Posiblemente ayudaría preguntar quién describió originalmente las MNA y cuál era su propósito / objetivo en ese momento.
usul
2
Tenga en cuenta que el hecho de que la máquina sea determinista no siempre significa que nuestro código lo sea. Cualquiera que haya realizado multitareas / subprocesos múltiples puede dar fe del hecho de que los momentos en que se produce el cambio de tareas a menudo es impredecible en términos prácticos y tenemos que diseñar enclavamientos explícitos para que su comportamiento parezca determinista. (Básicamente, hay variables ocultas en el estado). Las comunicaciones plantean el mismo problema. Honestamente, no sé si los NDA ayudan a abordarlos, soy ingeniero de software, no informático, pero en el mundo real su premisa es demasiado optimista.
keshlam
Cuando habla de subprocesamiento múltiple, posiblemente, no tiene determinismo, al menos si considera que el metal y el sistema operativo forman la máquina. Lo curioso es que el código en sí es determinista.
Raphael
@ Raphael, @keshlam En otras palabras, podemos decir que "los modelos no deterministas también son útiles para simular la ejecución paralela de código"
Grijesh Chauhan
@keshlam Agregué tu punto en mi respuesta, @ Tanmoy read actualizó mi respuesta.
Grijesh Chauhan

Respuestas:

16

Sí, tienes razón, las computadoras son automáticas deterministas. Los modelos no deterministas son más útiles para fines teóricos, a veces la solución determinista no es tan obvia para la definición (o decir enunciado del problema) y es tan difícil encontrar una solución. Entonces, un enfoque es que primero diseñe un modelo no determinista que pueda ser comparativamente fácil de diseñar y luego intente convertirlo en uno determinista. A continuación, he tratado de demostrar lo que quiero decir con un ejemplo. Considere la expresión regular:

(01)*01(0 + 1)*  

Ahora suponga, si se le pide que dibuje DFA para el lenguaje generado por el RE anterior.

Con mis conocimientos de diseño de AF, sé que (1) cuando un *presente en expresiones regulares indica que necesito bucle correspondiente en la FA (2) operaciones concatenar al igual que a.bsignifica algo así como: .(q0)─a→(q1)─b→(q2)

Entonces, en mi primer intento, dibujaría un NFA como:

higo

Pensé que esta no es una solución determinista, pero parece una FA muy simple que se puede diseñar fácilmente usando la expresión regular dada. Mi tipo de analogía para mostrar similitud entre la expresión regular anterior y mi NFA es la siguiente:

  1. El bucle en el estado q 0 debe ser para(01)*
  2. 01(después (01)*) da(q0)─0→(q1)─1→(q2)
  3. (0 + 1)* da un bucle automático en el estado q 2 para la etiqueta 0, 1

De acuerdo con mi analogía, creo que el FA que dibujé anteriormente es relativamente simple de extraer de un RE dado. Y afortunadamente, en la clase de autómatas finitos, cada modelo no determinista se puede convertir en uno determinista equivalente. Tenemos un método algorítmico para convertir un NFA en DFA . Entonces puedo convertir fácilmente el NFA anterior en un DFA:

Figura 2

Desafortunadamente, otra parte es que esto no siempre es posible convertir un modelo no determinista en uno determinista, por ejemplo, la clase de automatismo de empuje determinista es un subconjunto de la clase de automatismo de empuje determinista "verifique el diagrama de Venn " y no siempre puede convertir un NPDA en un PDA.

Por lo general, cuando no es posible convertir una solución no determinista en una solución determinista, con la ayuda de una solución no determinista definimos la solución determinista en el subdominio (o digamos dominio parcial) en lugar del dominio completo. O definimos la solución de alguna otra manera (por ejemplo, un enfoque codicioso) que, por supuesto, puede no brindarle una solución óptima .

A veces, el no determinismo es un mecanismo efectivo para describir un problema / solución complicado de manera precisa y efectiva, por ejemplo, las máquinas no deterministas pueden servir como modelo de algoritmo de búsqueda y retroceso (léase: Cómo procesar cadenas en un modelo no determinista usando retroceso ) Los modelos deterministas opuestos representan mejor soluciones eficientes, minimizadas y menos redundantes.

Aquí también me gustaría citar de Wikipedia Uso del algoritmo no determinista :

En el diseño de algoritmos, los algoritmos no deterministas a menudo se usan cuando el problema resuelto por el algoritmo permite inherentemente múltiples resultados (o cuando hay un único resultado con múltiples rutas por las cuales se puede descubrir el resultado, cada uno igualmente preferible). De manera crucial, cada resultado que produce el algoritmo no determinista es válido, independientemente de las elecciones que realice el algoritmo mientras se ejecuta.

Se puede conceptualizar una gran cantidad de problemas a través de algoritmos no deterministas, incluida la pregunta no resuelta más famosa en teoría de la computación, P vs NP.

Como @keshlam también mencionó en su comentario : "El no determinismo" se usa en la práctica para referirse a cualquier imprevisibilidad en el resultado de algún proceso. Por ejemplo, los programas concurrentes exhiben un comportamiento no determinista: dos ejecuciones del mismo programa con la misma entrada pueden producir resultados diferentes (si no se aplica el mecanismo de control de concurrencia ). Lea más sobre esto en "Utilidad del no determinismo" .

También le sugiero que lea los siguientes enlaces:
1. ¿Cuál es la diferencia entre el no determinismo y la aleatoriedad?
2. 9.2.2 Modelos no deterministas versus modelos probabilísticos: (a). No determinista: No tengo idea de lo que hará la naturaleza. (si). Probabilista: He estado observando la naturaleza y recopilando estadísticas.
3. Programación no determinista

Grijesh Chauhan
fuente
@Grijest: muchas gracias por una elaboración tan grande. Solo una confusión: "Los modelos opuestamente deterministas representan mejor soluciones eficientes, minimizadas y menos redundantes". Pero creo que los modelos deterministas son menos eficientes que los no deterministas. son más complejos que P. ¿No es así?)
tanmoy
@tan En realidad, usar la palabra "eficiente" está mal, y sí, tiene razón en que los modelos no deterministas son más capaces que los deterministas. La clase de problemas cubiertos por los modelos deterministas es un subconjunto del modelo no determinista.
Grijesh Chauhan
Entonces, ¿en qué contexto los modelos deterministas son "eficientes" que los no deterministas (como mencionó)?
tanmoy
@tan Suponga que si desea realizar más operaciones (por ejemplo, quiere convertir FA a RE, o explicar la prueba de bombeo de lema, o alguna otra ...), entonces el modelo determinista le dará mejores resultados (así que dije eficiente).
Grijesh Chauhan
@tan ¿Entiendes las gramáticas ambiguas?
Grijesh Chauhan
9

Es más al revés: los autómatas surgieron primero, como modelos matemáticos. Y el no determinismo es bastante natural, a menudo tienes varios caminos abiertos ante ti. En lugar de una forma desordenada de especificar que todos los caminos deben seguirse hasta el final en algún orden, y tal vez quedar empantanados por ramas infinitas, y ... simplemente use el no determinismo.

Y aunque los lenguajes de programación no deterministas no son convencionales, tienen una historia ilustre, quizás comenzando con el GCL de Dijkstra . A medida que las máquinas obtienen más y más núcleos (procesadores independientes), alguna forma de no determinismo se está filtrando en toda la programación.

vonbrand
fuente
Creo que la primera parte de su respuesta es objetivamente incorrecta. ¿Por qué crees que los autómatas surgieron primero? Tanto DFA como NFA se definieron más de 10 años después de que Turing definió TM. Ver la discusión sobre teoría
Artem Kaznatcheev
@ArtemKaznatcheev, el modelo de máquina Turing es un autómata, y ciertamente es anterior a las computadoras por al menos una década.
vonbrand
sí, pero cuando las personas dicen autómatas no se refieren a TM, sino a autómatas de estado finito y sus extensiones directas (PDA, NPDA, etc.). Vea la pregunta que vinculé para una historia allí y verá que tanto las TM como la arquitectura von Neumann se desarrollaron independientemente de lo que ahora llamamos teoría de autómatas.
Artem Kaznatcheev
44
@ArtemKaznatcheev, DFA / NFA, PDA, LBA, TM son todos autómatas. Como son los transductores (FA con salida, PDA con salida).
vonbrand
1
El último párrafo está mal. Prolog es anterior a GCL, e incluso sigue existiendo y es bastante convencional. Prolog, por supuesto, no fue diseñado en el vacío, basándose en lenguajes de programación no deterministas anteriores, como PLANNER. El crédito probablemente sea para Golomb y Baumert "Backtrack Programming" de 1965.
Seudónimo
7

Los NFA se pueden usar en la práctica, consulte esta respuesta en stackexchange. La razón es que la construcción del conjunto de potencia se puede simular sobre la marcha, por así decirlo. Para simular un NFA en una computadora determinista, solo hacemos un seguimiento de los posibles estados en los que podría estar el NFA. Normalmente, este número sería pequeño, por lo que la simulación sería rápida. Esto es mucho más práctico que ejecutar la construcción real del conjunto de potencia: el autómata resultante podría ser muy grande, aunque en la práctica rara vez se alcanzaría la mayoría de los conjuntos.

El no determinismo también es importante para la complejidad del cálculo, donde se usa para definir la clase NP. (La clase NP también tiene otras definiciones equivalentes, por ejemplo, usando testigos).

Yuval Filmus
fuente
entendiendo su respuesta, pero no pudo entenderla correctamente. ¿Podría explicar el hecho de que la construcción de conjuntos de potencia se puede hacer fácilmente utilizando el no determinismo?
Tanmoy
"El no determinismo también es importante para la complejidad de la computación, donde se usa para definir la clase NP". - eso respalda la importancia del no determinismo solo si suponemos que NP es un concepto útil, que es solo si el no determinismo es útil.
Raphael
@Raphael NP-completeness es un concepto importante independientemente de su postura sobre el no determinismo.
Yuval Filmus
2
@Tanmoy Si no tienes determinismo, no necesitas la construcción del conjunto de potencia, pero desafortunadamente las computadoras reales son deterministas. Sin embargo, podría ser más fácil simular un NFA directamente en lugar de convertirlo primero en un DFA. Mira la respuesta a la que enlazo para más detalles.
Yuval Filmus
4

Usted afirma correctamente que los autómatas son modelos, por lo que hay dos partes de uso que puede tener el no determinismo:

  1. Uso en modelado de problemas reales.

    Además, los autómatas no deterministas pueden proporcionar representaciones más compactas de idiomas. Por ejemplo, es bien sabido que hay NFA cuyos DFA mínimos equivalentes son exponencialmente más grandes.

  2. Uso en teoría.

    El uso del no determinismo puede simplificar las pruebas; consulte, por ejemplo, la conversión de expresiones regulares en autómatas finitos.

Rafael
fuente
4

(Esta es una nueva redacción de algunas de las otras respuestas, pero la publicaré de todos modos :)

Usted escribe: Un autómata es un modelo abstracto de una computadora digital.

¡Estoy en desacuerdo! Los autómatas modelan cómo los humanos especificamos el cálculo, no solo cómo lo ejecutan las computadoras. El no determinismo es exactamente la diferencia. Nuestras especificaciones son a menudo no deterministas.

Por ejemplo, tome el tipo de fusión . La ordenación por fusión se ordena dividiendo los elementos que se ordenarán en dos mitades de aproximadamente el mismo tamaño, ordenando cada mitad utilizando la ordenación por fusión y fusionando los resultados ordenados. Esto especifica por completo la idea de la fusión, pero no es determinista: no especifica un orden en el que ordenar las mitades (por lo que a nosotros nos importa, se puede hacer al mismo tiempo), ni especifica una forma exacta de determinar la división Es necesario completar esos detalles para llegar a una versión determinista y secuencial de tipo de fusión que pueda ser implementada por un programa de computadora de un solo subproceso, pero diría que son parte de una forma particular de hacer un tipo de fusión, no La idea de fusión se clasifica a sí misma.

Lo mismo es cierto para los algoritmos en general, por ejemplo, recetas de libros de cocina. Algunas personas definen los algoritmos como deterministas, en cuyo caso esta noción más general y, en mi opinión, más natural de 'algoritmo' necesita un nombre diferente.

La idea de trabajar con especificaciones no deterministas se formalizó mediante el método de programación de Dijkstra, que comienza con especificaciones que solo dan condiciones previas y posteriores que debe cumplir el programa, y ​​desarrolla sistemáticamente un programa determinista e imperativo a partir de ellas. Dijkstra probablemente habría dicho: la clasificación es el problema, la relación entre las condiciones previas y posteriores que estamos tratando de establecer; tipo de fusiónes un enfoque para hacerlo, a medio camino entre la especificación del problema y una solución determinista; Un algoritmo de clasificación de fusión determinista particular es una solución determinista concreta. Pero se puede usar el mismo enfoque general para desarrollar programas concurrentes, en los que el programa final todavía no es determinista. Dichos programas pueden ejecutarse, por ejemplo, en entornos informáticos distribuidos.

reinierpost
fuente
2

Tienes razón, NO podemos construir una máquina no determinista. Por lo tanto, el objetivo no es utilizar el concepto para construir mejores máquinas. Más bien, el no determinismo es un concepto útil cuando se trata de entender la computación. Por ejemplo, ahora sabemos que, desde una perspectiva de computabilidad, el no determinismo no es algo más poderoso que el determinismo, lo que significa que podemos simular una máquina no determinista utilizando una determinista. Sin embargo, desde la perspectiva de la complejidad, el no determinismo nos permite, por ejemplo, razonar e intentar comprender la relación entre la dificultad de encontrar una solución eficiente para un problema y la dificultad de verificar una solución (que es el famoso problema P versus NP) . Y así. Por lo tanto, la razón principal para estudiar el no determinismo es teórica.

Massimo Cafaro
fuente
¿Libre de contexto versus determinista libre de contexto?
alto
@alto ¿Qué hay de eso?
babou
@babou Intenté señalar que "el no determinismo no es algo más poderoso que el determinismo", es una declaración falsa. Los NPDA son más potentes que los PDA.
alto
1
@alto: no, estás malentendido la declaración. Desde una perspectiva de computabilidad, son totalmente equivalentes, ya que la clase de problemas (o idiomas si lo prefiere) que puede resolver INDEPENDIENTEMENTE de cuántos recursos computacionales se requieren es la misma. Y de hecho, PUEDES simular una máquina no determinista con una determinista. Nuevamente, el tiempo y el espacio requeridos NO IMPORTA en el contexto de computabilidad.
Massimo Cafaro
1
@MassimoCafaro No podría estar más de acuerdo, en teoría. En la práctica parece que prefiero discutir sobre la semántica.
alto
2

La invención de la máquina de Turing fue en 1936 por Turing. McCulloch y Pitts , dos neurofisiólogos, introdujeron modelos similares a FSM como modelo para la actividad neurobiológica en 1943. desde la página de historia de Stanford CS :

La apasionante historia de cómo los autómatas finitos se convirtieron en una rama de la informática ilustra su amplia gama de aplicaciones. Las primeras personas en considerar el concepto de una máquina de estado finito incluyeron un equipo de biólogos, psicólogos, matemáticos, ingenieros y algunos de los primeros informáticos. Todos compartían un interés común: modelar el proceso de pensamiento humano, ya sea en el cerebro o en una computadora. Warren McCulloch y Walter Pitts, dos neurofisiólogos, fueron los primeros en presentar una descripción de autómatas finitos en 1943. Su artículo, titulado "Un cálculo lógico inmanente en actividad nerviosa", hizo contribuciones significativas al estudio de la teoría de redes neuronales, teoría de autómatas, la teoría de la computación y la cibernética. Más tarde, dos informáticos, GH Mealy y EF Moore, generalizó la teoría a máquinas mucho más potentes en documentos separados, publicados en 1955-56. Las máquinas de estado finito, la máquina Mealy y la máquina Moore, se nombran en reconocimiento a su trabajo.

no es historiador de CS, pero sospecha que el modelo McCulloch-Pitts no incluyó el no determinismo y el modelo Mealy - Moore sí, en una generalización / abstracción natural del concepto formal / teórico. tenga en cuenta que los DFA y los NFA tienen el mismo poder de representación, de modo que si uno desea modelar sistemas reales, puede elegir cualquiera de los dos. Una diferencia básica es que un NFA puede ser mucho más pequeño que un DFA equivalente (por ejemplo, existe un elemento natural de compresión de datos / información). También hay aspectos naturales / análogos del paralelismo en el estudio de la NFA.

vzn
fuente
3
Hola, vi tu perfil y parece que alguien rechazó intencionalmente tus respuestas (en cada lugar donde solo tienes dos votos negativos) ... Esta respuesta no está mal , la respuesta agrega información útil. +1
Grijesh Chauhan
0

En primer lugar, me gustaría agradecer a todas las personas que respondieron la pregunta. Todas las respuestas son importantes y agregan información útil. Pero como es una pregunta difícil para los principiantes, y necesito suficiente tiempo para entenderla bien, yo intentaría resumir lo que he obtenido de todas las respuestas y de algunos libros:

En realidad, tenía una confusión sobre el mecanismo del modelo no determinista. Siempre me pregunté acerca de la máquina no determinista, ya que es una máquina no mecánica que no existe en el mundo real. Siempre comparé Automata con nuestras computadoras de hoy en día, que es de naturaleza completamente determinista. En realidad, no estaba entendiendo adecuadamente el modelo no determinista. Ahora creo que entiendo bastante bien el modelo no determinista: una máquina no determinista es una máquina que siempre sigue ese camino de ejecución que conduce a la aceptación de la cadena (Sin retroceso). Pero, ¿cómo puede ser esto posible en la vida real? : Es absolutamente imposible que la computadora actual sea tan inteligente para predecir el futuro. Entonces, ¿por qué el no determinismo? La respuesta a esta pregunta es bastante complicada. Lo que concluí sobre la pregunta es que: La teoría de autómatas existía cuando las computadoras no existían (primera teoría y luego práctica). Es un tema puramente teórico y el concepto de no determinismo surgió de forma intuitiva. El motivo de la asignatura "Teoría de los autómatas" no era tratar con computadoras prácticas. Pero cuando prácticamente la computadora viene usando la Teoría de Autómatas, podemos definir computadoras prácticas con precisión: cuáles son las limitaciones de las computadoras actuales. Los problemas algorítmicos son muy complejos para las computadoras y tan poco prácticos. puede distinguir dos clases de complejidad P y NP). ¿Cuáles son las soluciones para estos problemas poco prácticos por los cuales puede ejecutarse comparativamente más rápido? Esta es la utilidad del no determinismo. Es un tema puramente teórico y el concepto de no determinismo surgió de forma intuitiva. El motivo de la asignatura "Teoría de los autómatas" no era tratar con computadoras prácticas. Pero cuando prácticamente la computadora viene usando la Teoría de Autómatas, podemos definir computadoras prácticas con precisión: cuáles son las limitaciones de las computadoras actuales. Los problemas algorítmicos son muy complejos para las computadoras y tan poco prácticos. puede distinguir dos clases de complejidad P y NP). ¿Cuáles son las soluciones para estos problemas poco prácticos por los cuales puede ejecutarse comparativamente más rápido? Esta es la utilidad del no determinismo. Es un tema puramente teórico y el concepto de no determinismo surgió de forma intuitiva. El motivo de la asignatura "Teoría de los autómatas" no era tratar con computadoras prácticas. Pero cuando prácticamente la computadora viene usando la Teoría de Autómatas, podemos definir computadoras prácticas con precisión: cuáles son las limitaciones de las computadoras actuales. Los problemas algorítmicos son muy complejos para las computadoras y tan poco prácticos. puede distinguir dos clases de complejidad P y NP). ¿Cuáles son las soluciones para estos problemas poco prácticos por los cuales puede ejecutarse comparativamente más rápido? Esta es la utilidad del no determinismo. Pero cuando prácticamente la computadora viene usando la Teoría de Autómatas, podemos definir computadoras prácticas con precisión: cuáles son las limitaciones de las computadoras actuales. Los problemas algorítmicos son muy complejos para las computadoras y tan poco prácticos. puede distinguir dos clases de complejidad P y NP). ¿Cuáles son las soluciones para estos problemas poco prácticos por los cuales puede ejecutarse comparativamente más rápido? Esta es la utilidad del no determinismo. Pero cuando prácticamente la computadora viene usando la Teoría de Autómatas, podemos definir computadoras prácticas con precisión: cuáles son las limitaciones de las computadoras actuales. Los problemas algorítmicos son muy complejos para las computadoras y tan poco prácticos. puede distinguir dos clases de complejidad P y NP). ¿Cuáles son las soluciones para estos problemas poco prácticos por los cuales puede ejecutarse comparativamente más rápido? Esta es la utilidad del no determinismo. ¿Cuáles son las soluciones para estos problemas poco prácticos por los cuales se puede ejecutar comparativamente más rápido? Esta es la utilidad del no determinismo. ¿Cuáles son las soluciones para estos problemas poco prácticos por los cuales se puede ejecutar comparativamente más rápido? Esta es la utilidad del no determinismo.

Por favor corrígeme si hay algo mal.

tanmoy
fuente
Es incorrecto decir que una máquina no determinista es una máquina que siempre sigue el camino de ejecución que conduce a la aceptación de la cadena . ¡No hace eso! Una máquina no determinista es una máquina cuya operación permite tomar ciertas decisiones no premeditadas (= no deterministas) durante la ejecución. No hay nada irreal en tales máquinas, por ejemplo, pueden pedirle al medio ambiente que tome esas decisiones. Estas máquinas se aplican luego a tareas para las cuales se sostiene que ciertas elecciones producirán un estado de aceptación.
reinierpost
@reinierpost: Entonces estás diciendo que las máquinas no deterministas existen en la vida real.
tanmoy
Sí. Aquí hay un ejemplo: suponga que está manejando un automóvil y no está tomando ninguna decisión sobre la ruta a seguir. Por ejemplo, puede estar conduciendo sin rumbo fijo, o puede estar tomando sus instrucciones desde un navegador humano o un dispositivo de navegación. El automóvil y usted son un sistema no determinista para conducir lugares. Te mueves a través del tráfico y sigues encontrando elecciones en qué dirección tomar. Para usted y el automóvil, estas opciones no son deterministas: no está decidiendo qué dirección tomar, pero dada esa decisión, la seguirá.
reinierpost
@reinierpost: ¿Existe alguna computadora no determinista? Mi respuesta es no. porque si existe, entonces los problemas de NP tendrían una complejidad de tiempo polinomial. no es asi
Tanmoy
Si las computadoras son deterministas o no deterministas depende de cómo las mire. Cuando una computadora se detiene y espera que el usuario haga algo, y sus próximas acciones dependerán de lo que haga el usuario, puede decir que es una elección no determinista. No, esto no implica que P = NP.
reinierpost
0

el no determinismo es útil porque te ayuda a entender el determinismo, pero no al revés. Se podría decir que el no determinismo es la idea más grande. Una máquina de Turing determinista es un caso especial de una no determinista. - El no determinismo nos puede ayudar a entender por qué, en las plataformas actuales, algunos problemas son difíciles de precisar. Hay una serie de problemas computacionales que no tienen una solución eficiente en una plataforma de computación determinista, pero entendemos que puede haber soluciones eficientes en las no deterministas. ... estado, codificación, no determinismo, todos están vinculados http://people.cs.umass.edu/~rsnbrg/teach-eatcs.pdf

En una máquina determinista de Turing, el conjunto de reglas prescribe como máximo una acción a realizar para cualquier situación dada. Una máquina de Turing no determinista (NTM), por el contrario, puede tener un conjunto de reglas que prescribe más de una acción para una situación dada. http://en.wikipedia.org/wiki/Non-deterministic_Turing_machine Si puede construir una caja de software que pueda administrar las transiciones de estado tan bien que pueda manejar más de una acción, puede obtener un rendimiento más allá de las máquinas deterministas.

Tom
fuente
No estoy seguro de que los supuestos enlaces a la realidad sean de alguna ayuda. Está bastante claro que no podemos construir una máquina no determinista (al menos hoy), por lo que es una construcción completamente teórica.
Raphael
Podemos construir una máquina no determinista dejando que las decisiones no deterministas sean tomadas por algo externo a la máquina.
reinierpost
@ reinierpost, lo más importante es que podemos construir máquinas no deterministas como deterministas, sin incurrir en una sobrecarga exponencial. ver Teorema de Savitch. en.wikipedia.org/wiki/Savitch's_theorem
Tom
@ Raphael, algunas referencias al mundo real son importantes. ¿Por qué funciona el almacenamiento en caché? Debido a que los eventos en el mundo real, que en última instancia es la fuente de todos los datos, siguen una distribución normal. ver localidad temporal: durablescope.blogspot.co.at/2009/11/…
Tom
@ reinierpost, y ese algo externo es lo que Turing llamó una máquina oráculo. Creo que puedes pensar si eso es como datos que salen de la caché o algo así como una máquina de cintas múltiples o incluso aprovechar la memoria de acceso aleatorio.
Tom
0

¿Por qué el no determinismo es un concepto útil?

El determinismo tiene una fuerte tendencia a romper las simetrías. Esta tendencia es aún más fuerte para el determinismo secuencial, pero la noción de un gráfico dirigido acíclico y un orden topológico de dicho gráfico permite ignorar la diferencia entre determinismo y determinismo secuencial. El no determinismo es un superconjunto del determinismo, que permite preservar más simetrías. Al diseñar la solución de un problema, comenzar con la solución no determinista permite preservar simetrías útiles, y esto mantiene la descripción de la solución pequeña y compacta. La ruptura de las simetrías se puede delegar a una etapa posterior durante la implementación, mientras se convierte la solución no determinista en una solución determinista.

A menudo, el no determinismo significa que la noción de una función parcial se reemplaza por la noción de una relación. En ese caso, una máquina no determinista puede funcionar tanto hacia adelante como hacia atrás en el tiempo, mientras que esto no es posible en general para una máquina determinista. Si en su lugar trabajamos con funciones totales para determinismo y funciones totales multivalores para no determinismo, la simetría ya no es tan agradable, pero aún puede hacerse funcionar.

Thomas Klimpel
fuente
¿Puedes dar un ejemplo específico? Me resulta difícil ver a qué te refieres con "simetría" aquí.
Raphael
@Raphael ¿Qué hay de invertir (01) * 01 (0 + 1) * a (0 + 1) * 10 (10) * de modo que reconozca la cadena de entrada invertida y aplique esta simetría a la máquina no determinista invirtiendo todo flecha y cambio de estado de inicio y fin? No estoy seguro de si hay ejemplos significativamente más interesantes para máquinas de estados finitos, pero podría tratar de encontrar un ejemplo interesante para un PDA.
Thomas Klimpel
Escribí sobre mi respuesta a una pregunta similar en una publicación de blog sobre la reversibilidad de las relaciones binarias, las matrices subestocásticas y las funciones parciales .
Thomas Klimpel