Что такое эффективный алгоритм для подсчета числа треугольников в неориентированном графе) (где граф - множество вершин и ребер)? Я искал Google и читал через свой полк учебников в течение нескольких часов каждый день в течение трех дней подряд.
Это для домашнего задания, где мне нужен такой алгоритм, но его разработка не учитывает ничего при назначении. Ожидается, что мы сможем просто найти такой алгоритм из внешних ресурсов, но я нахожусь в конце своей веревки.
Для пояснения треугольник в графе представляет собой цикл длиной три. Хитрость заключается в том, что он должен работать над наборами вершин с не более чем 10000 узлов.
В настоящее время я работаю на С#, но больше забочусь об общем подходе к решению этой проблемы, чем код для копирования и вставки.
На высоком уровне мои попытки до сих пор включали:
- Первый поиск по ширине, который отслеживал все уникальные циклы длины три. Мне это показалось для меня прекрасной идеей, но я не мог получить ее функциональной.
- Цикл над всеми узлами в графе, чтобы увидеть, разделили ли три вершины ребро. Это слишком медленное время работы для больших наборов данных. O (N ^ 3).
Сам алгоритм является частью вычисления коэффициента кластеризации.