寻找算法来帮助确定从一个终端屏幕到另一个终端屏幕的最短路径

时间:2011-11-16 14:46:55

标签: python graph-algorithm

我正在使用终端客户端与大型计算机进行交互。整个界面基于屏幕的概念。示例工作流可能如下所示:

  • 登录屏幕:输入登录凭据,按enter
  • 菜单屏幕:输入所需菜单项的编号(对于备忘录,请说“6”),按enter键
  • 备忘录屏幕:输入帐号,按enter
  • 添加备忘录屏幕:输入备忘录详细信息等,按Enter保存,按F3返回

我编写了一个python应用程序,通过这个终端界面自动处理记录。我遇到的困难之一是有很多不同的屏幕,我现在的应用程序对于如何从一个屏幕到另一个屏幕非常愚蠢。它可以从登录屏幕转到添加备忘录。但是,如果它发现自己在备忘录屏幕上并且需要取消激活帐户,它必须退出并再次登录,因为它只知道如何从登录屏幕进入停用屏幕,而不是从添加备忘录屏幕。< / p>

所以,我想在我的应用程序中创建一个“地图”,将每个屏幕链接到“下一个”屏幕。然后,我需要一种能够以最短的方式告诉如何从任何屏幕A到达任何屏幕B的算法。

我已经设置了一些屏幕对象并将它们“关联”到它们旁边的屏幕上。所以,我正在寻找一些我可以实现的算法或我可以使用的python库,它将完成从一个屏幕到另一个屏幕的路径计算工作。

编辑:我意识到我正在寻找某种最短路径图算法。目前扔给我的是我没有“距离”,我只有节点。所以,我真的不想要最短距离,我想要最少的节点。

2 个答案:

答案 0 :(得分:0)

如果您已创建屏幕拓扑,则A *算法应该可以正常工作。

答案 1 :(得分:0)

由于我使用的是未加权的图形,看起来最简单的方法是广度优先搜索:

http://en.wikipedia.org/wiki/Breadth-first_search

编辑:我找到了一个可以完成所需工作的库:

http://networkx.lanl.gov/reference/generated/networkx.algorithms.shortest_paths.generic.shortest_path.html