我正在尝试确定最佳搜索案例,以便与我编写的搜索算法进行比较。
我有一组标记为“必需”的节点和一个标记为“开始”的节点,其余节点标记为“可选”。我想找到我需要扩展的最佳节点数,以便发现所有必需的节点,因为我第一次扩展是“开始”节点。
一些注意事项:
答案 0 :(得分:2)
我有一组标记为“required”的节点和一个标记为“start”的节点 休息标记为“可选”。我想找到最佳节点数 我需要扩展以发现给定的所有必需节点 我第一次扩展是“开始”节点。
如果扩展节点的成本可以是任意的,则这是节点加权的Steiner树问题,在合理的复杂性理论假设下,没有多项式时间近似算法,其比率为o(log n) )。
我相信我要找的是最小生成树,但是 修剪了所有未在“必需”节点中结束的分支。
不,这通常不是最佳的。例如,使用图表
s
/|\
/ | \
* | *
/ | \
/ | \
r1----*----r2,
修剪时,一个可能的MST看起来像/|\
或/\
,但最佳解决方案看起来像_|_
。
如果我能说出树的大小怎么办?
从理论上讲,你可以通过解决Steiner树的整数程序的LP松弛的双重来获得一个下界(实际上有一个你正在考虑的大小的图形,如果一个,它不会让我感到惊讶求解器可以直接确定最佳Steiner树。)
但实际上,这并不是人们评估搜索算法的方式。