0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>В этом уроке мы изучим еще один вид графов - древовидные. Именно этот вид графов активно используется в программировании - он связан с алгоритмами сортировки и поиска.</p>
1
<p>В этом уроке мы изучим еще один вид графов - древовидные. Именно этот вид графов активно используется в программировании - он связан с алгоритмами сортировки и поиска.</p>
2
<h2>Деревья</h2>
2
<h2>Деревья</h2>
3
<p><strong>Деревья</strong>- это связные графы без циклов. Их часто применяют в математике и информатике. Вот так они выглядят:</p>
3
<p><strong>Деревья</strong>- это связные графы без циклов. Их часто применяют в математике и информатике. Вот так они выглядят:</p>
4
<p>Как видно из примера, у деревьев определенная древовидная ветвистость, откуда они и получили свое название.</p>
4
<p>Как видно из примера, у деревьев определенная древовидная ветвистость, откуда они и получили свое название.</p>
5
<p>Благодаря связности и отсутствию циклов у деревьев есть ряд свойств:</p>
5
<p>Благодаря связности и отсутствию циклов у деревьев есть ряд свойств:</p>
6
<ul><li>В любом дереве есть ровно один путь из каждой вершины в каждую другую. Например, если есть два пути к вершине, то их можно объединить, чтобы получить цикл</li>
6
<ul><li>В любом дереве есть ровно один путь из каждой вершины в каждую другую. Например, если есть два пути к вершине, то их можно объединить, чтобы получить цикл</li>
7
<li>У деревьев наименьшее количество ребер, которое только может быть у графа. При этом они остаются связными. Каждое ребро дерева - режущее, значит, не лежит в цикле</li>
7
<li>У деревьев наименьшее количество ребер, которое только может быть у графа. При этом они остаются связными. Каждое ребро дерева - режущее, значит, не лежит в цикле</li>
8
<li>У деревьев наибольшее число ребер, которое может быть у графа без циклов. Добавление любого ребра к дереву создает ровно один цикл. Например, если добавить ребро между вершинами u и v, то получится цикл, включающий ребро uv и путь. Он гарантированно существует между u и v</li>
8
<li>У деревьев наибольшее число ребер, которое может быть у графа без циклов. Добавление любого ребра к дереву создает ровно один цикл. Например, если добавить ребро между вершинами u и v, то получится цикл, включающий ребро uv и путь. Он гарантированно существует между u и v</li>
9
</ul><h2>Листья и индукция</h2>
9
</ul><h2>Листья и индукция</h2>
10
<p>С древовидными графами работает механизм<strong>индукции</strong>- это значит, что по каждому дереву с n вершинами можно перемещаться с шагом n-1 ребро.</p>
10
<p>С древовидными графами работает механизм<strong>индукции</strong>- это значит, что по каждому дереву с n вершинами можно перемещаться с шагом n-1 ребро.</p>
11
<p>Для этого нам понадобится<strong>лист в дереве</strong>- вершина, которая находится на концах каждого дерева.</p>
11
<p>Для этого нам понадобится<strong>лист в дереве</strong>- вершина, которая находится на концах каждого дерева.</p>
12
<p>Разберем следующую теорему: у каждого дерева с хотя бы двумя вершинами есть хотя бы два листа. Докажем это утверждение.</p>
12
<p>Разберем следующую теорему: у каждого дерева с хотя бы двумя вершинами есть хотя бы два листа. Докажем это утверждение.</p>
13
<p>Рассмотрим любой путь максимальной длины в дереве. Поскольку у дерева две вершины и оно связное, этот путь должен существовать. У обеих конечных точек этого пути степень 1 в дереве. Их единственные соседи - вершины, которые располагаются перед ними на пути.</p>
13
<p>Рассмотрим любой путь максимальной длины в дереве. Поскольку у дерева две вершины и оно связное, этот путь должен существовать. У обеих конечных точек этого пути степень 1 в дереве. Их единственные соседи - вершины, которые располагаются перед ними на пути.</p>
14
<p>Обсудим, почему это работает именно так:</p>
14
<p>Обсудим, почему это работает именно так:</p>
15
<ul><li>У конечных точек не может быть других соседей на пути, поскольку это создало бы цикл, что невозможно в дереве</li>
15
<ul><li>У конечных точек не может быть других соседей на пути, поскольку это создало бы цикл, что невозможно в дереве</li>
16
<li>У конечных точек не может быть других соседей вне пути, поскольку тогда мы могли бы использовать такого соседа для расширения пути. Только это невозможно, так как у пути уже максимальная длина</li>
16
<li>У конечных точек не может быть других соседей вне пути, поскольку тогда мы могли бы использовать такого соседа для расширения пути. Только это невозможно, так как у пути уже максимальная длина</li>
17
</ul><p>Воспользуемся индукцией, чтобы доказать, что каждое дерево с n вершинами имеет n - 1 ребро.</p>
17
</ul><p>Воспользуемся индукцией, чтобы доказать, что каждое дерево с n вершинами имеет n - 1 ребро.</p>
18
<p>Предположим, что все деревья на n вершинах содержат n - 1 ребро. Пусть T - дерево на n + 1 вершинах. У T есть лист v. У графа T - v n вершин. При этом он является деревом, потому что удаление вершины не может создать цикл, а удаление листа не может разорвать граф.</p>
18
<p>Предположим, что все деревья на n вершинах содержат n - 1 ребро. Пусть T - дерево на n + 1 вершинах. У T есть лист v. У графа T - v n вершин. При этом он является деревом, потому что удаление вершины не может создать цикл, а удаление листа не может разорвать граф.</p>
19
<p>По гипотезе индукции T - v имеет n - 1 ребер. Чтобы получить T - v из T было удалено одно ребро, у T должно быть n ребер. Таким образом, результат индукции верен. Такую же технику можно использовать в доказательствах с участием других деревьев.</p>
19
<p>По гипотезе индукции T - v имеет n - 1 ребер. Чтобы получить T - v из T было удалено одно ребро, у T должно быть n ребер. Таким образом, результат индукции верен. Такую же технику можно использовать в доказательствах с участием других деревьев.</p>
20
<h2>Альтернативные определения деревьев</h2>
20
<h2>Альтернативные определения деревьев</h2>
21
<p>Любое из свойств дерева используют, чтобы переформулировать определение дерева.</p>
21
<p>Любое из свойств дерева используют, чтобы переформулировать определение дерева.</p>
22
<p>Для графа T эквивалентны следующие утверждения:</p>
22
<p>Для графа T эквивалентны следующие утверждения:</p>
23
<ol><li>T - дерево</li>
23
<ol><li>T - дерево</li>
24
<li>Каждая пара вершин графа T соединена ровно одним путем</li>
24
<li>Каждая пара вершин графа T соединена ровно одним путем</li>
25
<li>T связно, и удаление любого ребра разъединяет его</li>
25
<li>T связно, и удаление любого ребра разъединяет его</li>
26
<li>У T нет циклов, и добавление любого ребра создает цикл</li>
26
<li>У T нет циклов, и добавление любого ребра создает цикл</li>
27
<li>T - связный граф с n вершинами и n-1 ребрами</li>
27
<li>T - связный граф с n вершинами и n-1 ребрами</li>
28
<li>T - ациклический граф с n вершинами и n-1 ребром</li>
28
<li>T - ациклический граф с n вершинами и n-1 ребром</li>
29
</ol><p>Доказательство любой части этого определения включает аргументы, аналогичные тем, которые мы приводили выше. Существуют и другие способы комбинирования свойств деревьев для получения альтернативных характеристик деревьев.</p>
29
</ol><p>Доказательство любой части этого определения включает аргументы, аналогичные тем, которые мы приводили выше. Существуют и другие способы комбинирования свойств деревьев для получения альтернативных характеристик деревьев.</p>
30
<h2>Леса</h2>
30
<h2>Леса</h2>
31
<p>Если мы уберем связность из определения дерева, то получим<strong>лес</strong>- граф, в котором нет циклов. Он состоит из нескольких компонентов - деревьев:</p>
31
<p>Если мы уберем связность из определения дерева, то получим<strong>лес</strong>- граф, в котором нет циклов. Он состоит из нескольких компонентов - деревьев:</p>
32
<p>Деревья и леса - двучленные, то есть у них нет циклов.</p>
32
<p>Деревья и леса - двучленные, то есть у них нет циклов.</p>
33
<h2>Выводы</h2>
33
<h2>Выводы</h2>
34
<p>У деревьев много применений, особенно в информатике. В ней основное внимание уделяется деревьям с корнями. В таких деревьях одна вершина обозначается как корень, и от нее дерево растет наружу. При корнях нужно рассматривать вершины как родителей других вершин, как в семейном дереве.</p>
34
<p>У деревьев много применений, особенно в информатике. В ней основное внимание уделяется деревьям с корнями. В таких деревьях одна вершина обозначается как корень, и от нее дерево растет наружу. При корнях нужно рассматривать вершины как родителей других вершин, как в семейном дереве.</p>
35
<p>Еще есть бинарные деревья, в которых у каждой вершины не более двух дочерних вершин. Бинарные деревья важны во многих алгоритмах информатики, таких как поиск, сортировка и разбор выражений.</p>
35
<p>Еще есть бинарные деревья, в которых у каждой вершины не более двух дочерних вершин. Бинарные деревья важны во многих алгоритмах информатики, таких как поиск, сортировка и разбор выражений.</p>