BAN
更多操作
Bird 数组表示法(Bird's Array Notation,BAN)是由 Chris Bird 发明的一种大数记号。它是 BEAF 的扩展,无论是在历史上还是在定义上都类似于 BEAF,但与 BEAF 略有不同,使其更加“简单”。
定义
“简单”数阵
线性和多维数阵
- 规则 1. 若有一或两个元素,则有
- 规则 2. 若最后一个元素为 1,则可将其去掉:
- 规则 3. 若第二个元素为 1,则该数阵的值即为第一个元素:
- 规则 4. 若第三个元素为 1:
- 规则 5. 其他情况:
对于多维数阵,Bird 使用 ,它与 BEAF 的 等价。这些字符串写在引号内,且有其特定的规则:
- 规则 A1. 若 ,则有
- 规则 A2. 若 ,则有
- 规则 A3. 其他情况,
主要规则如下:
- 规则 M1. 若只有两个元素,则
- 规则 M2. 若 ,则有 (另外,)
- 规则 M3. 若第二个元素为 1,则有
- 规则 M4. 若 且 ,则有
- 规则 M5. 若 ,则有
- 规则 M6. 若规则 M1-M5 均不适用,则
Bird 使用 作为维度分隔符;在 BEAF 中,它相当于一个 。
超维及嵌套数阵
接下来,括号分隔符变为数阵(如 )。除将 替换为 外,规则 M1 至 M6 保持不变。
尖括号规则需要一些修改。规则 A3 变为 A4,并新增规则 A3:
- 规则 A3. 若尖括号中的第一个元素为零,且其后存在非零元素:
此规则在视觉上与规则 M4 相似。
下一步是允许在数阵内出现字符串,从而定义嵌套数阵表示法。规则 A3 变为 A4,规则 A4 变为 A5。然后我们新增一条 A3 规则并对 A4 进行推广:
- 规则 A3. 若 ,则有
- 规则 A4. 若尖括号中的第一个元素为零,且其后存在非零元素:
An 和 B 为数阵,且除第一个元素减一外,Ai-1 与 Ai 完全相同。
两个分隔符的排序算法
对于规则 A3 和 M2,确定哪个分隔符的层级更高十分重要。首先,将相互嵌套的数阵数量定义为数阵的嵌套层级。我们可以用 Lev(A) 表示。例如,若 A = {3,3[1[1[2]2]2]2},则 Lev(A) = 3,因为 [2] 嵌套在 [1[2]2] 中,而[1[2]2]又嵌套在 [1[1[2]2]2] 中,最后 [1[1[2]2]2] 嵌套在主数阵中。非正式地说,Lev(A) 是我们需要说“嵌套”的次数,才能从最内层数阵说到主数阵。另一个函数 Num(H,A) 定义为数阵 A 中分隔符 [H] 的数量,例如,若 A = {3,3[1[2]1[2]1[2]2]2},则 Num(2,A) = 3。
假设我们想要确定哪个分隔符的层级更高,[A] 还是 [B]。正式描述如下:
- 为进一步说明,设 [A1]=[A],[A2]=[A1],[B1]=[B],[B2]=[B1]。
- 若 Lev(A)>Lev(B),则得出 [A]>[B];若 Lev(A)<Lev(B),则 [A]<[B]。若 Lev(A)=Lev(B)>0,则进入步骤 3,否则进入步骤 6。
- 设 [A*] 和 [B*] 分别为数阵 A2 和 B2 中的最高层级分隔符。若 [A*]>[B*],则 [A]>[B];若 [A*]<[B*],则 [A]<[B];否则取 [H]=[A*]=[B*] 并进入步骤 4。
- 若 Num(H,A2)>Num(H,B2),则 [A]>[B];若 Num(A)>Num(B),若 Num(H,A2)<Num(H,B2),则 [A]<[B];否则进入步骤 5。
- 在字符串 A2 和 B2 中,删除 [H] 分隔符并移除其之前的所有元素。
- 根据上述所有规则,字符串 A2 和 B2 必须为 [a] 和 [b] 的形式,其中 a 和 b 为单个数字。因此,若 a<b,则 [A]<[B];若 a>b,则 [A]>[B];否则进入步骤 7。
- 在字符串 A1 和 B1 中删除最后一个元素及其前的分隔符。若 A1 和 B1 为空,则得出 [A]=[B];否则返回步骤 2。