SORU
5 Aralık 2011, PAZARTESİ


Nasıl Genişlik öncelikli Arama, en Kısa Yol ararken işe yarıyor mu?

Biraz araştırma yaptım ve bu algoritma küçük bir parçası eksik gibi görünüyor. Genişlik öncelikli Arama nasıl çalıştığını anlıyorum, ama sadece tek tek her düğüm gidebileceğiniz bana karşı özel bir yol, beni alacak anlamıyorum. Benim karışıklık bir örnek sunmaktır açıklamak için en kolay yolu sanırım

Yani, örneğin, diyelim ki böyle bir grafik var ki:

enter image description here

Ve amacım E (tüm kenarları ağırlıksız) Bir çıkar.

Benim origin çünkü Bir de başlıyorum. Bir, hemen Bir dequeueing ve keşfetmeye ardından da sırası. Bu B ve D, B ve D'ye bağlı olduğu için ben böylece iki sıra B ve D. verir

Ben sıradan çıkarma B ve keşfetmek ve bulmak için Bir yol (zaten araştırdı), ve C, yani sıra C ben o zaman sıradan çıkarma D, ve bu yol E, amacım. Ben o zaman sıradan çıkarma C ve E, amacım yol bulmak.

En hızlı yolu Bir -^ olduğunu mantıksal olarak biliyorum . D->E, ama nasıl emin değilim tam olarak genişliği-ilk arama yardımcı olur - nasıl olayım kayıt yolları gibi bitince, ben analiz sonuçları ve görmek en kısa yolu Bir->D->E?

Ayrıca, "" düğümler, tek çocuk. üst yok aslında bir ağaç bile kullanmadan kullanıyorum unutmayın,

CEVAP
5 Aralık 2011, PAZARTESİ


Teknik olarak, Genişlik öncelikli arama (BFS) tarafından kendisi değil, bırak o seni bulsun en kısa yol, çünkü BFS değil arıyorum en kısa yol: BFS açıklanır bir strateji ararken bir grafik, ancak yok söylemek gerekir arama yok.

Dijkstra's algorithm BFS, tek-kaynaklı en kısa yollar bulalım uyum sağlar.

Sipariş almak için en kısa yol dan kökenli bir düğüm, korumak gerekir iki öğe için her düğüm grafik: bugünkü kısa mesafe ve önceki düğüm en kısa yol. Başlangıçta tüm mesafeleri sonsuza ayarlı ve öncekilerden boş olarak ayarlanır. Sizin örnekte, Bir sıfır, ve BFS ile devam etmek için mesafeyi ayarlayın. Her adım kontrol eğer sen-ebilmek geliştirmek mesafe soyundan, yani bu mesafeden kökenli selefi artı uzunluğu kenar olduğunu keşfetmek daha az mevcut en iyi mesafe için düğüm soru. Eğer mesafe artırabilir, yeni en kısa yolu ve bu yolda elde edilen öncül unutmayın. BFS sırası boş olduğunda, bir düğüm (örnek, E) ve traverse öncekilerden başlangıç konumuna geri almak. Bu sana en kısa yolu verir.

Eğer bu biraz kafa karıştırıcı geliyorsa, wikipedia konu üzerinde pseudocode section hoş gelmiş.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Damien Hayes

    Damien Hayes

    11 Mart 2008
  • Krumme1996

    Krumme1996

    21 EYLÜL 2009
  • Microsoft Help & Training Videos

    Microsoft He

    31 Mart 2009