我创建了一个有 6 个顶点的无向图,在视觉上表示如下:http: //i.imgur.com/EtQyspG.png
我想编写一个脚本,它可以从起点找到所有路径,而无需重新访问同一个节点,也没有给定的终点。
我看过的 BFS、DFS、A* 算法的每个示例都需要一个最终目标节点。但是,在较大的图表上,找到从 A 点到 Z 点的所有可能路径可能是 NP 困难的。因此,我想找到在设定的移动次数内可实现的所有目的地的所有路径(在此图例如 -- 3 次移动 == 路径中的 4 个最大顶点)
我使用 PHP 数组对图形进行了编码,每个键都是一个顶点,其数组包含相邻点:
<?php
$graph[1] = array(2,6);
$graph[2] = array(1,4);
$graph[3] = array(4,5);
$graph[4] = array(2,3,6);
$graph[5] = array(6,3);
$graph[6] = array(1,5,4);
不过,我不知道以这种方式执行路径搜索的算法。我想要的输出是这样的:
Path 1: 1,2
Path 2: 1,2,4
Path 3: 1,2,4,3
Path 4: 1,6
Path 5: 1,6,4,3
Path 6: 1,6,5
Path 7: 1,6,5,3
我编写所需的代码没有问题,但是算法/函数的必要步骤(假设树遍历递归?)很难理解。
问题:应该使用什么方法/算法来执行此操作,您是否有一个示例(或至少是伪代码)来说明在给定图形输入数组的情况下它是如何工作的?