|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object AF.AFabstracto AF.AF
public class AF
Clase para la implementacion interna de un automata finito. La mayoria de sus
atributos y metodos son heredados de la superclase abstracta AFabstracto
.
Field Summary |
---|
Fields inherited from class AF.AFabstracto |
---|
alfabeto, arcos, estados, finales, i, inicial, MAX_ESTADOS |
Constructor Summary | |
---|---|
AF(java.util.LinkedHashSet qs,
java.util.LinkedHashSet ab,
Estado i,
java.util.LinkedHashSet as,
java.util.LinkedHashSet fs)
Constructor directamente heredado de la superclase abstracta (vease AFabstracto.AFabstracto(LinkedHashSet,LinkedHashSet,Estado,LinkedHashSet,LinkedHashSet) ). |
|
AF(java.lang.String af)
Constructor directamente heredado de la superclase abstracta (vease AFabstracto.AFabstracto(String) ). |
Method Summary | |
---|---|
private java.util.LinkedHashSet |
calc_arcos_min(java.util.ArrayList conjs_qs,
java.util.LinkedHashSet alfabeto_min,
AF afcnx)
Obtener el conjunto de arcos/transiciones del automata minimo |
private void |
calc_distinguibles(int n,
boolean[] tabla,
java.util.Hashtable q2i,
Estado[] i2q,
AF afcnx)
Obtiene la matriz de distinguibilidad del algoritmo de minimizacion marcando (i.e. a true ) las entradas correspondientes a pares de estados
equivalentes. |
private int |
calc_size(int n)
Calcula el tamanho necesario para el array que implementa la matriz de distinguibilidad del algoritmo de minimizacion |
AF |
determinizar()
Devuelve al Automata Finito Determinista (AFD) equivalente a este automata. |
java.util.LinkedHashSet |
Ecierre(java.util.Collection qs)
Calcula el E-cierre de un conjunto de estados dado |
java.util.LinkedHashSet |
Ecierre(Estado q)
Calcula el E-cierre de un estado dado |
boolean |
es_AFD_no_especificado()
Determina si se trata de un Automata Finito Determinista (AFD) pero sin exigir que este completamente especificado. |
boolean |
es_AFD()
Determina si se trata de un Automata Finito Determinista (AFD). |
boolean |
es_conexo()
Determina si se trata de un automata conexo o no. |
boolean |
es_conexo(java.util.Collection acc,
java.util.Collection inacc)
Determina si se trata de un automata conexo o no, devolviendo ademas, los conjuntos de estados accesibles e inaccesibles del automata. |
private AF |
generate_AFD_minimo(int n,
boolean[] tabla,
java.util.Hashtable q2i,
Estado[] i2q,
AF afcnx)
Construye el automata minimo resultante: ultima parte del proceso de minimizacion |
private java.util.ArrayList |
get_equivalentes(int n,
boolean[] tabla,
java.util.Hashtable q2i,
Estado[] i2q)
Devuelve los conjuntos de estados equivalentes (clases de equivalencia) en base a la matriz de distinguibilidad del algoritmo de minimizacion. |
private int |
get_xy(int n,
int x,
int y)
Dada una posicion de la matriz de distinguibilidad del algoritmo de minimizacion, calcula el indice correspondiente en el array que lo implementa. |
private void |
init_distinguibles(int n,
boolean[] tabla,
java.util.Hashtable q2i,
Estado[] i2q,
AF afcnx)
Inicializa la matriz de distinguibilidad del algoritmo de minimizacion marcando (i.e. a true ) las entradas correspondientes a pares
(estado final, estado no final). |
static AF |
loadAF()
Carga un AF a partir de la especificacion en formato string almacenada en un fichero de texto. |
static AF |
loadAF(java.lang.String path)
Carga un AF a partir de la especificacion en formato string almacenada en un fichero de texto. |
AF |
minimizar()
Devuelve al Automata Minimo equivalente a este automata. |
private void |
print_distinguibles(int n,
boolean[] matriz,
java.util.Hashtable q2i,
Estado[] i2q)
Imprime la matriz de distinguibilidad. |
void |
saveAF()
Genera y almacena en un fichero de texto la especificacion en formato string del AF. |
void |
saveAF(java.lang.String path)
Genera y almacena en un fichero de texto la especificacion en formato string del AF. |
boolean |
scan(Cadena cadena)
Comprueba si el automata acepta o no una cadena de entrada |
private int |
search_conj_qs(Estado q,
java.util.ArrayList a)
Busca el conjunto de estados equivalentes en el que esta almacenado un estado dado. |
java.util.LinkedHashSet |
siguientes(java.util.Collection qs,
Terminal t)
Devuelve el conjunto de estados alcanzables desde un conjunto de estado qs
consumiendo un terminal t de la entrada. |
java.util.LinkedHashSet |
siguientes(Estado q,
Terminal t)
Devuelve el conjunto de estados alcanzables desde un estado q consumiendo
un terminal t de la entrada. |
AF |
subautomata_conexo()
Devuelve al subautomata conexo equivalente a este automata. |
private boolean |
super_es_AFD(boolean estricto)
Determina si se trata de un Automata Finito Determinista (AFD), permitiendo exigir o no que este completamente especificado. |
private boolean |
super_es_conexo(boolean store,
java.util.Collection acc,
java.util.Collection inacc)
Determina si se trata de un automata conexo o no, devolviendo ademas, si se desea, los conjuntos de estados accesibles e inaccesibles del automata. |
private boolean |
superscan(Cadena cadena,
java.util.List l,
boolean trace)
Comprueba si el automata acepta o no una cadena de entrada, posibilitando obtener la traza de las configuraciones instantaneas por las que pasa |
boolean |
trace(Cadena cadena,
java.util.List l)
Comprueba si el automata acepta o no una cadena de entrada, posibilitando obtener la traza de las configuraciones instantaneas por las que pasa |
java.util.LinkedHashSet |
unidos(java.util.Collection qs,
Terminal t)
Obtiene el conjunto de estados conectados DIRECTAMENTE con un conjunto de estados dado mediante un terminal determinado. |
java.util.LinkedHashSet |
unidos(Estado q,
Terminal t)
Obtiene el conjunto de estados conectados DIRECTAMENTE con un estado dado mediante un terminal determinado. |
Methods inherited from class AF.AFabstracto |
---|
check_arco, contains_arco, contains_estado, contains_terminal, create_estado, dibujar, esFinal, esInicial, get_tabla_transiciones, getAlfabeto, getArcos, getArcosPpo, getArcosPpoTerminal, getEstados, getFinales, getInicial, toString |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Constructor Detail |
---|
public AF(java.lang.String af) throws AF_Exception, G_Exception
AFabstracto.AFabstracto(String)
).
af
- Especificacion del automata en formato string.
AF_Exception
G_Exception
public AF(java.util.LinkedHashSet qs, java.util.LinkedHashSet ab, Estado i, java.util.LinkedHashSet as, java.util.LinkedHashSet fs) throws AF_Exception, G_Exception
AFabstracto.AFabstracto(LinkedHashSet,LinkedHashSet,Estado,LinkedHashSet,LinkedHashSet)
).
qs
- Conjunto de estados del automataab
- Alfabeto del automatai
- Estado inicialas
- Conjunto de arcos/transiciones del automatafs
- Conjunto de estados finales
AF_Exception
G_Exception
Method Detail |
---|
public static AF loadAF(java.lang.String path) throws java.io.IOException, AF_Exception, G_Exception
path
- Path completo al archivo a procesar
java.io.IOException
AF_Exception
G_Exception
public static AF loadAF() throws java.io.IOException, AF_Exception, G_Exception
java.io.IOException
AF_Exception
G_Exception
public void saveAF(java.lang.String path) throws java.io.IOException
java.io.IOException
public void saveAF() throws java.io.IOException
java.io.IOException
public java.util.LinkedHashSet Ecierre(Estado q)
q
- Estado a procesar
public java.util.LinkedHashSet Ecierre(java.util.Collection qs)
qs
- Conjunto de estados a procesar
public java.util.LinkedHashSet unidos(Estado q, Terminal t)
q
- Estado origent
- Terminal
q
mediante un arco
etiquetado con t
, o el E-cierre de q
en el caso de epsilonpublic java.util.LinkedHashSet unidos(java.util.Collection qs, Terminal t)
qs
- Conjunto de estados origent
- Terminal
qs
mediante un arco etiquetado con t
, o el E-cierre de qs
en el caso de epsilon.public java.util.LinkedHashSet siguientes(Estado q, Terminal t)
q
consumiendo
un terminal t
de la entrada. En el caso de que se trate de epsilon,
equivale al E-cierre.
q
- Estado origent
- Terminal a consumir
q
consumiendo t
,
o el E-cierre de q
en el caso de epsilonpublic java.util.LinkedHashSet siguientes(java.util.Collection qs, Terminal t)
qs
consumiendo un terminal t
de la entrada. En el caso de que se trate de epsilon,
equivale al E-cierre.
qs
- Conjunto de estados origent
- Terminal a consumir
qs
consumiendo t
o el E-cierre de qs
en el caso de epsilonprivate boolean superscan(Cadena cadena, java.util.List l, boolean trace) throws AF_Exception
cadena
- Cadena a comprobarl
- Lista donde se almacenarian las configuraciones instantaneas.
AVISO: la variable debe estar inicializadatrace
- Switch indicando si queremos o no tambien obtener la traza
true/false
segun el automata acepte o no la cadena
AF_Exception
- Si en el caso del trace
la lista de entrada no esta inicializada o vaciapublic boolean scan(Cadena cadena)
cadena
- Cadena a comprobar
true/false
segun el automata acepte o no la cadenapublic boolean trace(Cadena cadena, java.util.List l) throws AF_Exception
cadena
- Cadena a comprobarl
- Lista donde se almacenaran las configuraciones instantaneas.
AVISO: la variable debe estar inicializada
true/false
segun el automata acepte o no la cadena
AF_Exception
- Si en el caso del trace
la lista de entrada no esta inicializada o vaciaprivate boolean super_es_AFD(boolean estricto)
estricto
- Switch indicando si queremos ser o no estrictos exigiendo que el automata este completamente especificado
true/false
segun el automata sea o no un AFDpublic boolean es_AFD()
true/false
segun el automata sea o no un AFD (exigiendo que este completamente especificado)public boolean es_AFD_no_especificado()
true/false
segun el automata sea o no un AFD (sin exigir que este completamente especificado)public AF determinizar() throws G_Exception, AF_Exception
G_Exception
AF_Exception
private boolean super_es_conexo(boolean store, java.util.Collection acc, java.util.Collection inacc)
store
- Switch indicando s/n deseamos que devuelva los conjuntos de estados
accesibles e inaccesiblesacc
- Conjunto donde se almacenarian los estados accesibles AVISO: la
variable debera estar inicializadainacc
- Conjunto donde se almacenarian los estados inaccesibles AVISO: la
variable debe estar inicializada
true/false
segun el automata sea conexo o nopublic boolean es_conexo()
true/false
segun el automata sea conexo o nopublic boolean es_conexo(java.util.Collection acc, java.util.Collection inacc)
acc
- Conjunto donde se almacenaran los estados accesibles AVISO: la
variable debera estar inicializadainacc
- Conjunto donde se almacenaran los estados inaccesibles AVISO: la
variable debe estar inicializada
true/false
segun el automata sea conexo o nopublic AF subautomata_conexo() throws G_Exception, AF_Exception
G_Exception
AF_Exception
private int calc_size(int n)
n
- Numero de estados del automata a minimizar
private int get_xy(int n, int x, int y)
n
- Numero de estados del automatax
- Coordenada x de la posicion de la matrixy
- Coordenada y de la posicion de la matrix
private void init_distinguibles(int n, boolean[] tabla, java.util.Hashtable q2i, Estado[] i2q, AF afcnx)
true
) las entradas correspondientes a pares
(estado final, estado no final).
n
- Numero de estados del automatatabla
- Array que implementa la matriz de distinguibilidadq2i
- Hash id. estado::indice en matrizi2q
- Hash (array) indice en matriz::id. estadoafcnx
- Automataprivate void print_distinguibles(int n, boolean[] matriz, java.util.Hashtable q2i, Estado[] i2q)
n
- Numero de estados del automatamatriz
- Array que implementa la matriz de distinguibilidadq2i
- Hash id. estado::indice en matrizi2q
- Hash (array) indice en matriz::id. estadoprivate int search_conj_qs(Estado q, java.util.ArrayList a)
q
- Estado a buscara
- Lista de conjuntos de estados equivalentes en los que buscar
-1
si no lo encuentraprivate void calc_distinguibles(int n, boolean[] tabla, java.util.Hashtable q2i, Estado[] i2q, AF afcnx)
true
) las entradas correspondientes a pares de estados
equivalentes.
n
- Numero de estados del automatatabla
- Array que implementa la matriz de distinguibilidadq2i
- Hash id. estado::indice en matrizi2q
- Hash (array) indice en matriz::id. estadoafcnx
- Automata (conexo) a minimizarprivate java.util.ArrayList get_equivalentes(int n, boolean[] tabla, java.util.Hashtable q2i, Estado[] i2q)
n
- Numero de estados del automatatabla
- Array que implementa la matriz de distinguibilidadq2i
- Hash id. estado::indice en matrizi2q
- Hash (array) indice en matriz::id. estado
private java.util.LinkedHashSet calc_arcos_min(java.util.ArrayList conjs_qs, java.util.LinkedHashSet alfabeto_min, AF afcnx)
conjs_qs
- Lista de conjuntos de estados equivalentes (clases de equivalencia) del
automata originalalfabeto_min
- alfabeto del automata minimoafcnx
- Automata (conexo) a minimizar
private AF generate_AFD_minimo(int n, boolean[] tabla, java.util.Hashtable q2i, Estado[] i2q, AF afcnx)
n
- Numero de estados del automatatabla
- Array que implementa la matriz de distinguibilidadq2i
- Hash id. estado::indice en matrizi2q
- Hash (array) indice en matriz::id. estadoafcnx
- Automata (conexo) a minimizar
public AF minimizar() throws AF_Exception
AF_Exception
- Si el automata no cumple las precondiciones: ser determinista completamente especificado
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |