Novel Algorithms for Automated NMR Assignment and Protein Structure Determination