Genome Assembly Using Reads

Problem

A directed cycle is simply a cycle in a directed graph in which the head of one edge is equal to the tail of the next (so that every edge in the cycle is traversed in the same direction).

For a set of DNA strings S and a positive integer k, let Sk denote the collection of all possible k-mers of the strings in S.

Given: A collection S of (error-free) reads of equal length (not exceeding 50 bp). In this dataset, for some positive integer k, the de Bruijn graph Bk on Sk+1∪Srck+1 consists of exactly two directed cycles.

Return: A cyclic superstring of minimal length containing every read or its reverse complement.