Гугология Вики
Гугология Вики
Advertisement

Гипер E нотация (сокращённо E#) — нотация для больших чисел, созданная Сбиисом Сайбианом.[1] Впервые она была представлена в его веб-книге "От одного до бесконечности: Гайд по конечному" 19 ноября 2011 года и обобщена до Расширенной гипер E нотации (сокращённо xE#). Гипер E нотация — усовершенствованная версия другой нотации, созданной Сбиисом Сайбианом в детстве.

Оригинальное определение[]

Исходное выражение в гипер E нотации состоит из последовательности одного или нескольких целых положительных аргументов, разделённых гиперионами (или гиперметками) #. Мы обозначаем это как E[b]##...#. b называется "базой", если оно опущено, как это часто бывает, то по умолчанию оно равно 10. "E[b]d" также равно "b^d".

Эти три правила заключаются в следующем:

  • Правило 1. Если гипериона нет:
    .
  • Правило 2. Если последняя запись равна 1:
    .
  • Правило 3. В противном случае:

На простом языке:

  1. Если есть только один аргумент "x", значение выражения равно .
  2. Если последняя запись равна 1, она может быть удалена.
  3. В противном случае...
    1. Вычислите исходное выражение, но с уменьшением последней записи на 1. Назовите это значение "z".
    2. Удалите последние две записи выражения.
    3. Добавьте "z" в качестве записи в конец выражения.

Приоритет правил указан на оригинальной веб-странице под определением: "Используются 3 правила. Если вам задано выражение E#, вы сначала проверяете, применимо ли правило 1. Если это не так, вы проверяете соблюдение правила 2. Если это неприменимо, вы переходите к правилу 3." Это отключает , равный 1 в 3-м правиле, и позволяет избежать перекрывающейся классификации случаев.

Расширенное определение[]

Расширенная гипер E нотация позволяет нескольким символам гиперионов появляться между каждой записью. Число гиперионов, следующее за записью , представлено символом h(n). Для целей этого определения является сокращением для "n" последовательных меток гипериона. Например, полное выражение было бы записано E[b]. Сайбиан использует @ для обозначения остальной части выражения, например, Бауэрс использует # для обозначения остальной части массива.

Разница между оригинальной и расширенной нотацией заключается в том, что расширенная гипер E нотация допускают более одного последовательного гипериона #.

  • Правило 1. Если гипериона нет:
    .
  • Правило 2. Если последняя запись равна 1:
    @ @
  • Правило 3. Если :
    @ @ .
  • Правило 4. В противном случае:
    @ @ @ (Примечание: = #)

Это похоже на правила линейной нотации массива. Мы также можем описать эти правила на простом языке:

  1. Если есть только один аргумент "x", значение выражения равно .
  2. Если последняя запись равна 1, она может быть удалена.
  3. Пусть "h" - длина последнего набора меток гипериона. Если "h" > 1:
    1. Удалите последнюю запись выражения и назовите её r.
    2. Снова удалите последнюю запись выражения; на этот раз назовите её z.
    3. Повторите "z" "r" раз с отметками гиперионов h - 1 между каждым повторением. Добавьте это в конец выражения. (Восстановите удалённую последовательность меток гипериона, чтобы соединить два выражения вместе.)
  4. Если последний набор меток гипериона имеет длину один:
    1. Вычислите исходное выражение, но с уменьшением последней записи на 1. Назовите это значение "z".
    2. Удалите последние две записи выражения.
    3. Добавьте "z" в качестве записи в конец выражения. (Опять же, восстановите удалённую последовательность меток гипериона, чтобы склеить два выражения вместе.)

Примеры[]

  • E6 = E6#1 = 10^6 = миллиону
  • E100 = E100#1 = 10^100 = гуголу
    Это пример правила 1 с выражениями, состоящими из одного элемента. Поскольку базовое значение по умолчанию равно 10, мы можем сократить E[10]100 до базового значения E100.
  • E100#2 = E(E100#1) = E10^100 = 10^10^100 = гуголплексу
  • E100#3 = E(E100#2) = E10^10^100 = 10^10^10^100 = гуголдуплексу
    Это пример правила 3 (правило 4 в расширении) с выражениями, состоящими из двух элементов. Во втором выражении круглые скобки можно опустить: E(E100#1) = EE100#1.
  • E303#1 = E303 = сантиллиону = 10^303
  • E303#2 = эцетонплексу = EE303 = 10^10^303
  • E303#3 = EEE303 = 10^10^10^100 = эцетондуплексу
  • E1#3 = EEE1 = 10^10^10 = триалогу
  • E1#4 = EEEE1 = 10^10^10^10 = тетралогу
  • E1#10 = EEEEEEEEEE1 = 10^^10 = декеру
  • E303#6 = EEEEEE303 = 101010101010303 = эцетонквинтиплексу
  • E1#100 = EEE...EEE1 (100 E) = гигголу
    Повторное применение правила 3: E1#100 = EE1#99 = EEE1#98 = ...
  • E100#100 = EEE...EEE100 (100 E) = гранголу
    Это то же самое, что и E1#100, но с другой первой записью.
  • E100#101 = EEE...EEE100 (101 E) = гранголплексу
    E100#101 = EE100#100 = 10^Грангол, отсюда и название.
  • E100#100#2 = E100#(E100#100) = EEE...EEE100 (грангол E) = гранголдексу
    Теперь мы вводим выражения из трёх элементов.
  • E100#100#3 = E100#(E100#100#2) = E100#(E100#(E100#100)) = EEE...EEE100 (гранголдекс копий E) = гранголдудексу
    Увеличение значения третьей записи делает вложенность всё глубже и глубже.
  • E100#100#100#100 = E100#100#(E100#100#100#99) = E100#100#(E100#100#(E100#100#100#98)) = ... гиганголу
    Выражения с четырьмя элементами похожи — они создают всё более глубокую вложенность на уровне массива. Это также может быть записано как E100##4; начало следующего уровня нотации.
  • E100##100 = E100#100#100#...#100#100#100 с 100, повторяющейся 100 раз = гуголду
    Теперь мы подошли к расширенной гипер E нотации. Два последовательных гипериона (дейтеро-гиперионы) указывают на повторение на более низком уровне.
  • E100##100#100 = граатаголду
    Это выражение разлагается на выражения Ea##b путём многократного применения правила 4.
  • E100##100##100 = E100##100#100#...#100#100 с 100, повторяющейся 100 раз = гуголтра
    Мы игнорируем первый ## до тех пор, пока второй не будет расширен и все слои из 100 не будут решены.
  • E100###100 = E100##100##...##100##100 с 100, повторяющейся 100 раз = труголу
    Три метки гипериона (трито-гиперион) представляют собой повторение двух меток гипериона. Помните, что двойные метки решаются справа налево.
  • E100####100 = E100###100###...###100###100 с 100, повторяющейся 100 раз = теруголу
    Четырёхкратный гиперион разлагается на тройные.
  • Годгалах = E100#####...#####100 со 100 знаками гипериона или E100#100
    Наборы из 100 меток гипериона разлагаются на 99 единиц, 99 единиц разлагаются на 98 единиц и т.д. Также обратите внимание, что верхний индекс 100 означает, что существует 100 #, и его не следует путать с E100#(100).

Отношения с другими нотациями[]

Первые сегменты гипер E нотации основаны на возведении в степень, т. е. En равно 10n. Вложение в гипер E с одной записью создаёт итеративное возведение в степень, например EEEn=101010n. Затем в игру вступают метки гипериона. Поскольку метки гипериона имеют решающее значение для рекурсии в этой нотации, определённые расположения гиперионов могут указывать на сходство с другими нотациями, определёнными рекурсией.

Гипер E может быть связана со стрелочной нотацией посредством следующего правила: [2]

для положительных чисел a, b, c. Например,

  • a↑b = E(a)b
  • a↑↑b = E(a)1#b
  • a↑↑↑b = E(a)1#1#b
  • a↑↑↑↑b = E(a)1#1#1#b

Псевдокод[]

Для фиксированного числа переменных исходная гипер E нотация является примитивно-рекурсивной, хотя значения, которые она выдаёт, значительно превосходят значения любого компьютера. Расширенная гипер E нотация является непримитивно-рекурсивной для двух или более переменных.

function Eb(a1, a2, ..., an - 1, an): //Default value of b is 10

    if n = 1:
        return Шаблон:^

    if an = 1:
        return Eb(a1, a2, ..., an - 1)

    z := Eb(a1, a2, ..., an - 1, an - 1)

    return Eb(a1, a2, ..., an - 2, z)
 
function xEb(a1, a2, ..., an - 1, an;
             h1, h2, ..., hn - 2, hn - 1): //Default value of b is 10

    if n = 1:
        return Шаблон:^

    if an = 1:
        return xEb(a1, a2, ..., an - 1;
                   h1, h2, ..., hn - 2)

    if hn - 1 > 1:
        r := an
        z := an - 1
        zseq := z, z, ..., z, z (r times)
        h := ah - 1
        hseq := h, h, ..., h, h (r - 1 times)
        return xEb(a1, a2, ..., an - 2, zseq;
                   h1, h2, ..., hn - 2, hseq)

    z := xEb(a1, a2, ..., an - 1;
             h1, h2, ..., hn - 2, hn - 1)
    return xEb(a1, a2, ..., an - 2, z;
               h1, h2, ..., hn - 2)

Примечания[]

Смотрите также[]

Advertisement