Реконструкція дерева з розділових запитів


18

Припустимо, T - дерево постійного ступеня, структура якого ми не знаємо. Проблема полягає у виведенні дерева , задаючи запити форми: "Чи лежить вузол на шляху від вузла до вузла ?". Припустимо, що кожен запит може відповідати оракулом постійно. Ми знаємо значення , кількість вузлів на дереві. Мета - мінімізувати час, необхідний для виведення дерева з точки зору .x a b n nTxabnn

Чи існує алгоритм o(n2) для вищезазначеної проблеми?

Припустимо, що ступінь будь-якого вузла в становить не більше 3.T


Що я знаю

Корпус обмеженого діаметру легко . Якщо діаметр дерева дорівнює , то ми можемо отримати алгоритм ділення і перемоги:D

Будь-яке двійкове дерево має хороший роздільник, який розділяє дерево на компоненти розміром не менше 1/3n.

  1. Виберіть будь-яку вершину x. Якщо це хороший роздільник мітки, то і повторіть.
  2. Знайдіть усіх 3 сусідів х.
  3. Рухайтеся в напрямку сусіда, який має найбільшу кількість вузлів. Повторіть крок 2 із сусідом.

Оскільки пошук сепаратора займає максимум кроків, ми отримуємо алгоритм .O ( n D log n )DO(nDlogn)

рандомізовані алгоритмO(nlog2n) . (зрушено з коментарів нижче)

Виберіть дві вершини х та у випадковим чином. З 1/9 ймовірністю вони будуть лежати на протилежних сторонах роздільника. Виберіть середній вузол шляху від до . Подивіться, чи це роздільник, чи не двійковий пошук.уxy

Він займає O(nlogn) очікуваний час для пошуку сепаратора. Таким чином, ми отримуємоO(nlog2n) рандомізований алгоритм.


Фон Про цю проблему я дізнався від друга, який працює в імовірнісних графічних моделях. Вищезазначена задача приблизно відповідає вивченню структури дерева перехрестя за допомогою оракула, який, з урахуванням трьох випадкових змінних X, Y і Z, може визначити значення взаємної інформації між X і Y з урахуванням значення Z. Якщо значення близьке до нуля, можна вважати, що Z лежить на шляху від X до Y.


7
Розкрийте, будь ласка, що ви вже знаєте про проблему, тому ми не витрачаємо час на винахід колеса.
Jeffε

@ Jɛ ff E Я відредагував своє запитання.
Джагадіш

Відповіді:


5

Ні . Наступна проста стратегія противника передбачає, що будь-який алгоритм для реконструкції дерева вузлів потребує щонайменше ( n - 1nзапитів "між".(n12)=n(n1)/2

Довільно позначте вузли . Противник відповідає на всі запити так, ніби дерево - це зірка з вершиною 0 в центрі; подумайте про 0 як про корінь, а про інші вузли - про його дітей.0,1,2,,n100

Between?(a,x,b)
    if x=0 return TRUE else return FALSE

Тепер припустимо, що алгоритм зупиняється після виконання менше запитів. Тоді повинно бути дві вершини y і z , ні дорівнювати нулю, щоб алгоритм не запитував жодної перестановки трійки ( 0 , y , z ) . Якщо алгоритм стверджує, що дерево не є зіркою з центром 0 , противник розкриває свій вклад, доводячи алгоритм неправильним. Тоді супротивник виявляє, що x насправді є єдиною дитиною y , доводивши алгоритм неправильно.n(n1)/2yz(0,у,z)0ху

Оновлення: На жаль, щойно помітили обмеження ступеня. На щастя, це не основна перешкода. Замініть вузол своїм улюбленим двійковим деревом, а інші n - 1 вузлами залиште в невідомому порядку, а потім розкрийте це піддерево в алгоритмі відновлення. Для реконструкції отриманого ( 2 n - 3 ) -назовного двійкового дерева все ще потрібно принаймні n ( n - 1 ) / 2 запитів. Еквівалентно для реконструкції двійкового дерева m- вузла потрібно щонайменше ( m + 3 )0н-1(2н-3)н(н-1)/2м запитів. (Я впевнений, що більш тонка конструкція покращила б постійність.)(м+3)(м+2)/8 Як зазначає Джагадіш, це узагальнення не працює; запити про внутрішні вузли в дереві накладають впорядкування на листки, що зменшує кількість необхідних запитів.


Моє запитання про дерева постійного ступеня. Цей аргумент не працює для цього випадку, правда?
Ягадиш

2
@Jagadish: (1) Я не думаю, що цей доказ нижньої межі працює для рандомізованих алгоритмів. Противник все ще може побудувати невдалий приклад, але це не суперечить гіпотезі про те, що рандомізований алгоритм працює правильно з високою ймовірністю. (2) До речі, здається, ви задали питання, знаючи відповідь. Для чого ти це зробив?
Цуйосі Іто

2
Я бачу. Дякуємо за пояснення, а також дякую за редагування питання!
Цуйосі Іто

4
Якщо у вас є рандомізований алгоритм, то у вас є алгоритм. Детермінізм завищений.
Jeffε

1
Ця проблема нагадує мені сортування / узгодження гайок та болтів. Рандомізований алгоритм, який працює з великою часткою ймовірності за часом - це просто рандомізований квакісорт . Існує детермінований алгоритм O ( n log n ) -time, але він серйозно нетривіальний . О(нжурналн)О(нжурналн)
Jeffε

5

У мене з Аніндя Сен є робота в ALT '13, де ми даємо алгоритм цієї проблеми. Ми не знаємо, чи можливий кращий алгоритм.О~(нн)

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