C'est essentiellement un pathfinder/search.
On suppose que isConnected (a, b) retourne si les deux noeuds sont connectés
(je suis en train d'écrire le code dans Lua, il ne devrait pas être difficile à traduire)
function search(list)
local i = 0
while i < 10000 do
i = i + 1
if isConnected(i,list[#list]) then
--This expression refers to the last member
search(list ++ i)
--Although not technically a proper operator, ++ adds the element to the end of the list
end
end
submit_list(list)
end
submit_list
est une fonction qui prend des listes et les vérifie. Il trouve la liste soumise la plus longue qui ne contient aucun doublon. Cette liste sera la solution à votre problème.
Oh, une autre chose; mon code ne tient pas compte de quelque chose. Dans le cas où la liste contient des noeuds en double, cette fonction doit se terminer afin qu'elle ne se répète pas indéfiniment.