Ağırlıklı bir haneye bakıldığında, her ağırlığın ata ağırlıklarının toplamı ile yer değiştirmesi için bir O (V + E) algoritması var mı?


34

Sorun elbette çift saymadır. Bazı DAG sınıfları = ağaç veya seri-paralel ağaç için yapılabilecek kadar kolaydır. Genel DAG'lar üzerinde makul bir sürede çalışan tek algoritma yaklaşık bir değerdir (Sinopsis difüzyonu), ancak hassasiyetini artırmak bitlerin sayısında üsteldir (ve çok fazla bit gerekir).

Arka plan: Bu görev BBChop'ta olasılık hesaplamalarının bir parçası olarak (http://github.com/ealdwulf/bbchop) aralıklı hataları (örneğin bir bayesyen versiyonunu 'bulmak için) bir program olarak yapılmıştır (http://github.com/ealdwulf/bbchop). git bisect '). Dolayısıyla, söz konusu DAG revizyon tarihidir. Bu, kenar sayısının, düğüm sayısının karesine yaklaşma olasılığının bulunmadığı anlamına gelir, bazı ufacık k için düğüm sayısının k katından daha az olması muhtemeldir. Ne yazık ki revizyon DAG'lerin başka faydalı özelliklerini bulamadım. Örneğin, en büyük üç bağlantılı bileşenin yalnızca düğüm sayısının karekökü olarak büyüyeceğini, ancak ne yazık ki (en azından linux çekirdeğinin tarihinde) doğrusal olarak büyüdüğünü umuyordum.


Sadece açıklığa kavuşturmak için: sadece ağırlıkları olan, kenarları değil düğümleri mi?
Heinrich Apfelmus

Evet, sadece düğümler.
Ealdwulf

4
Bu bir yakın-yinelenen gibi görünüyor cstheory.stackexchange.com/questions/553/... ?
Jukka Suomela

bu aslında daha genel görünüyor, çünkü tüm köşelere birim ağırlık atamak bu sorunu ulaşılabilirlik sorununa indirgiyor.
Suresh Venkat

Yaklaşımın bazı ekstra poliolojik faktörlerle yapması zor görünmüyor ...
Sariel Har-Peled

Yanıtlar:


17

Köşe ağırlıklarının isteğe bağlı pozitif tamsayılar olabileceğini veya daha kesin olarak, en fazla 2n pozitif tamsayılar olabileceğini varsayıyoruz . O zaman mevcut görev, O ( n 2 ) 'ye bağlı biraz daha zayıf bir zaman diliminde bile gerçekleştirilemez ; isteğe bağlı olarak yönlendirilmiş bir grafiğin geçişli kapanması, n'nin köşelerin sayısını gösterdiği O ( n 2 ) zamanda hesaplanamaz . ( Geçiş kapatma için bir O ( n 2 ) zamanlı algoritmanın bir buluş olacağına dikkat edin.) Bu, aşağıdaki istemlerin çelişkilidir:

İddia . Mevcut görev O ( n 2 ) zamanında gerçekleştirilebiliyorsa , bitişik matrisi olarak verilen rastgele yönlendirilmiş bir grafiğin geçişli kapanması O ( n 2 ) zamanda hesaplanabilir (bazı makul hesaplama modellerini varsayarak).

Kanıt . Bir ön işleme olarak, verilen yönlendirilmiş grafik kuvvetle bağlı bileşen ayrışma hesaplamak G süresi O (içinde , n , 2 DAG elde etmek için) G '. Biz geçişli kapatılmasını hesaplayabilir eğer Not G ', biz geçişli kapatılmasını tekrar oluşturabilir G .

Şimdi ağırlığı 2 atamak i , her tepe için i DAG G 've mevcut sorun için bir algoritma kullanır. Daha sonra her bir köşe tahsis toplamının ikili gösterimi i atalarının tam setini tarif i , diğer bir deyişle, biz geçişli kapatma hesaplayan G '. QED .

İstemin tersinin de geçerli: Belirli bir DAG geçişli kapatma hesaplayabilir halinde, zaman O (ek işin gerektirdiği toplamı hesaplamak kolaydır , n 2 ). Bu nedenle teoride, Coppersmith -Winograd matris çarpım algoritmasına dayanarak geçişli kapatma için algoritmayı kullanarak O zamanında ( n 2.376 ) mevcut görevi başarabilirsiniz .

Düzenleme : 2 ve önceki revizyonlar, köşe ağırlıklarının aralığı ile ilgili varsayımları açıkça belirtmemiştir. Vognsen, yorumunda, bu örtük varsayımın makul olmayabileceğine işaret etti (teşekkürler!) Ve katılıyorum. Uygulamalarda rasgele ağırlıklar gerekmese bile, bu cevabın aşağıdaki yaklaşımlar doğrultusunda bazı yaklaşımları ekarte edebileceğini tahmin ediyorum: “Eğer bu yaklaşım işe yaradıysa, geçişli olmadıkça reddedilen keyfi ağırlıklar için bir algoritma verirdi. kapanma zamanı O ( n 2 ) olarak hesaplanabilir . ”

Düzenleme : 4 ve önceki revizyonlar, kenarların yönünü yanlış belirtmiştir.


4
Dün gece bu konuyu düşünüyordum çünkü pratik bir çözüm dışlama sayımını yapmak için bit vektörleri kullanıyordu. Bence tek soru, ağırlıkların n ile orantılı bit uzunluğuna sahip olabileceğini varsaymanın makul olup olmadığıdır. Uygulamada, ağırlıkların bir miktar k ile sınırlandırıldığını hayal edebiliyorum, bu yüzden mümkün olan maksimum miktar kn, bu numarayı çekecek kadar bit değil.
Vognsen Başına

@Per: Vertex ağırlıklarının n-bit tamsayı olabileceği varsayımının sorgulanabileceğini kabul ediyorum. Bu varsayımı açık hale getirmek için cevabı değiştirdim. Teşekkürler!
Tsuyoshi Ito

1
@Per: Eğer tepe ağırlıkları O (1) tarafından sınırlanan tamsayılarsa, sorunun tüm tepe noktalarının 1 ağırlıklarını uygun bir şekilde kopyalayarak 1 olduğu duruma indirgendiğini fark ettim .
Tsuyoshi Ito

Ne yazık ki sayma problemine o konuda bir cevap göremiyorum. Sayımlar, O (n log n) vs O (n ^ 2) geçişli kapanma listesinden logaritmik olarak daha az bilgi içerir, bu yüzden basit bir azaltmanın nasıl işe yaradığını göremiyorum.
Vognsen Başına

Bu arada, bu problemin ilginç bir versiyonu, DAG'nin nesillerindeki büyüklüklerin büyümesine (la topolojik bir sıralama) dal faktörü ve bilgisine bağlı olduğumuz zamandır. Büyüme üstel ise, desen esas olarak ağaç benzeridir. Ya doğrusal, log-doğrusal, ikinci dereceden, vb ise?
Vognsen Başına

2

Bu, Tsuyoshi'nin cevabı hakkındaki yorumumun bir uzantısıdır. Bence sorunun olumsuz cevabı koşulsuz yapılabilir.

ω(n)O(n)

Gr,cr×crrc

r=(log n)/2c=2n/log n

nω(log n)

ω(n)2c(r1)=O(n)

Mesele şu ki, altta yatan kısmi düzenin yoğun olduğu görülüyor, ancak DAG seyrek olabilen geçişli indirgemesini temsil ediyor.


Bu argüman ilginç, ancak ilginç bir ifadenin kanıtı haline getirilip getirilemeyeceğinden emin değilim. Daha düşük sorun sınırlarını kanıtlamanın yaygın zorlukları göz önüne alındığında, bu argüman bana elverişli görünüyor.
Tsuyoshi Ito

@ Tsuyoshi: Varlığın olasılıksal bir argümanla çalışması gerektiğini düşünüyorum ve alt sınır zayıf olduğu için çalışması için yeterli alan olduğu görülüyor. Ama haklısın, el sıkıntısı, "ortalama olarak yeniden kullanılamayan ilaveler" ifadesinin daha iyi bir temele ihtiyacı var.
András Salamon

-2

Bu yanlıştır ve soruya yanlış anlaşılmaya dayanır. Tsuyoshi'ye, sabrımdaki sabrımı gösterdiği için teşekkür ederim. Başkalarının da aynı hatayı yapma ihtimaline karşı çıkmak.

k

kO(k|V|)

O(|V|+|E|)

Bu yaklaşım ayrıca, nispeten nadir olduğu sürece birçok acil öncülün bulunduğu bazı düğümler varsa iyi çalışmalıdır.


4
Onu almam. DAG bir ağaç olmadığında çift saymayı nasıl önlersiniz? Aslında, yanılmıyorsam, genel durum her tepe noktasının en çok iki önceliğe sahip olduğu duruma indirgenebilir ve ikinci durum için herhangi bir doğrusal zaman algoritması, genel durum için bir satır zamanı algoritması verir.
Tsuyoshi Ito

O(|V|+|E|)k

Benim yorumumu yanlış anladığınızdan korkuyorum. Algoritmanızın doğruluğunu soruyorum, çalışma zamanını değil. Dört köşe A, B, C, D, A → B → D ve A → C → D kenarlarına sahip bir DAG varsayalım. B ve C için kısmi toplamları hesapladıktan sonra, D'nin toplamını hesaplamak için B ve C için kısmi toplamları ekleyemezsiniz, çünkü bunu yapmak A tepe noktasının ağırlığını iki kez ekleyecektir.
Tsuyoshi Ito

u<vw(u)

1
Evet. Şimdi hatırlıyorum ki, bu soruyu ilk gördüğümde, soruyu aynı şekilde yanlış anladım ve açık olacağını düşündüm. Fakat hayır, asıl soru bundan daha zor. Düşünme zamanı….
Tsuyoshi Ito
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.