Exact and Heuristic Algorithms for the DNA Fragment Assembly Problem