no crossing paths

i'm trying to make multiple agents move at the same time to a specified point on a 2d map and have an upper limit for the maximum distance one agent can move. If possible, all agents should move the maximum distance, else less. The paths of different agents shouldn't cross if possible, but if not, they can still cross.

My idea was some sort of adjusted A* algorithm. Would this be a good approach or is there a better algorithm for this kind of problem? (to be honest,i currently have A* and dijkstra on my radar as possiblities for solving this, so if there is anything better,a push in the right direction would be great)

Thanks for your help already

PS: i don't have any kind of underlying graph yet, so i'm still open to any idea, but can of course create a graph that works for dijkstra/A*


Your problem is close to vertex/edge disjoint path problem, which is NP-Complete in general, also your restricted version seems to be NP-Complete because shortest disjoint path in grid graph is NP-Hard, which is related to your restricted version. But there are lots of algorithms for disjoint paths in grid (even if you have different layers), so best option that I can suggest is use one of the exact algorithms, to find the vertex disjoint path, after that increase the size of paths (if is needed), by traversing some adjacent vertices.

Also for grid you don't need Dijkstra for finding path between two nodes (even shortest path or path with specific length), you can do it simply by running a BFS and is O(n) (start BFS from vertex v, and set the number of its adjacent to 1, and then for each adjacent of 1's set the new value to 2, ... see this answer and numbering algorithm part).

May be this question also helps if you looking for some heuristics in dynamic situation.

链接地址: http://www.djcxy.com/p/63502.html

上一篇: 穿过唯一x点的最短路径

下一篇: 没有交叉路径