@article{TerMors2014,
	author          = {Boris de Wilde, Adriaan ter Mors and Cees Witteveen},
	title           = {Push and Rotate: a Complete Multi-agent Pathfinding Algorithm},
	journal         = {Journal of Artificial Intelligence Research},
	year            = {2014},
	volume          = {51},
	pages           = {443-492},
	abstract        = {Multi-agent Pathfinding is a relevant problem in a wide range of domains, for example in robotics and video games research. Formally, the problem considers a graph consisting of vertices and edges, and a set of agents occupying vertices. An agent can only move to an unoccupied, neighbouring vertex, and the problem of finding the minimal sequence of moves to transfer each agent from its start location to its destination is an NP-hard problem.
We present Push and Rotate, a new algorithm that is complete for Multi-agent Pathfinding problems in which there are at least two empty vertices. Push and Rotate first divides the graph into subgraphs within which it is possible for agents to reach any position of the subgraph, and then uses the simple push, swap, and rotate operations to find a solution; a post-processing algorithm is also presented that eliminates redundant moves. Push and Rotate can be seen as extending Luna and Bekris’s Push and Swap algorithm, which we showed to be incomplete in a previous publication.
In our experiments we compare our approach with the Push and Swap, MAPP, and Bibox al- gorithms. The latter algorithm is restricted to a smaller class of instances as it requires biconnected graphs, but can nevertheless be considered state of the art due to its strong performance. Our exper- iments show that Push and Swap suffers from incompleteness, MAPP is generally not competitive with Push and Rotate, and Bibox is better than Push and Rotate on randomly generated biconnected instances, while Push and Rotate performs better on grids.},
	url             = {http://www.jair.org/papers/paper4447.html},
	topic           = {Distributed Algorithms},
	group           = {ALG}
}