Материал из Википедии — свободной энциклопедии
В Википедии есть статьи о других людях с такой фамилией, см. Давыдов; Давыдов, Андрей.
Андрей Александрович Давыдов
Андре́й Алекса́ндрович Давы́дов (род. 29 декабря 1954, Москва) — российский социолог.
Содержание
Биография
Окончил факультет психологии МГУ им. М. В. Ломоносова (1981), кандидат социологических наук, доктор философских наук, профессор. Руководитель социологической службы управления «Главмосремонт» при Исполкоме Моссовета (1981—1985), младший научный сотрудник (1985), старший научный сотрудник Института социологии РАН (1992—1996), главный научный сотрудник Института социологии РАН (2000), эксперт ВЦИОМ и аналитического управления Администрации Президента РФ, преподаватель МГИМО МИД РФ, первый федеральный вице-президент РОС, руководитель Научно-исследовательского комитета «Системная социология» РОС (1989).
Основные направления научной деятельности: теория, моделирование и прогнозирование социальных систем, разработчик теории системной социологии и концепции нанообщества.
Действительный член Нью-Йоркской академии наук, член-корреспондент Международной академии информационных процессов и технологий.
Автор более 100 научных работ, из них 7 монографий.
Монографии
Числа Фибоначчи
Материал из Википедии — свободной энциклопедии
Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 17 ноября 2017; проверки требует 1 правка.
Чи́сла Фибона́ччи (также Фибона́чи[1]) — элементы числовой последовательности
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, … (последовательность A000045 в OEIS),
в которой первые два числа равны либо 1 и 1, либо 0 и 1, а каждое последующее число равно сумме двух предыдущих чисел. Названы в честь средневекового математика Леонардо Пизанского (известного как Фибоначчи)[2].
Более формально, последовательность чисел Фибоначчи { F n } {\displaystyle \left\{F_{n}\right\}} задаётся линейным рекуррентным соотношением:
F 0 = 0 , F 1 = 1 , F n = F n − 1 + F n − 2 , n ⩾ 2 , n ∈ Z . {\displaystyle F_{0}=0,\qquad F_{1}=1,\qquad F_{n}=F_{n-1}+F_{n-2},\quad n\geqslant 2,\quad n\in \mathbb {Z} .}
Иногда числа Фибоначчи рассматривают и для отрицательных значений n {\displaystyle n} , как двусторонне бесконечную последовательность, удовлетворяющую тому же рекуррентному соотношению. При этом члены с отрицательными индексами легко получить с помощью эквивалентной формулы «назад»: F n = F n + 2 − F n + 1 {\displaystyle F_{n}=F_{n+2}-F_{n+1}} :
n | … | −10 | −9 | −8 | −7 | −6 | −5 | −4 | −3 | −2 | −1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | … |
F n {\displaystyle F_{n}} | … | −55 | 34 | −21 | 13 | −8 | 5 | −3 | 2 | −1 | 1 | 0 | 1 | 1 | 2 | 3 | 5 | 8 | 13 | 21 | 34 | 55 | … |
Легко заметить, что F − n = ( − 1 ) n + 1 F n {\displaystyle F_{-n}=(-1)^{n+1}F_{n}} .
Содержание
Происхождение
Страница Книги абака (лат. Liber abaci) Фибоначчи из Национальной центральной библиотеки Флоренции.
В правом блоке демонстрируется последовательность Фибоначчи.
Позиции от 0 до 12 обозначены тёмным цветом римскими цифрами, а значения красным цветом индо-арабскими цифрами
Последовательность Фибоначчи была хорошо известна в древней Индии, где она применялась в метрических науках (просодии, другими словами — стихосложении) намного раньше, чем стала известна в Европе.
Образец длиной n может быть построен путём добавления S к образцу длиной n-1, либо L к образцу длиной n-2; и просодицисты показали, что число образцов длиною n является суммой двух предыдущих чисел в последовательности. Дональд Кнут рассматривает этот эффект в книге «Искусство программирования».
На Западе эта последовательность была исследована Леонардо Пизанским, известным как Фибоначчи, в его труде «Liber Abaci» (1202). Он рассматривает развитие идеализированной (биологически нереальной) популяции кроликов, предполагая, что: изначально есть новорожденная пара кроликов (самец и самка); со второго месяца после своего рождения кролики начинают спариваться и каждый месяц производить новую пару кроликов; кролики никогда не умирают. Сколько пар кроликов будет через год?
В конце n {\displaystyle n} -го месяца количество пар кроликов будет равно количеству пар в предыдущем месяце плюс количество новорожденных пар, которых будет столько же, сколько пар было два месяца назад. Таким образом: F n = F n − 2 + F n − 1 . {\displaystyle F_{n}=F_{n-2}+F_{n-1}.}
Формула Бине
Формула Бине выражает в явном виде значение F n {\displaystyle F_{n}} как функцию от n:
F n = ( 1 + 5 2 ) n − ( 1 − 5 2 ) n 5 = φ n − ( − φ ) − n φ − ( − φ ) − 1 = φ n − ( − φ ) − n 2 φ − 1 , {\displaystyle F_{n}={\frac {\left({\frac {1+{\sqrt {5}}}{2}}\right)^{n}-\left({\frac {1-{\sqrt {5}}}{2}}\right)^{n}}{\sqrt {5}}}={\frac {\varphi ^{n}-(-\varphi )^{-n}}{\varphi -(-\varphi )^{-1}}}={\frac {\varphi ^{n}-(-\varphi )^{-n}}{2\varphi -1}},}
где φ = 1 + 5 2 {\displaystyle \varphi ={\frac {1+{\sqrt {5}}}{2}}} — золотое сечение. При этом φ {\displaystyle \varphi } и ( − φ ) − 1 = 1 − φ {\displaystyle (-\varphi )^{-1}=1-\varphi } являются корнями характеристического уравнения x 2 − x − 1 = 0 {\displaystyle x^{2}-x-1=0} .
Из формулы Бине следует, что для всех n ⩾ 0 {\displaystyle n\geqslant 0} , F n {\displaystyle F_{n}} есть ближайшее к φ n 5 {\displaystyle {\frac {\varphi ^{n}}{\sqrt {5}}}} целое число, то есть F n = ⌊ φ n 5 ⌉ {\displaystyle F_{n}=\left\lfloor {\frac {\varphi ^{n}}{\sqrt {5}}}\right\rceil } . В частности, при n → ∞ {\displaystyle n\to \infty } справедлива асимптотика F n ∼ φ n 5 {\displaystyle F_{n}\sim {\frac {\varphi ^{n}}{\sqrt {5}}}} .
Формула Бине может быть аналитически продолжена следующим образом:
F z = 1 5 ( φ z − cos π z φ z ) . {\displaystyle F_{z}={\frac {1}{\sqrt {5}}}\left(\varphi ^{z}-{\frac {\cos {\pi z}}{\varphi ^{z}}}\right).}
При этом соотношение F z + 2 = F z + 1 + F z {\displaystyle F_{z+2}=F_{z+1}+F_{z}} выполняется для любого комплексного числа z.
Тождества
Иллюстрация формулы для суммы квадратов первых n чисел Фибоначчи[3].
И более общие формулы:
F n + 1 = det ( 1 1 0 ⋯ 0 − 1 1 1 ⋱ ⋮ 0 − 1 ⋱ ⋱ 0 ⋮ ⋱ ⋱ ⋱ 1 0 ⋯ 0 − 1 1 ) {\displaystyle F_{n+1}=\det {\begin{pmatrix}1&1&0&\cdots &0\\-1&1&1&\ddots &\vdots \\0&-1&\ddots &\ddots &0\\\vdots &\ddots &\ddots &\ddots &1\\0&\cdots &0&-1&1\end{pmatrix}}} , а также F n + 1 = det ( 1 i 0 ⋯ 0 i 1 i ⋱ ⋮ 0 i ⋱ ⋱ 0 ⋮ ⋱ ⋱ ⋱ i 0 ⋯ 0 i 1 ) {\displaystyle \ F_{n+1}=\det {\begin{pmatrix}1&i&0&\cdots &0\\i&1&i&\ddots &\vdots \\0&i&\ddots &\ddots &0\\\vdots &\ddots &\ddots &\ddots &i\\0&\cdots &0&i&1\end{pmatrix}}} ,
где матрицы имеют размер n × n {\displaystyle n\times n} , i — мнимая единица.
F n + 1 = ( − i ) n U n ( − i 2 ) , {\displaystyle F_{n+1}=(-i)^{n}U_{n}\left({\frac {-i}{2}}\right),}
F 2 n + 2 = U n ( 3 2 ) . {\displaystyle F_{2n+2}=U_{n}\left({\frac {3}{2}}\right).}
( 1 1 1 0 ) n = ( F n + 1 F n F n F n − 1 ) . {\displaystyle {\begin{pmatrix}1&1\\1&0\end{pmatrix}}^{n}={\begin{pmatrix}F_{n+1}&F_{n}\\F_{n}&F_{n-1}\end{pmatrix}}.}
· Следствие. Подсчёт определителей даёт
( − 1 ) n = F n + 1 F n − 1 − F n 2 . {\displaystyle (-1)^{n}=F_{n+1}F_{n-1}-F_{n}^{2}.}
F n + 1 = F n + 5 F n 2 ± 4 2 {\displaystyle F_{n+1}={\frac {F_{n}+{\sqrt {5F_{n}^{2}\pm 4}}}{2}}}
Знак перед коэффициентом 4 выбирается так, чтобы корень извлекался нацело.
Свойства
F n + 1 = ∑ k = 0 ⌊ n / 2 ⌋ ( n − k k ) {\displaystyle F_{n+1}=\sum _{k=0}^{\lfloor n/2\rfloor }{n-k \choose k}} .
F 0 = 0 2 = 0 {\displaystyle F_{0}=0^{2}=0} , F 1 = 1 2 = 1 {\displaystyle F_{1}=1^{2}=1} , F 2 = 1 2 = 1 {\displaystyle F_{2}=1^{2}=1} , F 12 = 12 2 = 144 {\displaystyle F_{12}=12^{2}=144} .
x + x 2 + 2 x 3 + 3 x 4 + 5 x 5 + ⋯ = ∑ n = 0 ∞ F n x n = x 1 − x − x 2 {\displaystyle x+x^{2}+2x^{3}+3x^{4}+5x^{5}+\dots =\sum _{n=0}^{\infty }F_{n}x^{n}={\frac {x}{1-x-x^{2}}}}
z ( x , y ) = 2 x y 4 + x 2 y 3 − 2 x 3 y 2 − y 5 − x 4 y + 2 y , {\displaystyle z(x,y)=2xy^{4}+x^{2}y^{3}-2x^{3}y^{2}-y^{5}-x^{4}y+2y,}
на множестве неотрицательных целых чисел x и y.[5]
1, 3, 8, 6, 20, 24, 16, 12, 24, 60, 10, 24, 28, 48, 40, 24, 36, … (последовательность A001175 в OEIS)
Вариации и обобщения
В других областях
Существует мнение, что почти все утверждения, находящие числа Фибоначчи в природных и исторических явлениях, неверны — это распространённый миф, который часто оказывается неточной подгонкой под желаемый результат[8][9].
В природе
См. также
Примечания
Литература
Дерево Фибоначчи
Материал из Википедии — свободной энциклопедии
Стабильная версия была проверена 21 февраля 2017. Имеются непроверенные изменения в шаблонах или файлах.
В этой статье не хватает ссылок на источники информации . Информация должна быть проверяема, иначе она может быть поставлена под сомнение и удалена. Вы можете отредактировать эту статью, добавив ссылки на авторитетные источники. Эта отметка установлена 21 февраля 2017 года. |
Дерево Фибоначчи — АВЛ-дерево с наименьшим числом вершин при заданной высоте (глубине).
Число вершин
Одно из весьма существенных свойств дерева Фибоначчи — количество вершин в нём может принимать только некоторый набор значений. Пусть N h {\displaystyle N_{h}} — число вершин в дереве Фибоначчи с высотой h {\displaystyle h} , тогда N 0 = 0 {\displaystyle N_{0}=0} , N 1 = 1 {\displaystyle N_{1}=1} , а для произвольного h число вершин можно описать рекуррентно: N h = N h − 1 + N h − 2 + 1 {\displaystyle N_{h}=N_{h-1}+N_{h-2}+1} . Дерево Фибоначчи названо так из-за схожести приведённой формулы с рекуррентным соотношением, определяющим последовательность чисел Фибоначчи. Для высоты h {\displaystyle h} число вершин N h = Φ h + 2 − 1 {\displaystyle N_{h}=\Phi _{h+2}-1} , где Φ n {\displaystyle \Phi _{n}} — n {\displaystyle n} -ое число Фибоначчи.
См. также
Дерево (структура данных)
Материал из Википедии — свободной энциклопедии
Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 8 июня 2017; проверки требуют 2 правки.
У этого термина существуют и другие значения, см. Дерево (значения).
Простой пример дерева
Дерево — одна из наиболее широко распространённых структур данных в информатике, эмулирующая древовидную структуру в виде набора связанных узлов. Является связным графом, не содержащим циклы. Большинство источников также добавляют условие на то, что рёбра графа не должны быть ориентированными. В дополнение к этим трём ограничениям, в некоторых источниках указывается, что рёбра графа не должны быть взвешенными.
Содержание
Определения
Дерево считается ориентированным, если в корень не заходит ни одно ребро.
Узлы
Узел является экземпляром одного из двух типов элементов графа, соответствующим объекту некоторой фиксированной природы. Узел может содержать значение, состояние или представление отдельной информационной структуры или самого дерева. Каждый узел дерева имеет ноль или более узлов-потомков, которые располагаются ниже по дереву (по соглашению, деревья 'растут' вниз, а не вверх, как это происходит с настоящими деревьями). Узел, имеющий потомка, называется узлом-родителем относительно своего потомка (или узлом-предшественником, или старшим). Каждый узел имеет не больше одного предка. Высота узла — это максимальная длина нисходящего пути от этого узла к самому нижнему узлу (краевому узлу), называемому листом. Высота корневого узла равна высоте всего дерева. Глубина вложенности узла равна длине пути до корневого узла.
Корневые узлы
Узел, не имеющий предков (самый верхний), называется корневым узлом. Это узел, на котором начинается выполнение большинства операций над деревом (хотя некоторые алгоритмы начинают выполнение с «листов» и выполняются, пока не достигнут корня). Все прочие узлы могут быть достигнуты путём перехода от корневого узла по рёбрам (или ссылкам). (Согласно формальному определению, каждый подобный путь должен быть уникальным). В диаграммах он обычно изображается на самой вершине. В некоторых деревьях, например, кучах, корневой узел обладает особыми свойствами. Каждый узел дерева можно рассматривать как корневой узел поддерева, «растущего» из этого узла.
Поддеревья
Поддерево — часть древообразной структуры данных, которая может быть представлена в виде отдельного дерева. Любой узел дерева T вместе со всеми его узлами-потомками является поддеревом дерева T. Для любого узла поддерева либо должен быть путь в корневой узел этого поддерева, либо сам узел должен являться корневым. То есть поддерево связано с корневым узлом целым деревом, а отношения поддерева со всеми прочими узлами определяются через понятие соответствующее поддерево (по аналогии с термином «соответствующее подмножество»).
Упорядочивание деревьев
Существует два основных типа деревьев. В рекурсивном дереве или неупорядоченном дереве имеет значение лишь структура самого дерева без учёта порядка потомков для каждого узла. Дерево, в котором задан порядок (например, каждому ребру, ведущему к потомку, присвоены различные натуральные числа) называется деревом с именованными рёбрами или упорядоченным деревом со структурой данных, заданной перед именованием и называемой структурой данных упорядоченного дерева.
Упорядоченные деревья являются наиболее распространёнными среди древовидных структур. Двоичное дерево поиска — одно из разновидностей упорядоченного дерева.
Представление деревьев
Существует множество различных способов представления деревьев. Наиболее общий способ представления изображает узлы как записи, расположенные в динамически выделяемой памяти с указателями на своих потомков, предков (или и тех и других), или как элементы массива, связанные между собой отношениями, определёнными их позициями в массиве (например, двоичная куча).
Деревья как графы
В теории графов дерево — связный ациклический граф. Корневое дерево — это граф с вершиной, выделенной в качестве корневой. В этом случае любые две вершины, связанные ребром, наследуют отношения «родитель-потомок». Несвязный граф, состоящий исключительно из деревьев, называется лесом.
Методы обхода
Основная статья: Обход дерева
Пошаговый перебор элементов дерева по связям между узлами-предками и узлами-потомками называется обходом дерева. Зачастую операция может быть выполнена переходом указателя по отдельным узлам. Обход, при котором каждый узел-предок просматривается прежде его потомков, называется предупорядоченным обходом или обходом в прямом порядке (pre-order walk), а когда просматриваются сначала потомки, а потом предки, то обход называется поступорядоченным обходом или обходом в обратном порядке (post-order walk). Существует также симметричный обход, при котором посещается сначала левое поддерево, затем узел, затем — правое поддерево, и обход в ширину, при котором узлы посещаются уровень за уровнем (N-й уровень дерева — множество узлов с высотой N). Каждый уровень обходится слева направо.
Общие операции
Общее применение
См. также
Распространённые древовидные структуры
Самобалансирующиеся двоичные деревья поиска
Прочие деревья
Примечания
Литература
Ссылки
АВЛ-дерево
Материал из Википедии — свободной энциклопедии
Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 14 декабря 2015; проверки требуют 11 правок.
Эта статья или раздел нуждается в переработке. Пожалуйста, улучшите статью в соответствии с правилами написания статей. |
АВЛ-дерево
дерево поиска
1962 году
Адельсон-Вельский Георгий Максимович и Ландис Евгений Михайлович
Временная сложность
в О-символике
АВЛ-дерево — сбалансированное по высоте двоичное дерево поиска: для каждой его вершины высота её двух поддеревьев различается не более чем на 1.
АВЛ — аббревиатура, образованная первыми буквами фамилий создателей (советских учёных) Адельсон-Вельского Георгия Максимовича и Ландиса Евгения Михайловича.
Содержание
Максимальная высота
Максимальная высота АВЛ-дерева при заданном числе узлов [1]:
h ≤ ⌊ 1.45 log 2 ( n + 2 ) ⌋ {\displaystyle h\;\leq \;\lfloor 1.45\log _{2}(n+2)\rfloor \;}
Количество возможных высот на практике сильно ограничено (при 32-битной адресации максимальная высота равна 45, при 48-битной — 68), поэтому лучше заранее подсчитать все возможные значения минимального количества узлов для каждой высоты с помощью рекуррентной формулы для дерева Фибоначчи:
n 0 = 0 {\displaystyle n_{0}=0} ,
n 1 = 1 {\displaystyle n_{1}=1} ,
n h = n h − 2 + n h − 1 + 1 {\displaystyle n_{h}=n_{h-2}+n_{h-1}+1} .
Промежуточные значения количества узлов будут соответствовать предыдущей (меньшей) высоте.
Балансировка
Относительно АВЛ-дерева балансировкой вершины называется операция, которая в случае разницы высот левого и правого поддеревьев = 2, изменяет связи предок-потомок в поддереве данной вершины так, что разница становится <= 1, иначе ничего не меняет. Указанный результат получается вращениями поддерева данной вершины.
Используются 4 типа вращений:
Малое левое вращение | Данное вращение используется тогда, когда высота b-поддерева — высота L = 2 и высота С <= высота R. | |
Большое левое вращение | Данное вращение используется тогда, когда высота b-поддерева — высота L = 2 и высота c-поддерева > высота R. | |
Малое правое вращение | Данное вращение используется тогда, когда высота b-поддерева — высота R = 2 и высота С <= высота L. | |
Большое правое вращение | Данное вращение используется тогда, когда высота b-поддерева — высота R = 2 и высота c-поддерева > высота L. |
В каждом случае достаточно просто доказать то, что операция приводит к нужному результату и что полная высота уменьшается не более чем на 1 и не может увеличиться. Также можно заметить, что большое левое вращение это композиция правого малого вращения и левого малого вращения. Из-за условия балансированности высота дерева О(log(N)), где N- количество вершин, поэтому добавление элемента требует O(log(N)) операций.
Алгоритм добавления вершины
Показатель сбалансированности в дальнейшем будем интерпретировать как разность между высотой левого и правого поддерева, а алгоритм будет основываться на типе TAVLTree, описанном выше. Непосредственно при вставке (листу) присваивается нулевой баланс. Процесс включения вершины состоит из трех частей (данный процесс описан Никлаусом Виртом в «Алгоритмы и структуры данных»):
Будем возвращать в качестве результата функции, уменьшилась высота дерева или нет. Предположим, что процесс из левой ветви возвращается к родителю (рекурсия идет назад), тогда возможны три случая: { hl — высота левого поддерева, hr — высота правого поддерева } Включение вершины в левое поддерево приведет к
В третьей ситуации требуется определить балансировку левого поддерева. Если левое поддерево этой вершины (Tree^.left^.left) выше правого (Tree^.left^.right), то требуется большое правое вращение, иначе хватит малого правого. Аналогичные (симметричные) рассуждения можно привести и для включение в правое поддерево.
Алгоритм удаления вершины
Для простоты опишем рекурсивный алгоритм удаления. Если вершина — лист, то удалим её и вызовем балансировку всех её предков в порядке от родителя к корню. Иначе найдём самую близкую по значению вершину в поддереве наибольшей высоты (правом или левом) и переместим её на место удаляемой вершины, при этом вызвав процедуру её удаления.
Докажем, что данный алгоритм сохраняет балансировку. Для этого докажем по индукции по высоте дерева, что после удаления некоторой вершины из дерева и последующей балансировки высота дерева уменьшается не более, чем на 1. База индукции: Для листа очевидно верно. Шаг индукции: Либо условие балансированности в корне (после удаления корень может изменится) не нарушилось, тогда высота данного дерева не изменилась, либо уменьшилось строго меньшее из поддеревьев => высота до балансировки не изменилась => после уменьшится не более чем на 1.
Очевидно, что в результате указанных действий процедура удаления вызывается не более 3 раз, так как у вершины, удаляемой по второму вызову, нет одного из поддеревьев. Но поиск ближайшего каждый раз требует O(N) операций. Становится очевидной возможность оптимизации: поиск ближайшей вершины может быть выполнен по краю поддерева, что сокращает сложность до O(log(N)).
Дата: 2018-12-28, просмотров: 250.