Скільки часу потрібно, щоб знайти короткий цикл у випадковому графіку?


9

Дозволяє GG(n,n1/2) бути випадковим графіком на n3/2краї. З дуже високою ймовірністю,G має багато 4-цикли. Наша мета - вивести будь-яку з них4-цикли якомога швидше.

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

Чи можемо ми зробити краще? Зокрема, чи можливий алгоритм постійного часу, який досягає успіху з постійною ймовірністю?


Мені здається, цей графік має занадто мало ребер, щоб мати властивість, яку ви хочете, якщо ви використовуєте стандартну термінологію, це як G(n,p) зразок с p=(n/C(n,2))=O(n3/2)
kodlu

Дякую, ти маєш рацію, що я мав на увазі p=n1/2(відредаговано). Ці графіки матимутьC4s у будь-який час ділиться двома вузлами 2сусідів, що відбувається з постійною ймовірністю на пару вузлів.
GMB

Я тут використовую термінологію ( en.wikipedia.org/wiki/Erd%C5%91s%E2%80%93R%C3%A9nyi_model ), де кожен край включений незалежно з вірогідністюp- так, ребра в очікуванні. p(n2)
GMB

Відповіді:


6

Ні, ви не можете перемогти запити. Я поясню, як формалізувати ескіз доказів ексфрету цього способу, який працює для адаптивних алгоритмів. Це все передбачається у відповіді ексфрету; Я лише заповнюю деякі деталі.Θ(n)

Розглянемо будь-який (можливо адаптивний) алгоритм, який видає послідовність запитів, де кожен запит є або "добути го краю вершини списку суміжності вершини ", або "перевірити, чи вершини пов'язані ребром". Можна вважати, що жоден запит не повторюється, оскільки будь-який алгоритм, який повторює запит, може бути перетворений на такий, який ніколи не повторює жодного запиту. Аналогічно, ми можемо припустити, що алгоритм ніколи не здійснює запит на зв’язок для будь-якої пари вершин, які, як відомо, з'єднані ребром (а саме, тестування коли раніше було повернуто запитом на отримання , або було попередньо повертається запитом на отриманняivv,wv,wwvvwабо ми раніше тестували підключення ).w,v

Нехай позначає подію, що під час перших запитів жодна вершина не повертається більш ніж одним запитом fetch, і жоден fetch-запит не повертає вершину, попередньо запитувану, і що жоден запит на підключення-тест не повертається " ". Доведемо, що якщо . Звідси випливає, що жоден алгоритм, який робить запити, не може мати постійну ймовірність знайти 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)


"Якщо kth-запит - це тест на зв'язок-тест, то ." Я думаю ? (Навіть якщо так, висновок все-таки проходить, звичайно.)Pr[Ek|Ek1]11/n11/n
usul

@usul, ой, так, дякую! Виправлено.
DW

5

Припустимо, що ми можемо лише запитати й край списку примикань даної вершини (який, я припускаю, не відсортований), чи суміжні дві задані вершини. У цьому випадку потрібно запитів, щоб навіть знайти цикл. Це тому, що є шанс, що всі наші запити першого типу повертають різні вершини, і що всі наші запити другого типу повертають, що дві вершини не з'єднані.in1o(1)

Виправте мене, якщо я десь помиляюся або нерозумію проблему.


1
Цей ескіз доказів мені здається, що він працює лише для неадаптивних алгоритмів (тобто запитів, заздалегідь зафіксованих).
usul

@usul Чому це так? Whp ми все одно використовуємо лише одну гілку дерева рішень.
exfret

Можливо, я повинен уточнити. Повинно бути зрозуміло, що якщо ми отримаємо відповіді на наші запити, як це було визначено, ми не можемо вивести 4-цикльний цикл з постійною ймовірністю. Однак для будь-якого дерева рішень глибини є шанс, що ми будемо відправлені вниз такою гілкою. o(n)1o(1)
exfret

Дякую! Я (дещо довільно) прийняв іншу розроблену версію, але, схоже, ви її отримали. Оцініть відповідь.
GMB

1
@GMB Я думаю, ви прийняли правильне рішення; другий - відповідь набагато якісніший і заслуговує на те, щоб його побачили перші.
exfret
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.