Изменения

Перейти к: навигация, поиск

Гамильтоновы графы

390 байт добавлено, 00:09, 18 января 2012
Алгоритм нахождения гамильтового цикла
bool[][] result = new int[1 << n][n];
for (int i = 0; i < n; i++):
result[1 << i][i] = true(0; i) in g.edges;
for (int i = 1; i < (1 << n); i++):
if (count(i) == 1):
return result
В приведённом выше коде считаем, что n меньше количества бит в числовом типе данных, для операций над множествами используются побитовые логические операции в синтаксисе языка C. Функция count считает количество единичных бит в числе (она проста в реализации, но не относится к алгоритма, поэтому не приводится). Граф гамильтонов тогда, когда dp[(1 << n) - 1][i] && (i; 0) <tex>\in</tex> g.edges для некоторого i.
==Источники==
Анонимный участник

Навигация