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?
11
Jawaban:
Algoritma eksak terbaik akan berjalan dalam waktu O (min {mn, n ^ 2,38}) dengan menggunakan perkalian matriks biner cepat. Namun, ada algoritma acak, yang berjalan dalam waktu O (m + n) dan memperkirakan jumlah node yang dapat dijangkau dari setiap node dengan kesalahan relatif kecil, silakan merujuk ke kertas " Ukuran-Estimasi Kerangka Kerja dengan Aplikasi untuk Penutupan Transitif dan Reachability "oleh Edith Cohen.
sumber
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
sumber
(Mirip dengan solusi Prabu ... tetapi lebih rinci)
sumber