Computer >> Máy Tính >  >> Lập trình >> Lập trình

Yen's k-Thuật toán đường dẫn ngắn nhất trong cấu trúc dữ liệu

Thay vì đưa ra một đường đi ngắn nhất, thuật toán k-đường đi ngắn nhất của Yen đưa ra k đường đi ngắn nhất để chúng ta có thể nhận được đường đi ngắn nhất thứ hai và đường đi ngắn nhất thứ ba, v.v.

Chúng ta hãy xem xét một tình huống mà chúng ta phải đi từ địa điểm A đến địa điểm B và có nhiều tuyến đường có sẵn giữa địa điểm A và địa điểm B, nhưng chúng ta phải tìm con đường ngắn nhất và bỏ qua tất cả những con đường ít được xem xét về mặt của nó. phức tạp về thời gian để đến đích.

Hãy cho chúng tôi hiểu với một ví dụ-

Yen s k-Thuật toán đường dẫn ngắn nhất trong cấu trúc dữ liệu

Hãy coi ví dụ đã cho là cây cầu có đỉnh là B. Nếu ai đó muốn đi qua cầu từ A đến C, thì sẽ không có ai đi lên đỉnh để qua cầu. Vì vậy, nó sẽ là con đường dài hơn một chút từ A đến C.

Có nhiều cách để đi được con đường ngắn nhất. Nhưng chúng ta phải tìm con đường ngắn nhất lên tới (k-1).

Thuật toán cho đường đi ngắn nhất k

query= “””
MATCH(start: place{id:source}),*end: Place {Id:destination})
Call algo.kshortestPaths.stream(start,end,10, “distance”)
Yield nodeIDs, path costs, index
Return index.
   [node in algo.getNodeByID(nodeId[1…..-1]) | node.id] aS,
   Reduce (acc=0.0, cost in costs | acc+cost ) as total cost
“””
params= {“source”: Alex,Destination: “US”}
With driver.selection() as session:
  Row session.run(query, params)
  df = pd.DataFrame[dict(record) for record in rows])
pd.set_option(‘max_colwidth’, 100)
display(df)