📜  Python摊销分析

📅  最后修改于: 2020-11-07 08:43:48             🧑  作者: Mango


摊销分析涉及估计程序中操作序列的运行时间,而不考虑输入值中数据分布的跨度。一个简单的示例是在排序列表中查找值比在未排序列表中查找值更快。如果列表已经排序,则数据的分布无关紧要。但是,当然,列表的长度会产生影响,因为它决定了算法获得最终结果所必须经过的步骤数。

因此,我们可以看到,如果获得排序列表的单个步骤的初始成本很高,那么后续查找元素的步骤的成本就会大大降低。因此,摊销分析有助于我们确定一系列操作在最坏情况下的运行时间的界限。有三种摊销分析方法。

  • 会计方法-这涉及为执行的每个操作分配成本。如果实际操作快于分配的时间完成,则分析中会积累一些肯定的信用。在相反的情况下,它将是负信用。为了跟踪这些累积的积分,我们使用堆栈或树数据结构。较早执行的操作(如对列表进行排序)的摊销成本较高,但是顺序较晚的操作由于使用了累积的贷项,因此摊销成本较低。因此,摊销成本是实际成本的上限。

  • 潜在方法-在这种方法中,所节省的信用额将作为数据结构状态的数学函数用于将来的操作。数学函数和摊销成本的评估应相等。因此,当实际成本大于摊销成本时,电势会降低,并将其用于将来的昂贵业务。

  • 汇总分析-在这种方法中,我们估计n步总成本的上限。摊销成本是总成本和步骤数(n)的简单除法。