Skip to content

方法Method

自然数多重集终止序

Multiset termination order · Dershowitz–Manna order on naturals

允许一个大任务换成任意有限个更小任务,用取消公共出现的证书判定自然数bag严格下降,并在任务数增长时证明所有调度终止。

形式陈述 ​

不要求任务个数每步减少 ​

一个任务可能拆出多个子任务,所以任务数不是可靠的倒计时。本页把每个任务映到自然数大小,整个工作池表示为有限多重集,也叫bag。它忽略排列顺序,却保留出现次数:{3,3,1}含两份3,与{3,1}不同。记M(n)为n的次数,⊎按次数相加,减法仅在逐项可减时使用。

沿用良基下降证明终止的接口。定义新bag M′严格小于旧bag M,记M′≺ₘM,当且仅当可以写成

M=Z⊎X,M′=Z⊎Y,

其中X非空,且

∀y∈Y ∃x∈X: y<x.

Z是原样保留的部分,X是删除的出现,Y是添加的出现。Y可以为空;同一份被删的大元素可以支配多个新元素,不要求从Y到X的单射。例如{2,2,2,2}≺ₘ{3}。这是Dershowitz–Manna多重集扩张在自然数通常顺序上的实例。[1, §II]

程序使用此序,需要每个真正继续执行的步骤都终止、产生有限个新任务,并使整个bag严格下降。未执行任何任务的无限空转不满足该条件。任务处理的异常、外部输入及并发等待若属于运行语义,也必须另外规定,不能仅证明“处理完以后下降”。本页只考虑每步选一份任务并完成有限替换的纯工作池。

一个可返回证书的判定器 ​

取消两边相同的出现,令

Z(n)=min(M(n),M′(n)),X=M−Z,Y=M′−Z.

在自然数全序下,判定恰好是

M′≺mM⟺X≠∅ ∧(Y=∅ ∨maxY<maxX).

这是一份大删除可支配全部新增,不是每个删除都必须大于每个新增。等价地,找到出现次数不同的最大数d,检查M(d)>M′(d);完全相同的bag不严格下降。

下载器先排序两份出现列表,再用双指针取消相同值。相等时两指针一起前进并记入Z;较小的一侧独自前进,记入该侧残余;最后附上未扫完的尾部。每轮已处理前缀恰分成公共出现与两边残余,未处理的相同值仍可能在后方相遇。算法返回Z、X、Y及最大差异,独立验证器重建两条bag等式并检查支配条件。

直觉

大任务消失,小任务可以增多 ​

判断先看最大的重要差异。即使新增了很多大小2的任务,只要删掉一个大小3,且所有更大的任务未变,这次仍算进展。若最大的不同大小反而出现得更多,就不能用这个序作证。

取消公共出现与大任务支配

因此“任务数下降”“所有任务大小之和下降”和“多重集下降”是不同条件。任务总和增加不反驳多重集证书;多重集证书也不会自动提供一个小的运行步数界。

例子与边界

从{3,1}实际执行到空池 ​

规定规则:选到n>0,就删除它并添加n+1份n−1;选到0则直接删除。每次只替换被选任务,其他出现都保留。对n>0,所有新增大小n−1都小于n;对n=0,新增为空。因此任意合法选择都使bag下降。

从{3,1}开始,先处理3得到{2,2,2,2,1}。任务数从2增至5,大小总和从4增至9,却有证书Z={1}、X={3}、Y={2,2,2,2}。只盯任务数或总和会错过这一步进展。

附件分别执行“选最大任务,平局取较早ID”与“选最小任务,平局取较早ID”。每份新增任务都有新出现ID,两条轨迹均恰好44步清空工作池;最大任务优先的峰值为26份,最小任务优先的峰值为7份。终止证明不依赖这两个特定策略,但空间峰值确实依赖调度。

44可以独立复算。设处理单份n及其全部后代需要T(n)步,则

T(0)=1,T(n)=1+(n+1)T(n−1).

依次得到T(1)=3、T(2)=10、T(3)=41。两棵任务树互不共享,故总数T(3)+T(1)=44。这个递推是本例规则的额外信息;仅知道某个多重集序下降,并不能自动写出同一个递推。

重复值不能随手去重 ​

旧bag {3,3,1}变成{3,2,2,1},应取消一份3和一份1,留下X={3}、Y={2,2},所以下降。如果先把输入变成set,两份3的信息就消失,已不是原来的任务池。

旧{2,1}变成新{2,1,0}时,公共部分就是旧bag,X为空,故不下降。尤其把错误规则1→{1,0}用于工作池,虽然每步都新添一个更小的0,却一直保留那份1;不断选择1会产生无限执行。“新增项里有更小的”并不是定义要求的删除与支配。

允许无限新增会破坏模型 ​

规则3→无限多份2不是合法一步。每个新任务虽更小,但结果已不再是有限bag,单次替换也未必能完成。实数大小同样不能直接替代自然数:{1}、{1/2}、{1/3}、…构成无限严格下降链。

一般偏序上的多重集扩张仍有良基定理,但“取最大的残余元素”可能无定义;本页判定器只接受自然数。调用者不能把不可比较的资源向量随便编码成整数,再宣称保留了原来的支配关系。

推论与应用

最大差异判据为什么完整 ​

若取消后的X非空且所有Y元素小于maxX,直接取这份Z、X、Y就是定义的见证,充分性成立。

反过来,假设原定义存在某份见证Z₀、X₀、Y₀。因为X₀有限且非空,令d=maxX₀。每个新增y都小于某个x≤d,所以所有Y₀元素严格小于d;因此d的出现数净减少,所有比d大的出现数都未变。取消公共项后,最大的差异仍是d且位于删除一侧,正是判定器的接受条件。

这个证明也解释了为什么不能把支配要求改成一对一配对。一个d可以提供任意有限多个更小元素的见证,仍保证最大差异在删除方向。

自然数bag的良基性 ​

设存在从非空M₀开始的无限下降链。令K=maxM₀。每次只能以更小数替换被删数,故以后所有元素都不超过K。记录固定长度向量

(M(K),M(K−1),…,M(0)).

最大差异判据说明每步都按从左到右的词典序严格下降。固定有限个自然数坐标的词典序良基:第一坐标只能下降有限次,随后稳定;从此第二坐标只能下降有限次,逐项下去后所有坐标都会稳定,与每步严格下降矛盾。空bag没有更小bag,也不可能开始无限链。

于是上述工作池每条合法执行都终止。这里K只用于证明,不需要实际分配K+1个计数槽;K再大,判定器仍仅处理出现列表。一般良基底序的原始证明使用有限分支树与König引理,本页给自然数情形的直接证明,适用边界明确。[1, §II]

判定成本与执行成本分别核算 ​

旧、新bag分别有p、q份出现,比较排序后双指针线性扫描。按固定字长大小比较计,总时间O(1+(p+q)log(p+q+1)),附加空间O(p+q+1),包括返回的完整证书。空输入也有常数入口工作。若大小为任意长整数,还要另计比较其位串的费用。

独立证书验证可用频数表重建两条等式,再计算maxX并扫描Y;在期望常数散列表访问模型下需O(p+q+1)。它核验给出的下降见证,不必重新排序。

附件为了教学,对每个工作池步骤都重新生成并核验完整bag证书,并可保存全部状态。若第t步前后共aₜ份出现,这些复查的时间为O(Σₜ[1+aₜlog(aₜ+1)]),轨迹空间O(1+Σₜaₜ)。这不是高性能任务调度器的成本;只执行已证明的替换规则可以省去逐步证书重算。步数预算耗尽会明确报告资源限制,不能当作非终止结论。

综合练习要求交44步的出现身份与两种峰值,再把一条替换改为1→{1,0}并定位第一份失败证书。大小变化终止分析转向另一种输入:跨调用参数之间的大小关系图,追踪能否接成无限下降线程。

参考资料
  1. Nachum Dershowitz、Zohar Manna,Proving Termination with Multiset Orderings,ICALP1979,LNCS71,pp.188–202;§II,印刷pp.189–191:多重集扩张、良基定理及全序排序判定。相同研究发表于CACM22(8),pp.465–476。本文引用页码对应所链ICALP版本。
  2. Jayadev Misra,Multiset Ordering; A Theorem of Manna and Dershowitz,2014,pp.1–2:取消公共项后的定义及带出现身份的证明。工作池规则、44步和两个峰值为本文自己的可执行实例。
关系图谱5 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系

使用的工具