Kadane算法的实际用途是什么?

时间:2013-12-28 07:23:56

标签: c++ algorithm image-processing

这个算法很有意思,我知道它正在用于图像处理(可能还有其他场景),但我觉得奇怪的是这个算法也在负值上运行,而在成像世界中几乎不存在负值其中有很多unsigned int来表示值。

你能提供一个利用Kadane算法的实际例子吗?

3 个答案:

答案 0 :(得分:1)

它可以处理以下问题:

  • Station Travel in Order

      

    给出一个P(D,X)形式的n加油站列表,其中D是从该站到下一站的距离,X是该站可用的汽油量,请确定您可以从哪里完成的起始站从1 ..... N开始到每个车站的旅程。你只能向一个方向前进,即从P(i)到P(i + 1)。假设你需要找到最大总和。

         

    Kadane的算法(解决方案)

         

    初始化 的:   max_so_far = 0   max_ending_here = 0

         对于数组的每个元素,

    循环   (a)max_ending_here = max_ending_here + a [i]   (b)if(max_ending_here< 0)   max_ending_here = 0   (c)if(max_so_far< max_ending_here)   max_so_far = max_ending_here   return max_so_far

  • Hotels Along the Croatian Coast

答案 1 :(得分:1)

其中一个显而易见的应用是业务分析,您需要找出公司经历最大增长的持续时间或最短时间的持续时间,这有助于公司在这些时期内找到他们做得好或坏的时间为了公司的利益,将来重复或阻止它们。

答案 2 :(得分:1)

我直接引用wikipedia

  

问题首先由布朗大学的Ulf Grenander提出   1977年,作为最大似然估计的简化模型   数字化图像中的模式。很快就找到了线性时间算法   之后是卡内基梅隆大学的Jay Kadane(Bentley 1984)。

如果你还不知道什么是最大似然估计,那么这里就是你goes