We introduce a new concept of a subgraph class called a superbubble for analyzing
assembly graphs, and propose an efficient algorithm for detecting it. Most assembly
algorithms utilize assembly graphs like the de Bruijn graph or the overlap graph
constructed from reads. From these graphs, many assembly algorithms first detect simple
local graph structures (motifs), such as tips and bubbles, mainly to find sequencing
errors. These motifs are easy to detect, but they are sometimes too simple to deal with
more complex errors. The superbubble is an extension of the bubble, which is also important
for analyzing assembly graphs. Though superbubbles are much more complex than ordinary
bubbles, we show that they can be efficiently enumerated. We propose an average-case linear
time algorithm (i.e., O(n+m) for a graph with n vertices and m edges) for graphs with a
reasonable model, though the worst-case time complexity of our algorithm is quadratic
(i.e., O(n(n+m))). Moreover, the algorithm is practically very fast: Our experiments show
that our algorithm runs in reasonable time with a single CPU core even against a very large
graph of a whole human genome.