【问题标题】:What Probabilistic Function to use使用什么概率函数
【发布时间】:2013-07-08 05:18:08
【问题描述】:

我想从向量中的“e”edges_in_sorted_order 中概率性地选择“n”条边。 但我想在选择时使用概率。而且我也不想在开始时选择大边缘。

所以它就像在开始时给较小的边缘更多的权重,当我采取边缘时, 我也会对更大的剩余边缘给予越来越多的权重。

我应该选择 n 和 e 的什么概率函数?

while( edgesTaken < n ) {
     for each edge i and edgesTaken < n
         probability = pdf( edgesTaken, i)
         if ( prob > THRESHOLD )
              take the edge
 }

【问题讨论】:

  • 我查看了正态分布,但将 x 替换为 i_edge,将 sigma^2 替换为 edgeTaken,将 f(x) 非常小以替换大 i_edge。可以是正态分布的CDF吗?
  • 图表不必只是这样。这只是我的代表。它应该考虑到缓慢给予大边缘更多权重的上述限制
  • 一种(未经测试的)可能性:从边缘0 开始,以((n-edgesTaken)/(e-i))**(1/7) 的概率占据边缘i。您可以在闲暇时调整7,较高的值将有利于较低值的边缘。

标签: c++ c algorithm math probability-density


【解决方案1】:

第一条边为1的概率是choose(n-1,e-1)/choose(n,e)。

更一般地,第一条边为 k 的概率为 [选择(n-k,e-1)/选择(n,e)] * 1/k

您可能还需要 1-k 中恰好有一条边的概率: [选择(n-k,e-1)/选择(n,e)]

从这里我想你可以总结一下了!

附:只是为了解释一下,这三个函数给出了选择满足条件的边的方法数与选择(n,e)的比率,即从 n 中选择 e 边的方法数。

【讨论】:

  • n 在这里总是小于或等于 e。
  • 你的解决方案中的 k 是什么?
  • 这是从 OP 切换而来的 ne(公平地说,n 更常见的是总数,而不是 e)。 k 是选择的第一条边。但我不认为这有利于小边缘。
  • 是的,我切换了 n 和 e。哎呀。我将保持原样。这不利于任何边缘,只是给出第一个边缘为 k 的概率,假设所有边缘都以相等的概率选择。只要选择了多条边,这样做就足以使第一条边可能很小。我不清楚 OP 想要更高级的东西。
  • 我认为OP希望选择边缘k的概率大于选择边缘k+1的概率。但如果能有比那幅草图更能说明问题的东西就好了。
【解决方案2】:

您需要分位数函数来获得所需的分布。使用标准生成器绘制一个随机数,得到均匀分布在 [0, 1) 中的 q。然后以q为参数调用分位数函数。生成的随机集将具有所需的分布。

【讨论】:

  • 我的 n 和 e 在哪里适合?
  • 您的分位数函数将是 n 和 e 的函数。
  • 从我的学习中我发现分位数给了我们一个给定分布和 CDF 百分比的点,它告诉我们 CDF 越过这个百分比的点。我不明白如何在这里应用你的 q 、 n 和 e 。 ?
猜你喜欢
  • 2018-09-30
  • 2018-01-18
  • 2014-03-28
  • 2023-04-04
  • 2015-02-03
  • 2019-04-19
  • 2013-11-18
  • 2012-11-21
  • 2010-10-13
相关资源
最近更新 更多