超運算

超運算序列是數學中一種二元運算的序列，前三項分別為加法、乘法、冪，一般來說，除了序列中第一項的加法運算之外，序列中每一項的運算都是重複的前一項的運算（例如乘法是重複的加法：$a \cdot b = \underbrace{a + a + a + \cdots + a}_b$，冪是重複的乘法：$a^b = \underbrace{a \cdot a \cdot a \cdot \ldots \cdot a}_b$）。這些運算通稱為超運算（或稱為hyper運算符）。序列中的第n項稱為超-n運算或第n級的超運算，其符號為n。英文則由魯賓·古德斯坦命名，當n≥4時，由n的希臘語前綴加上後綴-ation組成（例如超-4運算稱為tetration，超-5運算稱為pentation）。當n≥3 時，使用高德納箭號表示法可將超-n運算的符號表示為(n-2)個箭頭。

超運算可通過遞歸進行定義，對於所有正整數a，正整數b和正整數n：

$$a [1] b = a + b, \ \text{for} \ n > 1, \ a [n] b = \underbrace{a [n-1] (a [n-1] (a [n-1] \cdots (a [n-1] (a [n-1] a}_b)) \cdots ))$$

除這一最常見的定義之外，超運算還有其他的變體。（見下文）

## 定義

超運算序列是定義在自然數集$\mathbb{N}$上的一個序列，記為$H_n$。前三項為加法（n=1）、乘法（n=2）和冪（n=3）。高階超運算的參數與冪運算相似，即a稱為底數，b稱為指數（或稱超指數），而n則稱為階數。

用高德納箭號表示法可以將超運算定義為

$$H_n(a,b)=a\uparrow^{n-2}b=a[n]b=\begin{cases} b+1&n=0\\ a&n=1\land b=0\\ 0&n=2\land b=0\\ 1&n\geq3\land b=0\\ H_{n-1}(a,H_n(a,b-1))&\text{otherwise} \end{cases}$$

注意到，對於序列的前三項有：

- $$a + b = 1 + (a + (b - 1))$$
- $$a \cdot b = a + (a \times (b - 1))$$
- $$a ^ b = a \cdot (a ^ {(b - 1)})$$

通過這樣的遞歸能夠定義出高階運算，從而輸入很小的數就可以產生非常大的數。

其實，某一超運算就是一種基於低一階超運算而進行數的複合的方法。我們可以以加法、乘法與冪的概念為例來說明。加法運算就是將指定次數的1加到原本的數上從而得到最終的結果（如2+3是將1三次加到2上），乘法運算就是將指定次數的某數通加（如$2 \times 3$就是3個2相加），冪運算則是將指定次數的某數通乘（如$2^3$就是3個2相乘）。

## 實例

下表列出了前七個超運算：

n｜運算｜定義｜名稱｜定義域

0｜$1+b$｜${ 1 + {\underbrace{1 + 1 + 1 + \cdots + 1}_{b}} }$｜超-0運算、後繼函數｜任意b

1｜$a+b$｜${ a + {\underbrace{1 + 1 + 1 + \cdots + 1}_{b}} }$｜超-1運算、加法｜任意

2｜$a \cdot b$｜${ {\underbrace{a + a + a + \cdots + a}} \atop{b} }$｜超-2運算、乘法｜任意

3｜$a[3]b=a^b$｜${ {\underbrace{a \cdot a \cdot a \cdot a \cdot \ldots \cdot a}} \atop{b} }$｜超-3運算、冪｜$a > 0$，b為實數；或$a \not= 0$，b為整數（某些情況下可擴展為複數）

4｜$a[4]b={^{b}a}$｜${ {\underbrace{a[3](a[3](a[3](\cdots[3](a[3](a[3]a))\cdots)))}} \atop{b} }$｜超-4運算、迭代冪次（英文：tetration）｜$a > 0, b \ge -1$且為整數（某些情況下可擴展）

5｜$a[5]b={_{b}a}$｜${ {\underbrace{a[4](a[4](a[4](\cdots[4](a[4](a[4]a))\cdots)))}} \atop{b} }$｜超-5運算、五級運算（英文：pentation）｜a和b都為整數，且$a > 0, b \ge 0$

6｜$a [6] b$｜${ {\underbrace{a[5](a[5](a[5](\cdots[5](a[5](a[5]a))\cdots)))}} \atop{b} }$｜超-6運算（英文：hexation）｜a和b都為整數，且$a > 0, b \ge 0$

n｜$a [n] b$｜${ {\underbrace{a[n-1](a[n-1](a[n-1](\cdots[n-1](a[n-1](a[n-1]a))\cdots)))}} \atop{b} }$｜超-n運算（英文：hyper-n）｜a和b都為整數，且$a > 0, b \ge 0$

## 歷史

1914年，阿爾伯特·貝內特（Albert Bennett）最早提出了超運算，他發展出了一套交換超運算（見下文）的理論。12年之後，威廉·阿克曼定義了函數$\phi(a, b, n)$，和超運算序列已經有了某種程度上的相似。最早的使用三個自變量的阿克曼函數使用了同樣的遞歸法則，但有兩點與現在的超運算不同。一是它定義了$n=0$時為加法、$n=1$時為乘法、$n=2$時為冪運算，二是由其對$\phi$初始條件的定義能得到$\phi(a, b, 3) = a [4] (b + 1)$，最後的運算結果與超運算不同。

1947年，魯賓·古德斯坦提出現在所使用的超運算序列，只是那時他使用記號$G(n,a,b)$來表示，而非今天的$a [n] b$。在1947年的論文中，古德斯坦還引進了冪運算之後超運算的英文名稱，即tetration、pentation、hexation等。

## 符號表示

下表列出了曾用來表示超運算的各種符號表示法：

名稱｜符號表示｜註解

高德納箭號表示法｜$a \uparrow^{n-2} b$｜高德納使用（對於$n \ge 3$），也在相關參考書目中提及

古德斯坦表示法｜$G(n, a, b)$｜魯賓·古德斯坦使用

初始阿克曼函數｜$A(a, b, n-1)$｜與超運算並不完全相同

現代阿克曼函數｜$A(n, b - 3) + 3 = 2 [n] b$｜和以2為底的超運算相同

南比爾表示法｜$a \otimes^{n-1} b$｜南比爾（K. K. Nambiar）使用（對於$n \ge 1$）

框表示法｜$a {\,\begin{array}{|c|}\hline{\!n\!}\\\hline\end{array}\,} b$｜魯佐勃夫（C. A. Rubtsov）與羅莫里奧（G. F. Romerio）使用

上標表示法｜$a {}^{(n)} b$｜默納福（Robert Munafo）使用

下標表示法｜$a {}_{(n)} b$｜默納福用來表示低級超運算

方括號表示法｜$a[n]b$｜在一些在線論壇中使用，利於ASCII表示

康威鏈式箭號表示法｜$a \to b \to (n-2)$｜約翰·何頓·康威使用（對於$n \ge 3$）

### 從a開始的變體形式

1928年，威廉·阿克曼提出了一個三自變量的函數$\phi(a, b, n)$，後來發展為現有的兩個自變量的阿克曼函數。初始的阿克曼函數與現在的超運算之間的區別更大，因為他當時使用了初始條件：對所有$n > 2$，有$\phi(a, 0, n) = a$。另外他還將$n = 0$指定為加法、$n = 1$為乘法、$n = 2$為冪。因而，冪運算及更高階的運算就有了完全不同的結果。

n｜運算｜注釋

0｜$F_0(a, b) = a + b$

1｜$F_1(a, b) = ab$

2｜$F_2(a, b) = a^b$

3｜$F_3(a, b) = a [4] (b + 1)$｜類似超-4運算，但其迭代函數比普通超-4運算更為複雜

4｜$F_4(a, b) = (x \mapsto a [4] (x + 1))^b(a)$｜不要與超-5運算相混淆

路莎·彼得（Rózsa Péter）還曾用$A(0, b) = 2 b + 1$作初始條件，但無法形成一個超運算等級。

### 從0開始的變體形式

1984年，C.W.克萊恩肖（C. W. Clenshaw）和F.W.J.奧立弗（F. W. J. Olver）開始討論如何使用超運算以防止電腦浮點數溢出。此後，很多人都開始對於超運算在浮點數表示中的應用產生興趣。在探討超-4運算時，克萊恩肖等人曾令$F_n(a, 0) = 0$作為初始條件，這就產生了又一個超運算等級。

n｜運算｜注釋

1｜$F_1(a, b) = a + b$

2｜$F_2(a, b) = ab = e^{\ln(a) + \ln(b)}$

3｜$F_3(a, b) = a^b = e^{b\ln(a)}$

4｜$F_4(a, b) = a [4] (b - 1)$｜類似超-4運算，但其迭代函數比普通超-4運算更為複雜

5｜$F_5(a, b) = (x \mapsto a [4] (x - 1))^b(0)$｜不要與超-5運算相混淆

### 交換超運算

1914年阿爾伯特·貝內特提出了超運算，很可能是關於超運算最早的嘗試。交換超運算通過以下遞歸法則定義：

$$F_{n+1}(a, b) = \exp(F_n(\ln(a), \ln(b)))$$

由於a和b的對稱性，意味著所有的超運算都是可交換的。但由於序列並不包括冪運算，因此也就不能成為一個超運算等級。

n｜運算｜注釋

0｜$F_0(a, b) = \ln(e^{a} + e^{b})$

1｜$F_1(a, b) = a + b = \ln(e^{a}e^{b})$

2｜$F_2(a, b) = ab = e^{\ln(a) + \ln(b)}$｜由對數性質而來

3｜$F_3(a, b) = e^{\ln(a)\ln(b)}$｜冪運算的可交換形式

4｜$F_4(a, b) = e^{e^{\ln(\ln(a))\ln(\ln(b))}}$｜不要與超-4運算相混淆

### 均衡超運算

均衡超運算於1991年首先由克萊門特·弗拉皮耶（Clément Frappier）提出，這種超運算是基於函數$x^x$的，因而與斯坦豪斯-莫澤表示法（Steinhaus-Moser notation）有關。均衡超運算的遞歸法則是

$$F_{n+1}(a, b) = (x \to F_n(x, x))^{\log_2(b)}(a)$$

n｜運算｜注釋

0｜不存在

1｜$F_1(a, b) = a + b$

2｜$F_2(a, b) = ab = a 2^{\log_2(b)}$

3｜$F_3(a, b) = a^b = a^{2^{\log_2(b)}}$｜就是冪運算

4｜$F_4(a, b) = (x \to x^x)^{\log_2(b)}(a)$｜不要與超-4運算相混淆

### 低級超運算

還有一種變化形式的特點是從左到右的順序進行求值，即：

- $$a+b = (a+(b-1))+1$$
- $$a\times b = (a\times (b-1))+a$$
- $$a^b = (a^{(b-1)})\times a$$

令（通過°或下標）$a_{(n+1)}b = (a_{(n+1)}(b-1))_{(n)}a$，有初始條件$a_{(1)}b = a+b, a _ {(2)} 0 = 0$，且對所有$n>2$有$a _ {(n)} 0 = 1$。

這樣所產生的一個問題是，在4階時它就與通常的定義不同：$a_{(4)}b = a^{(a^{(b-1)})}$。出現這一問題的原因在於加法和乘法運算有一種稱為結合律的對稱性，但這在冪運算上並不成立。由於通過這種超運算所得到的結果在3階以上都比普通的超運算更小，因而把這種超運算稱為低級超運算。

n｜運算｜注釋

0｜$a + 1$｜後繼函數

1｜$F_1(a, b) = a + b$

2｜$F_2(a, b) = ab$

3｜$F_3(a, b) = a^b$｜冪運算

4｜$F_4(a, b) = a^{a^{(b-1)}}$｜不要與超-4運算相混淆

5｜$F_5(a, b) = (x \to x^{x^{(a-1)}})^{b-1}(a)$｜不要與超-5運算相混淆

### 其他變體

在取不同的初始條件或不同的遞歸法則時，就會產生不同的運算。一些數學家擴展出了超運算的許多變體。

通常，超運算等級（hyperoperation hierarchy）$(S,\,I,\,F)$是一個以集合$I$為索引集、基於集合$S$的二元運算族$(F_n)_{n \in I}$。對於$i, j, k \in I$，有：

- $F_i(a, b) = a + b$（加法）
- $F_j(a, b) = ab$（乘法）
- $F_k(a, b) = a^b$（冪）

如果不滿足最後一個條件的話，就能將交換超運算包括在內。當然，也可以明確地定義每一個超運算，但這就超出了我們討論的範圍。大多數的變體形式只包含了對於後繼函數（即加法）的定義，而乘法則由遞歸法則來進行定義。由於這屬於對超運算等級的定義，而非等級本身的性質，很難給出形式上的定義。

對於超運算，除了古德斯坦給出的定義外，還有很多其他可能性。如果對$F_n(a, 0)$和$F_n(a, 1)$採用不同的初始條件，則產生的超運算在比冪運算更高階時就會有不同的結果。現今的超運算定義的條件包括對所有$n \ge 3$有$F_n(a, 0) = 1$，而在其他形式中也有$F_n(a, 0) = a$或$F_n(a, 0) = 0$的情況。

關於超運算的一個未解決問題是超運算等級$(\mathbb{N}, \mathbb{N}, F)$是否能推廣到$(\mathbb{R}, \mathbb{R}, F)$甚至$(\mathbb{C}, \mathbb{C}, F)$，以及$(\mathbb{C}, F_n)$是否能成為一個擬群。

## 使用超運算的記數系統

Q1191771使用超運算序列定義了一套能表達非負整數的記數系統。