Hamiltonian Path Algorithm