Subgraf yang berisi semua simpul dan tepi yang merupakan bagian dari jalur st sederhana yang panjangnya terbatas dalam digraf

8

Catatan: Saya memposting pertanyaan serupa tentang grafik yang tidak diarahkan .

Diberikan

  • Sebuah digraf tanpa beberapa sisi atau loopG
  • Node sumbers
  • N target nodet
  • Panjang jalur maksimall

Saya mencari - Sebuah subgraf yang berisi simpul dan tepi apa pun di (dan hanya itu), yang merupakan bagian dari setidaknya satu jalur sederhana dari ke dengan panjang . G G s t lGGGstl

Perhatikan bahwa saya tidak perlu menyebutkan jalan.

Lior Kogan
sumber
Apakah ada lebih banyak kendala untuk masalah Anda? Ingatlah bahwa masalah berikut ini adalah NP-lengkap: Digraf dan simpul s , t , v , apakah ada jalur ( s , t ) yang juga mengandung v ? Gs,t,v(s,t)v
Kristoffer Arnsfelt Hansen
@KristofferArnsfeltHansen, menarik! Apakah Anda ingin menambahkan itu sebagai jawaban dan memberikan referensi untuk hasil itu? Kedengarannya seperti menjawab pertanyaan asli dalam negatif.
DW
@KristofferArnsfeltHansen: Tidak ada lagi kendala.
Lior Kogan

Jawaban:

6

Seperti pertanyaan yang dinyatakan, memiliki sebagai bagian dari input, masalahnya adalah N P -hard. Ini mengikuti sebagai kasus khusus dari klasifikasi kelas pola yang masalah homeomorfisma subgraph yang diarahkan adalah N P -complete oleh Fortune, Hopcroft, dan makalah Wyllie: Masalah homeomorfisme subgraph diarahkan .lNPNP

Secara khusus masalah berikut adalah -complete: Diberikan grafik G dan simpul s , t , v , apakah ada (sederhana) ( s , t ) -path melalui v ?NPGs,t,v(s,t)v

Kristoffer Arnsfelt Hansen
sumber
Bagaimana itu cocok dengan solusi yang diterima di sini? stackoverflow.com/questions/10825249/... Apakah NP-hard hanya ketika grafik diarahkan?
Lior Kogan
1
Benar, masalah di atas dapat diselesaikan secara efisien untuk varian ketika grafik tidak diarahkan seperti yang dijelaskan dalam jawaban yang Anda tautkan.
Kristoffer Arnsfelt Hansen
0

Pembaruan: jawaban ini tampaknya cacat. Lihat komentar dari Kristoffer Arnsfelt Hansen.


Saya tidak tahu bagaimana menyelesaikan masalah Anda, tetapi di sini ada teknik untuk memecahkan versi sederhana dari masalah Anda: yaitu, diberi edge , uji apakah ada jalur sederhana dari s ke t yang mencakup edge e . (Ini sesuai dengan kasus khusus masalah Anda di mana l = .)estel=

Anda dapat memecahkan masalah yang lebih sederhana ini menggunakan "aliran maksimum dengan batas bawah" sebagai subrutin. Dalam masalah max-flow standar, kapasitas setiap tepi memberi kita batas atas pada jumlah aliran yang melewati tepi itu, dan kami mensyaratkan bahwa jumlah aliran di tepi dibatasi lebih rendah oleh 0. Dalam "max-flow dengan batas bawah ", kami diizinkan untuk menentukan batas bawah dan batas atas jumlah aliran melalui tepi itu. Diketahui bahwa "aliran maksimum dengan batas bawah" dapat diselesaikan dalam waktu polinomial.

Sekarang, anggaplah kita memiliki tepi , dan kami ingin menguji apakah ada jalur sederhana dari s ke t yang mencakup tepi e . Kita akan mengatur max-flow dengan masalah batas bawah. Secara khusus, ambil grafik G dan tambahkan simpul baru s 0 dengan tepi s 0s dan simpul baru t 1 dengan tepi t t 1 . Buat kapasitas (batas atas) pada setiap tepi 1. Batas bawah pada semua tepi adalah 0, kecuali batas bawah pada tepi e.eEsteGs0s0st1tt1eadalah 1. Sekarang periksa apakah ada aliran yang layak dari ke t yang memenuhi semua batas (tes ini dapat dilakukan dalam waktu polinomial, seperti yang disebutkan di atas). Jika tidak ada aliran, maka tidak ada jalur sederhana dari s ke t . Jika ada aliran seperti itu, kemudian menelusuri keluar bahwa aliran menghasilkan jalur sederhana dari s ke t yang mencakup tepi e , sehingga memang ada jalur sederhana tersebut.ststste

Bagaimana kita memecahkan masalah "max-flow dengan batas bawah"? Dalam hal ini, hanya satu sisi yang memiliki batas bawah yang bukan nol. Oleh karena itu, kita dapat menggunakan pendekatan standar untuk aliran jaringan, di mana pada setiap titik kita memilih jalur penambah dengan menghitung jalur terpendek dalam grafik residual - kecuali bahwa di sini kita bertanya (secara kasar) bahwa salah satu jalur penambah mencakup tepi .e

Saya belajar ide ini dari makalah berikut:

(Pastikan untuk membaca versi laporan teknologi, bukan versi yang diterbitkan. Ide ini ditemukan di paragraf kedua dari pengantar.)

Sayangnya, saya tidak tahu bagaimana untuk memperluas teknik ini untuk memecahkan masalah asli Anda, dengan batas atas Anda pada panjang jalan sederhana.l


Atau, kami dapat memecahkan masalah Anda dengan cara langsung menggunakan integer linear programming (ILP). Dalam praktiknya, pemecah ILP cukup bagus pada banyak masalah. Namun, waktu berjalan terburuk mereka masih eksponensial, jadi ini tidak akan memberikan algoritma dengan waktu berjalan terburuk polinomial. Beri tahu saya jika Anda ingin saya menguraikan cara merumuskan ini menggunakan ILP.

DW
sumber
1
Terima kasih. Lihat juga di sini: stackoverflow.com/questions/10825249/…
Lior Kogan
1
Masalah menemukan jalan sederhana melalui tepi yang ditentukan dalam grafik diarahkan juga N P -hard. Argumen dalam makalah yang Anda referensi di atas adalah cacat: Aliran yang layak bisa menjadi jalur sederhana menghindari tepi yang ditentukan bersama dengan siklus melalui tepi yang ditentukan. Aliran seperti itu dapat ada bahkan jika tidak ada jalur sederhana melalui tepi yang ditentukan. (s,t)NP
Kristoffer Arnsfelt Hansen
0

Kita dapat menghitung subgraf menggunakan dua pencarian pertama-lebar dan pemindaian melalui node dan tepi dalam waktu O ( V + E ) .GO(V+E)

Kami melakukan pencarian luas-pertama dari di G untuk mendapatkan BFS penomoran d s ( v ) untuk setiap node v di G . Nomor BFS menunjukkan jumlah tepi di jalur terpendek dari s ke v . Kami juga melakukan pencarian luas-pertama dari t di transpos dari G (yaitu grafik dengan tepi ( v , u ) untuk setiap tepi ( u , v ) di G ) untuk mendapatkan BFS penomoran d t (sGds(v)vGsvtG(v,u)(u,v)G untuk setiap node v di G .dt(v)vG

Untuk setiap simpul dalam G, jalur sederhana terpendek dari s ke t yang melewati v memiliki panjang d s ( v ) + d t ( v ) .vstvds(v)+dt(v)

Subgraf berisi simpul v dari G jika dan hanya jika d s ( v ) + d t ( v ) l dan sebuah edge ( u , v ) jika dan hanya jika d s ( u ) + d t ( v ) l - 1 .GvGds(v)+dt(v)l(u,v)ds(u)+dt(v)l1

Mathias Rav
sumber
5
Mungkin mengembalikan jalur yang tidak sederhana (misalnya untuk grafik s <--> a <--> b <--> c <--> t; b <--> d: simpul d adalah jalan buntu dan seharusnya tidak menjadi bagian dari solusi).
Lior Kogan
0

Berikut adalah algoritma FPT sederhana (di mana adalah parameternya), yang berfungsi untuk kasus terarah dan tidak terarah dalam waktu O ( 2 lm ( n + m ) ) , yang mungkin layak jika grafik Anda besar tetapi l adalah cukup kecil. Dalam jawaban saya yang lain, saya memberikan algoritma waktu poli untuk kasus yang tidak diarahkan.lO(2lm(n+m))l

Pertama, pertanyaannya adalah setara (hingga faktor di runtime) untuk menanyakan apakah ada jalan ukuran paling l yang masuk melalui beberapa tepi tertentu e . Selanjutnya, idenya adalah untuk memaksa kesederhanaan jalan dengan mempartisi simpul menjadi yang bisa muncul sebelum tepi yang diperiksa dan yang hanya bisa muncul setelah itu di lulus.mle

Foreach $e=(u,v)\in E$: 
a. do for $O(2^l)$ times:
  1. Compute a random partition of the vertices set $V=(S,V\setminus S)$ 
   such that $s,u\in S$, $v,t\not \in S$ (and every other vertex is in $S$ w.p. 1/2).
  2.Find the shortest path from $s$ to $u$ in the subgraph induced by $S$.
    And the shortest path from $v$ to $t$ in the subgraph of $V\setminus S$. 
  3.If the sum of distances is no more than $l-1$, add $e$ to the output graph.

Analisis
a. Jelas, jika tidak ada jalur sederhana ukuran dalam G yang melewati e , algoritma tidak akan mengembalikannya.lGe

uSVS2lO(2l)

Derandomisasi

2polylog(l)

(n,l)SO(2l+log3(l)poly(n))

BPR
sumber