แทนที่จะให้เส้นทางที่สั้นที่สุดเพียงเส้นทางเดียว อัลกอริธึมเส้นทางที่สั้นที่สุดของเยนจะให้ k เส้นทางที่สั้นที่สุดเพื่อเราจะได้เส้นทางที่สั้นที่สุดเป็นอันดับสองและเส้นทางที่สั้นที่สุดเป็นอันดับสามเป็นต้น
ลองพิจารณาสถานการณ์ที่เราต้องเดินทางจากสถานที่ A ไปยังสถานที่ B และมีหลายเส้นทางระหว่างสถานที่ A กับสถานที่ B แต่เราต้องหาเส้นทางที่สั้นที่สุดและละเลยเส้นทางทั้งหมดที่มีการพิจารณาน้อยกว่าในแง่ของมัน ความซับซ้อนของเวลาเพื่อไปให้ถึงที่หมาย
ให้เราเข้าใจด้วยตัวอย่าง-
พิจารณาตัวอย่างที่ให้ไว้เป็นสะพานที่มียอดของ 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)