0

Doğrulanmamış bir grafik verildiğinde G = (V, E), iki rastgele köşe arasındaki toplam en kısa yol sayısını hesaplayan bir algoritma var mı? & v? Bence Dijkstra'nın algoritmasını kullanabiliriz.Doğrusal süre Grafik algoritması

cevap

0

Evet dijkstra kullanabilirsiniz. Herhangi bir düğüme toplam en kısa yol sayısını depolayan bir dizi oluşturun. Toplamı söyle. Tüm dizi üyesinin başlangıç ​​değeri, s kaynağı olduğu toplam [s] = 1 dışında 0'dır.

Dijkstra döngüde, bir düğümün en küçük yolunu karşılaştırırken, karşılaştırmanın sonucu küçükse, bu düğümün toplam dizisini toplam geçerli düğüm sayısıyla güncelleştirin. eşitse, o düğümün toplam dizisini toplam geçerli düğüm sayısıyla ekleyin. Bazı değişikliklerle wikipedia alınan

yalancı kod: kendisi tarafından

function Dijkstra(Graph, source): 

    create vertex set Q 

    for each vertex v in Graph:    // Initialization 
     dist[v] ← INFINITY     // Unknown distance from source to v 
     total[v] ← 0      // total number of shortest path 
     add v to Q       // All nodes initially in Q (unvisited nodes) 

    dist[source] ← 0      // Distance from source to source 
    total[source] ← 1      // total number of shortest path of source is set to 1 

    while Q is not empty: 
     u ← vertex in Q with min dist[u] // Source node will be selected first 
     remove u from Q 

     for each neighbor v of u:   // where v is still in Q. 
      alt ← dist[u] + length(u, v) 
      if alt < dist[v]:    // A shorter path to v has been found 
       dist[v] ← alt 
       total[v] ← total[u]   // update the total array of that node with the number of total array of current node 
      elseif alt = dist[v] 
       total[v] ← total[v] + total[u] // add the total array of that node with the number of total array of current node 

    return dist[], total[] 
+0

Dijkstra'nın en kısa yolları vermeyecektir sadece bunu ran bir tepe ve diğer arasındaki herhangi * İki keyfi köşe * arasında sayılır. – Wildcard

+0

teşekkürler. – 781850685

+0

Olsa da beni anlamak biraz zaman aldı Evet, bu Dijkstra tek çorba en kısa yol algoritmasıdır. Ama sanırım soru, hiç keyfi olmayan iki rasgele köşe arasında en kısa yol bulma toplam sayısı ile ilgili. "Herhangi iki tepe noktası" için tasarlanmışsa, floyd-warshall algoritması bazı değişikliklerle kullanılabilir. Ve bu doğrusal değil. –