2010-09-29 13 views

cevap

111

Dijkstra, her adım için 1'den başka mesafeler atamanıza izin verir. Örneğin, yönlendirme sırasında mesafeler (ya da ağırlıklar) hız, maliyet, tercih vb. Tarafından atanabilir. Algoritma, kaynağınızdaki çapraz çizili grafikteki her düğüme en kısa yolu verir.

arada BFS temelde sadece adımların en küçük sayı bulma etkiye sahip olur her yineleme üzerinde (başvurunuzda bunu aramak istediğini bağlantı, kenar,) bir “adım” tarafından, arama kapsamına

Kaynağınızdaki herhangi bir düğüme (“kök”) ulaşmak gerekir.

+1

Her ikisi de aynı sonuçları verir, yani iki köşe arasındaki bir yol, ancak sadece dijkstra en kısa yolu garanti eder. – Edwin

+0

Kabul edilen cevaba, ikinci yoruma bakın. Hesaplama karmaşıklığının neden farklı olduğunu açıklamanın çok güzel bir yolu: https://stackoverflow.com/questions/25449781/what-is-difference-between-bfs-and-dijkstras-algorithms-when-looking-for-shorte – jmcarter9t

14

Seyahat web sitelerini düşünüyorsanız, bunlar düğümlerdeki ağırlıklar (mesafeler) nedeniyle Dijkstra'nın algoritmasını kullanır.

Tüm düğümler arasında aynı mesafeyi düşünürseniz, BFS daha iyi bir seçimdir.

Örneğin

, J = 10 A->B verilen kenar ağırlıkları ile A -> (B, C) -> (F), = 20 A->C, B->F dikkate = C->F Burada = 5.

biz BFS geçerli ise her ikisi de olduğu gibi, cevap ABF veya ACF olacak En kısa yollar (kenar sayısına göre), ancak Dijstra'ları uygularsak, yanıt sadece bağlanan yoldaki ağırlıkları dikkate aldığından ABF olacaktır.