p:=<номер
p:=<номер первой свободной вершины>;
Chain[yk]:=p;
repeat
r:=<очередная вершина из Chain>;
for <для всех вершин, связанных с r> do
if <вершина из XN>
then begin if <ребро “тонкое”> then
<включить ребро в цепочку>
end
else begin if <ребро “толстое”> then
<включить ребро в цепочку>
end;
until <просмотрены все вершины из Chain> or <текущая вершина принадлежит YM, и она свободна>;
FindChar:=<текущая вершина принадлежит YM, и она свободна>;
end;
Процесс дальнейшего уточнения логики вынесем в самостоятельную часть работы.
3.10. Методы приближенного решения задачи коммивояжера
3.10.1. Метод локальной оптимизации
Попытаемся отказаться от перебора вариантов, рассмотренного в главе 2. Найдем первое решение (первую оценку), а затем попытаемся улучшить оценку, просматривая только соседние города найденного пути.
Шаг 1. Получить приближенное решение
Индекс
Элементарные функции
Линейные уравнения
Нелинейные уравнения
Случайные числа