Apakah ada algoritme untuk menjaga informasi keterhubungan secara efisien untuk DAG dengan adanya sisipan / penghapusan?


17

Dengan diberikan grafik asiklik terarah, , mungkinkah mendukung operasi berikut secara efisien?G(V,E)

  • : Menentukan apakah ada jalur dalam G dari simpul a ke simpulisConnected(G,a,b)Gab
  • : Menambahkan tepi dari a ke b dalam grafik Glink(G,a,b)abG
  • : Menghapus ujung dari a ke b di Gunlink(G,a,b)abG
  • : Menambahkan simpul ke Gadd(G,a)
  • : Menghapus simpul dari Gremove(G,a)

Beberapa catatan:

  • Jika kita dianulir , tampaknya akan mudah untuk mempertahankan informasi keterhubungan, menggunakan struktur tipe data disjoint-set.unlink
  • Jelas, dapat diterapkan menggunakan kedalaman atau pencarian luas-pertama, menggunakan representasi berbasis pointer naif grafik. Tetapi ini tidak efisien.isConnected

Saya berharap untuk waktu amortisasi konstan atau logaritmik untuk ketiga operasi. Apakah ini mungkin?


3
Terkait: Versi grafik tidak terarah telah ditanyakan sebelumnya. Apakah ada algoritma online untuk melacak komponen dalam grafik yang berubah tanpa arah?
Tsuyoshi Ito

1
Bisakah Anda menjelaskan bagaimana menyelesaikan kasus yang lebih sederhana (tanpa memutuskan tautan) menggunakan struktur data tipe disjoint-set?
jbapple

@ Tsuyoshi - tautan pada pertanyaan itu terlihat menarik, saya melihatnya sekarang.
Justin Kilpatrick

(1) Anda mencari algoritma grafik dinamis untuk keterjangkauan terarah dengan batasan bahwa grafik adalah DAG. Jika saya tidak salah, jangkauan dinamis yang diarahkan jauh lebih sulit daripada rekan yang tidak diarahkan, tetapi di sini properti DAG mungkin membantu. (2) Apakah removejuga menghapus tepi insiden? Jika demikian, mengharuskan operasi itu menjadi O (log n) waktu mungkin terlalu banyak untuk diharapkan ....
Tsuyoshi Ito

Jawaban:


19

Masalah yang telah Anda jelaskan adalah kemampuan mencapai DAG sepenuhnya dinamis (juga disebut sebagai penutupan transitif sepenuhnya dinamis pada DAG). Ini disebut sepenuhnya dinamis karena orang juga mempelajari versi di mana hanya penghapusan yang mungkin (maka itu disebut reachremental reachability), dan di mana hanya insersi yang dimungkinkan (disebut incremental reachability).

Ada beberapa tradeoff antara waktu pembaruan dan waktu permintaan. Biarkan menjadi jumlah ujung dan n jumlah simpul. Untuk DAG, Demetrescu dan Italiano (FOCS'00) memberikan struktur data acak yang mendukung pembaruan (sisipan tepi atau penghapusan) dalam waktu O ( n 1,58 ) dan kueri keterjangkauan dalam waktu O ( n 0,58 ) waktu (sisipan / penghapusan simpul juga didukung , dalam O (1) waktu); hasil ini diperpanjang oleh Sankowski (FOCS'04) untuk bekerja untuk grafik diarahkan umum. Juga untuk DAG, Roditty (SODA'03) menunjukkan bahwa Anda dapat mempertahankan matriks penutupan transitif dalam total waktu O ( m n + I · n 2 + D ), di manamnn1.58n0.58mn+I·n2+D adalah jumlah penyisipan, D jumlah penghapusan dan tentu saja waktu kueri adalah O ( 1 ).ID1

Untuk grafik berarah umum, waktu (pembaruan, kueri) berikut diketahui: (O ( ), O (1)) (Demetrescu dan Italiano FOCS'00 (diamortisasi), Sankowski FOCS'04 (kasus terburuk)), ( O ( m n2 ),O(mn )) (Roditty, Zwick FOCS'02), (O (m+nlogn), O (n)) (Roditty, Zwick STOC'04), (O (n 1,58 ), O (n 0,58 )) dan (O (n 1,495 ), O (n 1,495 )) oleh Sankowski (FOCS'04).O(nm+nlognnn1.58n0.58n1.495n1.495

Memperoleh waktu kueri polylogaritmik, tanpa menambah waktu pembaruan terlalu banyak adalah masalah besar yang terbuka, bahkan untuk DAG.


1
Terima kasih atas jawaban Anda. Meskipun saya harus mengatakan saya kecewa pada betapa miskinnya batasan itu. :(
Justin Kilpatrick

1
Pertanyaan terkait: dapatkah Anda mengarahkan saya ke referensi tentang masalah yang lebih sederhana, jangkauan yang dapat dicapai, dan jangkauan yang dapat dikurangi untuk DAG?
Justin Kilpatrick

Ini tidak lebih baik daripada pendekatan dfs naif (O(1),O(n^2))atau (O(m),O(n+m)).
Thomas Ahle

4

Saya pikir hasil terbaik sejauh ini dibahas dalam "Mantaining Dynamic Matriks untuk Fully Dynamic Transitive Closure" . Makalah itu membahas algoritma acak dengan waktu permintaan dan waktu pembaruan O ( n 1,58 ) .O(n0.58)O(n1.58)

(Ini hanya mencakup versi pertama dari pertanyaan Anda, dengan linkdan unlinktetapi tanpa adddan remove.)


Batas-batas dibangun pada algoritma Strassen, jadi konstanta sangat besar.
Thomas Ahle
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.