Pemeriksaan transitivitas vs. Penutupan Transitif


9

Apakah memeriksa transitivitas suatu digraf tidak lebih mudah daripada (dalam hal kompleksitas asimptotik) mengambil penutupan transitif dari digraf? Apakah kita tahu ada batas bawah yang lebih baik daripada untuk menentukan apakah digraf transitif atau tidak?Ω ( n 2 )Ω(n2)


1
Menyimpan seluruh penutupan transitif akan membebani Anda ruang ekstra. Untuk beberapa grafik Anda harus dapat mengaitkan dan memintas pemeriksaan transitivitas tanpa meninjau kembali tepi. Lihat: Algoritma konektivitas paralel , Y Shiloach, U Vishkin - Jurnal Algoritma, 1982O ( l o g n )O(logn)
Chad Brewbaker

1
Di sini, Siek memiliki catatan implementasi untuk Boost Graph Library boost.org/doc/libs/1_54_0/libs/graph/doc/…
Chad Brewbaker

2
Tidak yakin apa yang Anda maksud dengan , tetapi batas bawah sederhana - pertimbangkan untuk beberapa sisi . Algoritma apa pun akan meminta harus memeriksa apakah untuk semua , karena jika tidak, tepi yang tidak ia tanyakan bisa menjadi yang hilang. adalah batas atas, karena ini adalah waktu yang diperlukan untuk menghitung penutupan transitif. n Ω ( | V | 2 ) K n{ e } e ( u , v ) E u , v V O ( | V || E | )nΩ(|V|2)Kn{e}e(u,v)Eu,vVO(|V||E|)
RB

2
Pertimbangkan grafik berarah dengan simpul: simpul sumber , simpul menengah yang merupakan penerus langsung dari setiap , dan simpul tenggelam yang merupakan penerus langsung masing-masing . Digraf bersifat transitif jika masing-masing busur ada dalam grafik. Ini membutuhkan pemeriksaan tepi. Di sisi lain, menemukan penutupan transitif dapat dilakukan dalam waktu , di mana adalah eksponen dari perkalian matriks. Ini adalah batas yang paling dikenal. n = 3 k s 1 , ... , s k t 1 , ... , t k s i u 1 , ... , u k t i ( s i , u j ) k 2 = ( n / 3 ) 2 = Ω ( n 2 ) O ( n ω ) ω < 2.373n=3ks1,,skt1,,tksiu1,,ukti(si,uj)k2=(n/3)2=Ω(n2)O(nω)ω<2.373
András Salamon

Apakah DAG Anda mungkin memiliki struktur tambahan, atau Anda ingin hasil yang sepenuhnya umum?
Niel de Beaudrap

Jawaban:


9

Di bawah ini saya akan menunjukkan yang berikut: jika Anda memiliki algoritma waktu O ( ) untuk memeriksa apakah grafik transitif untuk , maka Anda memiliki O ( ) algoritma waktu untuk mendeteksi segitiga dalam grafik node, dan karenanya (dengan kertas dari FOCS'10 ) Anda akan memiliki algoritma waktu O ( ) untuk mengalikan dua boolean matriks, dan karenanya oleh hasil Fischer dan Meyer dari 70-an , ini juga menyiratkan algoritma waktu O ( ) untuk penutupan transitif.n 3 - ε ε > 0 n 3 - ε n n 3 - ε / 3 n × n n 3 - ε / 3n3εε>0n3εnn3ε/3n×nn3ε/3

Misalkan Anda ingin mendeteksi segitiga dalam simpul . Kita sekarang dapat membuat grafik berikut . adalah tripartit dengan partisi pada node masing-masing. Berikut setiap node dari memiliki salinan di bagian I , J , K . Untuk setiap tepi ( u , v ) dari G menambahkan tepi diarahkan ( u I , v J ) dan ( u Jn G H H I , J , K n x G x I , x J , x K G ( u I , v K )nGHHI,J,KnxGxI,xJ,xKI,J,K(u,v)G(uI,vJ) , v K )(uJ,vK). Untuk setiap nonedge ( u , v ) dari tambahkan tepi terarah .(u,v)G(uI,vK)

Pertama, jika mengandung segitiga , maka tidak transitif. Ini karena tepi berada di tetapi tidak. Kedua, jika tidak transitif, maka harus ada beberapa jalur diarahkan dari beberapa simpul untuk beberapa simpul di sehingga tidak tepi diarahkan di . Namun, jalur terpanjang di , maka membentuk segitiga diG u , v , w H ( u I , v J ) , ( v J , w K ) H ( u I , w K ) H s t H ( s , t ) H H 2 ( u I , v J ) , ( v J , w K ) ( u I ,Gu,v,wH(uI,vJ),(vJ,wK)H(uI,wK)HstH(s,t)HH memiliki tepi, dan setiap jalur tersebut harus berbentuk dan tidak ada di2(uI,vJ),(vJ,wK)wK)(uI,wK)HHu,v,wu,v,wGG .


1
Menemukan penutupan transitif pada dasarnya sama dengan perkalian matriks. Pertanyaannya adalah apakah eksponen pada batas bawah dapat dinaikkan dari 2, atau eksponen pada batas atas dapat diturunkan dari 2,373. Rantai penalaran yang Anda tunjukkan menunjukkan bahwa bahkan algoritma yang optimal untuk memeriksa transitivitas hanya akan menghasilkan algoritma waktu untuk penutupan transitif - tetapi kami sudah memiliki algoritma waktu. O(n2)O(n2)O(n2.667)O(n2.667)O(n2.373)O(n2.373)
András Salamon

Intinya adalah bahwa pengurangan kotak hitam ada. Algoritma waktu O ( ) jauh dari praktis. Algoritme pengecekan transitivitas praktis yang berjalan dalam waktu subkubis, oleh pengurangan di atas juga menyiratkan yang praktis untuk BMM dan karenanya penutupan transitif. Juga, bahkan jika Anda tidak peduli dengan algoritma praktis, sangat mungkin bahwa hilangnya eksponen dari kertas FOCS'10 tidak diperlukan, dan deteksi segitiga mungkin setara dengan BMM. n2.373n2.373
virgi

Oh dan tentu saja, kita bisa mendasarkan kekerasan dari masalah transitivitas hanya pada dugaan deteksi segitiga. Perhatikan bahwa tidak ada batas bawah yang diketahui lebih baik daripada untuk deteksi segitiga, dan batas atas terbaik adalah . n2n2O(nω)O(nω)
virgi

Kami sudah memiliki algoritme praktis subkubik, dengan menggunakan metode perkalian matriks cepat apa pun: lihat misalnya cacm.acm.org/magazine/2014/2/…
András Salamon

2
Makalah Ballard dkk yang Anda kutip berbicara tentang algoritma Strassen secara khusus. Dari apa yang saya tahu, tidak ada algoritma multiplikasi matriks yang menggunakan peringkat perbatasan yang praktis. Secara khusus, saya tidak mengetahui algoritma praktis untuk setiap ikatan ω lebih rendah dari . ω2.782.78
virgi

7

Sepertinya adalah batas bawah yang paling dikenal, karena setiap batas bawah menyiratkan batas bawah untuk perkalian matriks boolean. Kita tahu bahwa pemeriksaan transitivitas dapat dicapai dengan menggunakan satu perkalian matriks boolean, yaitu, adalah transitif jika dan hanya jika .Ω ( n 2 ) G G = G 2Ω(n2)GG=G2


4

Mencari tahu apakah DAG transitif sama sulitnya dengan memutuskan apakah digraf umum transitif (yang membawa kita kembali ke pertanyaan sebelumnya :)).

Asumsikan Anda memiliki algoritma yang berjalan dalam waktu O ( f ( n ) ) untuk memutuskan apakah DAG adalah transitif.O(f(n))

Diberi grafik G terarah , Anda dapat menggunakan algoritma acak berikut untuk memutuskan apakah G transitif dalam waktu O ( f ( n ) log ( 1)GGδ ))dan probabilitas kesalahanδ:O(f(n)log(1δ))δ

 1. for $O(\log{\frac{1}{\delta}})$ iterations:

   1.1. Compute a random permutation on $V$. Denote the result by $<v_1,v_2,...,v_n>$.

   1.2. Set $G'=(V,E\cup \{(v_i,v_j)|i<j\})$ (i.e. compute a random acyclic orientation).

   1.3. If $G'$ (which is acyclic) is not transitive return false.

 2. return true.

Sekarang jelas bahwa jika G adalah transitif, algoritma ini mengembalikan true.G

Sekarang anggap G tidak transitif. Misalkan e 1 = ( v i , v j ) , e 2 = ( v j , v k ) E sedemikian rupa sehingga ( v i , v k ) E (harus ada tepi seperti G tidak transitif). Probabilitas bahwa e 1 , e 2G ' adalah 1Ge1= ( vsaya, vj) , e2= ( vj, vk) E( vsaya, vk) EGe1, e2G6 , oleh karena itu dalam setiap iterasi probabilitas bahwa algoritma akan mencariGtidak transitif adalah116G6 dan setelahO(log(δ))iterasi probabilitas kegagalan paling banyakδ.16O(log(δ))δ


1
Terima kasih atas jawabannya. Asumsikan saya memiliki algoritma untuk memutuskan apakah DAG transitif dalam O ( f ( n ) ) seperti f ( n ) = Ω ( n 2 ) . Kemudian, saya dapat memutuskan apakah grafik berarah G transitif dalam O ( f ( n ) ) -waktu sebagai; 1) Dapatkan digraf yang terhubung kuat dalam waktu O ( n 2 ) . 2) Periksa apakah setiap komponen selesai dalam O ( n 2 )O(f(n))f(n)=Ω(n2)O(f(n))O(n2)O(n2)-waktu. 3) Periksa apakah setiap pasangan komponen, yang memiliki tepi dalam digraf komponen, adalah bi-complete, yaitu ada tepi dari setiap titik dari satu komponen ke setiap titik dari komponen kedua di O ( n 2 ) -waktu. 4) Periksa apakah komponen digraf transitif dalam O ( f ( n ) ) -waktu. O(n2)O(f(n))
ekayaaslan

1

Saya pikir ini harus layak dalam waktu linier, yaitu O ( n + m ) di mana n adalah jumlah simpul dan m jumlah tepi. Mungkin dengan mengadaptasi beberapa skema traversal grafik ke pengaturan yang diarahkan? Titik awal bisa berupa LexBFS / LexDFS yang dijelaskan di sini ; untuk grafik terarah tampaknya kita harus menggunakan pengurutan topologis daripada DFS, jadi mungkin itu mungkin dengan beberapa algoritma LexTSA untuk menemukan?O(n+m)nm


2
Ini tidak mungkin IMO, karena akan memberikan algoritma waktu linear probabilistik untuk pemeriksaan transitivitas dalam digraf umum, lihat jawaban saya.
RB

0

Mengenai jawaban sebelumnya, berikut adalah cara sederhana untuk mendefinisikan algoritma semacam itu. Tetapkan untuk setiap titik x indeks i ( x ) , diinisialisasi ke 0 . Untuk setiap x , misalkan M ( x ) menunjukkan multiset dari indeks dari tetangganya. Kami mensimulasikan penyortiran topologis dengan mempertahankan set R dari simpul yang belum dijelajahi, diinisialisasi ke seluruh set. Pada setiap langkah, kami melakukan hal berikut:xi(x)0xM(x)R

  1. Memilih simpul x R yang multiset M ( x ) minimal (dalam urutan multiset);xRM(x)

  2. Memperbarui i ( x ) loop counter dan menghapus saat x dari R .i(x)xR

Dapatkah algoritma ini digunakan untuk masalah Anda, atau untuk beberapa aplikasi lain?


Ini akan lebih tepat sebagai komentar.
Suresh Venkat
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.