UPS:修订间差异
更多操作
无编辑摘要 |
无编辑摘要 |
||
| 第12行: | 第12行: | ||
父项:一个索引的父项 <math>p(i)</math> 为最大的 <math>j < i</math>, 满足 <math>v_j < v_i</math> 。若不存在满足条件的项,则记作 <math>p(i) = -1</math> 。 | 父项:一个索引的父项 <math>p(i)</math> 为最大的 <math>j < i</math>, 满足 <math>v_j < v_i</math> 。若不存在满足条件的项,则记作 <math>p(i) = -1</math> 。 | ||
正规化:一个序列 <math>S = [\alpha_0, \alpha_1, ..., \alpha_{L-1}]</math> 的正规化序列为 <math>\mathrm{norm}(S) = [\alpha'_0, \alpha'_1, ..., \alpha'_{L-1}]</math>, 其中 <math>\alpha'_i = (v_i - v_0, s_i)</math> 。 | |||
=== 直接集与直接段 === | === 直接集与直接段 === | ||
2026年7月8日 (三) 12:15的版本
UPS(Upper Projection Sequence, 向上投影序列)是由 Optimism 最初创作,Alice 完善的记号,旨在以序列形式模拟向上投影。
其极限表达式为 。
定义
基础定义
一个 UPS 表达式由一组有序排列的项组成。
项:一个自然数与一个星号标记 。
父项:一个索引的父项 为最大的 , 满足 。若不存在满足条件的项,则记作 。
正规化:一个序列 的正规化序列为 , 其中 。
直接集与直接段
一个索引 的直接集定义为:
- ;
- 若 , 则 。
定义直接段结尾:令 。若存在 使得 且 , 找到其中索引最小的 , 定义 ; 否则,定义 。
定义索引 的直接段为 。
字典序比较与投影比较
在进行字典序比较与投影比较之前,首先要将待比较序列的 替换为 ,并进行正规化。
字典序比较记为 , 为逐项首先比较数值(数值大者更大),其次比较星号(有星号者更大)。若前缀完全相同,则更长者更大。
投影比较记为 , 比较流程如下:
首先定义 的投影深度 。若 , 则 。
若 , 则 。
若 , 则定义 的投影子序列为 , 其中 。若 , 定义 的投影子序列为空序列。
若 且 , 则 。若 且 , 则 。
父段与 Dropping 祖先段
定义索引 的父段起始索引为:
定义索引 的父段为 。
若 , 通过以下流程计算出索引 的 Dropping 祖先段:初始状态下定义 。
循环进行以下步骤:
令 。若 ,则计算结束,得到 。
否则,令 。
情况1:
不更新状态,向上追溯父段:令 。
情况2: 且
更新候选为当前段,并向上追溯父段:令 。
情况3: 且
计算结束,得到 。
坏根寻找
若 , 以此流程确定坏根。
令 为最小的自然数使得 。定义 。若 , 则构建祖先段链 。定义参考段 。若 , 则将 到 预先标记为跳过。
按顺序枚举祖先段链。
对于当前枚举到的 , 若其被标记为跳过,则跳过本项。否则令 , 并构造子序列 。令 , 定义 。
情况1:
将 中所有索引标记为跳过,并继续枚举。
情况2:
找到最大的 使得 , 计算结束,坏根 。
若 中索引已耗尽而仍未得到坏根,则该表达式无坏根。
展开
定义 。
若 , 则展开结果为 。
若 , 定义坏根 。若 , 按上述流程确定坏根。
定义阶差 , 追加块 , 其中 。
展开结果的基本列第 项为 , 其中 为序列拼接。
若表达式无坏根或坏根为 , 则该表达式无法展开。
展开器
NE Rewritten 上可进行 UPS 的展开。