Knuthův zápis

Z testwiki
Skočit na navigaci Skočit na vyhledávání

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í

a×b=a+a++ab opakování a.

Příklad:

4×3=4+4+43 opakování 4=12

Operátor umocňování

Umocňování na přirozený exponent b lze definovat jako opakované násobení, což Knuth označil jednou šipkou vzhůru

ab=ab=a×a××ab opakování .

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:

43=43=4×4×43 opakování 4=64

Operátor tetrace

Zobecněním tohoto postupu za operaci umocňování vznikne tetrace, pro kterou zavedl Knuth operátor „dvojité šipky“,

ab= ba=aa...ab opakování a=a(a(a))b opakování a.

Zde je vhodné připomenout, že umocňování je asociativní zprava. Konkrétně to lze ilustrovat např.

a3=aaa=a(aa)(aa)a=(aa)a=aaa=aa2

pro číslo a2. Stejně tak i další hyperoperace budou (v šipkovém zápisu) asociativní zprava.

Příklady:

43= 34=4443 opakování 4=4(44)3 opakování 4=42561,3×10154
32=33=27
33=333=327=7625597484987
34=3333=37625597484987
35=33333=337625597484987

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,

ab=aaab opakování a=a(a(a))b opakování a.

Příklady:

32=33=33==3(33)=333=327=7625597484987

Velikost čísel roste opravdu velmi rychle

33=3(33)=333=76255974849873==3(3(33))=3(3(3))3(33)=7625597484987 opakování 3=3333(33) opakování 3exp107625597484987(1.09902).

Horní index u exponenciální funkce zde neznačí mocninu ale počet složenin, tj. expkn(x)=expk(expkn1(x))=kexpkn1(x).

Následující číslo má v klasickém zápisu více než 10102184 číslic

52=55=55=55555=5553125101010103.33928=exp104(3.33928)

Vyšší operátory

Dále operátor „čtyř šipek“,

ab=a(a(a))b opakování a

atd. Obecně je „n-šipkový operátor“ sekvencí „(n1)-šipkových operátorů“. S využitím zápisu

anb=an šipekb

vznikne

anb=an šipekb=an1(an1(n1a))b opakování a=an1(an1(n1a))b opakování a.

Základní operace a nevýhody značení

Základní operace lze vyjádřit pomocí Knuthova zápisu následovně:

a0b=a×b (násobení),a1b=ab (umocňování),a2b=ba (tetrace),a3b=ab (pentace),

atd.

Zjevnou nevýhodou je, že pro sčítání by bylo třeba zavést symbol 1 (tj. a1b=a+b), 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

Šablona:Překlad Šablona:Autoritní data

Šablona:Portály