У меня есть неориентированный невзвешенный граф G = (V, E) и случайно выбранное подмножество S его вершин.Я хочу проверить, являются ли вершины в S взаимно смежными (то есть формируют полный подграф / клику).У меня есть следующий алгоритм (псевдокод):
foreach vertex in S {
// Check that the vertex has enough edges
if (vertex.edges.count < S.size - 1)
return false;
// Check that there is an edge to each vertex in S
foreach vertex2 in S {
if (!vertex.hasEdgeTo(vertex2))
return false;
}
}
return true;
Проблема в том, что производительность этого алгоритма в худшем случае равна O (| V | 2 ) (в случае, когда подмножествоS содержит все вершины полного графа).
Мой вопрос: есть ли более быстрый алгоритм, который работает с лучшей большой O сложностью в худшем случае?