Im developing a city builder game and want to simulate citizens walking from point A to point B, but have each citizen take a random k shortest path to reach their destination. This is to avoid clumping that you'll see if you use Dijkstra's or flow fields (since these return only one available path). I will also use this for cars, so the algorithm must handle weighted and directed edges.I have created my own solution, but I'm always looking for more optimal algorithms.