我使用终端客户端与大型机计算机进行交互。整个界面基于屏幕的概念。工作流示例可能如下所示:
F29
我已经编写了一个python应用程序来通过这个终端接口自动处理记录。我遇到的一个困难是,有很多不同的屏幕,而我的应用程序现在对于如何从一个屏幕转到另一个屏幕非常愚蠢。它可以从登录屏幕,到添加备忘录。但是,如果它发现自己在备忘录屏幕上,并需要取消一个帐户,它必须再次注销和登录,因为它只知道如何从登录屏幕进入停用屏幕,而不是从添加备忘录屏幕。
因此,我想在我的应用程序中创建一个“地图”,将每个屏幕链接到“旁边”的屏幕。然后,我需要一个算法,可以告诉如何从任何屏幕A到任何屏幕B以尽可能最短的方式。
我已经设置了一些屏幕对象,并将它们与它们旁边的屏幕“关联”。因此,我正在寻找某种我可以实现的算法,或者我可以使用的python库来完成从一个屏幕到另一个屏幕的路由计算工作。
编辑:我意识到我在寻找一种最短路径图算法。目前抛给我的是,我没有真正的“距离”,我只是有节点。所以,我真的不想要最短的距离,我想要最少的节点。
发布于 2011-11-16 15:50:59
由于我使用的是未加权图,看起来最简单的方法是广度优先搜索:
http://en.wikipedia.org/wiki/Breadth-first_search
编辑:,我找到了一个库,它可以完成我需要的一切:
http://networkx.lanl.gov/reference/generated/networkx.algorithms.shortest_paths.generic.shortest_path.html
发布于 2011-11-16 15:38:04
如果您已经创建了屏幕的拓扑结构,则A*算法应该工作得很好。
https://stackoverflow.com/questions/8153525
复制相似问题