【发布时间】:2011-02-10 09:24:33
【问题描述】:
我是编程新手,作为一项学校任务,我需要在 Java 中实现 BFS、DFS 和 A* 搜索算法,以便从给定大小的 4x4、8x8 网格中的给定起始位置搜索给定目标,等等
首先我不知道如何编码所有节点的邻居。例如,在 8x8 网格中,瓷砖 1 有 2 和 9 作为邻居,瓷砖 12 有 4、11、13 和 20 作为其邻居,但我正在努力编写代码。我需要邻居部分,以便我可以通过水平或垂直移动通过邻居合法地从起始位置移动到网格的其他部分。
1 2 3 4 5 6 7 8
9 10 11 12 13 14 15 16
17 18 19 20 21 22 23 24
25 26 27 28 29 30 31 32
33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48
49 50 51 52 53 54 55 56
57 58 59 60 61 62 63 64
我的节点类是:
class Node {
int value;
LinkedList<Node> neighbors;
bool expanded;
}
假设我得到了一个 8x8 的右侧网格,那么如果我以 8x8 右侧的网格启动程序:
1 - 我的主要方法将创建一个节点数组列表,例如节点
ArrayList<Node> test = new ArrayList<Node>();
然后使用for循环将值分配给arrayList中从1到64的所有节点(如果网格大小为8x8)。
但不知何故,我需要添加每个节点的邻居,如果有人能给我一些细节,我将不胜感激。
【问题讨论】:
-
@ke3pup:编辑了你的问题,你可以努力更好地格式化你的问题并验证工作,因为你说 "Tile 12,所以很难看到你在说什么有 141,13,20 作为它的邻居” [原文如此] 而不是“4, 11, 13, 20”。我还补充说,您说的是 8x8 正方形(不是 4x4),并放置了一个显示瓷砖编号的正方形,以便人们更好地理解您的问题。
-
哎呀,刚刚注意到...您的 Node 类应该以大写的“N”开头(因为这是 Java 约定)。
-
再次感谢 WizardOfOdds 的更正。
标签: java