Jumlah simpul yang dapat dijangkau dalam DAG untuk setiap simpul

11

Misalkan menjadi grafik berarah asiklik, sedemikian sehingga derajat dari titik mana pun adalah . Untuk setiap simpul kita dapat menghitung jumlah simpul yang bisa dijangkau, hanya dengan menjalankan dfs dari setiap simpul dan ini akan membutuhkan waktu . Apakah ada cara yang lebih baik untuk menyelesaikan masalah ini?G(V,E)O(log|V|)GHAI(|V||E|)

MikBB
sumber
1
@ Radu apakah ini duplikat langsung? kedengarannya seperti itu
Suresh Venkat
@ Suresh, dibandingkan dengan pertanyaan saya yang satu ini memiliki batas atas pada derajat dhuwur dan tidak meminta batas bawah. Ini adalah perbedaan kecil dalam pendapat saya, jadi saya akan menganggapnya sebagai duplikat, tetapi saya tidak merasa kuat tentang hal itu.
Radu GRIGore
1
ok jadi kita akan membiarkannya apa adanya.
Suresh Venkat
4
jawaban virgi untuk pertanyaan saya menyiratkan algoritma untuk yang satu ini. HAI(|V|2)
Radu GRIGore

Jawaban:

-1

Saya bukan ahli di sini saya akan mencoba.

1) Karena itu DAG, itu harus memiliki simpul wastafel yaitu simpul dengan outdegree 0. Cari simpul wastafel katakan x dan tambahkan {x} sebagai simpul yang dapat dijangkau ke Neighbor (x). hapus x dan ulangi proses sampai grafik menjadi kosong

Prabu
sumber
Karena out-degree dibatasi, akan lebih bermanfaat untuk memulai dengan sumber?
András Salamon
@ andras-salamon: tidak, karena Anda tidak tahu berapa banyak node yang dapat dijangkau dari suatu sumber. Anda tidak melakukan itu (nol) untuk wastafel.
Martin B.
O(|V||E|)xHAI(|V|)HAI(|V|)HAI(|V|)HAI(|V||E|)
-2

(Mirip dengan solusi Prabu ... tetapi lebih rinci)

N(v)vreSebuahch(v)

  1. HAI(|V|+|E|)
  2. vreSebuahch(v)=nN(v)reSebuahch(n)

|E|HAI(|V|+|E|)

Martin B.
sumber