Изменения

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

Навигация