Bir digrafın geçişinin kontrol edilmesi (asimptotik karmaşıklık açısından) digrafın geçişli kapanışını almaktan daha kolay değil mi? Herhangi bir alt sınırı daha iyi biliyor muyuz bir digrafın geçişli olup olmadığını belirlemek için?
Bir digrafın geçişinin kontrol edilmesi (asimptotik karmaşıklık açısından) digrafın geçişli kapanışını almaktan daha kolay değil mi? Herhangi bir alt sınırı daha iyi biliyor muyuz bir digrafın geçişli olup olmadığını belirlemek için?
Yanıtlar:
Aşağıda aşağıdakileri göstereceğim: O'nuz varsa () bir grafiğin herhangi biri için geçişli olup olmadığını kontrol etmek için zaman algoritması , sonra bir O () bir üçgende bir algılamak için zaman algoritması düğüm grafiği ve dolayısıyla ( FOCS'10'dan bir kağıtla ) O () iki booleanın çarpımı için zaman algoritması matrisler ve dolayısıyla 70'lerden Fischer ve Meyer'in bir sonucu olarak , bu aynı zamanda bir O () geçişli kapatma için zaman algoritması.
Diyelim ki bir düğüm . Şimdi aşağıdaki grafiği oluşturabiliriz. bölümlü üçlü üzerinde düğümlerin her biri. İşte her düğüm nın-nin kopyaları var parçalarda . Her kenar için nın-nin yönlendirilmiş kenarlar ekle ve . Her çıkıntı için nın-nin yönlendirilmiş kenarı ekle .
İlk olarak, eğer bir üçgen içerir , sonra geçişli değildir. Bu kenarlardan beri içeride fakat değil. İkincisi, eğer geçişli değilse, o zaman bazı düğümlerden yönlendirilmiş bazı yollar olmalıdır bazı düğüme içinde öyle ki içinde yönlendirilmiş bir kenar değil . Ancak, en uzun yollar Sahip olmak kenarlar, ve böylece böyle bir yol formda olmalıdır ve içinde değil , dolayısıyla üçgen oluşturmak .
Öyle görünüyor herhangi bir alt sınır, boolean matris çarpımı için bir alt sınır anlamına geldiğinden, en iyi bilinen alt sınırdır. Geçiş denetiminin bir boole matris çarpımı kullanılarak gerçekleştirilebileceğini biliyoruz, yani yalnızca ve yalnızca .
Bir DAG'ın geçişli olup olmadığını anlamak, genel bir digrafinin geçişli olup olmadığına karar vermek kadar zordur (bu da bizi önceki sorunuza geri getirir :)).
Zamanında çalışan bir algoritmanız olduğunu varsayalım DAG'ın geçişli olup olmadığına karar vermek için.
Yönlendirilmiş bir grafik verildi , aşağıdaki rastgele algoritmayı kullanarak zaman içinde geçişlidir ve hata olasılığı :
1. for $O(\log{\frac{1}{\delta}})$ iterations:
1.1. Compute a random permutation on $V$. Denote the result by $<v_1,v_2,...,v_n>$.
1.2. Set $G'=(V,E\cup \{(v_i,v_j)|i<j\})$ (i.e. compute a random acyclic orientation).
1.3. If $G'$ (which is acyclic) is not transitive return false.
2. return true.
Şimdi belli ki geçişlidir, bu algoritma true değerini döndürür.
Şimdi varsayalım geçişli değildi. İzin Vermek öyle ki (kenarları olması gerekir geçişli değildir). Olasılığı dır-dir bu nedenle her bir yinelemede algoritmanın şekil verme olasılığı geçişli değildi ve sonra başarısızlık olasılığının en fazla olduğu yinelemeler .
Bunun doğrusal zamanda mümkün olması gerektiğini düşünüyorum, yani nerede köşe sayısıdır ve kenar sayısı. Belki bazı grafik geçiş düzenini yönetilen ayara uyarlayarak? Başlangıç noktası , burada açıklanan LexBFS / LexDFS olabilir ; yönlendirilmiş grafikler için DFS yerine topolojik sıralama kullanmamız gerektiği anlaşılıyor, belki bazı LexTSA algoritmasıyla keşfedilebilir mi?
Önceki cevaba gelince, böyle bir algoritmayı tanımlamanın basit bir yolu. Her bir tepe noktasına ata bir endeks , ilklendirildi . Her biri için, İzin Vermek komşularının endekslerinin çoklu kümesini ifade eder. Bir seti koruyarak topolojik bir sınıflandırmayı simüle ediyoruztüm kümeye başlatılan, keşfedilmemiş köşelerin. Her adımda aşağıdakileri yaparız:
Bir tepe noktası seç kimin çoklu ayarı minimaldir (çoklu set sırasıyla);
Güncelleme geçerli döngü sayacına getirin ve kaldırın itibaren .
Bu algoritma sorununuz için veya başka bir uygulama için kullanılabilir mi?