Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình

Thuật toán Yen's k-Shortest Path trong cấu trúc dữ liệu


Thay vì cho 1 đường đi ngắn nhất, thuật toán Yen's k-shortest path cho k đường đi ngắn nhất để lấy đường thứ 2, thứ 3...

Xét tình huống đi từ A đến B, nhiều tuyến đường, tìm đường ngắn nhất, bỏ qua các đường kém hơn về độ phức tạp thời gian.

Ví dụ:

Thuật toán Yen s k-Shortest Path trong cấu trúc dữ liệu

Ví dụ như cây cầu đỉnh B. Muốn qua từ A đến C, không ai leo đỉnh B. Đường A-C dài hơn một chút.

Nhiều cách tìm shortest path. Nhưng phải tìm đến (k-1) đường ngắn nhất.

Thuật toán k-shortest Path

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)