Misalkan kita memiliki grafik diarahkan dan dua node dan . Saya ingin tahu apakah sudah ada algoritma untuk menghitung masalah keputusan berikut:
Apakah setidaknya ada dua jalur antara dan dengan panjang yang sama?
Bagaimana dengan kerumitannya? Bisakah saya menyelesaikannya dalam waktu polinomial?
Saya ingin menambahkan batasan baru pada grafik, mungkin masalahnya lebih bisa dipecahkan. Pada matriks adjacency, setiap kolom tidak kosong. Jadi, setiap simpul memiliki setidaknya satu panah pada input dan ada juga setidaknya satu simpul yang terhubung dengan dirinya sendiri. Jadi jika simpulnya adalah simpul ke- , maka adalah tepi pada grafik.
complexity-theory
graph-theory
time-complexity
graphs
Paolo Parisen T.
sumber
sumber
Jawaban:
Perhatikan grafik , kita ingin tahu apakah ada dua jalur berbeda dari ke dengan panjang yang sama. Melakukan apa? Sederhana: kode dua jalur dalam satu. Tentukan grafik dengan simpul . Anda membuat langkah di dengan membuat dua langkah independen dalam . Bit tambahan memberi tahu Anda apakah kedua jalur sudah terpisah satu sama lain.G A B G′ V×V×{0,1} G′ G
Secara formal, ada edge di iff(i,j,e)→(i′,j′,e′) G′ , j → j ′ di G dan e ′ = e ∨ ( i , i ′ ) ≠ ( j , j ′ ) .i→i′ j→j′ G e′=e∨(i,i′)≠(j,j′)
Algoritma memeriksa apakah ada jalur ke ( B , B , 1 ) dalam G ′ , yaitu O ( V 4 ) , atau sesuatu seperti O ( ( V + E ) 2 ) .(A,A,0) (B,B,1) G′ O(V4) O((V+E)2)
Jika Anda setuju bahwa algoritma ini benar maka, sebagai akibatnya, jalur dalam panjangnya paling banyak 2 n 2 , oleh karena itu potensi "tumbukan jalur" harus terjadi paling baru pada panjang itu. Anda bisa mendapatkan algoritma O ( V ω log V ) dari pengamatan ini, di mana ω adalah kompleksitas perkalian matriks (tanyakan apakah Anda memerlukan spoiler ...).G′ 2n2 O(VωlogV) ω
Saya sangat merasakan ada algoritma , yang menggunakan lebih banyak struktur masalah.O(V+E)
sumber
Mungkin saya punya jawaban untuk masalah ini, tapi saya tidak yakin itu berfungsi.
Tidaklah penting untuk "menemukan" dua jalan, satu-satunya yang penting adalah "mengetahui" apakah ada atau tidak. Saya tidak berpikir bahwa ini adalah masalah lengkap NP.
Jadi, mengambil adjacency matrix . Kita dapat dengan mudah mengira bahwa itu diisi dengan nilai 0,1. (0 = tanpa tepi; 1 = ada tepi) Mari kita gunakan aljabar berikut dengan 3 nilai (0,1,2), di mana semuanya bekerja seperti biasa kecuali: 2 + <sesuatu> = 2 ; 2 ∗ <apa pun yang lebih besar dari 0> = 2A 2+<something>=2 2∗<whatever greater than 0>=2
Jadi, jika ada dua jalur dengan panjang yang sama dari saya berharap ada nilai p sehingga ( A p ) i , j = 2 .i,j p (Ap)i,j=2
inilah argumentasi saya:
Apakah aku salah?
sumber