Есть п^2 записи в матрицу смежности, и вам нужна информация, которая во всех записях, чтобы решить эту проблему. (Вам нужно 1, чтобы проверить, что существуют соответствующие ребра, а 0 - проверить, что обратные края не существуют.) Таким образом, поскольку вам нужно прочитать по крайней мере N^2 записи из матрицы, общая проблема должна выполняться не менее O (N^2) времени.
Что касается попыток поиска BFS: если ваш обход принимает O (n^2) - что будет, из-за необходимости поиска краев в матрице смежности - тогда не имеет значения, является ли проверка на заднем крае постоянное время, общий алгоритм по-прежнему равен O (n^2).
Еще один способ взглянуть на эту проблему: поскольку число ребер равно числу возможных пар вершин, будет n * (n-1)/2 ребра, то есть O (n^2). Ваш обход - это O (V + E), что, таким образом, O (n + n^2), и, следовательно, O (n^2).
Поскольку наилучшим вариантом для этого алгоритма является O (n^2), вы можете просто просто пропустить верхнюю правую половину матрицы (над диагональю) и проверить, что для каждой из этих записей либо а) это 1, или б) его транспозиция эквивалент 1.
Это звучит как домашняя проблема. Возможно, вы могли бы разобраться в своих мыслях относительно проблемы, и мы могли бы помочь вам, где бы вы ни застряли? – Amber
, где мой комментарий пошел? DAV? – DarthVader
Я понятия не имею; Я видел это раньше, а затем он исчез и для меня. – Amber