Knuthův zápis je způsob zápisu velkých čísel zavedený Donaldem Knuthem v roce 1976. Idea zápisu je, že násobení se může brát jako opakované sčítání, a umocňování jako opakované násobení. Pokračování tímto způsobem spěje k opakovanému umocňování (tetraci) a k dalším operacím.
Úvod
Základní matematické operace sčítání, násobení a umocňování jsou přirozeně rozšířeny do sekvence hyperoperací následujícím způsobem.
Násobení přirozeným číslem lze definovat jako opakované sčítání
Příklad:
Operátor umocňování
Umocňování na přirozený exponent lze definovat jako opakované násobení, což Knuth označil jednou šipkou vzhůru
Tento zápis se běžně užívá k psaní mocnin v některých programovacích jazycích, případně při psaní s omezenou znakovou sadou (např. ASCII, bez možnosti sázet horní indexy) s využitím symbolu stříšky (cicumflexu) a^b
.
Příklad:
Operátor tetrace
Zobecněním tohoto postupu za operaci umocňování vznikne tetrace, pro kterou zavedl Knuth operátor „dvojité šipky“,
Zde je vhodné připomenout, že umocňování je asociativní zprava. Konkrétně to lze ilustrovat např.
pro číslo . Stejně tak i další hyperoperace budou (v šipkovém zápisu) asociativní zprava.
Příklady:
Operátor pentace
Již „dvoušipkový“ operátor vede na velká čísla, ale Knuth notaci rozšířil. Definoval operátor „trojité šipky“ pro opakování operátoru „dvojité šipky“ neboli pentaci,
Příklady:
Velikost čísel roste opravdu velmi rychle
Horní index u exponenciální funkce zde neznačí mocninu ale počet složenin, tj. .
Následující číslo má v klasickém zápisu více než 10102184 číslic
Vyšší operátory
Dále operátor „čtyř šipek“,
atd. Obecně je „-šipkový operátor“ sekvencí „()-šipkových operátorů“. S využitím zápisu
vznikne
Základní operace a nevýhody značení
Základní operace lze vyjádřit pomocí Knuthova zápisu následovně:
atd.
Zjevnou nevýhodou je, že pro sčítání by bylo třeba zavést symbol (tj. ), který však evokuje inverzní operaci k .
S tím souvisí i posunutí názvosloví vzhledem k počtu šipek použitých k označení operátoru (tetrace, pentace, tedy čtvrtá, resp. pátá operace jsou značeny pomocí dvou, případně tří šipek).
Teoretická programátorská implementace Knuthova zápisu v jazyce JavaScript
// non-negative integers only
function Knuth(left, arrowCount, right) {
if (arrowCount <= 0)
return left * right;
if (right <= 0)
return 1;
arrowCount--;
right--;
var result = left;
for (var i = 0; i < right; i++)
result = Knuth(left, arrowCount, result);
return result;
}
Reference
V tomto článku byl použit překlad textu z článku Knuth's up-arrow notation na anglické Wikipedii.