“Conocimiento Programación>Lenguajes De Programación

¿Cuáles son algunos ejemplos de idiomas regulares y cómo se definieron en el contexto, la teoría del lenguaje formal?

2013/11/30
Bien, exploremos los idiomas regulares con ejemplos y sus definiciones en la teoría del lenguaje formal.

¿Qué son los idiomas regulares?

En el ámbito de la teoría del lenguaje formal, un lenguaje regular es un lenguaje (un conjunto de cuerdas sobre un alfabeto dado) que puede describirse por:

* Expresiones regulares: Un patrón que define un conjunto de cadenas.

* Autómata finito determinista (DFA): Una máquina que lee la entrada de un símbolo a la vez y las transiciones entre los estados en función de la entrada. Acepta o rechaza la entrada basada en el estado final.

* Automates finitos no deterministas (NFA): Similar a los DFA, pero permita múltiples transiciones posibles de un estado para un símbolo de entrada dado (o incluso transiciones sin leer ninguna entrada).

* Gramáticas regulares: Un tipo de gramática formal donde las reglas de producción tienen una forma específica.

Estas cuatro representaciones son equivalentes. Si puede definir un idioma con uno de estos, puede definirlo con todos ellos. Este es un teorema fundamental en la teoría del lenguaje formal.

Ejemplos de idiomas regulares

Aquí hay algunos ejemplos, junto con cómo se pueden definir utilizando los métodos mencionados anteriormente:

1. El lenguaje de todas las cadenas sobre {0, 1} que comienzan con un '1'.

* Expresión regular: `1 (0 | 1)*` (o `1 [01]*`)

* `1` coincide con el '1' requerido al principio.

* `(0 | 1)` significa "ya sea 0 o 1".

* `*` significa "cero o más ocurrencias del grupo anterior".

* DFA:

`` `` ``

0 1

-> Q0 Q1 Q1 (Q0 es el estado de inicio)

Q1 Q1 Q1 (Q1 es un estado de aceptación)

`` `` ``

* `Q0` es el estado inicial. Si la entrada comienza con '1', pasa al estado de aceptación `Q1`. Si comienza con `0`, se mueve al estado no aceptante (muerto).

* `Q1` es el estado de aceptación. Una vez que llega a este estado, permanece en él, aceptando cualquier entrada adicional.

* nfa: Un NFA se puede construir de manera similar, pero puede tener una ruta alternativa desde el estado inicial.

* Gramática regular: (Lineal a la derecha)

`` `` ``

S -> 1a

A -> 0a | 1a | ε

`` `` ``

* `S` es el símbolo de inicio.

* `A` genera cualquier combinación de 0s y 1s, incluida la cadena vacía (ε).

2. El lenguaje de todas las cadenas sobre {a, b} que contienen la subcadena "ABA".

* Expresión regular: `(A | B)*ABA (A | B)*` (o `[AB]*ABA [AB]*`)

* `(a | b)*` coincide con cualquier secuencia de 'A y' B (cero o más).

* `ABA` coincide con la subcadena requerida.

* DFA: Este DFA tendrá estados para rastrear el progreso de la coincidencia de "ABA":

`` `` ``

A B

-> Q0 Q1 Q0

Q1 Q1 Q2

Q2 Q1 Q0

Q3 Q3 Q3 (Q3 es un estado de aceptación)

`` `` ``

* `Q0`:estado inicial. Representa que no hemos visto ninguna parte de "ABA".

* `Q1`:Representa que hemos visto" A ".

* `Q2`:representa que hemos visto" AB ".

* `Q3`:Representa que hemos visto" ABA "(aceptando el estado). Una vez en `Q3`, cualquier entrada adicional la mantiene en` Q3`.

* nfa: Un NFA puede ser más simple de construir para este idioma. Puede "adivinar" cuando la subcadena "ABA" podría comenzar.

* Gramática regular:

`` `` ``

S -> como | BS | Automóvil club británico

A -> bb

B -> AC

C -> AC | BC | ε

`` `` ``

3. El lenguaje de todas las cadenas sobre {0, 1} con un número par de 0s.

* Expresión regular: `1*(01*01*)*`

* `1*`:cero o más

*`01*01*`:Esto significa que la cadena debe tener un número uniforme de 0s, ya que cualquier 0 debe ser seguido por `1*01*`, por lo que está emparejado.

* DFA:

`` `` ``

0 1

-> Q0 Q1 Q0 (Q0 es el estado de inicio y aceptación)

Q1 Q0 Q1 (Q1 es un estado no aceptante)

`` `` ``

* `Q0`:número par de 0 (inicio y aceptación del estado).

* `Q1`:número impar de 0s.

* nfa: Se puede construir un NFA, pero el DFA es a menudo la representación más directa.

* Gramática regular:

`` `` ``

S -> 1S | 0a | ε

A -> 1a | 0s

`` `` ``

4. El lenguaje que consiste en la cadena "hola".

* Expresión regular: `Hola`

* DFA:

`` `` ``

Hola

-> Q0 Q1 - - - - (Q0 es el estado de inicio)

Q1 - P2 - - -

Q2 - - P3 - -

Q3 - - - P4 -

P4 - - - - P5

Q5 - - - - - (Q5 es un estado de aceptación)

`` `` ``

* Gramática regular:

`` `` ``

S -> ha

A -> EB

B -> LC

C -> ld

D -> o

`` `` ``

Ejemplos de idiomas que no son regulares

Estos idiomas * no pueden * estar representados por expresiones regulares, DFA, NFA o gramáticas regulares. Requieren formalismos más poderosos como gramáticas sin contexto o máquinas Turing.

1. El lenguaje de las cuerdas con un número igual de 'A y' B's: {ε, AB, BA, Aabb, Abab, Baba, BBAA, ...}

2. El lenguaje de los palíndromos (cuerdas que leen los mismos hacia adelante y hacia atrás): {ε, a, b, aa, bb, aba, bab, abba, ...}

3. El lenguaje {a n b n | n> =0} :Cadenas con `n` 'A seguidos de' N` 'B (por ejemplo, ε, AB, Aabb, Aaabbb, ...). Este es un ejemplo clásico que a menudo se usa para demostrar las limitaciones de los idiomas regulares.

4. El lenguaje {a n b m c n | n, m> =0} :Cadenas con `n` a's, seguido de` m` b y `n` c's. Esto no es regular.

¿Por qué estos idiomas no son regulares?

La limitación clave de los idiomas regulares es su incapacidad para "contar" o "recordar" una cantidad arbitraria de información. Un DFA, NFA o expresión regular tiene un número finito de estados o símbolos. Reconocer idiomas como {a n b n }, deberá realizar un seguimiento del número de 'A que ha visto para asegurarse de que haya el mismo número de' B. Un autómata finito no tiene la capacidad de memoria para hacerlo para `n` arbitrariamente grande. Esta intuición es formalizada por el *lema de bombeo para idiomas regulares *, una herramienta poderosa para demostrar que un idioma es *no *regular.

en resumen

Los idiomas regulares son una clase fundamental de idiomas en la teoría del lenguaje formal. Son fáciles de definir e implementar, haciéndolos útiles para muchas aplicaciones prácticas (por ejemplo, análisis léxico en compiladores, coincidencia de patrones en editores de texto, enrutamiento de red). Sin embargo, tienen limitaciones, y los idiomas más complejos requieren formalismos más poderosos.

Lenguajes De Programación
¿En qué lenguaje de programación está escrito Microsoft Windows?
Cómo obtener PASCAL Software
Cómo programar una TI- 84 Plus Calculadora
¿Hay alguna clase de escritura en línea?
Cómo utilizar un Constructor Subtipo Bound
¿Dar ejemplos de procesadores de sistemas operativos y lenguajes?
¿Cómo puedo utilizar los servicios de empresas
Cómo compilar un archivo en TASM
Conocimiento de la computadora © http://www.ordenador.online