hamilton算法