Фибоначчиева система счисления: различия между версиями
w>Pieter Baas м (→Обобщение на действительные числа: шаблон) |
w>Incnis Mrsi (Кнут, Кнут… я сам немного подумал, и понял, в чём тут дело!) |
||
Строка 1: | Строка 1: | ||
− | '''[[Фибоначчи]]ева [[система счисления]] | + | '''[[Фибоначчи]]ева система счисления''' — [[позиционная система счисления]] для [[целое число|целых чисел]] на основе [[числа Фибоначчи|чисел Фибоначчи]] F<sub>2</sub>=1, F<sub>3</sub>=2, F<sub>4</sub>=3, F<sub>5</sub>=5, F<sub>6</sub>=8 и т.д. |
== Представление натуральных чисел == | == Представление натуральных чисел == | ||
Строка 56: | Строка 56: | ||
|<tt>10</tt>……<tt>01</tt> | |<tt>10</tt>……<tt>01</tt> | ||
| align=right |<tt>10</tt>……<tt>011</tt> | | align=right |<tt>10</tt>……<tt>011</tt> | ||
+ | |- | ||
+ | | colspan=3 |[[Image:Zeckendorf representations.png|320px]] | ||
|} | |} | ||
− | Любому неотрицательному целому числу <math>a = 0,\ 1,\ 2,\dots</math> можно единственным образом представить через последовательность [[бит]]ов | + | Любому неотрицательному целому числу <math>a = 0,\ 1,\ 2,\dots</math> можно единственным образом представить через последовательность [[бит]]ов …ε<sub>k</sub>…ε<sub>4</sub>ε<sub>3</sub>ε<sub>2</sub>: <math>a = \sum_k \varepsilon_k F_k,\ \varepsilon_k = 0,1</math>, причём последовательность {ε<sub>k</sub>} содержит лишь конечное число единиц, и не имеет пар соседних единиц: <math>\forall k\ge 2: (\varepsilon_k=1) \Rightarrow (\varepsilon_{k+1}=0)</math>. |
За исключением последнего свойства, данное представление аналогично [[двоичная система счисления|двоичной системе счисления]]. | За исключением последнего свойства, данное представление аналогично [[двоичная система счисления|двоичной системе счисления]]. | ||
Строка 69: | Строка 71: | ||
Для составления кода Фибоначчи по записи числа в фибоначчиевой системе счисления следует переписать цифры в обратном порядке (так, что старшая единица оказывается последним символом) и приписать в конце ещё раз <tt>1</tt> (см. таблицу). | Для составления кода Фибоначчи по записи числа в фибоначчиевой системе счисления следует переписать цифры в обратном порядке (так, что старшая единица оказывается последним символом) и приписать в конце ещё раз <tt>1</tt> (см. таблицу). | ||
− | == | + | == Обобщение на действительные числа == |
− | + | Похожее устройство имеет позиционная система счисления для [[действительные числа|действительных чисел]], основанием которой служит [[золотое сечение]] <math>\varphi = (1 + \sqrt{5})/2</math> — [[иррациональное число]]. | |
+ | Оказывается, что любое действительное число ''a'' из отрезка [0,1] допускает разложение в ряд через отрицательные степени золотого сечения: | ||
+ | : <math>a = \sum_{k=-1}^{-\infty} \varepsilon_k \varphi^k,\ \varepsilon_k = 0,1\ ,</math> | ||
+ | где {ε<sub>k</sub>} обладает тем же свойством отсутствия соседних единиц. | ||
+ | Из этого нетрудно видеть, что любое неотрицательное действительное число допускает разложение: | ||
+ | : <math>a = \sum_{k=N-1}^{-\infty} \varepsilon_k \varphi^k\,,</math> | ||
+ | где ''N'' таково, что <math>a < \varphi^N</math>. | ||
+ | Разумеется, следует считать что <math>\varepsilon_k = 0</math> для <math>k \ge N</math>. | ||
+ | |||
+ | Эти формулы полностью аналогичны формулам для обычных позиционных систем с целыми основаниями. | ||
+ | Оказывается, что любое неотрицательное целое число (и, более общо, всякий неотрицательный элемент [[кольцо (алгебра)|кольца]] <math>{\mathbb Z}+\varphi{\mathbb Z}</math>) имеет представление лишь с конечным количеством единиц, то есть в виде конечной суммы неповторяющихся степеней золотого сечения.<!-- тут хорошо бы найти источник --> | ||
− | + | Аналогия между числами Фибоначчи и степенями золотого сечения основана на одинаковой форме тождеств: | |
+ | : <math>F_k = F_{k-1} + F_{k-2}\,,\ \varphi^k = \varphi^{k-1} + \varphi^{k-2}\,,</math> | ||
+ | позволяющих устранение соседних единиц. Прямой связи между представлением натуральных чисел в системе золотого сечения и в фибоначчиевой не имеется.<!-- тут надо уточнить, на самом деле связь будет с некоторыми оговорками и с точностью до множителя √5 или что-то такое --Incnis Mrsi --> | ||
+ | {{section-stub}} | ||
− | == | + | == Фибоначчиево «произведение» == |
− | + | Для целых чисел <math>a = \sum_k \varepsilon_k F_k\ </math> и <math>b = \sum_l \zeta_l F_l\ </math> можно определить «произведение»<ref>{{OEIS2C|A101330}}, [[:en:Zeckendorf's theorem]]{{ref-en}}</ref> | |
+ | : <math>a\circ b = \sum_{k,l} \varepsilon_k \zeta_l F_{k+l}</math>, | ||
+ | формула для которого аналогична формуле умножения двоичных чисел. | ||
+ | |||
+ | Разумеется, данная операция не является настоящим умножением чисел, и выражается<ref>[http://www.research.att.com/~njas/sequences/a101330.txt Notes on the Fibonacci circle and arroba products]{{ref-en}}</ref> формулой: | ||
+ | : <math>a\circ b = 3 a b - a [\varphi^{-2}(b+1)] - b [\varphi^{-2}(a+1)]\ ,</math> где […] — [[целая часть]]. | ||
+ | |||
+ | Эта операция обладает [[ассоциативность]]ю. Можно видеть, что формула «произведения» соответствует настоящему перемножению выражений вида <math>a = \sum_k \varepsilon_k \varphi^k\,,k=2, 3\dots</math>. | ||
+ | |||
+ | Впервые на ассоциативность этой операции обратил внимание [[Дональд Кнут]]. | ||
+ | Следует отметить, что другое «произведение» <math>\sum_{k,l} \varepsilon_k \zeta_l F_{k+l-2},</math> отличающееся лишь сдвигом на два разряда, уже не будет ассоциативно, поскольку… | ||
+ | {{section-stub}} | ||
− | + | == Источники == | |
− | {{ | + | * [http://rain.ifmo.ru/cat/view.php/theory/coding/integer-2005#Fcode «Коды Фибоначчи»], факультет информационных технологий и программирования [[ИТМО]] |
+ | * [http://www.wikiznanie.ru/ru-wz/index.php/Код_Фибоначчи «Код Фибоначчи»] на Викизнании | ||
+ | {{примечания}} | ||
[[Категория:Системы счисления]] | [[Категория:Системы счисления]] |
Версия от 13:16, 4 января 2009
Фибоначчиева система счисления — позиционная система счисления для целых чисел на основе чисел Фибоначчи F2=1, F3=2, F4=3, F5=5, F6=8 и т.д.
Представление натуральных чисел
Число | Запись в ФСС |
Код Фибоначчи |
---|---|---|
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 |
![]() |
Любому неотрицательному целому числу можно единственным образом представить через последовательность битов …εk…ε4ε3ε2: , причём последовательность {εk} содержит лишь конечное число единиц, и не имеет пар соседних единиц: . За исключением последнего свойства, данное представление аналогично двоичной системе счисления.
Обоснование
В основе лежит теорема Цеккендорфа — любое неотрицательное целое число представимо в виде суммы некоторого набора чисел Фибоначчи, не содержащего пары соседних чисел Фибоначчи. Причём представление такое единственно.
Доказательство существования легко провести по индукции. Любое целое число попадёт в промежуток между двумя соседними числами Фибоначчи, то есть для некоторого верно неравенство: . Таким образом, , где , так что разложение числа уже не будет содержать слагаемого .
Использование в теории информации
На основе фибоначчиевой системы счисления строится код (кодирование) Фибоначчи — универсальный код для натуральных чисел (1, 2, 3…), использующий последовательности битов. Поскольку комбинация 11 запрещена в Фибоначчиевой системы счисления, её можно использовать как маркер конца записи. Для составления кода Фибоначчи по записи числа в фибоначчиевой системе счисления следует переписать цифры в обратном порядке (так, что старшая единица оказывается последним символом) и приписать в конце ещё раз 1 (см. таблицу).
Обобщение на действительные числа
Похожее устройство имеет позиционная система счисления для действительных чисел, основанием которой служит золотое сечение — иррациональное число. Оказывается, что любое действительное число a из отрезка [0,1] допускает разложение в ряд через отрицательные степени золотого сечения: где {εk} обладает тем же свойством отсутствия соседних единиц. Из этого нетрудно видеть, что любое неотрицательное действительное число допускает разложение: где N таково, что . Разумеется, следует считать что для .
Эти формулы полностью аналогичны формулам для обычных позиционных систем с целыми основаниями. Оказывается, что любое неотрицательное целое число (и, более общо, всякий неотрицательный элемент кольца ) имеет представление лишь с конечным количеством единиц, то есть в виде конечной суммы неповторяющихся степеней золотого сечения.
Аналогия между числами Фибоначчи и степенями золотого сечения основана на одинаковой форме тождеств: позволяющих устранение соседних единиц. Прямой связи между представлением натуральных чисел в системе золотого сечения и в фибоначчиевой не имеется. Шаблон:Section-stub
Фибоначчиево «произведение»
Для целых чисел и можно определить «произведение»[1] формула для которого аналогична формуле умножения двоичных чисел.
Разумеется, данная операция не является настоящим умножением чисел, и выражается[2] формулой: где […] — целая часть.
Эта операция обладает ассоциативностью. Можно видеть, что формула «произведения» соответствует настоящему перемножению выражений вида .
Впервые на ассоциативность этой операции обратил внимание Дональд Кнут. Следует отметить, что другое «произведение» отличающееся лишь сдвигом на два разряда, уже не будет ассоциативно, поскольку… Шаблон:Section-stub
Источники
- «Коды Фибоначчи», факультет информационных технологий и программирования ИТМО
- «Код Фибоначчи» на Викизнании
en:Fibonacci coding eo:Vikipedio:Projekto matematiko/Fibonacci-a kodigo fr:Codage de Fibonacci