卡达内算法的实际用途是什么?

What is the practical use of the Kadane's algorithm?

本文关键字:是什么 算法      更新时间:2023-10-16

这个算法很有趣,我知道它被用于图像处理(可能还有其他场景),但我觉得奇怪的是,这个算法也对负值进行操作,负值在成像世界中几乎不存在,那里有很多unsigned int来表示这些值。

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

其中一个明显的应用是业务分析,您需要找出公司经历最大增长的持续时间或最小增长的持续时间,这有助于公司找到他们在这些时期内做得好或坏的事情,以重复或防止它们在未来为公司带来利益。

我直接从维基百科引用,

这个问题首先是由布朗大学的乌尔夫·格林南德(Ulf Grenander)提出的。 1977年,作为最大似然估计的简化模型 数字化图像中的图案。很快发现了线性时间算法 之后由卡内基梅隆大学的杰伊·卡达内(Jay Kadane)创作(Bentley 1984)。

如果您还不知道什么是最大似然估计,那么它适合您。

它可以处理以下问题:

  • 车站旅行顺序

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

    卡达内算法(解决方案)

    初始化 : max_so_far = 0 max_ending_here = 0

    数组中每个元素的循环 (a) max_ending_here = max_ending_here + a[i] (b) 如果(max_ending_here <0) max_ending_here = 0 (c) 如果(max_so_far

  • 克罗地亚海岸的酒店。