C 编程 : How to find the shortest path?

标签 c path adjacency-matrix

假设我有一个由 36 个顶点组成的 6x6 正方形(即每行 6 个顶点,每列 6 个顶点),看起来像这样:

•  •  •  •  •  •  
•  •  •  •  •  •  
•  •  •  •  •  •  
•  •  •  •  •  •  
•  •  •  •  •  •  
•  •  •  •  •  •

每个顶点都与 1、2、3 或 4 个邻近的顶点相连 - 所以我们基本上得到了一个包含顶点和边的图。 我的问题如下:我希望机器人通过边的“迷宫”,直到它找到放置在某个顶点上的某个对象。一旦它找到那个对象,它就应该返回到它的起点,使用最快的方式返回。

现在,我不太确定如何实现这一点,所以我的问题是:用 C 语言保存有关这些顶点和边的信息的最佳结构是什么? (邻接矩阵对我来说似乎效率低下,因为 36x36 相当大)。而且,使用这些信息,我怎样才能找到回到起点的最快方法?

最佳答案

您似乎每个顶点需要四位,以表示 {up, right, down, left} 中的任何一个都是“开放”方向,即有效移动。

因此,您总共需要:

6 * 6
----- = 18 bytes
  2

保存所有连接数据。很难想象它会比这更有效率。

关于C 编程 : How to find the shortest path?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15479721/

相关文章:

python - 从 csv 数据集在 python 中创建邻接矩阵

c - 结构自引用

path - Windows 7-添加路径

bash - 如何在不更改 $PATH 的情况下重新加载 .bash_profile?

data-structures - 这种图表示矩阵叫什么?

python-3.x - 使用定制的距离函数从 Pandas Dataframe 创建距离矩阵

使用 scanf 检查输入是否为 double?

c - 在 C 中使用常量进行浮点计算?

c - 编译 BASIC "libnotify"代码时出错

python - Linux Path环境变量--正确添加带空格的路径