Masalahnya, tentu saja, penghitungan ganda. Cukup mudah dilakukan untuk kelas DAGs tertentu = pohon, atau bahkan pohon paralel serial. Satu-satunya algoritma yang saya temukan yang bekerja pada DAG umum dalam waktu yang wajar adalah perkiraan (Synopsis difusion), tetapi meningkatkan ketepatannya adalah eksponensial dalam jumlah bit (dan saya perlu banyak bit).
Latar belakang: tugas ini dilakukan (beberapa kali dengan 'bobot' berbeda) sebagai bagian dari perhitungan probabilitas di BBChop (http://github.com/ealdwulf/bbchop) sebuah program untuk menemukan bug yang sebentar-sebentar (yaitu, versi bayesian dari ' git bisect '). Karenanya DAG yang dimaksud adalah riwayat revisi. Itu berarti bahwa jumlah tepi tidak mungkin mendekati kuadrat dari jumlah node, kemungkinan lebih kecil dari k kali jumlah node untuk beberapa k yang lebih kecil. Sayangnya saya belum menemukan properti berguna lainnya dari revisi DAG. Sebagai contoh, saya berharap bahwa komponen triconnected terbesar hanya akan tumbuh sebagai akar kuadrat dari jumlah node, tetapi sayangnya (setidaknya dalam sejarah kernel linux) ia tumbuh secara linear.
Jawaban:
Kami berasumsi bahwa bobot titik dapat bilangan bulat positif acak, atau lebih tepatnya, mereka bisa bilangan bulat positif paling banyak 2 n . Maka tugas saat ini tidak dapat dilakukan bahkan dalam batas waktu O yang sedikit lebih lemah ( n 2 ), kecuali jika penutupan transitif dari grafik yang diarahkan secara acak dapat dihitung dalam waktu O ( n 2 ), di mana n menunjukkan jumlah simpul. (Perhatikan bahwa algoritma waktu O ( n 2 ) untuk penutupan transitif akan menjadi terobosan.) Ini adalah kontrapositif dari klaim berikut:
Klaim . Jika tugas saat ini dapat dilakukan dalam waktu O ( n 2 ), penutupan transitif dari grafik berarah yang diberikan sebagai matriks kedekatannya dapat dihitung dalam waktu O ( n 2 ) (dengan asumsi beberapa model komputasi yang masuk akal).
Bukti . Sebagai preprocessing, kami menghitung dekomposisi komponen yang terhubung kuat dari graf berarah G yang diberikan dalam waktu O ( n 2 ) untuk mendapatkan DAG G ′. Perhatikan bahwa jika kita dapat menghitung penutupan transitif G ', kita bisa merekonstruksi penutupan transitif G .
Sekarang tetapkan bobot 2 i untuk setiap simpul I DAG G ′ dan gunakan algoritma untuk masalah saat ini. Kemudian representasi biner dari penjumlahan yang ditugaskan untuk setiap simpul saya menggambarkan set leluhur i , dengan kata lain, kami telah menghitung penutupan transitif G ′. QED .
Kebalikan dari klaim tersebut juga berlaku: jika Anda dapat menghitung penutupan transitif DAG yang diberikan, mudah untuk menghitung jumlah yang dibutuhkan dengan pekerjaan tambahan dalam waktu O ( n 2 ). Oleh karena itu, secara teori Anda dapat mencapai tugas saat ini dalam waktu O ( n 2.376 ) dengan menggunakan algoritma untuk penutupan transitif berdasarkan pada algoritma penggandaan matriks Coppersmith-Winograd .
Sunting : Revisi 2 dan sebelumnya tidak menyatakan asumsi tentang kisaran bobot titik secara eksplisit. Per Vognsen menunjukkan dalam komentar bahwa asumsi implisit ini mungkin tidak masuk akal (terima kasih!), Dan saya setuju. Bahkan jika bobot arbitrer tidak diperlukan dalam aplikasi, saya kira jawaban ini mungkin mengesampingkan beberapa pendekatan dengan alasan berikut: “Jika pendekatan ini berhasil, itu akan memberikan algoritma untuk bobot arbitrer, yang dikesampingkan kecuali transitif Penutupan dapat dihitung dalam waktu O ( n 2 ). "
Sunting : Revisi 4 dan sebelumnya menyatakan arah tepi salah.
sumber
Ini adalah perluasan dari komentar saya tentang jawaban Tsuyoshi. Saya pikir jawaban negatif untuk pertanyaan dapat dibuat tanpa syarat.
Intinya tampaknya bahwa urutan parsial yang mendasarinya padat, tetapi DAG mewakili reduksi transitifnya, yang bisa jarang.
sumber
Ini salah dan didasarkan pada kesalahpahaman pada pertanyaan. Terima kasih kepada Tsuyoshi karena dengan sabar menunjukkan kesalahan saya. Berangkat jika orang lain melakukan kesalahan yang sama.
Pendekatan ini juga harus bekerja dengan baik jika ada beberapa node dengan banyak pendahulu langsung, selama mereka relatif jarang.
sumber