Skip to contents

De Bruijn graphs are labeled graphs representing the overlap of strings.


make_de_bruijn_graph(m, n)




Integer scalar, the size of the alphabet. See details below.


Integer scalar, the length of the labels. See details below.


Passed to make_de_bruijn_graph().


A graph object.


A de Bruijn graph represents relationships between strings. An alphabet of m letters are used and strings of length n are considered. A vertex corresponds to every possible string and there is a directed edge from vertex v to vertex w if the string of v can be transformed into the string of w by removing its first letter and appending a letter to it.

Please note that the graph will have m to the power n vertices and even more edges, so probably you don't want to supply too big numbers for m and n.

De Bruijn graphs have some interesting properties, please see another source, e.g. Wikipedia for details.


Gabor Csardi


# de Bruijn graphs can be created recursively by line graphs as well
g <- make_de_bruijn_graph(2, 1)
make_de_bruijn_graph(2, 2)
#> IGRAPH 1f9e78f D--- 4 8 -- De-Bruijn graph 2-2
#> + attr: name (g/c), m (g/n), n (g/n)
#> + edges from 1f9e78f:
#> [1] 1->1 1->2 2->3 2->4 3->1 3->2 4->3 4->4
#> IGRAPH 2c2cc41 D--- 4 8 -- Line graph
#> + attr: name (g/c)
#> + edges from 2c2cc41:
#> [1] 1->1 3->1 1->2 3->2 2->3 4->3 2->4 4->4