Sorun
Zamanla değişecek olan yönlendirilmemiş bir grafiğim var (çok kenarlı), düğümler ve kenarlar eklenebilir ve silinebilir. Grafiğin her değişikliğinde, bu grafiğin bağlı bileşenlerini güncellemem gerekiyor.
Özellikleri
Ek özellikler, hiçbir iki bileşenin tekrar bağlanmayacağıdır. Tabii ki, grafik keyfi bir miktarda döngü içerebilir (aksi takdirde çözüm önemsiz olacaktır). Eğer bir kenar düğümü içermiyorsa , asla bu düğümü kabul etmez. Ancak, , bu olabilir değiştirmek .n n ∈ e
Yaklaşımlar
Şimdiye kadar iki olası yaklaşımım var, ancak göreceğiniz gibi korkunçlar:
Yavaş halsiz
Her seferinde değiştirilmiş öğelerden başlayarak grafiği arayabilirim (dfs / bfs). Bu alandan tasarruf sağlar, ancak her değişiklik için O (n + m) olduğu için yavaştır.
Durum bilgisi olan hızlı (-er) (?) Yaklaşım
Her düğüm için tüm olası yolları tüm olası düğümlere kaydedebilirim, ancak doğru görürsem, bu O (n ^ 4) belleği alacaktır. Ancak çalışma zamanı iyileştirmesinin nasıl olduğundan emin değilim (eğer varsa), aynı bileşendeki her düğüm için bilgileri güncel tutmak zorundayım).
Soru
Herhangi bir işaretçiniz var mı, bu sorun hakkında nasıl daha fazla bilgi edinebilirim veya belki de geliştirebileceğim bazı algoritmalar?
Not
Çalışma zamanında / bellekte büyük bir gelişme varsa, bazen iki bileşenin bir olduğunu söyleyen optimal olmayan bir çözümle yaşayabilirdim, ancak elbette en uygun çözümü tercih ederim.