David Hillman [10] desarrolla un algoritmo para detectar todos los posibles ACLR con culaquier número de estados y cualquier tamaño de vecindad, el proceso es el siguiente:
Se van formando todos los posibles ancestros
de una cadena y de tamaño w y se almacenan en una tabla las parejas
formadas por los 2r elementos iniciales y finales de cada
, esto se hace para cada posible y, al final se tendran un
conjunto de tablas que guardan los 2r elementos iniciales y finales de los posibles
ancestros de cada cadena de ancho w, a tal conjunto se le denominará
; se empieza con w=1, para valores de w>1
simplemente se concatena
con
comparando cada tabla de
con cada tabla de
, si 2r elementos
finales de la tabla en
son iguales a los 2r
elementos iniciales de la tabla en
entonces se
añade una nueva entrada en la tabla de
formada
por los 2r elementos iniciales en la tabla de
y los 2r elementos finales en la tabla de
, las tablas de
se obtienen
directamente de la regla de evolución, de esta manera el proceso puede ser implementado
en una computación recursiva; si el ACL es reversible, debe existir para cada tabla en
una sola pareja en donde los 2r elementos
iniciales sean iguales con los 2r elementos finales ya que esto indicaría que una
y solo una cadena
de longitud w puede
evolucionar en y para toda y de longitud w, es decir, cada posible
cadena solo tendría un único ancestro y por lo tanto su evolución sería invertible.
Por supuesto, si w es grande el método se vuelve muy laborioso, sin embargo
Hillman hace dos observaciones que minimizan este problema; en primera si la tablas de un
conjunto no tienen todas el mismo número de
parejas entonces el ACL no es reversible pues este desequilibrio llevará a que la
información del sistema se pierda gradualmente y con esto la reversibilidad del mismo; el
segundo punto que Hillman señala es que como los valores que pueden tener cada tabla son
finitos, entonces llegará un momento en que se repetirán estos valores; en síntesis, si
cada tabla en
tiene el mismo número de parejas
para
y
para i<j entonces el ACL es reversible y el proceso termina.
Veamos un ejemplo de este algoritmo para ACL(3,h).
Formemos las tablas de los 2r elementos iniciales y finales para los ancestros de 0, 1 y 2.
Tabla: Conjunto para el
ACL(3,h) regla 6007.
Para se encuentra que cada posible cadena
tiene un solo ancestro, ahora concatenemos
consigo mismo para obtener los ancestros de 00, 01 y 02.
Como no se cumple la condición de que cada tabla tenga el mismo número de parejas, se detiene el algoritmo y ACL(3,h) no es reversible.
Veamos otro ejemplo para otro ACL(3,h).
Formemos las tablas de los 2r elementos iniciales y finales para los ancestros de 0, 1 y 2.
Tabla: Conjunto para el
ACL(3,h) regla 14007.
Para también encontramos que cada posible
cadena tiene un solo ancestro, ahora concatenemos
consigo mismo para obtener los ancestros de 00, 01 y 02.
Aquí se observa que la cadena 00 tiene tres posibles ancestros mientras que las cadenas 01 y 02 no tienen ninguno, así que se detiene el algoritmo y ACL(3,h) no es reversible.
Veamos otro ejemplo para otro ACL(3,h).
Formemos las tablas de los 2r elementos iniciales y finales para los ancestros de 0, 1 y 2.
Tabla: Conjunto para el
ACL(3,h) regla 2119.
Para también encontramos que cada posible
cadena tiene un solo ancestro, ahora concatenemos
consigo mismo para obtener los ancestros de todas las posibles cadenas de longitud 2, en
este caso solo obtenemos tres tablas distintas las cuales son:
Si concatenamos ahora con
obtenemos:
Como este conjunto es igual a , tenemos que el
ACL(3,h) es reversible y se detiene el proceso.
En resumen, el algoritmo de Hillman va formando todos los posibles ancestros de las cadenas de longitud w empezando desde 1 y checa si hay un único ancestro para cada una de estas cadenas de longitud w+2r que al tener los elementos 2r iniciales y finales iguales, se pueda representar como una secuencia de estados también de longitud w que evoluciona en la cadena estudiada.
Figura: Ancestro único de la cadena 01 que puede representarse
con la misma longitud.