Saya ingin tahu apakah masalah berikut dapat dipecahkan dalam (nondeterministic logspace):
Diberikan grafik terarah dengan dua simpul dibedakan dan , apakah ada jalur unik dari ke di ?s t s t G
Saya merasa bahwa itu kemungkinan ada di karena kita dapat memutuskan apakah ada - --path dan jika tidak ada jalan seperti itu. Namun, menghitung jumlah jalur tersebut adalah -hard (Valiant, 1979). s t ♯ P
Jadi pertanyaan saya: Apakah Anda punya referensi tentang ini? Apakah sudah jelas bahwa itu ada di ? Atau itu tidak ada di ?N L
Jawaban:
Tampaknya masalah Anda ada di . Berikut ini adalah algoritma.NL
Pertama, secara nondeterministis menebak jalur dari ke . Jika Anda salah menebak, tolak . Sebut algoritma ini .t As t A
Pertimbangkan algoritma nondeterministic berikut , yang menentukan apakah setidaknya ada dua jalur. Diberikan grafik dan , untuk semua pasangan tepi yang berbeda , tebak jalur dari ke yang mencakup tetapi bukan , lalu tebak jalur dari ke yang mencakup tetapi tidak . Jika tebakannya benar, terima . Jika tidak ada penerimaan untuk semua pilihan dan , tolak . Catatan dapat diterapkan di ruang log nondeterministic.s , t e , f s t e f s t f e e f BB s,t e,f s t e f s t f e e f B
Sekarang, himpunan adalah himpunan grafik - dengan setidaknya dua jalur dari ke . Karena , komplemen juga dalam , yaitu, kita dapat menentukan apakah dan memiliki kurang dari dua jalur, dalam ruang log nondeterministic.s t s t N L = c o N L B N L s tL(B) s t s t NL=coNL B NL s t
Algoritma terakhir adalah: "Jalankan Jika menerima, maka jalankan pelengkap dan output jawabannya."A BA A B
Saya tidak tahu referensi.
PEMBARUAN: Jika Anda benar-benar menginginkan referensi, lihat paragraf pertama Bagian 3 dari makalah ini . Tapi ini mungkin hanya satu dari banyak referensi yang mengutip konsekuensi ini. Akan lebih masuk akal untuk menyebut hasilnya "cerita rakyat" daripada mengutip makalah yang menyebutkannya.
UPDATE 2: Anggaplah Anda ingin menentukan apakah ada jalur sederhana yang unik. Dalam hal ini, algoritma tidak harus berubah: jika ada jalur sama sekali maka ada jalur sederhana. Saya percaya modifikasi berikut akan bekerja untuk algoritma .BA B
Kami ingin menulis ulang algoritme sehingga menerima jika ada setidaknya dua jalur sederhana.B
Pertama-tama pertimbangkan algoritma waktu polinomial berikut untuk masalahnya. Temukan jalur terpendek dari ke . Untuk setiap tepi dalam , periksa apakah ada jalur - yang tidak melalui . Jika Anda menemukan jalan seperti itu maka terima . Jika Anda tidak pernah menemukan jalan lain, tolak . Karena paling pendek, ia tidak memiliki siklus, dan jika ada jalur lain yang tidak menggunakan tepi , maka ada jalur lain yang sederhana dan tidak menggunakan tepis t e P s t e P P PP s t e P s t e P P P . (Algoritma ini digunakan untuk masalah "jalur terpendek kedua").
Kami akan mengimplementasikan algoritma ini dalam . Jika kami memiliki algoritme untuk menanyakan tepi dalam jalur tetap , kami dapat mengimplementasikan hal tersebut di dalam nondeterministic logspace: iterasi melalui semua tepi dalam , tebak - path dan periksa bahwa untuk setiap tepi yang dikunjungi sepanjang jalan , tidak satupun dari mereka yang sama dengan .N L e P e P s t eNL NL e P e P s t e
Jadi yang kita butuhkan adalah "jalur oracle", sebuah algoritma dengan properti: diberikan , dalam setiap jalur perhitungan algoritma baik melaporkan tepi ke- pada jalur - tetap tertentu , atau menolak . Kita bisa mendapatkan jalur oracle dengan menggunakan untuk mengisolasi jalur leksikografis pertama.i = 1 , … , n i s t N L = c o N LNL i=1,…,n i s t NL=coNL
Berikut ini adalah sketsa jalur oracle.
Diberikan , algoritma ini menghasilkan tepi ke- pada jalur pendek tersingkat secara leksikografis dari ke , atau menolak.i P s ti i P s t
sumber