Algorithms For Reconstructing Biological History From Genomic Data