Прежде всего, чтобы найти узел, который не необходим для подключения графа, вам нужно найти цикл. Как только вы нашли цикл, вы знаете, что все эти ребра в этом цикле не нужны. Все остальные ребра в графе необходимы для удержания графа вместе, поэтому вы делаете простой обход графа и подсчитываете количество соединенных вершин, чтобы найти минимальное количество узлов, которое нужно удалить, чтобы отключить граф. Я не уверен, что это самый эффективный способ, просто самый эффективный в моей голове. Если V - это число вершин, а E - это число ребер, временная сложность будет где-то около O (V + E) + O (V), поскольку начальный цикл поиска равен O (V + E), а счет узлы O (V). Поскольку E> = V, сложность времени может быть округлена до O (E), но с огромными постоянными коэффициентами.