打开/关闭菜单
打开/关闭外观设置菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

BAN

来自Googology Wiki
Tabelog留言 | 贡献2025年7月24日 (四) 21:43的版本

Bird 数组表示法(Bird's Array Notation,BAN)是由 Chris Bird 发明的一种大数记号。它是 BEAF 的扩展,无论是在历史上还是在定义上都类似于 BEAF,但与 BEAF 略有不同,使其更加“简单”。

定义

“简单”数阵

线性和多维数阵

  • 规则 1. 若有一或两个元素,则有 {a}=a,{a,b}=ab
  • 规则 2. 若最后一个元素为 1,则可将其去掉:{#1}={#}
  • 规则 3. 若第二个元素为 1,则该数阵的值即为第一个元素:{a,1#}=a
  • 规则 4. 若第三个元素为 1:

{a,b,1,1,,1,1,c#}={a,a,a,a,,a,{a,b1,1,1,,1,1,c#},c1#}

  • 规则 5. 其他情况:

{a,b,c#}={a,{a,b1,c#},c1#}

对于多维数阵,Bird 使用 acb,它与 BEAF 的 bc&a 等价。这些字符串写在引号内,且有其特定的规则:

  • 规则 A1. 若 c=0,则有 a0b=a
  • 规则 A2. 若 b=1,则有 ac1=a
  • 规则 A3. 其他情况,acb=ac1b[c]ac(b1)

主要规则如下:

  • 规则 M1. 若只有两个元素,则 {a,b}=ab
  • 规则 M2. 若 m<n,则有 {#[m]1[n]#*}={#[n]#*}(另外,{#[a]1}={#}
  • 规则 M3. 若第二个元素为 1,则有 {a,1#}=a
  • 规则 M4. 若 m12m1mx,则有

{a,b[m1]1[m2]1[mx]c#}={am11b[m1]am21b[m2]amx1b[mx](c1)#}

  • 规则 M5. 若 m1mx2,则有

{a,b[m1]1[m2]1[mx]1,c#}={am11b[m1]am21b[m2]amx1b[mx]{a,b1[m1]1[m2]1[mx]1,c#},c1#}

  • 规则 M6. 若规则 M1-M5 均不适用,则 {a,b,c#}={a,{a,b1,c#},c1#}

Bird 使用 [m] 作为维度分隔符;在 BEAF 中,它相当于一个 (m1)

超维及嵌套数阵

接下来,括号分隔符变为数阵(如 [1,1,2])。除将 [mn] 替换为 [mn#] 外,规则 M1 至 M6 保持不变。

尖括号规则需要一些修改。规则 A3 变为 A4,并新增规则 A3:

  • 规则 A3. 若尖括号中的第一个元素为零,且其后存在非零元素:

a0,1,1,,1,1,c#b=ab,b,b,,b,b,c1#b

此规则在视觉上与规则 M4 相似。

下一步是允许在数阵内出现字符串,从而定义嵌套数阵表示法。规则 A3 变为 A4,规则 A4 变为 A5。然后我们新增一条 A3 规则并对 A4 进行推广:

  • 规则 A3. 若 [A]<[B],则有 a#[A]1[B]#*b=a#[B]#*b
  • 规则 A4. 若尖括号中的第一个元素为零,且其后存在非零元素:

a0[x1#1]1[x2#2]1[xn#n]c#b=abx11#1b[x1#1]bx21#2b[x2#2]bxn1#nb[xn#n]c1#b

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]。正式描述如下:

  1. 为进一步说明,设 [A1]=[A],[A2]=[A1],[B1]=[B],[B2]=[B1]。
  2. 若 Lev(A)>Lev(B),则得出 [A]>[B];若 Lev(A)<Lev(B),则 [A]<[B]。若 Lev(A)=Lev(B)>0,则进入步骤 3,否则进入步骤 6。
  3. 设 [A*] 和 [B*] 分别为数阵 A2 和 B2 中的最高层级分隔符。若 [A*]>[B*],则 [A]>[B];若 [A*]<[B*],则 [A]<[B];否则取 [H]=[A*]=[B*] 并进入步骤 4。
  4. 若 Num(H,A2)>Num(H,B2),则 [A]>[B];若 Num(A)>Num(B),若 Num(H,A2)<Num(H,B2),则 [A]<[B];否则进入步骤 5。
  5. 在字符串 A2 和 B2 中,删除 [H] 分隔符并移除其之前的所有元素。
  6. 根据上述所有规则,字符串 A2 和 B2 必须为 [a] 和 [b] 的形式,其中 a 和 b 为单个数字。因此,若 a<b,则 [A]<[B];若 a>b,则 [A]>[B];否则进入步骤 7。
  7. 在字符串 A1 和 B1 中删除最后一个元素及其前的分隔符。若 A1 和 B1 为空,则得出 [A]=[B];否则返回步骤 2。

超嵌套数阵:反斜杠数阵

为了突破嵌套数组表示法(Nested Array Notation)的局限,Bird 定义了一个特殊分隔符 [1\c],具体定义如下:

  • {a,b[1c#]2}={a0c#b}={abbbbbc1#bc1#bc1#bc1#bc1#b}(从中心向右有 b 个 b)
  • {a,b[A1]2}={a,b[A]2}(若 A 为任意数阵)

这种表示法使我们能够构造出在反斜杠前带有数组的表达式,如 [1[2]2\2] 或 [1[1\2]2\2]。若将反斜杠置于基础层级(即不至少用一对方括号括起来),如{3,3\2},则属于非法形式。

Bird 进一步扩展了该表示法,使其不仅能处理单一反斜杠的数组,还能处理包含多个反斜杠甚至反斜杠数组的情况。他用 [A]\ 来表示反斜杠周围的数阵 A。处理反斜杠数组时,有 3 条新规则:

  • 规则 B1. 反斜杠维度层级为 0 或 1:
    • a0b=a
    • a1b=aaaa(b 个 a)
  • 规则 B2. 反斜杠尖括号中的首项不为 0:

ac#b=ac1#b[c#]ac1#b[c#]ac1#b(b 个 ac1#b

  • 规则 B3. 首个非零项位于单个反斜杠之前:
    • a0[A1]1[A2]1[An]1c#b=abA1b[A1]bA2b[A2]bAnb[An]Rbc1#b
    • Rn=bbA1b[A1]bA2b[A2]bAnb[An]Rn1c1#b
    • R1=0
  • 规则 B4. 其他情况:

a0[A1]1[A2]1[Am]1[B1]1[B2]1[Bn]c#b=abA1b[A1]bA2[A2]bAn[An]bB1b[B1]bB2b[B2]bBnb[Bn]c1#b

嵌套超嵌套数阵

2-超分离器

目前,我们需要一种分隔符,其能力要强于嵌套反斜杠数阵的任何嵌套层级。在 Bird 的文章 Beyond Bird's Nested Arrays I 的结尾部分,Bird 提议使用正斜杠作为分隔符,具体如下:

{a,b[1/2]2}={a0/2b}={abbbbbbbbbb}(从中心向右有 b 个 b,则会导致添加 b-2 个反斜杠)

接下来,Bird 指出,分隔符 [A]\(即反斜杠数阵 A)可以重写为 [A¬2],这使我们能够将正斜杠重写为 [1¬3]。然而,为了进一步的目的,以下述方式定义 [1¬3] 会更有用:

{a,b[1[1¬3]2]2}={a0[1¬3]2b}={abbbbbbbbbbb}(从中心向右有 b+1 个 b,则会导致添加 b-1 个反斜杠)

然后,我们可以像处理反斜杠和 [1A¬3] 那样,以相同的方式围绕 [1¬3] 构建数组 [A¬3]。注意,反斜杠是 [1¬2] 分隔符。

因此,我们可以创建嵌套数组,在它后添加 ¬3,而所有这些的极限将是 [1¬4]。要看出一般模式并定义 [1¬n] 分隔符并不难:

{a,b[1[1¬n]2]2}={a0[1¬n]2b}={abbbbb¬n1b¬n1bb¬n1b¬n1bb}(从中心向右有 b+1 个 b,¬n1 出现 b-1 次)

一般来说,我们需要定义一套规则,以便能够处理 [A¬n]。我们无需重写主要规则(Main Rules),因为从嵌套数组表示法开始,这些规则将保持不变。只有尖括号规则(Angle Bracket Rules)会发生变化。

  • 规则 A1. 尖括号内的数字为 0:a0b=a
  • 规则 A2. b=1:aA1=a
  • 规则 A3. [A]<[B]:a#[A]1[B]#b=a#[B]#b
  • 规则 A4. 首项为 0,且在普通分隔符(非 [1¬n] 形式,其中 n>1)后紧跟着 c:

a0[A1]1[A2]1[Am]c#b=abA11b[A1]bA21b[A2]bAm1b[Am]c1#b

  • 规则 A5. 首项为0,且在反斜杠后紧跟着 c:
    • a0[A1]1[A2]1[Am]1c#b=abA11b[A1]bA21b[A2]bAm1b[Am]bRbbc1#b
    • Rn=bA11b[A1]bA21b[A2]bAm1b[Am]bRn1bc1#b(n>1)
    • R1=0
  • 规则 A6. 首项为 0,且在 [1¬n] 后紧跟着 c(n>2):
    • a0[A1]1[A2]1[Am]1[1¬n]c#b=abA11b[A1]bA21b[A2]bAm1b[Am]bRb[1¬n]c1#b
    • R=bA11b[A1]bA21b[A2]bAm1b[Am]Rb[1¬n]c1#b
    • Rn=bA11b[A1]bA21b[A2]bAm1b[Am]bRb1b[1¬n]c1#¬n1b
    • R1=0
  • 规则 A7. 若规则 A1-A6 均不适用,则 ac#b=ac1#b[c#]ac#b1

2 超分隔符数组

我们定义 a0[1¬1,2]2b=ab[b¬b]bb

  • 规则 A1. 基础规则:
    • a0b=a
    • a0¬#b=a
  • 规则 A2. b=1:aA1=a
  • 规则 A3. 移除尾随的 1 和更低的分隔符:
    • a#1b=a#b
    • a#[A]1[B]#*b=a#[B]#*b(当 [A]<[B])

嵌套超嵌套数阵表示法

尖括号规则 (BNA3)

分层超嵌套数阵表示法(第 2 部分)

Bird 的分层超嵌套数阵表示法——尖括号规则

分层超嵌套数阵表示法

Bird 的嵌套分层超嵌套数组表示法——尖括号规则