Сколько времени нужно, чтобы найти короткий цикл в случайном графе?

9

Позволять GG(n,n1/2) быть случайным графом на n3/2кромки. С очень высокой вероятностью,G имеет много 4-циклов. Наша цель - вывести любой из этих4-циклы как можно быстрее.

Предположим, у нас есть доступ к G в форме списка смежности, мы можем добиться успеха с постоянной вероятностью в O(n) время следующим образом: выбрать любой узел v и начать генерировать случайные 2пути, начинающиеся с v; как только мы находим два разных2- пути, которые разделяют конечную точку, мы закончили. Естьn возможные конечные точки, и по парадоксу дня рождения мы добьемся успеха с постоянной вероятностью, узнав о n из них.

Можем ли мы сделать лучше? В частности, возможен ли алгоритм с постоянным временем, который успешно работает с постоянной вероятностью?

GMB
источник
Мне кажется, что у этого графа слишком мало ребер, чтобы иметь желаемое свойство, если вы используете стандартную терминологию, это похоже на G(n,p) образец с p=(n/C(n,2))=O(n3/2)
Кодлу
Спасибо вы правы что я имел ввиду p=n1/2(Под редакцией). Эти графики будут иметьC4в любое время два узла разделяют 2соседи, что происходит с постоянной вероятностью для каждой пары узлов.
GMB
Я использую здесь терминологию ( en.wikipedia.org/wiki/Erd%C5%91s%E2%80%93R%C3%A9nyi_model ), где каждое ребро включается независимо с вероятностьюpИтак, ребер в ожидании. p(n2)
GMB

Ответы:

6

Нет, вы не можете превзойти запросы . Я объясню, как формализовать набросок доказательства exfret этого, таким образом, который работает для адаптивных алгоритмов. Это все ожидается в ответе exfret; Я просто заполняю некоторые детали.Θ(n)

Рассмотрим любой (возможно, адаптивный) алгоритм, который выдает последовательность запросов, где каждый запрос либо «выбирает й край списка смежности вершины », либо «проверяет связаны ли вершины ребром». Можно предположить, что ни один запрос не повторяется, так как любой алгоритм, который повторяет запрос, может быть преобразован в алгоритм, который никогда не повторяет какой-либо запрос. Точно так же мы можем предположить, что алгоритм никогда не выполняет запрос на соединение по любой паре вершин, которые, как известно, уже связаны ребром (а именно, проверяют когда был ранее возвращен запросом выборки на , или был ранее возвращенный запросом наivv,wv,wwvvw, или мы ранее проверили связность ).w,v

Пусть обозначает событие, когда во время первых запросов ни одна вершина не возвращается более чем одним запросом на выборку, и ни один запрос на выборку не возвращает вершину, которая была запрошена ранее, и что ни один запрос на соединение не возвращает "подключенный ». Мы докажем, что если . Отсюда следует, что ни один алгоритм, который делает запросов, не может иметь постоянную вероятность нахождения 4-цикла.EkkwPr[Eq]=1o(1)q=o(n)o(n)

Как мы докажем это? Давайте вычислим . Существует два случая: либо й запрос является запросом выборки, либо запросом на проверку соединения:Pr[Ek|Ek1]k

  1. Если й запрос является запросом выборки для вершины , среди первых запросов упоминается вершины , и если й запрос возвращает один из них, то у нас будет , в противном случае у нас будет . Теперь ответ на й запрос равномерно распределен по набору вершин, где содержит все вершины, которые не были возвращены предыдущими запросами выборки на , поэтому ответ на й запрос равномерно распределен по набору размером не менееkv2(k1)k1k¬EkEkkSSvknk+1, Вероятность поражения хотя бы одного из них равна , поэтому в этом случае .2(k1)/(nk+1)Pr[Ek|Ek1]12(k1)/(nk+1)

  2. Если й запрос является запросом для проверки соединения, то .kPr[Ek|Ek1]11/n

В любом случае, если мы имеемq=o(n)

Pr[Ek|Ek1]12(k1)(nk+1).

Сейчас же,

Pr[Eq]=k=1qPr[Ek|Eq1].

Если , тоkqn

Pr[Ek|Ek1]12qnq,

так

Pr[Eq](12qnq)q.

Правая часть примерно равна . Когда , это .exp{2q2/(nq)}q=o(n)1o(1)

В заключение: когда . Отсюда следует, что вам нужно чтобы иметь постоянную вероятность нахождения любого цикла (не говоря уже о 4-цикле).Pr[Eq]=1o(1)q=o(n)Ω(n)

DW
источник
«Если k-й запрос является запросом проверки связности, то .» Я думаю ? (Даже если это так, то вывод еще проходит, конечно.)Pr[Ek|Ek1]11/n11/n
усул
@usul, ой, да, спасибо! Исправлена.
DW
5

Давайте предположим, что мы можем только запросить й край списка смежности данной вершины (который, я предполагаю, не отсортирован) или же смежные две заданные вершины. В этом случае нужно запросов, чтобы даже найти цикл. Это связано с тем, что существует вероятность что все наши запросы первого типа возвращают разные вершины, и что все наши запросы второго типа возвращают, что две вершины не связаны.in1o(1)

Пожалуйста, поправьте меня, если я где-то ошибаюсь или неправильно понимаю проблему.

exfret
источник
1
Этот эскиз доказательства звучит для меня так, как будто он работает только для неадаптивных алгоритмов (т. Е. Запросов, исправленных заранее).
усул
@usul Почему это так? В любом случае, мы используем только одну ветвь дерева решений.
exfret
Возможно, я должен уточнить. Должно быть ясно, что если мы получим ответы на наши запросы в соответствии с предписаниями, то мы не сможем вывести 4-тактный цикл с постоянной вероятностью. Однако для любого дерева решений глубины существует вероятность нас отправят по такой ветке. o(n)1o(1)
exfret
Спасибо! Я (несколько произвольно) принял другую конкретную версию, но, похоже, вы ее получили. Ценю ответ.
GMB
1
@GMB Я думаю, что вы приняли правильное решение; другой - гораздо более качественный ответ и заслуживает того, чтобы его увидели другие.
exfret