У меня проблема, которая выглядит как проблема подграфов connectet с высоты мили, но совершенно отличается тем, что она не подпадает под строгие определения.Алгоритм для определения «нечетко связанных» подграфов
Я столкнулся с графиком с несколькими миллионами узлов и ссылок (ручной анализ невозможен), среди этих миллионов узлов, как известно, есть 2 или 3 «набора».
Каждый из «наборов» состоит из сотен тысяч единиц узлов и десятков тысяч этапов, не сильно связанных между собой. Каждый из этих наборов теоретически не должен быть связан с другими наборами ... но есть (gesstimation) десяток ошибочных ссылок, которые в конечном итоге соединяют эти множества.
Проблема заключается в том, чтобы найти эти наборы и ошибочные ссылки или, по крайней мере, получить список возможных кандидатов, которые могут быть проверены человеком, которые могут быть проверены вручную.
Моя текущая «лучшая идея» состоит в том, чтобы случайно выбрать два узла, найти кратчайший путь между ними, а затем пометить ссылки на этом кратчайшем пути. Rinse & повторяют миллионы раз, а ошибочные ссылки в конечном итоге оказываются как наиболее яркие, так как они «chokepoints» между наборами.
Однако это довольно медленно, и когда один набор намного больше других и имеет внутренние chokepoints, он становится доминирующим над «самым заметным» списком, что делает его бессмысленным.
Есть ли для этого лучшие алгоритмы/подходы?
редактировать: уточнением пути разметки является пометка пропорционально длиной пути, который помогает с «внутренними узкими местами большого набора» вопросом, но не полностью устраняет ее как некоторые наборы могут иметь удаленные «выбросы», в то время как другие наборы имеют множество тесно связанных узлов (короткие внутренние расстояния)
Работает ли алгоритм минимального разреза между двумя случайными узлами? –