Link-cut ağaçları şimdiye kadar pratikte, maksimum akış hesaplaması veya diğer uygulamalar için kullanılıyor mu?


20

Yaygın olarak uygulandığını gördüğüm birçok maksimum akış algoritması, Dinic'in algoritması, itme yeniden etiketleme ve diğerleri, dinamik ağaçların (bağlantı kesilmiş ağaçlar olarak da bilinir) kullanılmasıyla asimtotik zaman maliyetlerini artırabilir .

  • İtmeli etiketleme veya O ( V 3 ) veya O ( V 2 Ö(V2E)Ö(V3)normal, ancak dinamik ağaçlarO(VElog(V2/E))Ö(V2E)Ö(VEgünlük(V2/E))
  • Dinic'in algoritması , ancak O ( V E log ( V ) ) dinamik ağaçları ile çalışırÖ(V2E)Ö(VEgünlük(V))

Bununla birlikte, çoğu kütüphanede maksimum akış algoritmalarının pratik uygulamaları bu veri yapısından faydalanmıyor gibi görünmektedir. Dinamik ağaçlar şimdiye kadar maksimum akış hesaplaması için pratikte kullanılıyor mu? Yoksa gerçek dünya sorun büyüklükleri için çok fazla yük taşıyorlar mı?

Bağlantı kesme ağaçlarının kullanıldığı başka sorun alanları var mı?

Bu soru cstheory ile ilgili sorduğum bir soru ile ilgilidir: En son teknoloji Maksimum Akış algoritmalarından herhangi biri pratik mi?


bağlantı kesme ağaçlarına genel bakış / açıklama ancak sadece "Ağ Akışı gibi uygulamalar için yararlıdır"
vzn

reza tarafından belirtilen tarjan anketinden, temel olarak doğrusal zaman algoritmaları, az sayıda köşe / kenar için çok iyi / en iyi performansı gösterir ve daha sonra logaritmik algoritmaların doğrusal algoritmadan daha iyi performans gösterdiği daha büyük köşe / kenarlardan oluşan bir harman vardır. bu nedenle logaritmik erişim fns faydalıdır ve çok büyük grafikler için önemli ölçüde daha iyi olabilir.
vzn

Yanıtlar:


7

Pratik uygulamayı gözden geçiren " Uygulamada Dinamik Ağaçlar " başlıklı bir makale bulunmaktadır .

Link-Cut ağacının verimli bir şekilde kullanılabileceği diğer kategoriler Veritabanı Dizine Ekleme'de verilmiştir . Bunu " Veritabanı İndeks Teknikleri " kitabında bulabilirsiniz .


bunun biraz detaylandırılması gerektiğini düşünüyorum. ağaçlar genel olarak endeksler için yararlıdır, ancak ağaç hangi koşullar altında değiştirilir?
vzn

@vzn: B +-ağacı, R-ağacı, H-Ağacı ve X-Ağacı bazı örneklerdir.
Reza

Tabii ki, şüpheli hiç kimse bugüne kadar DB dizinlerinde bağlantı kesme ağaçları kullanmayı denemedi. onun bir akla yatkın uygulama ama onlar DB endeksler meydana aynı işlemleri için optimize edilmiş olduğundan açıkça görünmüyor.
vzn

5

bu makale, sonunda bir bağlantı kesme (LC) ağacının standart bir Dimacs rastgele grafik üreteci kullanarak Sleator / Tarjan maksimum akış algoritması için tırmık sıkıştırma (RC) ağaçlarından daha iyi performans gösterdiğini ortaya koymaktadır.

makale, dinamik ağaçların bir uygulaması olarak değişimin yayılmasına odaklanmaktadır. örneğin, değişiklik yayılımı, excel elektronik tablo hücrelerinin, hücre / formül bağımlılıklarına dayalı olarak bazı hücrelerdeki değişikliklerde yeniden hesaplanması gerektiği şekle benzer. yazarlar kodlarını açık bir kütüphane olarak yayınladılar.

Dinamik ağaçlarda değişim yayılımının deneysel analizi Acar, Blelloch, Vittes

Değişiklik yayılımı, bir algoritmanın çıktısını girişteki değişikliklere otomatik olarak ayarlamak için bir tekniktir. Değişiklik yayılımının ardındaki fikir, veri ve işlev çağrıları arasındaki bağımlılıkları izlemek, böylece girdi değiştiğinde, bu değişiklikten etkilenen işlevlerin hesaplamayı ve çıktıyı güncellemek için yeniden yürütülebilmeleri. Değişiklik yayılımı, bir derleyicinin statik algoritmaları dinamik hale getirmesini mümkün kılar.


Teşekkür ederim. Dinamik ağaçları içeren algoritmaların bazı kriterlerini görmek güzel.
Rob Lachlan
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.