搜索策略

什么是最短路径?

在常见的寻路算法中, 最短可能是指距离最短, 也可能是指时间最短.
在推箱子中也是如此, 既有移动数最优解决方案, 也有推动数最优解决方案.

策略

推箱子求解器通常有以下策略:

  • Fast: A* 算法可以用于搜索最短路径, 但不一定只能搜索最短路径. 通过提高启发式函数的权重可以提高搜索到任何解决方案的效率, 即速度.
  • OptimalPush: 搜索推动数最少的解决方案.
  • OptimalMove: 搜索移动数最少的解决方案.
  • 搜索推动数最少其次移动数最少的解决方案.
  • 搜索移动数最少其次推动数最少的解决方案.

表示

pub enum Strategy {
    /// Search for any solution as quickly as possible
    Fast,

    /// Find the push optimal solution
    OptimalPush,

    /// Find the move optimal solution
    OptimalMove,
}