订单维护问题(或“维护列表中的订单”)是为了支持以下操作:
singleton
:创建一个包含一个项目的列表,并返回指向它的指针insertAfter
:给定一个指向项目的指针,在其后插入一个新项目,并返回指向该新项目的指针delete
:给定指向项目的指针,将其从列表中删除minPointer
:给定两个指向同一列表中项目的指针,则返回更靠近列表前面的那个
我知道此问题的三种解决方案可以在摊销时间内执行所有操作。它们都使用乘法。
- Athanasios K. Tsakalidis:维护广义链表中的顺序
- Dietz,P.,D. Sleator,两种用于维护列表顺序的算法
- Michael A. Bender,Richard Cole,Erik D. Demaine,Martin Farach-Colton和Jack Zito,“维护列表中顺序的两种简化算法”
是否可以在摊销时间内以列表形式维护订单,而无需使用A C 0以外的任何算术运算?
直到最近(自Pentium III以来)才在乘法运算。我们可以包括使用乘法的解决方案吗?
—
2014年
我认为那是不对的。首先,我认为不存在乘法。其次,我不认为像您提到的Pentium III这样的特定机器与乘法是否在A C 0中有关。最后,如该问题所示,我显然知道一些针对该问题的基于乘法的算法,因此在新的“答案”中添加更多内容并不会有所改善。
—
jbapple 2014年
找到我在哪里读到的;那是奔腾4而不是III。并没有实现乘法,而是通过该处理器的一条新指令解决了乘法问题:M。Thorup,“关于融合树和原子堆的AC0实现”,在第14届年度ACM-SIAM离散算法研讨会上,费城,美国宾夕法尼亚州,2003年,第699-707页。
—
2014年