Алгоритм Гавела — Хакими
Алгоритм Гавела — Хакими — рекурсивный алгоритм позволяющий определить появляется ли данный список целых чисел как список всех валентностей некоторого конечного простого графа. При положительном ответе на этот вопрос список называется графическим.
Алгоритм предложен Вацловом Гавелом в 1955 и переоткрыт Луисом Хакими в 1962.
Алгоритм
Алгоритм основан на следующей теореме.
Пусть [math]\displaystyle{ s,d_1,\dots,d_s,t_1,\dots,t_k }[/math] есть конечный список неотрицательных целых чисел в невозрастающем порядке. Список [math]\displaystyle{ s,d_1,\dots,d_s,t_1,\dots,t_k }[/math] является графическим, тогда, и только тогда, когда список [math]\displaystyle{ d_1-1,\dots,d_s-1,t_1,\dots,t_k }[/math] графический.
Описанную операцию следует применять поочерёдно с упорядочиванием списка. Если в какой-то момент получаем список из нулей то изначальный список являлся графическим. Если же в списке появится отрицательное число то изначальный список не являлся графическим.
Примеры
- Применим алгоритм к списку [math]\displaystyle{ 4,4,3,3,2,2,1,1 }[/math]. Мы поочерёдно применяем теорему и упорядочивание. То что в результате получается список из нулей означает, что список [math]\displaystyle{ 4,4,3,3,2,2,1,1 }[/math] графический.
- [math]\displaystyle{ \begin{matrix} 4&4&3&3&2&2&1&1 \\ 3&2&2&1&2&1&1 \\ 3&2&2&2&1&1&1 \\ 1&1&1&1&1&1 \\ 1&1&1&1&1&1 \\ 0&1&1&1&1 \\ 1&1&1&1&0 \\ 0&1&1&0 \\ 1&1&0&0 \\ 0&0&0 \end{matrix} }[/math]
- Применим алгоритма к списку [math]\displaystyle{ 7,6,3,3,2,2,1,1 }[/math]. То что в результате получается список из отрицательных чисел означает, что список [math]\displaystyle{ 7,6,3,3,2,2,1,1 }[/math] не является графическим.
- [math]\displaystyle{ \begin{matrix} 7&6&3&3&2&2&1&1 \\ 5&2&2&1&1&0&0 \\ 1&1&0&0&-1&0 \end{matrix} }[/math]
См. также
Примечания
- Havel, Václav (1955), POZNÁMKA O EXISTENCI KONEČNÝCH GRAFŮ, Časopis pro pěstování matematiky Т. 80: 477–480, <http://eudml.org/doc/19050>
- Hakimi, S. L. (1962), On realizability of a set of integers as degrees of the vertices of a linear graph. I, Journal of the Society for Industrial and Applied Mathematics Т. 10: 496–506.