Annals of Mathematics and Artificial Intelligence ( IF 1.2 ) Pub Date : 2021-01-23 , DOI: 10.1007/s10472-020-09721-3 Antonio Di Stasio , Aniello Murano , Vincenzo Prignano , Loredana Sorrentino
Parity games are infinite-round two-player games played on directed graphs whose nodes are labeled with priorities. The winner of a play is determined by the smallest priority (even or odd) that is encountered infinitely often along the play. In the last two decades, several algorithms for solving parity games have been proposed and implemented in PGSolver, a platform written in OCaml. PGSolver includes the Zielonka’s recursive algorithm (RE, for short) which is known to be the best performing one over random games. Notably, several attempts have been carried out with the aim of improving the performance of RE in PGSolver, but with small advances in practice. In this work, we deeply revisit the implementation of RE by dealing with the use of specific data structures and programming languages such as Scala, Java, C++, and Go. Our empirical evaluation shows that these choices are successful, gaining up to three orders of magnitude in running time over the classic version of the algorithm implemented in PGSolver.
中文翻译:
在实践中改进平价游戏
奇偶校验游戏是在有向图上播放的无限轮两人游戏,其有优先级的节点被标记。一场比赛的获胜者取决于在比赛中经常遇到的最小优先级(偶数或奇数)。在过去的二十年中,提出了几种解决奇偶游戏的算法,并在以OCaml编写的平台PGSolver中实现了该算法。PGSolver包含Zielonka的递归算法(简称RE),该算法在随机游戏中表现最好。值得注意的是,已经进行了一些尝试,目的是改善RE在PGSolver中的性能。,但在实践中进展不大。在这项工作中,我们通过处理特定数据结构和编程语言(例如Scala,Java,C ++和Go)来重新审视RE的实现。我们的经验评估表明,这些选择都是成功的,与在PGSolver中实现的经典算法版本相比,运行时间最多增加了三个数量级。