Фибоначчиева система счисления

Материал из testwiki
Перейти к навигации Перейти к поиску

Шаблон:Системы счисления Фибоначчиева система счисления — смешанная система счисления для целых чисел на основе чисел Фибоначчи F2=1, F3=2, F4=3, F5=5, F6=8 и т. д.

Число Запись
в Шаблон:Comment
Код
Фибоначчи
0 0……0  
F2=1 1 11
F3=2 10 011
F4=3 100 0011
4 101 1011
F5=5 1000 00011
6 1001 10011
7 1010 01011
F6=8 10000 000011
Fn − 1  101010 0101011 
Fn 10……00 00……011
Fn + 1 10……01 10……011

Представление натуральных чисел

Любое неотрицательное целое число a можно единственным образом представить последовательностью битов …εk…ε4ε3ε2 (εk{0,1}) так, что a=kεkFk, причём последовательность {εk} содержит лишь конечное число единиц, и не имеет пар соседних единиц: k2:(εk=1)(εk+1=0). За исключением последнего свойства, данное представление аналогично двоичной системе счисления.

Обоснование

В основе лежит теорема Цекендорфа[1] — любое неотрицательное целое число единственным образом представимо в виде суммы некоторого набора попарно различных чисел Фибоначчи с индексами, большими единицы, не содержащего пар соседних чисел Фибоначчи.

Доказательство существования легко провести по индукции. Любое целое число a1 попадёт в промежуток между двумя соседними числами Фибоначчи, то есть для некоторого n2 верно неравенство: Fna<Fn+1. Таким образом, a=Fn+a, где a=aFn < Fn1, так что разложение числа a уже не будет содержать слагаемого Fn1.

Использование

Юпана

Юпана

Предполагают, что некоторые разновидности юпаны (абака инков) использовали фибоначчиеву систему счисления, чтобы минимизировать необходимое для вычислений число зёрен[2].

В теории информации

На основе фибоначчиевой системы счисления строится код (кодирование) Фибоначчи — универсальный код для натуральных чисел (1,Шаблон:Nbsp2,Шаблон:Nbsp3…), использующий последовательности битов. Поскольку комбинацияШаблон:Nbsp11 запрещена в фибоначчиевой системе счисления, её можно использовать как маркер конца записи.

Для составления кода Фибоначчи по записи числа в фибоначчиевой системе счисления следует переписать цифры в обратном порядке (так, что старшая единица оказывается последним символом) и приписать в конце ещё разШаблон:Nbsp1 (см. таблицу). То есть, кодовая последовательность имеет вид:

ε2ε3…εn1,

где n — номер самого старшего разряда с единицей.

Арифметика

Сложение чисел в позиционных системах счисления выполняется с использованием переноса, позволяющего устранять последствия переполнения разряда. Например, в двоичной системе: 01 + 01 = 02 = 10.

В фибоначчиевой системе счисления дело обстоит сложнее:

  • Во-первых, вес старших разрядов не является кратным весу разряда, из которого требуется перенос. При сложении двух единиц в одном разряде требуется перенос не только влево, но и вправо: 0200 = 1001. При переносе в отсутствующие разряды ε1 и ε0 следует помнить, что F1=1=F2 и F0=0.
  • Во-вторых, требуется избавляться от соседних единиц: 011 = 100. Правило для раскрытия двоек является следствием этого равенства: 0200 = 0100 + 0011 = 0111 = 1001.

Шаблон:Дополнить раздел

Обобщение на вещественные числа

Число Представление
через степениШаблон:Nbspφ
1      1
2     10,01
3    100,01
4    101,01
5   1000,1001
6   1010,0001
7  10000,0001
8  10001,0001
9  10010,0101
10  10100,0101
11  10101,0101
12 100000,101001
13 100010,001001
14 100100,001001

Похожее устройство имеет позиционная система счисления с иррациональным основанием, равным золотому сечению φ=(1+5)/2.

Любое вещественное число Шаблон:Math из отрезка [0,1] допускает разложение в ряд через отрицательные степени золотого сечения:

x=k=1εkφk,εk{0,1}

где {εk} обладает тем же свойством отсутствия соседних единиц. Коэффициенты находятся последовательным сравнением Шаблон:Math с φ1 — золотым сечением отрезка [0,1], вычитанием φ1 (если εk=1) и умножением на φ. Из этого нетрудно видеть, что любое неотрицательное вещественное число допускает разложение:

a=k=N1εkφk,

где Шаблон:Math таково, что a<φN. При этом εk=0 для всех kN.

Эти формулы полностью аналогичны формулам для обычных позиционных систем с целыми основаниями. Оказывается, что любое неотрицательное целое число (и, более общо, всякий неотрицательный элемент кольца +φ) имеет представление лишь с конечным количеством единиц, то есть в виде конечной суммы неповторяющихся степеней золотого сечения.[3]

Аналогия между числами Фибоначчи и степенями золотого сечения основана на одинаковой форме тождеств:

Fk=Fk1+Fk2
φk=φk1+φk2

позволяющих устранение соседних единиц. Прямой связи между представлением натуральных чисел в системе золотого сечения и в фибоначчиевой не имеется.

Правила сложения аналогичны показанным выше с той поправкой, что перенос в сторону младших разрядов распространяется без ограничения. В данной системе счисления можно производить и умножение.

Фибоначчиево умножение

Для целых чисел a=kεkFk  и b=lζlFl  можно определить «умножение»[4]

ab=k,lεkζlFk+l,

которое аналогично умножению чисел в двоичной системе счисления.

Эта операция не является настоящим умножением чисел, и выражается формулой:[5]

ab=3aba(b+1)φ2b(a+1)φ2,

где  — целая часть, φ=1+52 — золотое сечение.

Эта операция обладает ассоциативностью, на что впервые обратил внимание Дональд Кнут[6]. Другое «произведение» k,lεkζlFk+l2, отличающееся лишь сдвигом на два разряда, уже не является ассоциативным.

Шаблон:Дополнить раздел

Примечания

Шаблон:Примечания

Литература

  • Стахов А., Слученкова А., Щербаков И. Код да Винчи и ряды Фибоначчи. СПБ. Издательство: Питер, 2006. 320 с. ISBN 5-469-01369-3
  • Стахов А. П. Алгоритмическая теория измерения: новый подход к теории позиционных систем счисления и компьютерной арифметике// Журнал «Управляющие машины и системы», 1994, No 4-5.
  • Стахов А. П. Компьютеры Фибоначчи и новая теория кодирования: история, теория, перспективы// Электронный журнал Таганрогского радиотехнического университета «Перспективные информационные технологии и интеллектуальные системы», № 2 (18), 2004// http://pitis.tsure.ru/files18/p5.pdf.