Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม

k-Shortest Path Algorithm ของ Yen ในโครงสร้างข้อมูล


แทนที่จะให้เส้นทางที่สั้นที่สุดเพียงเส้นทางเดียว อัลกอริธึมเส้นทางที่สั้นที่สุดของเยนจะให้ k เส้นทางที่สั้นที่สุดเพื่อเราจะได้เส้นทางที่สั้นที่สุดเป็นอันดับสองและเส้นทางที่สั้นที่สุดเป็นอันดับสามเป็นต้น

ลองพิจารณาสถานการณ์ที่เราต้องเดินทางจากสถานที่ A ไปยังสถานที่ B และมีหลายเส้นทางระหว่างสถานที่ A กับสถานที่ B แต่เราต้องหาเส้นทางที่สั้นที่สุดและละเลยเส้นทางทั้งหมดที่มีการพิจารณาน้อยกว่าในแง่ของมัน ความซับซ้อนของเวลาเพื่อไปให้ถึงที่หมาย

ให้เราเข้าใจด้วยตัวอย่าง-

k-Shortest Path Algorithm ของ Yen ในโครงสร้างข้อมูล

พิจารณาตัวอย่างที่ให้ไว้เป็นสะพานที่มียอดของ B ถ้ามีคนต้องการข้ามสะพานจาก A ไป C ก็จะไม่มีใครไปที่จุดสูงสุดเพื่อข้ามสะพาน ดังนั้นมันจะเป็นเส้นทางที่ยาวกว่าเล็กน้อยจาก A ถึง C.

มีหลายวิธีในการรับเส้นทางที่สั้นที่สุด แต่เราต้องหาเส้นทางที่สั้นที่สุดขึ้นไป (k-1)

อัลกอริทึมสำหรับเส้นทางที่สั้นที่สุด 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)