首页 / 知识
图搜索算法
2023-04-14 18:10:00

Graph searching algorithm我正在寻找一种具有一些异常特性的图算法。 图形中的每个边缘都是"上"边缘或"下"边缘。 有效路径可以不定数量的"向上",后跟不定数量的"向下",反之亦然。但是,它不能多次改变方向。 例如,有效路径可能是A"上" B"上" C"下" E"下" F 在两个节点之间找到最短有效路径的好的算法是什么?找到所有等长的最短路径怎么办? 假设您没有任何启发式方法,那么dijkstra算法的一种变体就足够了。每当您考虑新的优势时,请存储有关其"祖先"的信息。然后,检查不变性(仅一个方向变化),如果违反则回溯。 祖先是沿着最短路径经过的所有到达当前节点的边。存储祖先信息的一种好方法是使用一对数字。如果U向上,而D向下,则特定边的祖先可能是 由于我们使用了dijkstra的算法,因此已经解决了查找多个最短路径的问题。 也许您可以将图形转换为普通有向图,然后使用现有算法。 一种方法是将图分为两个图,一个图具有所有上边缘,一个图具有所有下边缘,并且在图一的所有节点和图二的对应节点之间具有有向边。 首先求解从图一开始并在图二结束,然后以另一种方式求解,然后检查最短解。 具有特制成本(G得分)和启发式(H得分)功能的A *可以处理。 对于成本,您可以跟踪路径中方向变化的次数,并在第二个变化上增加无限的成本(即,切断对那些分支的搜索)。 启发式方法需要更多的思考,尤其是当您希望保持启发式方法可容许(永远不要高估到目标的最小距离)和单调性时。 (确保A *找到最佳解决方案的唯一方法。) 也许有更多有关该域的信息可用于创建启发式方法? (即图中节点的x,y坐标?) 当然,根据要求解的图的大小,您可以首先尝试使用更简单的算法,例如广度优先搜索或Dijkstra的算法:基本上,每种搜索算法都可以,并且每一种搜索算法都需要一个成本函数(或类似)。 人们会认为您的标准BFS应该在这里工作。每当将节点添加到打开列表时,都可以将其package到一个结构中,该结构保存该节点正在使用的方向(向上或向下)和一个布尔型标志,指示该节点是否已切换方向。这些可用于确定该节点的哪些传出边缘有效。 要查找所有等长的最短路径,请在结构中包括到目前为止已遍历的边数。当找到第一个最短路径时,记下路径长度并停止将节点添加到打开列表中。继续遍历列表中的其余节点,直到您检查了当前长度的所有路径,然后停止。 如果您具有标准的图形搜索功能,例如在库中输入
如果您需要记住最小路径,并且碰巧您的标准函数返回了数据,您还可以发音
其中, 如果我们的图形很大并且根本不使用内存(如果它们是动态生成的,则有可能),这会有一些内存开销,但实际上并没有任何速度开销,恕我直言。 |
最新内容
相关内容
linux常用的命令路径?
linux常用的命令路径?,地址,工作,基础,网络,管理,系统,信息,命令,企业,服务,linux基本操作命令linux常用命令有pwd命令、cd命令、ls命令、catlinux切换路径命令行?
linux切换路径命令行?,系统,工作,名称,地址,目录,命令,工具,密码,一致,管理,在linux中,我们通常使用什么命令来切换目录,使用什么命令来拷贝..linux改变命令的路径?
linux改变命令的路径?,数字,第一,目录,工作,一致,名称,系统,命令,文件夹,代表,linux下怎么修改文件夹目录1、linux修改php.ini路径的方法:首先linux中显示路径命令?
linux中显示路径命令?,系统,地址,工作,信息,时间,命令,数据,网络,路径,名字,linux系统常用操作命令1、linux常用命令有pwd命令、cd命令、ls命linux保存路径命令行?
linux保存路径命令行?,状态,地址,电脑,档案,系统,底部,软件,密码,命令,文件,linux打开文件后怎么保存关闭,急急急!!!(在命令行里)1、你如果没linux相对路径命令?
linux相对路径命令?,工作,名字,路径,目录,管理,信息,系统,位置,名称,基础,linux什么是绝对路径与相对路径,要由/usr/share/doc进入到/usr/sharlinux多路径查看命令?
linux多路径查看命令?,设备,软件,网络,工具,系统,情况,下降,公司,名称,大幅,如何使用multipathdevice-mapper-multipath:即multipath-tools。主linux路径命令解释?
linux路径命令解释?,系统,信息,设备,数据,工具,命令,文件,标准,发行,时间,linux查看路径命令1、linux命令如果记不得,可以使用man命令来查看某linux相对路径和命令?
linux相对路径和命令?,地址,工作,信息,数据,系统,命令,文件,目录,时间,路径,linux常用的命令有哪些1、linux系统常用操作命令如下:ls:全拼list,功linux显示路径命令?
linux显示路径命令?,系统,信息,工作,数据,名称,位置,标准,环境,时间,命令,linux如何查看root用户目录路径?1、建目录时,不指定绝对路径时,可以用linux拷贝路径命令行?
linux拷贝路径命令行?,系统,文件,命令,目录,名称,源文件,文件夹,目标,路径,选项,Linux下如何使用cp命令复制文件及复制目录1、处在当前目录复linux路径截取命令?
linux路径截取命令?,标准,图片,命令,环境,工具,信息,软件,系统,文件,目录,Linux命令行操作一个文件,通过管道进行字符串截取,该如何操作?1、管