Je schrijft een programma om te toetsen of een graaf met \(V=\{0,\dotsc,n−1\}\), waarbij \(n \leq 64\), een hamiltoniaanse cykel heeft. Je stelt daarbij verzamelingen als bitsets met één unsigned long int voor (met 64 bit). Je begint met een pad van lengte 1 en probeert dat uit te breiden tot een cykel. Als bounding criterium toets je of elke top die nog niet in het pad zit nog met twee toppen verbonden kan worden – dus ten minste twee buren heeft die niet graad 2 in het al opgebouwde pad hebben. Daarvoor gebruik je de volgende bitsets:
niet_midden_pad
: de verzameling van toppen die niet in het pad zitten, of de begin- of eindtop ervan zijnin_pad
: de verzameling van toppen in het pad op dit momentDit algoritme is al geïmplementeerd in de abstracte klasse HamiltonianCycle
1. Implementeer de abstracte methodes zo efficiënt mogelijk in een klasse genaamd MyHamiltonianCycle
.
Gebruik eventueel de testklasse SimpleTest
2 om je oplossing lokaal te testen.