Grafo de De Bruijn

Un grafo de De Bruijn es un grafo dirigido que permite representar los solapamientos de longitud entre todas las palabras (cadenas de caracteres) de longitud con un alfabeto dado. El nombre de los grafos deriva del matemático Nicolaas Govert de Bruijn quien los describió en 1946.[1]​ Sin embargo, dichos grafos ya habían sido descritos por Camille Flye Santa-Casa en 1894[2]​ y por Irving J. Good en 1946.[3][4]

El grafo de De Bruijn de orden con un alfabeto de letras está construido como se explica a continuación. Los nodos (o vértices) de están en biyección con (están etiquetados por) las palabras de longitud sobre . Si y son dos nodos, hay un arco de a cuando la palabra obtenida al suprimir la primera letra de es la misma que la palabra obtenida al suprimir la última letra de ; dicho de otra manera, cuando existen dos letras y , y una palabra o cadena , tales que y . La presencia de un arco significa entonces que existe una superposición entre dos palabras de la misma longitud. Es común etiquetar ese arco con la cadena .

Grafo de De Bruijn construido con el alfabeto binario () para palabras de longitud .

Ejemplos

editar

El grafo   de la figura a la derecha está construido mediante un alfabeto binario   con cadenas de longitud  . Las   cadenas de longitud 3 con el alfabeto binario son:

 

Hay, por ejemplo, un arco que sale del nodo   que va al nodo   porque el sufijo de longitud 2 de   es igual al prefijo de longitud 2 de  . Ese arco queda marcado con la cadena  . Asimismo, hay un arco que va del nodo   al nodo   porque el sufijo de longitud 2 de   es igual al prefijo de longitud 2 de  . Ese arco queda marcado con la cadena  .

El grafo   está formado por   nodos, uno por cada letra. De cada nodo parten   arcos, hay entonces   arcos.

Propiedades

editar
  • El grafo   de orden   es el grafo línea del grafo   de orden  :
  • Un grafo de De Bruijn es euleriano y hamiltoniano.
  • Toda secuencia de De Bruijn corresponde a un ciclo euleriano de un grafo de De Bruijn.
  • Los circuitos eulerianos de   y hamiltonianos de   se corresponden por la construcción del grafo línea. Estos circuitos son sucesiones de De Bruijn.

Sistemas dinámicos

editar

Se puede hacer un grafo de De Bruijn binario de modo que parezca un objeto de teoría de sistemas dinámicos, como el atractor de Lorenz.

 
Grafo binario De Bruijn
 
Atractor de Lorenz

Esta analogía se explica porque el grafo de De Bruijn   es un modelo de aplicación de Bernoulli.

 

La aplicación de Bernoulli (también llamada la función 2x mod 1 o función diádica para  ) es un sistema dinámico ergódico que puede ser visto como un operador de desplazamiento sobre un número k-ádico. Las trayectorias de este sistema dinámico corresponden a los caminos en el grafo de De Bruijn, con la correspondencia que asocia a cada real   del intervalo semi-abierto   la suma del grafo que corresponde a las   primeras cifras en la representación de   en base  . De manera equivalente, los caminos en el grafo de De Bruijn corresponden a las trayectorias de un sistema dinámico de tipo acabado.

  • Muchas veces las topologías de red son grafos de De Bruijn.
  • El protocolo Koorde de tabla de hash distribuida usa un grafo de De Bruijn.
  • Los grafos de De Bruijn han sido utilizados en bioinformática para el ensamblaje de genoma y transcriptoma a partir de fragmentos de lectura (reads) provenientes de un secuenciamiento.[5][6]


Referencias

editar
  1. Nicolaas Govert de Bruijn, «A Combinatorial Problem», Koninklijke Nederlandse Akademie v. Wetenschappen, vol. 49, 1946, p. 758–764
  2. Sainte-Marie, Camille Flye (1894). «Question 48». L'Intermédiaire des Mathématiciens. p. vol. 1, p. 107–110. Camille Flye Sainte-Marie, «Question 48», L'Intermédiaire des Mathématiciens, vol. 1, 1894, p. 107–110
  3. Good, I. J. (1946). «Normal Recurring Decimals». Journal of the London Mathematical Society (en inglés). s1-21 (3): 167-169. ISSN 1469-7750. doi:10.1112/jlms/s1-21.3.167. Consultado el 14 de junio de 2021. 
  4. «The origins of combinatorics on words». European Journal of Combinatorics (en inglés) 28 (3): 996-1022. 1 de abril de 2007. ISSN 0195-6698. doi:10.1016/j.ejc.2005.07.019. Consultado el 14 de junio de 2021. 
  5. Compeau, Phillip E. C.; Pevzner, Pavel A.; Tesler, Glenn (2011-11). «How to apply de Bruijn graphs to genome assembly». Nature Biotechnology (en inglés) 29 (11): 987-991. ISSN 1546-1696. PMID 22068540. doi:10.1038/nbt.2023. Consultado el 14 de junio de 2021. 
  6. Martin, Jeffrey A.; Wang, Zhong (2011-10). «Next-generation transcriptome assembly». Nature Reviews Genetics (en inglés) 12 (10): 671-682. ISSN 1471-0064. doi:10.1038/nrg3068. Consultado el 14 de junio de 2021.