По сути это указатель пути / поиск.
Предположим, что isConnected (a, b) возвращает, если два узла соединены
(я пишу код на Lua, он не должентрудно перевести)
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
- это функция, которая берет списки и проверяет их.Он находит самый длинный отправленный список, который не содержит дубликатов.Этот список будет решением вашей проблемы.
О, еще одна вещь;мой код не учитывает что-либо.В случае, если список содержит дубликаты узлов, эта функция должна завершаться, чтобы она не повторялась вечно.