Ce sont des algorithmes pas forcément évident à écrire, car il s'agit d'un problème NP-complet :
https://fr.wikipedia.org/wiki/Probl%C3%A8me_NP-complet

Néanmoins en recherchant sur les termes...