Вдохновленный ответом Вора, я хочу дать более простой.
Начнем с задачи о гамильтоновом цикле для задачи сеточных графов, которая была доказана Итаем.
Легко видеть, что множество ребер графа сетки можно разбить на 2 непересекающихся подмножества: горизонтальное и вертикальное.
Итак, теперь нам нужно сплести все горизонтальные в один простой цикл, а все вертикальные - в другой простой цикл.
Это очень простая задача: для вертикальных разверните от крайнего левого до крайнего правого положения, просто соедините все вертикальные промежутки, затем соедините последовательную вертикальную линию, скоординированную по X, затем соедините самую нижнюю левую вершину с самой высокой правой вершиной. Сделайте аналогично для горизонтальных краев.
Обратите внимание, что полученный граф все еще прост, неориентирован и удовлетворяет требованию. Это просто, потому что на последних этапах вертикальной фазы и горизонтальной фазы мы имеем дело с двумя различными парами вершин.
Теперь сделайте тот же трюк, что и Вор. В каждой вершине для каждого ее исходного инцидентного ребра добавьте К новых вершин. Как обычно, К ahouls должны быть достаточно большими. Наконец, длина подлинного гамильтонова цикла должна быть 2 к | В|