微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在摊销分析中使用潜力和会计方法

如何解决在摊销分析中使用潜力和会计方法

我已阅读有关会计和潜在方法内容,但仍然无法解决此类问题:

enter image description here

解决方法

直觉

通过分析每个操作的昂贵案例和廉价案例,您可以了解如何为每个操作收费(然后您可能需要一些小的修复来“修复”数字)

通过查看数据结构的重要参数,您可以构建一个势函数(例如这里是 s2 中元素的数量)

  • 此外,在这里看到很多例子真的很有帮助

会计方法:

让我们每次插入收取两个硬币:一个将用于从 s2 中弹出元素,第二个将用于将元素插入到 s1 让我们为每次删除收取一枚硬币,用于从 s1 中删除元素。

然后请注意,银行中的信用不能为负,因为如果 s1 不为空,那么我们只需支付操作的实际成本(这是从 s1 中唯一的删除),如果s1 为空,然后操作从 s2 弹出并插入到我们已经收费的 s1。 (需要注意的是,我们假设我们从空数据结构开始,或者,我们为数据结构的每个初始状态都获得了适当的信用

现在您可以看到,对于每组操作,我们 3n 的总信用覆盖了操作的实际成本(并且我们获得了 s2 中剩余元素的信用保证金),因此这些是有效的摊销界限。

为了用势函数求解,让我们考虑函数:

Potential(DataStructure) = 2 * s2 中的元素数

回忆一下我们是这样计算的:

OP.A 的摊销成本 = OP.A 的实际成本 + Potential(DS after)-Potential(DS before)

所以我们得到(表示 k 中 s2 中元素的数量):

对于插入: 1 + 2(k+1)-2k = 3

为了便宜的删除: 1 + 2k - 2k = 1

对于昂贵的删除: 1+2k + 0 - 2k = 0(实际成本是 1+2k,因为我们从 s2 中弹出并插入到 s1 中的每个元素,然后从 s1 中弹出一个元素)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。