Directed Hamiltonian Path

I was wondering I anyone knew of an algorithm that when given a directed graph will split it up into separate hamiltonian paths. I don’t really mind about nodes that can’t be added to a path but as few paths as possible should be made to include the most nodes. Any ideas would be greatly appreciated