实现没有邻接列表的bfs

时间:2013-09-26 12:15:24

标签: algorithm data-structures breadth-first-search

我正在解决BFS上的问题。我能够通过邻接列表在C中实现BFS算法,但我遇到了这个问题: 我必须告诉我是否有可能从迷宫的起点到迷宫的终点。单元格包含0或1.给予它不能通过包含值1的单元格和之间的移动的限制只有当两个单元共享一个公共边时,它们才有可能。 那么如何在不使用邻接列表的情况下直接在这里实现BFS呢?

1 个答案:

答案 0 :(得分:2)

您不必将图形的显式表示作为BFS的邻接列表。从每个单元格(x,y),您知道哪4个潜在邻居(x-1, y)(x, y-1)(x+1, y)(x, y+1)。我说potential因为他们中的任何一个都可能从桌子上掉下来而不是邻居。现在简单地用一对整数标识每个顶点 - 它的坐标和队列中的推对。当从队列中弹出时,使用我上面所说的来访问四个可能的邻居。

希望这足以帮助您 - 我可以提供完整的代码,但您最好自己编写代码。