Biarkan menjadi grafik tidak berarah tanpa bobot dengan simpul dan tepi . Apakah mungkin untuk preprocess dan menghasilkan struktur data ukuran sehingga dapat menjawab pertanyaan dari bentuk "jarak antara dan " dalam waktu O (n)?n m G m ⋅ p o l y l o g ( n ) u v
Masalahnya tampaknya terlalu mendasar untuk dipecahkan.
Jawaban:
Ini adalah pertanyaan yang sangat menarik. Pada tingkat tinggi, Anda bertanya apakah seseorang dapat memproses grafik sedemikian rupa sehingga kueri jalur terpendek tidak tergantung pada kepadatan grafik, tanpa menggunakan banyak ruang ekstra - menarik, tetapi seperti yang Anda katakan, tidak terselesaikan.
Jika Anda senang dengan perkiraan jarak, berikut adalah cara untuk mendapatkan perkiraan . Misalkan adalah grafik tak berarah tertimbang dengan node dan edge. Hal ini ditunjukkan dalam makalah berikut bahwa untuk perkiraan jarak pertanyaan, merancang struktur data untuk grafik dengan edge tidak lebih sulit daripada grafik di mana setiap node memiliki derajat yang dibatasi oleh :G n m m m / n2 G n m m m/n
R. Agarwal, PB Godfrey, S. Har-Peled, Perkiraan jarak perkiraan dan perutean ringkas dalam grafik jarang, INFOCOM 2011
Jadi, asumsikan bahwa adalah grafik terikat -degree. Sampel node seragam secara acak; sebut titik tengara ini. Selama fase preprocessing, simpan jarak dari setiap titik landmark ke setiap titik lainnya dalam grafik; ini membutuhkan ruang . Untuk setiap simpul , simpan simpul tengara terdekatnya . Juga, simpan grafik dalam struktur data, katakanlah sebagai daftar adjacency.m / n α = O ( m / n ) O ( m ) u ℓ ( u )G m/n α=O(m/n) O(m) u ℓ(u)
Ketika ditanya untuk jarak antara dan , menumbuhkan bola di sekitar kedua node - bola node didefinisikan sebagai set node yang secara ketat lebih dekat ke daripada ke simpul landmark terdekat, katakan . Dapat ditunjukkan bahwa ukuran masing-masing bola adalah , sesuai harapan. Misalkan , di mana adalah bola dari simpul dan adalah himpunan tetangga dari simpul dalam . Dapat ditunjukkan bahwa ukuran adalah , sesuai harapan.v w w ℓ ( w ) O ( n 2 / m ) Γ ( u ) = B ( u ) ∪ N ( B ( u ) ) B ( u ) u N ( B ( u ) ) B ( u ) Γ ( u ) O ( n )u v w w ℓ(w) O(n2/m) Γ(u)=B(u)∪N(B(u)) B(u) u N(B(u)) B(u) Γ(u) O(n)
Menjawab pertanyaan: jika , kembalikan ; selain itu jika , kembalikan ; lain kembalikan . Sangat mudah untuk menunjukkan bahwa ini adalah approximation.Γ(u)∩Γ(v)≠∅ d ( u , ℓ ( u ) ) ≤ d ( v , ℓ ( v ) ) d ( u , ℓ ( u ) ) + d ( ℓ ( uminx∈Γ(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
Dalam hal waktu kueri, perhatikan bahwa bola tumbuh membutuhkan waktu untuk grafik terikat -degree; membangun dan mengingat masing-masing bola membutuhkan waktu (karena tetangga disimpan dalam struktur data); dan memeriksa apakah kosong atau tidak juga membutuhkan waktu.mO(n) Γ ( u ) Γ ( v ) O ( n ) Γ ( u ) ∩ Γ ( v ) O ( n )m/n Γ(u) Γ(v) O(n) Γ(u)∩Γ(v) O(n)
Batas di atas dalam harapan; Saya pikir itu mudah untuk derandomize konstruksi. Sayangnya, teknik ini tampaknya tidak memungkinkan mendapatkan perkiraan yang lebih baik dari . Ini pertanyaan yang sangat menarik ....2
sumber
Yang Anda butuhkan disebut "oracle jarak". Sayangnya, saya tidak terlalu akrab dengan oracle jarak, jadi saya hanya bisa merujuk Anda ke makalah mani karena Thorup dan Zwick:
Mikkel Thorup dan Uri Zwick. Perkiraan jarak oracle. STOC '01, 2001.
Berikut adalah kutipan dari abstrak:
Misalkan menjadi grafik tertimbang yang tidak diarahkan dengan dan . Biarkan menjadi bilangan bulat. Kami menunjukkan bahwa dapat diproses sebelumnya dalam waktu yang diharapkan, membangun struktur data ukuran , sedemikian rupa sehingga selanjutnya kueri jarak dapat dijawab, kira-kira, dalam waktu . Perkiraan jarak yang dikembalikan adalah peregangan paling banyak , yaitu, hasil bagi yang diperoleh dengan membagi perkiraan jarak dengan jarak sebenarnya terletak antara 1 dan . [...] Persyaratan ruang dari algoritma kami adalah [...] pada dasarnya optimal.| V | = n | E | = M k G = ( V , E )G=(V,E) |V|=n |E|=m k G=(V,E) O ( k n 1 + 1 / k ) O ( k ) 2 k - 1 2 k - 1O(kmn1/k) O(kn1+1/k) O(k) 2k−1 2k−1
Menurut hasil mereka, apa yang Anda minta pada dasarnya bisa dilakukan bahkan untuk grafik berbobot: memilih menghasilkan jarak oracle ukuran diperoleh dalam waktu yang diharapkan , yang dapat menjawab kueri jalur terpendek Anda dengan -ringkas dalam waktu!k=1 O ( m n ) 1 O ( 1 )O(n2) O(mn) 1 O(1)
Oracle jarak adalah bidang yang diteliti dengan sangat baik, sehingga Anda akan dapat menggali lebih lanjut saya percaya.
sumber