【问题标题】:How to calculate minimum expected time for searching a graph?如何计算搜索图表的最短预期时间?
【发布时间】:2011-02-24 18:52:59
【问题描述】:

我有一个简单的绘图问题,我遍历一个图表来寻找一个项目。图中的每个节点都有一个项目存在的概率 n/100,其中所有概率之和等于 1。如何找到在整个图中搜索项目的最小预期时间?

该项目保证只存在于一个节点中。

乍一看,这似乎是一个旅行推销员问题,这很简单。只需获取路径的排列并计算每个路径并返回最小值。

但是当我需要找到最小的预期时间时,它变得很棘手。是否有任何数学公式可以插入到最小路径上以获得结果?

ie: sum = 0
    for node in path:
        sum += node.prob * node.weight

还是有更复杂的事情需要做?

【问题讨论】:

  • 请不要用可能可能的解决方案来标记问题。另外,您缺少详细信息。你究竟是如何遍历图表的?
  • @Moron:你是说数学?关于遍历,我提到我得到所有路径的排列并返回具有最小成本的路径。
  • 我的意思是[旅行推销员]。另外,我的观点是,预期时间取决于您如何 遍历。您声称您正在寻找一个项目....如果您正在查看所有排列,为什么还要谈论图表?你的问题一点都不清楚。
  • 最小预期时间为 1。也就是说,您至少会在您搜索的第一个节点找到该项目。最长预期时间将取决于图表的深度。所有其他期望都高度依赖于图表的结构。 “只需得到排列”很简单,但我想你会发现,如果你尝试这样做,如果你在图中有多个节点,你会花费比永远更长的时间。
  • 等等...您是否要在有向图中找到到节点的最短路径 (en.wikipedia.org/wiki/Shortest_path_problem)?

标签: algorithm math graph statistics traveling-salesman


【解决方案1】:

如果您所做的只是查找特定项目,那么您最多可以保证进行 n 次查找。

如果该项目 100% 保证存在于图表中,并且仅存在一次,那么您将在大约 n/2 次搜索后找到它。所以(搜索一个节点的时间)* (n / 2) 是您的预期时间。

如果您想要更好的答案,您需要更多信息。

此外,您应该澄清“图中每个节点的概率为 n/100”的含义。这似乎表明我的图表中是否有 1 个节点,它有 1/100 的机会出现在我检查的节点上,但如果我有 100 个节点,我有 100/100 的机会。我的朋友,这就像穿着芭蕾舞短裙的黑猩猩一样有意义。

【讨论】:

  • 那么您的预期时间将是aw*n/2,其中aw 是节点的平均权重(假设权重和时间成正比。)平均而言,您必须搜索一半的节点。
  • 但是如果路径包含死胡同,那么您必须重新访问一些您已经到达的节点怎么办?在我看来,这是一个相当困难的问题,并且可能与 OP 建议的最小 TSP 长度有关。
  • @Xodarap 这是一个很好的问题——它显示了对自然图的思考。但是,如果您有递归函数,则不必重新访问节点,您只需根据第一个节点的返回值转到连接到当前节点的下一个节点。要求您至少访问每个节点一次的搜索应该以允许您仅访问每个节点一次的方式实现。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-06
  • 1970-01-01
相关资源
最近更新 更多