Изменения

Перейти к: навигация, поиск
Псевдокод
== Псевдокод ==
Функция <tex>findHamiltonianCycle</tex> получает на вход очередь вершин и находит гамильтонов цикл в графе.
 
{| width = 100%
|-
|
<font color = "green">// g[][] - булевская матрица смежности</font> '''Queuefunction''' queue <font color = "green"tex>// создаем очередь</font> '''for''' i = 0 '''to''' n - 1 \mathtt{findHamiltonianCycle}(queue.pushBack(v[i]) :<font color = "green">// добавляем в очередь все вершины графа</fonttex> '''for''' k = 0 '''to''' ...n*(n - 1) <font color = "green">// пока не проделано нужное количество итераций</font> '''if''' '''not''' g[<tex>(queue.\mathtt{at}(0), queue.\mathtt{at}(1)] ) \notin E</tex> <font color = "green">// проверяем Проверяем существования ребра между первой и второй вершинами очереди</font> <tex>i = 2 </tex> '''while''' '''not''' g[<tex>(queue.\mathtt{at}(0), queue.\mathtt{at}(i)] ) \notin E</tex> '''or''' '''not''' g[<tex>(queue.at(1), queue.at(i + 1)] ) \notin E</tex> <tex>i</tex>++ <font color = "green">// ищем Ищем индекс удовлетворяющую условию вершины</font> i++ <tex>queue.\mathtt{swapSubQueue}(2, i) </tex> <font color = "green">// разворачиваем Разворачиваем часть перестановки от 2-й до найденной позиции включительно</font> <tex>queue.\mathtt{pushBack}(queue.\mathtt{top}()) <font color = "green"/tex>// Добавляем первую вершину в конец очереди </fonttex> queue.\mathtt{pop}() <font color = "green">// а из начала очереди удаляем</fonttex>
|}
212
правок

Навигация