Hızlı treewidth algoritmaları


18

Bir grafiğin üçlü genişliğini hesaplamak istiyorum . Altgraf izomorfizması için VF2 gibi diğer NP-sert grafik problemleri için gerçekten iyi sezgisel tarama var , örneğin igraph'ta kod mevcut . Onları grafiklerimde denedim ve verilerim için çok hızlı çalıştıklarını fark ettim.

Benzer bir damarda trewidth hesaplaması için hızlı algoritmalar var mı?


1
fyi son zamanlarda treewidth FOCS içinde Gaspers / Szeider tarafından SAT sertliğine bağlandı , bu sohbet / tartışmada başkalarından duymayı umuyoruz
vzn

Yanıtlar:


19

Bildiğim kadarıyla, teknolojinin durumu

Hans L. Bodlaender, Fedor V.Fomin, Arie MCA Koster, Dieter Kratsch ve Dimitrios M. Thilikos (2012), "Üçlü tam algoritmalar için", Algoritmalarda ACM İşlemleri 9 (1): A12, doi: 10.1145 / 2390176.2390188 .

Burada tarif edilen yöntemler , pratikte daha hızlı hale getirmek için bazı sezgisel optimizasyonlara sahip uygulanan bir algoritmasını içerir.Ö*(2n)


2
Teşekkür ederim. Üst ve alt sınır sezgisel tarama veren referanslar 2, 8 ve 15 pratikte bu makaleden en faydalı olabilir.
felix

10

ICTAI 2011'de Treewidth için Hızlı Paralel Dal ve Bağlı Algoritma adlı bir makale yazdım. Çok çekirdekli treewidth'i hesaplayabilir . Çok fazla buluşsal yöntem kullandım ve programı geliştirmek için çok zaman harcadım.

Çin'de rastgele bir lisans öğrencisiydim ve iyi bir konferansa katılmadım. Ancak deney sonuçlarıma dayanarak, programımın çok hızlı olduğunu düşünüyorum. Treewidth lib'deki birçok çözülmemiş ölçütü çözdüm ve programım, Zhou ve Hansen tarafından IJCAI 09'da önerilen bir algoritmadan 40 kat daha hızlıydı.

Artık bu konu üzerinde çalışmıyorum. Ancak önceki çalışmam yardımcı oluyorsa, programımı (src ve exe) http://www.callowbird.com/underduate-stuff.html adresinden indirebilir ve deneyebilirsiniz. (yine de, biraz daha büyük bir örnekte çok yavaş)


5

Burada http://arxiv.org/abs/1304.6321 (bu yıl FOCS'de kabul edildi) Bodlaender ve ark. grafiğin en fazla k ağaç genişliğine sahip olması durumunda en fazla 5k + 4 genişliğinde bir ağaç ayrışımı veren bir algoritması verin. Belki ilginizi çekebilir.Ö*(2k)


1
2Ö(k)Ö(ckn)c

5

İşte size yardımcı olabilecek üçlü genişliği hesaplamak için algoritmalar üzerine iki araştırma. İlki ampirik karşılaştırmalara sahiptir ve Java kütüphanesi olarak uygulanan çeşitli algoritmalara sahiptir.

Bir grafiğin üst sınırını, alt sınırını veya tam tiz genişliğini hesaplamak için birçok algoritma vardır. Çok sayıda üst ve alt sınır sezgisel tarama ve iki tam algoritma (Dinamik Programlama ve Dal ve Bağlı algoritma) uyguladık. Bu rapor farklı türde algoritmaları karşılaştırır ve bazı algoritmaların tercih edildiğini gösterir.

Treewidth, birkaç ilginç teorik ve pratik uygulamaya sahip bir grafik parametresidir. Bu anket, belirli bir grafiğin üçlü genişliğini belirleme ve küçük genişlikte bir ağaç ayrışması bulma üzerindeki algoritmik sonuçları gözden geçirmektedir. Sezgisel asimtotik hesaplama karmaşıklığını oluşturan teorik sonuçlar, sezgisel tarama (hem alt sınırlar için hem üst sınırlar için) üzerinde deneysel çalışma olarak, ön işleme, kesin algoritmalar ve son işleme tartışılmıştır.


3

Sage, trewidth'i tam olarak nasıl hesaplayacağını bilmiyor, ancak size küçük grafiklerin yol genişliğini verebilir.

http://www.sagemath.org/doc/reference/graphs/sage/graphs/graph_decompositions/vertex_separation.html

Yine de, ağaç ayrışımlarını hesaplamak için uygulanan ve halka açık bir şey olduğunu öğrenmekten memnuniyet duyarım. :-)

Nathann


1
Hey, treewidth test cihazına sahip bir android uygulaması var . Kod, bir ayrışma vermesi için yeniden yazılabilir, ancak şu anda yalnızca trewidth'in en fazla verilip verilmediğini test ediyork. (uyarı: Geliştiricilerden biriyim)
Pål GD
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.