Турнир - это полный, направленный граф, который задает любые две вершины u и v, между ними существует направленное ребро (если u выиграно над v, тогда ребро от u до v).Найти гамильтоновский путь на турнире с списками смежности в Python
Гамильтоновский путь всегда существует в турнире. Поэтому заданные списки смежности в форме {u: [v, w], v: [w]}, где есть направленное ребро от u до w, u до v и v to w, как найти то, что гамильтонов путь есть и печатать верификации в порядке?
Даже если вы не знаете python или что-то еще, просто алгоритм будет очень полезен. Я подумал об этом, и, полагаю, мне нужно начать с вершины высшей степени? Затем добавьте вершину со второй наивысшей степенью и т. Д. До вершины с наименьшей степенью. Но я не вижу, как это безопасный метод, вершина с наивысшей степенью могла быть избита вершиной со второй самой высокой.
Благодарим за любую помощь заранее!
Алгоритм O (n^2), описанный здесь: https://sbjoshi.wordpress.com/2010/11/11/tournament-graph-and-hamiltonian-path/ –
Алгоритм O (nlogn), описанный здесь: http: //epubs.siam.org/doi/abs/10.1137/0403002 – Dandelion
Спасибо @PeterdeRivaz и @Vasei! – PolkaDot