Algorithmic Strategies for the SNP Haplotype Assembly Problem