16/06/2006, 18:23
|
| | Fecha de Ingreso: mayo-2006
Mensajes: 40
Antigüedad: 18 años, 7 meses Puntos: 0 | |
No serian tantos estados como supones. Lo serian si lo aplicaras mecanicamente para cada letra que componen el total de los nombres. Supon que tengo exactamente 26 nombres, cada uno de los cuales comienzan con cada una de las letras del alfabeto (abcdefghijklmnopqrstuvwxyz), entonces, independientemente de que tan grandes sean estos nombres (podrian ser frases de muchos caracteres), aqui solo tendria una maquina con 26 estados. Si quisiera ver si una cadena esta entre los 26 nombres iria al estado correspondiente de acuerdo a la primera letra de la cadena y a partir de ahi solo tendria que comparar el resto de la cadena con un solo nombre, el que comienza con la primera letra que corresponde a ese estado. O sea, si ves la maquina de estados como un arbol que comienza del estado 0 y se bifurca en 26 estados, y a su vez cada uno de estos se bifurca en otros 26, y a su vez ... entonces los estados se irian formando con las letras que tienen en comun los nombres en cada nivel de este arbol y un nodo seria una hoja cuando ya no hubiera letras en comun y si una cadena, al analizarla llega a un estado hoja, a partir de ahi solo se tiene que comparar con el resto del nombre que lleva a esa hoja. |