Batas apa yang bisa diletakkan pada penghitungan node yang dapat dijangkau dalam sebuah tas?

23

Diberikan adalah dag. Anda ingin memberi label pada setiap node dengan berapa banyak node yang dapat dijangkau darinya. adalah batas atas sepele; Ω ( V + E ) adalah batas bawah (saya pikir). Apakah ada algoritma yang lebih baik? Adakah alasan untuk percaya bahwa batas bawah dapat ditingkatkan (terkait: apa yang sebenarnya diketahui tentang batas bawah untuk penutupan transitif)?O(V(V+E))Ω(V+E)

Motivasi: Saya harus melakukan ini beberapa kali sambil merepresentasikan rumus fol sebagai dags.

Sunting: Harap dicatat bahwa dengan melakukan menghitung jalur , bukan simpul yang dapat dijangkau . (Saya menambahkan ini karena ternyata banyak orang mengira solusi sederhana ini akan bekerja dengan suara yang saya lihat pada jawaban yang sekarang dihapus) lebih dari satu jalur. Juga, saya katakan, karena jika mereka dipecahkan, maka memecahkan digraf itu mudah.cx=1+xycy

Radu GRIGore
sumber
Ini tampaknya merupakan kasus khusus (mengatur semua bobot ke satu) dari cstheory.stackexchange.com/questions/736/…
Suresh Venkat
@ Suresh: Apakah bobot sewenang-wenang membuat masalah lebih sulit bagi saya sepertinya pertanyaan menarik lainnya.
Radu GRIGore

Jawaban:

10

Penutupan transitif grafik berarah dengan edge dan n simpul dapat dihitung sedikit lebih cepat dari waktu O ( m n ) , tetapi tidak banyak. Sebuah O ( n 2 + m n / log n ) algoritma waktu disebutkan dalam catatan kaki dari Chan kertas 2005 gumpalan pada APSP (versi jurnal di Algorithmica 2008). Sedikit peningkatan ke O ( n 2 + m n log ( n 2 / m ) / log 2 nmnO(mn)O(n2+mn/logn)O(n2+mnlog(n2/m)/log2n)

virgi
sumber
4
Juga, lihat kertas Edith Cohen "Kerangka Ukuran-Estimasi dengan Aplikasi untuk Penutupan Transitif dan Keterjangkauan". Ini memberikan algoritma acak yang memperkirakan jumlah keturunan secara efisien.
virgi
Perhatikan bahwa hasil ini berlaku untuk semua grafik yang diarahkan, bukan hanya DAG.
tonfa
Iya nih. Hasilnya juga berlaku untuk versi berbobot yang disebutkan dalam cstheory.stackexchange.com/questions/736/…
virgi
7

nω

Bart Jansen
sumber
Terima kasih, itu menarik! Saya harus menambahkan bahwa dag yang mewakili formula simbolis cenderung jarang, jadi saya sedikit lebih tertarik pada kasus ini.
Radu GRIGore
1

Mungkin tidak berguna dalam konteks Anda, tetapi Anda bisa mendapatkan perkiraan menggunakan Synopsis Difusion (http://www.cs.cmu.edu/~sknath/sd.htm). Saya pikir itu membuatnya O (V + E). Mensimulasikan difusi sinopsis pada uniprocessor bagi saya adalah O (V + E), (Anda perlu melakukan sortasi topologi terlebih dahulu, yang juga O (V + E)).

Ealdwulf
sumber