我正在实现这里给出的 A* 搜索算法,https: //en.wikipedia.org/wiki/A *_search_algorithm
这一行表示我们需要使用 INFINITY 的默认值初始化一个映射,
gScore := map with default value of Infinity
Run Code Online (Sandbox Code Playgroud)
所以我在这里尝试,
Map<State, Double> gScore = new HashMap<State, Double>(Double.POSITIVE_INFINITY);
Run Code Online (Sandbox Code Playgroud)
这不起作用,但以下方法有效;
Map<State, Double> gScore = new HashMap<State, Double>((int) Double.POSITIVE_INFINITY);
Run Code Online (Sandbox Code Playgroud)
我想知道为什么,以及它会对我的实现产生什么影响(如果有的话)。
在 Java 中无法使用默认值初始化映射,并且您的第二个版本不会创建默认值为无穷大的映射,而是会尝试创建无限大的映射。(不是真的,但它会尝试创建尽可能最大的地图。)
相反,修改算法:无论何时map.get(key),检查该值是否为空,如果是,则将其替换为无穷大。
| 归档时间: |
|
| 查看次数: |
13369 次 |
| 最近记录: |