Курсовая работа: Разработка программы нахождения всех полных подграфов (клик) данного графа
Рисунок 1 – неориентированный граф из шести вершин.
1. Описание алгоритма нахождения клик
В качестве алгоритма поиска клик был выбран алгоритм Брона-Кербоша ("Algorithm 457: Finding All Cliques of an Undirected Graph".), заявленный как один из самых быстрых алгоритмов поиска клик (Cazals, F.; Karande, C. (2008),"A note on the problem of reporting maximal cliques"). Алгоритм разработан голландскими математиками Броном и Кербошем (Bron and Kerbosh) в 1973 году.
Алгоритм использует тот факт, что всякая клика в графе является его максимальным по включениюполным подграфом. Начиная с одиночной вершины (образующей полный подграф), алгоритм на каждом шаге пытается увеличить уже построенный полный подграф, добавляя в него вершины из множества кандидатов. Высокая скорость обеспечиваетсяотсечениемпри переборе вариантов, которые заведомо не приведут к построению клики, для чего используется дополнительное множество, в которое помещаются вершины, которые уже были использованы для увеличения полного подграфа.
На листинге 1.1 приведена реализация алгоритма псевдокодом. M – текущее независимое множество, K – множество кандидатов (вершин, способных образовать клику. На начальном этапе это множество содержит все вершины графа), P – множество отсеянных вершин, которые не могут более добавляться в M, v – просматриваемая вершина, G(i) – множество вершин, смежных с i.
Листинг 1.1 – реализация алгоритма Брона-Кербоша псевдокодом
while K != 0 or M != 0:
if K != 0:
v = K.first
push M, K, P, v
M = M + {v}
K = K – G(v) – {v}
P = P – G(v)
else:
if P == 0:
print M
pop v, P, K, M
K = K – {v}
P = P + {v}
2. Разработка структуры программы
2.1 Постановка задачи
Задачей программы ставится нахождение всех полных подграфов (клик) данного неориентированного графа. Помимо этого программа должна обладать следующими возможностями:
– Создание и редактирование неориентированного графа.
– Загрузка и сохранение графа в файл, как в виде матрицы смежности, так и в собственном формате файла программы.
– Обеспечивать интерактивность графа (граф можно создавать/изменять при помощи мыши, изменения в графе сразу же отображаются на экране).
– Обладать средствами экспорта изображения графа в графические файлы формата png и bmp (формат jpg мало подходит для этих целей, так как на однородном фоне хорошо заметны артефакты конверсии изображения).
– Предоставлять средства просмотра найденных в графе клик, а также экспорта их в графические файлы или сохранения в матричном или графовом формате.
– Обладать средствами генерации отчета о найденных кликах.
– Предоставлять возможность распечатать созданный граф.
2.2 Структура программы
Программа состоит из главного окна приложения, в котором осуществляется создание и редактирование графа, окна свойств графа, отображающего его матрицу смежности и параметры и окна поиска и отображения клик.