Usuario:Escaldon/Construcción de subconjuntos

De Wikipedia, la enciclopedia libre

En la teoría de la computación, la construcción de subconjuntos es un método estándar para convertir un NFA(Autómata Finito No Determinista) a un DFA(Autómata Finito Determinista) que reconoce el mismo Lenguaje regular. En la teoría es importante porque establece que los NFAs aunque son más flexibles, no pueden reconocer ningún lenguaje que un DFA no pueda reconocer. Sin embargo si el NFA tiene estados, el DFA resultante podría tener hasta estados, exponencialmente más. Eso resulta que a veces construir un DFA a partir de un NFA grande no es practicable.

[[Categoría:Lenguajes formales]] [[de:Potenzmengenkonstruktion]] [[en:Powerset construction]] [[it:Costruzione dei sottoinsiemi]] [[pl:Determinizacja automatu skończonego]] [[zh:幂集构造]] Sea un NFA. El algoritmo de Construcción de subconjuntos permite hallar un DFA de modo que (Reconozcan el mismo lenguaje).

Algoritmo de construcción de subconjuntos[editar]

Veamos un Pseudocódigo para el algoritmo:




While do

For all do
if (!( then
DFA_states := DFA_states
desmarcar(R);
end; end; end;

Apliquemos ahora el algoritmo al NFA de la siguiente figura:


El estado inicial o estado de arranque del NFA es el que está marcado con una flecha y pone start en nuestro caso el 0. Empezamos haciendo la epsilon-clausura del estado de arranque del NFA( la epsilon-clausura conciste en ver, desde el estado al que se le hace, hasta que estados se puede llegar sin consumir ningun simbolo, es decir, con transiciones epsilon).


Transitamos con el primer símbolo de nuestro alfabeto.



Le hacemos la epsilon-clausura al conjunto resultante. El conjunto que nos da ( ) es diferente al que ya teníamos ( ), así que le asignamos otra letra, por ejemplo la B.

Transitamos con el segundo símbolo y hacemos lo mismo que en el paso anterior.



Ahora pasamos al segundo estado del DFA que estamos construyendo. Y hacemos lo mismo en el paso anterior.


En caso de darnos un conjunto que ya teníamos, le asignamos la misma letra.

















Ahora para ver cual sería el nuevo(o los nuevos) estados de aceptación, miramos en que conjunto cayó el anterior estado de aceptación (era el estado 10), en este caso solo cayó en el estado E( 10 ), así que nuestro único estado de aceptación en el DFA será el E (marcado con doble circulo).

El DFA resultante quedaría de esta forma:




{{Categorízame|Lenguajes formales|Autómatas finitos|Autómatas finitos deterministas|Autómatas finitos no deterministas}}