Мне сложно найти противоречащий пример следующей вариации задачи TSP.
Входные данные: G = (V, E) неориентированный полный граф, удовлетворяющий неравенству треугольника, w: E- ›R + весовая функция и исходная вершина s.
Выход: простой цикл Гамильтона, который начинается и заканчивается в s, с минимальным весом.
Алгоритм:
1. S=Empty-Set
2. B=Sort E by weights.
3. Initialized array M of size |V|,
where each cell in the array holds a counter (Initialized to 0)
and a list of pointers to all the edges of that vertex (In B).
4. While |S|!=|V|-1
a. e(u,v)=removeHead(B).
b. If e does not close a cycle in S then
i. s=s union {e}
ii. Increase degree counter for u,v.
iii. If M[u].deg=2 then remove all e' from B s.t e'=(u,x).
iv. If M[v].deg=2 then remove all e' from B s.t e'=(v,x).
5. S=S union removeHead(B).
Это будет сделано аналогично алгоритму Крускала (с использованием DS union-find).
Шаги 4.b.iii и 4.b.iv будут выполняться с использованием списка указателей.
Я очень сомневаюсь, что этот алгоритм верен, поэтому я сразу же понял, почему он неправильный. Любая помощь будет оценена.
If e does not close a cycle in S
невозможно окончательно выбрать край, который закрывает желаемый цикл. Это правильно? - person Codor   schedule 13.07.2016