Позволять быть случайным графом на кромки. С очень высокой вероятностью, имеет много -циклов. Наша цель - вывести любой из этих-циклы как можно быстрее.
Предположим, у нас есть доступ к в форме списка смежности, мы можем добиться успеха с постоянной вероятностью в время следующим образом: выбрать любой узел и начать генерировать случайные пути, начинающиеся с ; как только мы находим два разных- пути, которые разделяют конечную точку, мы закончили. Есть возможные конечные точки, и по парадоксу дня рождения мы добьемся успеха с постоянной вероятностью, узнав о из них.
Можем ли мы сделать лучше? В частности, возможен ли алгоритм с постоянным временем, который успешно работает с постоянной вероятностью?
Ответы:
Нет, вы не можете превзойти запросы . Я объясню, как формализовать набросок доказательства exfret этого, таким образом, который работает для адаптивных алгоритмов. Это все ожидается в ответе exfret; Я просто заполняю некоторые детали.Θ(n−−√)
Рассмотрим любой (возможно, адаптивный) алгоритм, который выдает последовательность запросов, где каждый запрос либо «выбирает й край списка смежности вершины », либо «проверяет связаны ли вершины ребром». Можно предположить, что ни один запрос не повторяется, так как любой алгоритм, который повторяет запрос, может быть преобразован в алгоритм, который никогда не повторяет какой-либо запрос. Точно так же мы можем предположить, что алгоритм никогда не выполняет запрос на соединение по любой паре вершин, которые, как известно, уже связаны ребром (а именно, проверяют когда был ранее возвращен запросом выборки на , или был ранее возвращенный запросом наi v v,w v,w w v v w , или мы ранее проверили связность ).w,v
Пусть обозначает событие, когда во время первых запросов ни одна вершина не возвращается более чем одним запросом на выборку, и ни один запрос на выборку не возвращает вершину, которая была запрошена ранее, и что ни один запрос на соединение не возвращает "подключенный ». Мы докажем, что если . Отсюда следует, что ни один алгоритм, который делает запросов, не может иметь постоянную вероятность нахождения 4-цикла.Ek k w Pr[Eq]=1−o(1) q=o(n−−√) o(n−−√)
Как мы докажем это? Давайте вычислим . Существует два случая: либо й запрос является запросом выборки, либо запросом на проверку соединения:Pr[Ek|Ek−1] k
Если й запрос является запросом выборки для вершины , среди первых запросов упоминается вершины , и если й запрос возвращает один из них, то у нас будет , в противном случае у нас будет . Теперь ответ на й запрос равномерно распределен по набору вершин, где содержит все вершины, которые не были возвращены предыдущими запросами выборки на , поэтому ответ на й запрос равномерно распределен по набору размером не менееk v 2(k−1) k−1 k ¬Ek Ek k S S v k n−k+1 , Вероятность поражения хотя бы одного из них равна , поэтому в этом случае .≤2(k−1)/(n−k+1) Pr[Ek|Ek−1]≥1−2(k−1)/(n−k+1)
Если й запрос является запросом для проверки соединения, то .k Pr[Ek|Ek−1]≥1−1/n−−√
В любом случае, если мы имеемq=o(n−−√)
Сейчас же,
Если , тоk≤q≤n−−√
так
Правая часть примерно равна . Когда , это .exp{−2q2/(n−q)} q=o(n−−√) 1−o(1)
В заключение: когда . Отсюда следует, что вам нужно чтобы иметь постоянную вероятность нахождения любого цикла (не говоря уже о 4-цикле).Pr[Eq]=1−o(1) q=o(n−−√) Ω(n−−√)
источник
Давайте предположим, что мы можем только запросить й край списка смежности данной вершины (который, я предполагаю, не отсортирован) или же смежные две заданные вершины. В этом случае нужно запросов, чтобы даже найти цикл. Это связано с тем, что существует вероятность что все наши запросы первого типа возвращают разные вершины, и что все наши запросы второго типа возвращают, что две вершины не связаны.i n−−√ 1−o(1)
Пожалуйста, поправьте меня, если я где-то ошибаюсь или неправильно понимаю проблему.
источник