Expresiones regulares (informática): ¿Cómo minimizo este DFA?

Este DFA se minimiza al fusionar A y C en un estado; son equivalentes Sin embargo, no son equivalentes a E ya que E es un estado de aceptación y A / C son estados de rechazo.

Puede razonar que debe haber al menos cuatro estados de la siguiente manera:

Supongamos por contradicción que hay menos de cuatro estados en algunos DFA válidos para este lenguaje. Luego, según el principio del casillero, dos de las cadenas {"", "a", "ab", "abb"} deben ir al mismo estado en el DFA. Tenga en cuenta que

  • Añadir "" a todos ellos debería hacer que solo el cuarto sea aceptado.
  • Agregar "b" a todos ellos debería hacer que solo el tercero sea aceptado.
  • Agregar "bb" a todos ellos debería hacer que solo se acepte el segundo.

Por lo tanto, puedo elegir uno de {"", "b", "bb"} para agregar a mis dos cadenas y uno debe ser aceptado mientras que el otro no. Sin embargo, ambas cadenas irán al mismo estado en el DFA, una contradicción.

Debido al sufijo abb, el número mínimo de estados que necesitará es 4, no podrá ir más bajo que eso. Aquí hay un DFA con solo 4 estados que aceptan el lenguaje generado por el RE.

q0 es el estado inicial y q3 es el estado de aceptación. Espero que esto ayude.

PD: Puede que me haya perdido algunos casos de esquina, así que ten cuidado.

More Interesting

¿Cuál es la diferencia entre un modelo de datos y un esquema de base de datos?

Soy un estudiante de primer año de CS, no puedo resolver programas simples, ¿cómo puedo realmente mejorar mis habilidades algorítmicas de resolución de problemas?

Para entender, entonces posiblemente trabajar P vs NP, ¿qué materias necesito aprender?

Ciencias de la computación: me gustaría crear una base de datos en un servidor y luego buscar en mi programa conjuntos de datos específicos. ¿Es posible hacer algo con Qt o tengo que usar un SDK diferente?

¿Cómo funciona la informática afectiva?

¿Cuánta física debería saber un experto en informática?

¿Puedes sugerir un plan definitivo para ser un desarrollador de sistemas operativos?

¿Cuánto poder de procesamiento se necesitaría para simular la tierra en átomos?

Tengo un plan de 400 días para aprender sobre el aprendizaje automático. Espero construir mi propio bot de juegos que pueda jugar al menos 2 juegos. ¿Qué tan plausible es esto?

¿Qué es un terminal virtual en una red?

Python o PHP, ¿qué lenguaje estudiar primero?

¿Alguien puede sugerirme algún dominio para hacer el proyecto del último año?

¿Cuál es el futuro de la informática? ¿Qué puedo hacer además de mejorar y fortalecer mis habilidades?

¿Por qué una unidad de CD-ROM congela la computadora durante la aceleración?

¿Cuál es la diferencia entre MapReduce, inteligencia artificial y aprendizaje automático? O más bien, ¿cómo están relacionados?