【问题标题】:Find minimal path in a tree with multivalued nodes在具有多值节点的树中查找最小路径
【发布时间】:2009-01-08 10:31:39
【问题描述】:

我的数学课远远落后,我目前正在努力寻找一个体面的解决方案来解决我遇到的问题:我有一棵树,其中的节点是动作,并且根据多个标准“加权”:所述行动的成本、花费的时间、必要的资源、干扰等......

我想在这棵树中找到最小化成本和时间的路径,例如最小化成本和时间,或干扰和成本和时间等。我的问题是我不知道该怎么做,除了通过提出一个全局成本函数 F(cost, time, resources,...),并使用 F(...) 的结果作为我唯一的权重应用常规树遍历算法。 但是,我该如何想出 F ?像“F(cost, time, resources) = a * cost + b * time + c * resources”这样的东西感觉很“不专业”...

编辑:

我想避免使用“求和”这个词,因为我不确定这是否真的可行,但本质上,这就是我正在做的事情:计算每个“路径”或“分支”的总成本从那个顶部节点到叶子之一,并选择最小化成本的“路径”或“分支”。问题是每个节点都有一个基于所需时间、财务成本、资源使用等的权重。

因此,正如 Stephan 所说,似乎不可避免地必须提出一个公式,它将所有这些参数减少到每个节点的一个全局成本,然后我可以在沿树向下移动时跨节点求和,然后选择总成本最小化的路径。

所以我想我的问题确实是,是否有一种方法可以选择该功能?

感谢您的回答和 cmets,现在我的头脑开始变得更加清晰了。

【问题讨论】:

  • 如果您能给出一个具体的数据示例,将会有所帮助。我通常将“查找路径”与图表而不是树相关联。
  • 如果我使用“分支”这个词而不是“路径”,是否更有意义?
  • 您是否在沿树向下移动时对跨节点的成本/时间求和?或者您只是在寻找具有最低成本/时间的最终(叶)节点?如果是后一种情况,父节点与其子节点的成本/时间之间是否存在关系?
  • 找到“最小化成本和时间的路径”是什么意思?最小化一个的路径可能不会最小化另一个。

标签: optimization math tree path-finding


【解决方案1】:

假设我们有四对 (x, y),例如 (1, 4), (1, 5), (2, 3), (3, 3)。现在您要最小化“x 和 y”。你什么意思?如果您先最小化 x,然后再最小化 y,您最终会得到 (1, 4)。如果先最小化 y,然后最小化 x,你会找到 (2, 3)。

除非您选择全局成本函数 F(x, y),就像在您的观察中一样,我看不出“两者”的任何含义。 (无论如何,一旦选择了 F,可能仍然有多个最小点。)顺便说一句,在我看来,线性组合(正乘数 a、b、c 被理解为“权重”)根本不是“不专业的” ,至少如果您不知道更合适的成本函数可能是什么。

编辑:

因此,正如 Stephan 所说,似乎不可避免地必须提出一个公式,它将所有这些参数减少到每个节点的一个全局成本,然后我可以在沿树向下移动时跨节点求和,然后选择总成本最小化的路径。

小心。实际上,只有当 F 是线性的时,这种策略才有意义。当然,成本、时间、资源等是加法函数,在某种意义上说 time(node1 -> node2 -> node3) = time(node1) + time(node2) + time(node3),但通常情况并非如此对于 F,除非它是线性的。 (即 F(cost(node1 -> node2)) = F(cost(node1) + cost(node2)) != F(cost(node1)) + F(cost(node2))。)

如果您选择非线性全局成本函数,正确的策略是计算每个节点的总成本、总时间、从根到该节点的总资源,并仅为终端计算(然后最小化)F节点。

【讨论】:

    【解决方案2】:

    想出 F 是最重要的。如果我可以给你 6 成本和 5 时间或 5 时间和 6 成本,你更喜欢哪个?您的成本函数需要考虑到这一点。不幸的是,没有任何算法可以为你解决这个问题。在我坐下来为我正在开发的优化应用程序写 F 之前,我否认了这一点。最坏的情况,将参数留给用户修改。

    【讨论】:

      【解决方案3】:

      为什么像A* 这样的普通图搜索算法不起作用?

      对于路径成本函数,您可以使用相关标准的运行总和。到目标的距离更难了……

      可能是到最近叶子的距离,为所有或部分节点预先计算,尽管这听起来非常昂贵。根据树的结构,您可能会想出一个更便宜的低估值 - 例如,如果它完全平衡,那么它是微不足道的。

      【讨论】:

        猜你喜欢
        • 2021-12-05
        • 2019-05-27
        • 2019-06-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多