Combinatorial algorithms in bioinformatics