超运算

**超運算序列**是數學中一種二元運算的序列，前三項分別為加法、乘法、冪，一般來說，除了序列中第一項的加法運算之外，序列中每一項的運算都是重複的前一項的運算（例如乘法是重複的加法： $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\geq 3\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 相乘）。

## 實例

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

## 歷史

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 開始的變體形式

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

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

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

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

### 交換超運算

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

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

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

### 均衡超運算

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

　
: $F_{n+1}(a,b)=(x\to F_{n}(x,x))^{\log _{2}(b)}(a)$

### 低級超運算

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

 * $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 階以上都比普通的超運算更小，因而把這種超運算稱為低級超運算。

### 其他變體

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

通常，超運算等級（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\geq 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})$ 是否能成為一個擬群。

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

魯賓・古德斯坦使用超運算序列定義了一套能表達非負整數的記數系統。

## 參考文獻