首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >交替子序列的在线算法

交替子序列的在线算法
EN

Stack Overflow用户
提问于 2019-08-20 17:07:23
回答 1查看 91关注 0票数 1

考虑一个序列A = a1,a2,a3,.整数的。子序列B of A是序列B = b1,b2,.,bn,它是从A创建的,它删除了一些元素,但保持了顺序。给定整数序列A,目标是计算一个交替子序列B,即序列b1,.bn,使得对于{2,3,…,m-1}中的所有i,如果b{i-1} < b{i}然后b{i} > b{i+1},如果b{i-1} > b{i}则b{i} < b{i+1}**

考虑这个问题的在线版本,其中序列A是逐元素给出的,每次都需要直接决定是否将下一个元素包含在子序列B中。是否有可能实现恒定的竞争比率(使用确定性的在线算法)?要么给出一个实现恒定竞争比的在线算法,要么说明找不到这样的在线算法。

假设序列9、8、9、8、9、8、.,9,8,8,8,2,1,2,9,8,9,.,8,9,8,8,9,9

我的论点是:算法必须立即决定是否将一个传入数字插入到子序列中。如果算法现在得到数字1,然后2,则最终确定它们是序列的一部分,从而由一个比n-3的最优解更糟糕的非线性因子。

->没有恒定的竞争比率!

这是一个恰当的论证吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-20 21:08:56

如果我理解你的意思,你的论点是正确的,但你在这个例子中给出的顺序是错误的。例如,算法可以选择所有的9和8。

您可以稍微修改您的论点,以使其更准确,例如,考虑顺序。

代码语言:javascript
复制
3,4,3,4,3,4,......, 1/5,2/6,1/5,2/6,....

解释:

您可以使用3,4,3,4,...等开始序列,直到算法选择两个数字。如果它从来没有这样做,它显然是没有竞争力的(它使0/1摆脱了n)

如果算法选择了一个3,那么4,则该算法接下来必须取一个低于4的数字。通过继续使用5,6,5,6,...,该算法不能再取另一个数字。

如果算法选择接受一个4,然后是一个3,通过类似的重发,我们可以很容易地看到,继续使用1,2,1,2,...是如何防止算法再使用另一个nubmer。

因此,在任何情况下,算法对每个2都不能超过n数,正如您所说的,这不是一个恒定的竞争比率。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57578540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档