Grafiğin çapını bulmanın zaman karmaşıklığı


27

grafiğinin çapını bulma zaman karmaşıklığı nedir G=(V,E)?

  • O(|V|2)
  • O(|V|2+|V||E|)
  • O(|V|2|E|)
  • O(|V||E|2)

Bir grafik çapı G bir grafik köşe çiftleri arasında en kısa yol mesafeleri kümesinin maksimumdur.

Bunun hakkında ne yapacağım hakkında hiçbir fikrim yok, böyle bir problemin nasıl çözüleceği konusunda tam bir analiz yapmalıyım.


4
Lütfen biraz detaylandırın. Neden bu ilgilendiğiniz sorun sizi ilgilendiriyor? Bir ipucu, tam bir analiz veya referans ihtiyacınız var mı? En kötü veya ortalama dava süresiyle ilgileniyor musunuz? Mi yönlendirilmiş? G
Raphael

@Raphael: Açıkçası bir ipucuna ihtiyacım yok, tam bir analize ihtiyacım var. Zaten sorumu değiştirdim.
Gigili

1
@Gigili Her durumda demek istiyorsun , değil mi? Aksi takdirde, hepsinin, en az bir cevabın doğru olması gerektiği varsayılarak, doğru bir cevap vermesi muhtemel olan ( O'ya eşit genel grafiklerde ( | V | 5 ) ) son olasılık tarafından varsayılmaktadır. Ek bir endişe, döngüleri olan bir grafikte, en uzun yolun olmamasıdır. "En uzun mesafe" ile ne kastedilmektedir? ΘO(|V|5)
Raphael

@Gigili Dört seçenek nereden geliyor?
uli

Yanıtlar:


5

Güncelleştirme:

Bu çözüm doğru değil.

Çözüm ne yazık ki ağaçlar için sadece doğru (ve basit)! Bir ağacın çapını bulmak bile buna ihtiyaç duymaz. Burada grafikler (çap, bu çekme durumunda, algoritma 3 döner 4 olduğu bir karşı-olduğu ):v

görüntü tanımını buraya girin


Eğer grafik yönlendirilirse, bu oldukça karmaşıktır, işte yoğun durumda tüm çiftler için en kısa yollar için algoritmalar kullanmaktan daha hızlı sonuçlar talep eden bazı yazılar .

Ancak benim ana nokta grafiği durumunda ilgili değil yönlendirilmiş ve negatif olmayan ağırlıklar ile, güzel bir hile birkaç kez duymuş:

  1. Bir köşe seçmek v
  2. Bul öyle ki d ( v , u ) maksimumud(v,u)
  3. Bul öyle ki d ( u , a ) en fazlawd(u,w)
  4. Dönüş d(u,w)

Karmaşıklığı ardışık iki genişlik ilk arama ile aynı ¹, yani grafik bağlıysa .O(|E|)

Folklor gibiydi ama şu anda hala bir referans almak veya düzeltmesini ispatlamak için mücadele ediyorum . Bu hedeflerden birine ulaştığımda güncelleme yapacağım. O kadar basit görünüyor ki, şimdi cevabımı gönderiyorum, belki birileri daha hızlı cevap verecektir.

Grafiği ağırlıklı ise ¹, wikipedia söylemek gibi görünüyor ama hakkında sadece eminim Ç ( | E | günlüğüne | V | ) .O(|E|+|V|log|V|)O(|E|log|V|)

² Grafik bağlı değilse, alırsınız ancak bağlanan her bileşenden bir öğe seçmek için O ( α ( | V | ) ) eklemeniz gerekebilir . Bunun gerekli olup olmadığından emin değilim, bu durumda çapın sınırsız olduğuna karar verebilirsiniz.O(|V|+|E|)O(α(|V|))


Dijsktra'nın belirtilen sürede çalışmasını sağlamak için Fibonacci yığınlarını kullanmanız gerekir, normal uygulama değil.
Suresh

8
Bu kesinlikle yanlış cevap, bu algoritma folklordur ancak ağaçlarda genel grafikler değildir. Not: Sayaç örneğinizi görebiliyorum, ancak cevap olarak işaretlenmesi iyi bir cevap değil.

Yanlış çözüm hakkında iki sorum var. 1. Bu en azından doğru cevabın olması gereken bir aralık verir mi? örneğin, yöntem d çapını bulursa , doğru çözüm d ve 2d arasında olacak mı? 2. Başka bir aktarma eklersek ve bir aktarmanın bulduğu tüm düğümleri göz önüne alırsak ne olur? Gönderide verilen karşı örnek, gerçek çevresel köşeler, ikinci indirmenin bulduğu düğümler arasında olduğu için işe yarayacaktır.
mafu

32

GG

Θ(|V|3)O(|V|2log|V|+|V||E|)

O(|V|2)


2
Bu kağıtlara ödeme yapılırsa, Google Akademik’e bakın.
Raphael

Ayrıca, bu istisna, dia alabileceğiniz yönlendirilmemiş ağaçlar için de dikkat çekicidir . sadece bir dfs geçişi ile.
azam

15

diam(G)tM=I+AMttO(logn)O(M(n)logn)M(n)O(n2.3727logn)

O(n2)


2
Bu algoritmanın sadece ağırlıksız durumda çalıştığını belirtmek önemlidir.
GMB

-2

Varsayımlar:
1. Grafik ağırlıksız
2. Grafik yönlendirildi

O (| V || E |) zaman karmaşıklığı.

Algoritma:

ComputeDiameter(G(V,E)):
  if ( isCycle( G(v,E) ) ) then
     return INFINITY
  if ( not isConnected( G(V,E) )) then
     return INFINITY
  diameter = 0
  for each vertex u in G(V,E):
     temp = BFS(G,u)
     diameter = max( temp , diameter )
  return diameter

Açıklama:
Döngüyü kontrol ediyoruz. Eğer grafik döngü içeriyorsa, döngü içinde hareket etmeye devam edersek, sonsuz mesafeye sahip oluruz. Bağlı olup olmadığını kontrol ediyoruz. Eğer grafik bağlı değilse, bu G2'den G1'den v3'e kadar olan tepe noktası anlamına gelir. G1 ve G2'nin bağlı olmayan iki alt grafik olduğu durumlarda. Böylece tekrar sonsuz mesafeye sahip olacağız. BFS'yi, belirli bir düğüm (u) ile u'dan erişilebilen tüm diğer düğümler (v) arasındaki maksimum mesafeyi hesaplamak için kullanacağız. Daha sonra hesaplanan en fazla çapı ve alacağımız sonucu BFS ile alacağız. Bu yüzden mevcut maksimum çapa sahip olacağız.

Koşu zamanı analizi:

  1. DFS kullanarak O (| E |)
  2. DFS kullanarak O (| E |)
  3. BFS, O (| E |) zamanında çalışır.
  4. Her köşe için BFS işlevini çağırmamız gerekiyor, bu yüzden toplam O (| V || E |) zaman alacaktır.

Toplam süre = O (| v || E |) + O (| E |) + O (| E |)
| V || E | > | E |
bu yüzden O (| v || E |) olarak çalışma süremiz var.

BFS
DFS

Not: Bu, bu soruna zarif bir çözüm değildir.


Asiklik bağlı grafikler, problemin daha kolay olduğu ağaçlardır (çünkü çap o zaman en uzun yoldan verilir). Daha hızlı algoritmaların verildiği burada ve burada ele alınmıştır . (Bir özyinelemeli geçiş veya alternatif olarak iki BFS yeterlidir.)
Raphael

1
@Raphael Hayır, asiklik yönlendirilmemiş grafikler ağaçlardır. DAG'lar DAG'lerdir.
David Richerby

@DidRicherby Sağ. (Her ne kadar teknik olarak cevap, yönlendirilmiş ya da yönlendirilmemiş çevrimleri kapsamazsa söylemez.) Her neyse, bu, genel olarak daha önceki cevaplarla kapsanmış olan APSPP'yi (saf yaklaşım) çözmekten başka bir şey değildir.
Raphael

@Raphael Asiklik grafiklerin ağaç olduğuna emin misiniz? Grafik Asiklik, grafiğin daima ağaç olacağı anlamına gelmez. Ağaç bunun sadece özel bir halidir. Bu da doğrudan ileri algoritma ve zaman karmaşıklığı O (| V || E |).
sonus21 10:15

Evet eminim. (Belki de farklı bir lezzet olan köklü ağaçları düşünüyorsunuz .)
Raphael
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.