¿Hay alguna forma metódica (algoritmo) de crear un autómata que acepte un idioma dado, dado el idioma como un conjunto ({w | condición (w)})?

Entonces, aquí está la división de la respuesta.

i) Siempre que sepa de antemano, si el idioma dado [matemáticas] L (A) = \ {w | [/ math] w satisfies C [math] \} [/ math] pertenece a un conjunto conocido en la jerarquía de los lenguajes formales, entonces quizás, dependiendo de lo que quiere decir con algoritmo, en términos de lo que sería satisfactorio, uno podría crea uno. Por ejemplo, si [matemática] L (A) \ en idiomas regulares [/ matemática], entonces, podemos construir [matemática] DFA (M), \ ni, L (M) = L (A) [/ matemática] , y use el algoritmo [math] CONVERT (G) [/ math] para crear una expresión regular [math] r [/ math] a partir de [math] DFA (M), \ ni, r [/ math] [math] | = L (A) [/ matemáticas]. Un algoritmo para este caso está en mi respuesta aquí: ¿Hay alguna forma metódica (algoritmo) para crear una expresión regular de un idioma regular dado, dado el idioma como un conjunto ({w | condición (w)})?
Del mismo modo, uno podría hacer el mismo procedimiento para un PDA.

ii) Sin embargo, si no conoce el estado del idioma con respecto a la jerarquía de los idiomas formales, primero debería tener un algoritmo que decida si ([matemáticas] L (A) \ en idiomas regulares [/ math]) [math] \ vee [/ math] ([math] L (A) \ notin Regular-Languages ​​[/ math]) {o si pertenece o no a algún conjunto de la jerarquía. Uno, por supuesto, comenzaría con los lenguajes regulares, ya que es el conjunto más débil en términos de requerir potencia computacional}. Esto requiere que el problema de detención sea decidible . Más precisamente, esto falla debido al Teorema de Rice .

Además, hablando más fuertemente, uno puede convertir estos 2 entre sí: ([matemáticas] regular \ _expresión \ Leftrightarrow DFA [/ matemáticas]) [matemáticas] \ vee [/ matemáticas] ([matemáticas] (S, P, \ Sigma ) \ Leftrightarrow PDA [/ math])
Sin embargo, el problema es que primero hay que crear reglas de producción o un DFA a partir de la notación de conjunto. No existe un intérprete automático para convertir el conjunto en algo que funcione con una de estas relaciones de equivalencia, a menos que se suponga que sus Conjuntos son analizados por Análisis Léxico basado en la Teoría de Modelos Finitos.

En ciertos casos, sí. Hay una clase muy específica de condiciones para las cuales esto es posible.

Esto se desprende del teorema de Büchi de 1960 que establece que

Un lenguaje sobre el alfabeto [matemática] \ Sigma [/ matemática] es regular si y solo se puede describir el conjunto de modelos finitos de la teoría monádica débil de segundo orden de los órdenes lineales (también conocido como WS1S).

WS1S es una lógica de predicados que permite la cuantificación solo sobre conjuntos finitos . Además, que esta es una lógica de ordenamientos lineales no es una coincidencia, ya que los órdenes lineales finitos pueden considerarse como cadenas. Los términos en WS1S deben pensarse como posiciones en la picadura; existe una posición distinguida [matemática] 0 [/ matemática] y tenemos una relación de orden lineal [matemática] t_1

Para cada símbolo [math] a \ in \ Sigma [/ math] tenemos un predicado [math] P_a [/ math] cuya interpretación prevista es que [math] P_a (t) [/ math] se mantiene si está en la posición [math] t [/ math] en nuestra cadena tenemos el símbolo [math] a [/ math].

Un ejemplo de una fórmula WS1S es la siguiente fórmula que describe las cadenas que contienen [math] ab [/ math] como una subcadena:

[matemáticas] \ existe x. \ existe y. P_a (x) \ wedge P_b (y) \ wedge x \ leq y \ wedge \ neq \ existe z. (x

La prueba del teorema de Büchi es constructiva: mostramos cómo se puede construir una fórmula WS1S que describe un lenguaje regular dado, y mostramos cómo se puede, dada una fórmula WS1S [matemáticas] \ phi [/ matemáticas] construir un autómata de estado finito que acepta exactamente los modelos de [math] \ phi [/ math].

Esta última mitad de la prueba nos da el procedimiento que está pidiendo la pregunta. Sin embargo, es importante recordar que hay propiedades lógicas más allá del alcance de WS1S. Un ejemplo simple es la condición de que una cadena contiene el mismo número de [math] a [/ math] sy [math] b [/ math] s. Que esta propiedad no sea expresable en WS1S es una consecuencia del Lema de bombeo para los idiomas normales.

Depende de algunas cosas.

Primero, ¿es su condición computable? Por ejemplo, si la condición era “la palabra w representa una máquina de Turing que se detiene cuando se le da una cadena vacía”, entonces la respuesta sería “no”, ya que tendría que resolver el problema de detención para determinar si w estaba en el conjunto usted desea, y el problema de detención no puede ser resuelto por una máquina de Turing.

Suponiendo que la condición es computable, entonces simplemente puede implementar la “condición” usando el formalismo más apropiado, con candidatos probables como DFA (autómata finito determinista), NFA (autómata finito no determinista), autómata de empuje hacia abajo (que puede coincidir con el contexto -gramáticas libres) y máquinas de Turing (las más generales). En la práctica, nadie programa máquinas de Turing, sino que utiliza lenguajes de nivel superior que son equivalentes de Turing.

More Interesting

¿Cómo es útil un co-NP Oracle cuando se enfrenta a una tautología?

¿Pytest y Selenium WebDriver (python) son diferentes?

¿Cuáles son los enfoques actuales para resolver problemas completos de NP?

Soy un estudiante de último año de ingeniería en ciencias de la computación en busca de pasantías en desarrollo web. ¿Cuáles son los pasos que debo seguir para obtener uno? ¿Cómo debo buscar empresas? ¿Cuáles son las habilidades que debo adquirir antes de solicitar una?

¿Cuáles son algunos ejemplos de computación generalizada?

Cómo convertirse en un técnico

¿Cómo puedo obtener la representación de cadena de un objeto en C ++ (es decir, qué se imprimiría haciendo cout << objeto)?

En términos simples y en sus palabras, ¿cuál es la universalidad de Turing?

¿Qué cambios se pueden hacer al algoritmo de Floyd-Warshall para resolver este problema NAJKRACI de SPOJ?

¿Debo alojar una aplicación estática de una sola página en un CDN?

¿Cómo se lleva a cabo el paso de inferencia en chatbots en el contexto del aprendizaje profundo o automático?

¿Qué evidencia existe de que el Kremlin estaba detrás de los ataques de DNC y cómo podemos estar seguros de su autenticidad? La mayor parte de la evidencia potencial puede ser falsificada.

¿Cuáles son algunos sistemas operativos alternativos para PC aparte de Windows?

¿Qué ingenieros de software o hackers conoces que hayan mostrado un conocimiento excepcional de Python? ¿Porque?

¿Cuáles son las diferencias entre una supercomputadora y una informática distribuida (como Amazon Cloud o Google Data Center o Hadoop)?