Структура даних для найкоротших шляхів


19

Нехай - невагомий непрямий графік з вершинами та ребрами. Чи можливо попередньо обробити і створити структуру даних розміром щоб вона могла відповідати на запити форми "відстань між та " за час O (n)?n m G m p o l y l o g ( n ) u vGnmGmpolylog(n)uv

Проблема видається надто базовою, щоб її вирішити.


1
У відповідь на ваше остаточне зауваження про "занадто основне, щоб не вирішити": Якщо на запит потрібно відповідати постійно, він справді добре вивчений. Але питання вашого питання полягає в тому, що ви даєте час O (n) для запиту (замість O (1) або тривіального O (m)). Хоча я вважаю, що це цікаве питання, я не думаю, що питання має принципове значення.
Tsuyoshi Ito

1
@TsuyoshiIto - Я не розумію, чому питання втрачає своє "принципове значення", якщо він дозволяє суперконстантний, але сублінійний час запиту. Наприклад, припустимо, що я можу вирішити вищезазначену проблему з тим обмеженням, що на запити відстані можна відповісти за час протягом деякого , а час обробки - максимум - чи не дасть мені це субкубічний алгоритм для обчислення найкоротших шляхів? Я особисто думаю, що це дуже цікаве питання. ε > 0 O ( n 3 - ε )O(n1ε)ε>0O(n3ε)
Рахіт

Я не знаю, є загальний шлях чи ні, але є хороший спосіб у обмежених графіках широкої ширини, див. Запит на найкоротший шлях у обмежених графіках ширини ширини
Saeed

Крім того, якщо m=Ω(n2) ви можете створити найкоротші дерева шляхів (починаючи з кожного вузла), а потім відповісти на найкоротший запит шляху (за спорідненим коренем) в O(n) , або подібним чином ви можете побудувати дані структура з меншим розміром пам'яті.
Саїд

Відповіді:


9

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

Якщо ви задоволені приблизними відстанями, ось спосіб отримати 2 апроксимацію. Нехай G - зважений непрямий графік з n вузлами та m ребрами. У наступному документі показано, що для запитів на приблизну відстань проектування структур даних для графіків з m ребрами не складніше, ніж графіки, у яких кожен вузол має ступінь, обмежену m/n :

Р. Агарвал, П. Б. Годфрі, С. Хар-Пелед, Приблизні запити на відстань і компактна маршрутизація в розріджених графіках, ІНФОКОМ 2011

Отже, припустимо, що - графік, обмежений m / n -градусом. Зразок α = O ( m / n ) вузлів рівномірно; викликати ці орієнтири. Під час фази попередньої обробки зберігайте на графіку відстань від кожного вузла орієнтиру до кожного іншого вузла; для цього потрібен O ( m ) простір. Для кожного вузла u зберігайте його найближчий орієнтирний вузол ( u ) . Крім того, зберігайте графік у структурі даних, скажімо, як список суміжності.Gm/nα=O(m/n)O(m)u(u)

За запитом на відстань між та v , зростайте кулі навколо обох вузлів - куля вузла w визначається як набір вузлів, які суворо ближче до w, ніж до його найближчого орієнтиру, наприклад, ( w ) . Можна показати, що розмір кожної кулі дорівнює O ( n 2 / м ) в очікуванні. Нехай Γ ( u ) = B ( u ) N ( B ( u ) ) , де B ( u)uvww(w)O(n2/m)Γ(u)=B(u)N(B(u)) - куля вузла u і N ( B ( u ) ) - сукупність сусідів вузлів у B ( u ) . Можна показати, що розмір Γ ( u ) дорівнює O ( n ) в очікуванні.B(u)uN(B(u))B(u)Γ(u)O(n)

Γ(u)Γ(v)d ( u , ( u ) ) d ( v , ( v ) ) d ( u , ( u ) ) + d ( ( u)minxΓ(u)Γ(v){d(u,x)+d(v,x)}d(u,(u))d(v,(v))d ( v , ( v ) ) + d ( ( v ) , u ) 2d(u,(u))+d((u),v)d(v,(v))+d((v),u)2

З точки зору часу запиту, зауважте, що вирощування кульок займає час для графіка, обмеженого градусом; побудова та заданих кульок займає час (оскільки сусіди зберігаються в структурі даних); і перевірити, чи порожній чи не потребує також часу .m / n Γ ( u ) Γ ( v ) O ( n ) Γ ( u ) Γ ( v ) O ( n )O(n)m/nΓ(u)Γ(v)O(n)Γ(u)Γ(v)O(n)

Наведені вище межі очікуються; Я думаю, що дерандомізувати конструкцію легко. На жаль, ця методика, здається, не дозволяє отримати апроксимацію кращою за . Дуже цікаве питання, хоча….2


Вищеописана методика не використовує те, що ваш графік введення не зважений; можливо, є щось цікаве, що ви можете зробити, скориставшись цим фактом, але я не можу придумати спосіб знайти точні відстані. Наприклад, можна скоротити час запиту до і отримати відстань, обмежену , де - точна відстань між і . 2 d + 1 d u vO(n2/m)2d+1duv
Рахіт

Я зрозумів, що не розумію, чому це 2-наближення. Thorup-Zwick в тих же ситуаціях дає 3-прибл.
ilyaraz

@ilyaraz: Зауважте, що схема Thorup-Zwick не вимагає перевірити (і, отже, відповідає на запити майже в постійний час). Дивіться документ, про який я згадував вище, для доказів на розтягнення . 2Γ(u)Γ(v)2
Рахіт

4

Те, що вам потрібно, називається «оракул на відстані». На жаль, я не дуже знайомий з оракулами на відстані, тому можу віднести вас лише до насіннєвого документу завдяки Торпупу та Цвіку:

Міккель Торпуп та Урі Цвік. Орієнтовна відстань оракул. STOC '01, 2001р.

Ось уривок із реферату:

Нехай - непрямий зважений графік з | V | = n і | Е | = м . Нехай k - ціле число. Покажемо, що G = ( V , E ) можна попередньо обробити за очікуваний час O ( k m n 1 / k ) , побудувавши структуру даних розміром O ( k n 1 + 1 / kG=(V,E)|V|=n|E|=mkG=(V,E)O(kmn1/k) , таким чином, що на будь-який наступний запит на відстань можна відповісти приблизно за О ( k ) час. Орієнтовна відстань, що повертається, становить розтягування не більше 2 k - 1 , тобто коефіцієнт, отриманий діленням розрахункової відстані на фактичну відстань, лежить між 1 і 2 k - 1 . [...] Потреба в просторі нашого алгоритму є [...] по суті оптимальною.O(kn1+1/k)O(k)2k12k1

Відповідно до їх результатів, те, що ви запитуєте, в основному є можливим навіть для зважених графіків: вибір дає оракул відстані розміром O ( n 2 ), отриманий у очікуваний час O ( m n ) , який може відповісти на ваші найкоротші запити шляху за допомогою 1 -потягнути в О ( 1 ) раз!k=1O(n2)O(mn)1O(1)

Віддалення оракул - це дуже добре вивчене поле, тому ви зможете копати далі, я вірю.


2
Версія журналу: JACM 2005 .
Tsuyoshi Ito

3
Використовуючи простір можна наївно зберігати таблицю пошуку. Отже, цей документ (про який я знав) тут не має значення. O(n2)
ilyaraz

1
Справедливо. В результаті найближче до того , що ви запитуєте AFAIK для графів із середнім ступенем , що дає стретч-2 шляхи з O ( п 3 / 2 ) просторів в O ( Θ(logn)O(n3/2)час запиту. (Р. Агарвал, П. Годфрі та С. Хар-Пелед, "Приблизні запити на відстань та компактне маршрутизація в розріджених графіках", INFOCOM 2011.)O(n)
Габор Ретварі

Використовуючи вбудовану метрикою Бурген у , можна створити оракул з простором O ( n log 2 n ) , часом запиту O ( log 2 n ) та мультиплікативною помилкою O ( log n ) . 1O(nlog2n)O(log2n)O(logn)
ilyaraz
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.