Стерн – Броко - Stern–Brocot tree
В теория чисел, то Корм-Броко является бесконечный полный двоичный файл дерево в которой вершины соответствовать один за один к положительный рациональное число, значения которого упорядочены слева направо, как в дерево поиска.
Дерево Штерна – Броко было независимо открыто Мориц Штерн (1858 ) и Ахилл Броко (1861 ). Стерн был немецким теоретиком чисел; Броко был французом часовщик кто использовал дерево Штерна – Броко для проектирования систем шестерен с передаточное число близко к некоторому желаемому значению, найдя соотношение гладкие числа около этого значения.
Корень дерева Штерна-Броко соответствует числу 1. Отношение родитель-потомок между числами в дереве Штерна-Броко может быть определено в терминах непрерывные дроби или же посредники, и путь в дереве от корня до любого другого числа q обеспечивает последовательность приближения к q с меньшими знаменатели чем q. Поскольку дерево содержит каждое положительное рациональное число ровно один раз, поиск в ширину дерева предоставляет метод перечисления всех положительных рациональных чисел, которые тесно связаны с Последовательности Фари.
Дерево непрерывных дробей
Каждое положительное рациональное число q может быть выражена в виде непрерывной дроби формы
куда k и а0 являются целыми неотрицательными числами, и каждый последующий коэффициент ая положительное целое число. Это представление не уникально, потому что
для каждой последовательности коэффициентов а0, ..., аk−1Используя это тождество, чтобы переписать любое представление первой формы во вторую форму, можно получить, что окончательный коэффициент удовлетворяет аk ≥ 2 (пока не k = 0, и в этом случае получаем а0 ≥ 1); с этим дополнительным требованием представление становится уникальным. Тогда, если q = 1, номер q имеет родителя в дереве Стерна – Броко, заданного выражением непрерывной дроби
что в случае аk = 2 можно переписать как Например, рациональное число23⁄16 имеет представление непрерывной дроби
поэтому его родительским элементом в дереве Стерна – Броко является число
Этот родительский элемент формируется путем уменьшения знаменателя в самом внутреннем члене непрерывной дроби на 1 и сокращения предыдущего члена, если дробь становится .
И наоборот, каждое число q в дереве Штерна – Броко ровно два дочерних элемента: если
тогда один ребенок - это число, представленное непрерывной дробью
в то время как другой ребенок представлен непрерывной дробью
Одному из этих детей меньше q а это левый ребенок; другой больше, чем q и это правый дочерний элемент (на самом деле первое выражение дает левый дочерний элемент, если k нечетный, и правильный ребенок, если k четно) .Например, представление непрерывной дроби13⁄9 это [1; 2,4], а два его дочерних элемента - [1; 2,5] =16⁄11 (правый ребенок) и [1; 2,3,2] =23⁄16 (левый ребенок).
Ясно, что для каждого выражения конечной непрерывной дроби можно многократно перейти к его родительскому элементу и достичь корня [1;] =1⁄1 дерева за конечное число шагов (в а0 + ... + аk − 1 шаги, если быть точным). Следовательно, каждое положительное рациональное число встречается в этом дереве ровно один раз. Более того, все потомки левого ребенка любого числа q меньше чем q, и все потомки правого ребенка q больше чем q. Цифры на глубине d в дереве - числа, для которых сумма коэффициентов непрерывной дроби равна d + 1.
Медианты и бинарный поиск
Дерево Штерна – Броко образует бесконечную двоичное дерево поиска относительно обычного порядка рациональных чисел.[1][2] Множество рациональных чисел по убыванию узла q определяется открытым интервалом (Lq,ЧАСq) куда Lq является предком q это меньше чем q и ближайший к нему на дереве (или Lq = 0, если q не имеет меньшего предка), а ЧАСq является предком q это больше, чем q и ближайший к нему на дереве (или ЧАСq = + ∞, если q не имеет более крупного предка).
Путь от корня 1 к числу q в дереве Штерна – Броко можно найти по бинарный поиск алгоритм, который можно просто выразить с помощью посредники. Увеличьте неотрицательные рациональные числа, включив в них значение 1/0 (представляющее + ∞), которое по определению больше, чем все другие рациональные числа. В алгоритм двоичного поиска происходит следующим образом:
- Инициализировать два значения L и ЧАС до 0/1 и 1/0 соответственно.
- До того как q найден, повторите следующие шаги:
- Позволять L = а/б и ЧАС = c/d; вычислить медиант M = (а + c)/(б + d).
- Если M меньше чем q, тогда q находится в открытом интервале (M,ЧАС); заменять L к M и продолжаем.
- Если M больше, чем q, тогда q находится в открытом интервале (L,M); заменять ЧАС к M и продолжаем.
- В остальном случае q = M; прекратить поисковый алгоритм.
Последовательность значений M вычисленная этим поиском, является в точности последовательностью значений на пути от корня до q в дереве Штерна – Броко. Каждый открытый интервал (L,ЧАС), встречающийся на каком-то шаге поиска, - это интервал (LM,ЧАСM) представляющих потомков медианта M. Родитель q в дереве Штерна – Броко - последняя найденная медианта, не равная q.
Эта процедура двоичного поиска может использоваться для преобразования плавающая точка числа в рациональные числа. Остановка после достижения желаемой точности позволяет приближать числа с плавающей запятой к произвольной точности.[3] Если реальное число Икс аппроксимируется любым рациональным числом а/б что не входит в последовательность медиан, найденных описанным выше алгоритмом, то последовательность медиан содержит более близкое приближение к Икс знаменатель которого не более чем равен б; в этом смысле эти медианты образуют наилучшие рациональные приближения к Икс.
Само дерево Штерна-Броко может быть определено непосредственно в терминах медиант: левый дочерний элемент любого числа q является посредником q со своим ближайшим меньшим предком и правым потомком q посредник q со своим ближайшим более крупным предком. В этой формуле q и его предок должны быть взяты в наименьших терминах, и если нет меньшего или большего предка, тогда следует использовать 0/1 или 1/0 соответственно. Опять же, используя в качестве примера 7/5, его ближайший меньший предок равен 4/3, поэтому его левый дочерний элемент равен (4 + 7) / (3 + 5) = 11/8, а его ближайший более крупный предок равен 3/2, поэтому его правый дочерний элемент равен (7 + 3) / (5 + 2) = 10/7.
Связь с последовательностями Фарея
В Последовательность Фари порядка п отсортированная последовательность дробей на отрезке [0,1], знаменатель которых меньше или равен п. Как и в методе бинарного поиска для создания дерева Штерна – Броко, последовательности Фарея могут быть построены с использованием посредников: последовательность Фарея порядка п + 1 формируется из последовательности порядка Фарея п путем вычисления медианты каждых двух последовательных значений в последовательности Фарея порядка п, сохраняя подмножество медиан, знаменатель которых точно равен п + 1, и поместив эти медианты между двумя значениями, из которых они были вычислены.
Подобный процесс вставки медиант, начиная с другой пары конечных точек интервала [0 / 1,1 / 0], можно также увидеть для описания построения вершин на каждом уровне дерева Штерна-Броко. В Последовательность Штерна – Броко порядка 0 - это последовательность [0 / 1,1 / 0], а последовательность Штерна – Броко порядка я представляет собой последовательность, образованную вставкой медианты между каждой последовательной парой значений в последовательности Стерна – Броко порядка я - 1. Порядок Штерна – Броко. я состоит из всех значений на первом я уровни дерева Штерна – Броко вместе с граничными значениями 0/1 и 1/0 в числовом порядке.
Таким образом, последовательности Стерна-Броко отличаются от последовательностей Фарея двумя способами: они в конечном итоге включают все положительные рациональные числа, а не только рациональные числа в интервале [0,1], и в п-й шаг включены все медианты, а не только те, у которых знаменатель равен п. Последовательность порядка Фарея п может быть найден путем обхода по порядку левого поддерева дерева Штерна – Броко с возвратом всякий раз, когда число со знаминателем больше, чем п достигнуто.
Дополнительные свойства
Если все рациональные числа находятся на одной и той же глубине в дереве Штерна – Броко, то
- .
Более того, если являются двумя последовательными дробями на определенном уровне дерева или выше (в том смысле, что любая дробь между ними должна находиться на более низком уровне дерева), то
- .[4]
Наряду с определениями в терминах непрерывных дробей и медиан, описанных выше, дерево Штерна – Броко можно также определить как Декартово дерево для рациональных чисел с приоритетом их знаменателей. Другими словами, это уникальное двоичное дерево поиска рациональных чисел, в котором родитель любой вершины q имеет меньший знаменатель, чем q (или если q и его родитель - оба целых числа, в которых родитель меньше, чем q). Из теории декартовых деревьев следует, что наименьший общий предок любых двух чисел q и р в дереве Штерна – Броко - рациональное число в отрезке [q, р] с наименьшим знаменателем среди всех чисел в этом интервале.
Переставляя вершины на каждом уровне дерева Штерна – Броко с помощью перестановка с обращением битов производит другое дерево, Дерево Калкина – Уилфа, в котором потомки каждого числа а/б два числа а/(а + б) и (а + б)/б. Как и дерево Штерна – Броко, дерево Калкина – Уилфа содержит каждое положительное рациональное число ровно один раз, но не является деревом двоичного поиска.
Смотрите также
- Функция вопросительного знака Минковского, определение рациональных аргументов которого тесно связано с деревом Штерна – Броко
- Дерево Калкина – Уилфа
Примечания
- ^ Грэм, Рональд Л.; Кнут, Дональд Э.; Паташник, Орен (1994), Конкретная математика (Второе изд.), Addison-Wesley, pp. 116–118, ISBN 0-201-55802-5
- ^ Гиббонс, Джереми; Лестер, Дэвид; Птица, Ричард (2006), «Функциональная жемчужина: перечисление рациональных элементов», Журнал функционального программирования, 16 (3): 281–291, Дои:10.1017 / S0956796806005880.
- ^ Седжвик и Уэйн, Введение в программирование на Java. Реализацию этого алгоритма на Java можно найти Вот.
- ^ Богомольный приписывает это свойство канадскому теоретику музыки Пьеру Ламоту.
Рекомендации
- Броко, Ахилл (1861), "Calcul des rouages par аппроксимация, новый метод", Revue Chronométrique, 3: 186–194.
- Стерн, Мориц А. (1858), "Ueber eine zahlentheoretische Funktion", Журнал für die reine und angewandte Mathematik, 55: 193–220.
- Берстель, Жан; Лаув, Аарон; Ройтенауэр, Кристоф; Салиола, Франко В. (2009), Комбинаторика слов. Кристоффель слова и повторы словами, Серия монографий CRM, 27, Провиденс, Род-Айленд: Американское математическое общество, ISBN 978-0-8218-4480-9, Zbl 1161.68043
внешняя ссылка
- Айлам, Дхрова, Модифицированные последовательности Штерна-Броко, arXiv:1301.6807, Bibcode:2013arXiv1301.6807A
- Остин, Дэвид, Деревья, зубы и время: математика изготовления часов, Столбец характеристик от AMS
- Богомольный Александр, Суровое парчовое дерево, завязать узел, получено 2008-09-03.
- Слоан, Н. Дж. А., Стерн-Броко или Фари-дерево, Он-лайн энциклопедия целочисленных последовательностей.
- Вильдбергер, Норман, MF96: Дроби и дерево Штерна-Броко.
- Вайсштейн, Эрик В. "Штерн – Броко". MathWorld.
- Корм-Броко в PlanetMath.org.
- Бесконечные дроби, Numberphile