Коды Прюфера — различия между версиями
(→Коды Прюфера.) |
|||
Строка 1: | Строка 1: | ||
== Коды Прюфера. == | == Коды Прюфера. == | ||
Кодирование Прюфера переводит помеченные деревья порядка <tex>n</tex> в последовательность чисел от <tex>1</tex> до <tex>n</tex> по алгоритму: | Кодирование Прюфера переводит помеченные деревья порядка <tex>n</tex> в последовательность чисел от <tex>1</tex> до <tex>n</tex> по алгоритму: | ||
− | Пока количество вершин | + | Пока количество вершин больше одной { |
− | 1. Выбирается лист с минимальным номером. | + | 1. Выбирается лист v с минимальным номером. |
− | 2. В | + | 2. В код Прюфера добавляется номер вершины, смежной с v |
− | 3. | + | 3. Вершина v и инцидентное ей ребро удаляются из дерева. |
} | } | ||
− | Полученная последовательность | + | Полученная последовательность называется '''кодом Прюфера''' для заданного дерева. |
{{Лемма | {{Лемма | ||
|statement= | |statement= | ||
− | + | Номер вершины v встречается в коде Прюфера тогда и только тогда, когда v не является листом или v имеет номер <tex>n</tex>. | |
|proof= | |proof= | ||
− | + | # Вершина с номером <tex>n</tex> не может быть удалена, следовательно на последнем шаге у неё была смежная вершина, и число <tex>n</tex> встретилось в коде. | |
+ | # Если вершина не является листом, то у неё на некотором шаге была смежная вершина - лист, следовательно номер этой вершины встречается в коде. | ||
+ | # Если вершина является листом с номером меньше <tex>n</tex>, то она была удалена до того, как был удален ее сосед, следовательно ее номер не встречается в коде. | ||
− | + | Таким образом, номера всех вершин, не являющихся листьями или имеющих номер <tex>n</tex>, встречаются в коде Прюфера, а остальные - нет. | |
− | |||
− | |||
− | |||
− | |||
}} | }} | ||
{{Лемма | {{Лемма | ||
|statement= | |statement= | ||
− | По любой последовательности длиной <tex>n - 2</tex> из чисел от <tex>1</tex> до <tex>n</tex> можно построить помеченное дерево. | + | По любой последовательности длиной <tex>n - 2</tex> из чисел от <tex>1</tex> до <tex>n</tex> можно построить помеченное дерево, |
+ | для которого эта последовательность является кодом Прюфера. | ||
|proof= | |proof= | ||
− | Доказательство по индукции. | + | Доказательство проведем по индукции. |
База. <tex>n = 1</tex> - верно. | База. <tex>n = 1</tex> - верно. | ||
<br> | <br> | ||
− | Переход <tex>n | + | Переход от <tex>n</tex> к <tex>n + 1</tex>. |
<br> | <br> | ||
Пусть у нас есть последовательность: <tex>A = [a_1, a_2, ..., a_{n - 2}].</tex> | Пусть у нас есть последовательность: <tex>A = [a_1, a_2, ..., a_{n - 2}].</tex> | ||
− | Выберем минимальное число <tex>v</tex> не лежащее в A. | + | Выберем минимальное число <tex>v</tex> не лежащее в A. По предыдущей лемме <tex>v</tex> - вершина, которую мы удалили первой. Соединим <tex>v</tex> и <tex>a_1</tex> ребром. Выкинем из последовательности <tex>A</tex> число <tex>a_1</tex>. Перенумеруем вершины, для всех <tex>a_i > v</tex> заменим <tex>a_i</tex> на <tex>a_i - 1</tex>. А теперь мы можем применить предположение индукции. |
}} | }} | ||
Строка 38: | Строка 37: | ||
Кодирование Прюфера задаёт биекцию между множествами помеченных деревьев порядка <math>n</math> и последовательностями длиной <tex>n - 2</tex> из чисел от <tex>1</tex> до <tex>n</tex> | Кодирование Прюфера задаёт биекцию между множествами помеченных деревьев порядка <math>n</math> и последовательностями длиной <tex>n - 2</tex> из чисел от <tex>1</tex> до <tex>n</tex> | ||
|proof= | |proof= | ||
− | + | # Каждому помеченному дереву приведенный алгоритм сопоставляет последовательность. | |
− | + | # Каждой последовательности, как следует из предыдущей леммы, соотвествует помеченное дерево. | |
− | |||
− | |||
}} | }} | ||
+ | |||
Следствием из этой теоремы является [[Количество помеченных деревьев|формула Кэли]]. | Следствием из этой теоремы является [[Количество помеченных деревьев|формула Кэли]]. |
Версия 02:56, 9 октября 2010
Коды Прюфера.
Кодирование Прюфера переводит помеченные деревья порядка
в последовательность чисел от до по алгоритму:Пока количество вершин больше одной { 1. Выбирается лист v с минимальным номером. 2. В код Прюфера добавляется номер вершины, смежной с v 3. Вершина v и инцидентное ей ребро удаляются из дерева. }
Полученная последовательность называется кодом Прюфера для заданного дерева.
Лемма: |
Номер вершины v встречается в коде Прюфера тогда и только тогда, когда v не является листом или v имеет номер . |
Доказательство: |
|
Лемма: |
По любой последовательности длиной из чисел от до можно построить помеченное дерево,
для которого эта последовательность является кодом Прюфера. |
Доказательство: |
Доказательство проведем по индукции.
База. |
Теорема: |
Кодирование Прюфера задаёт биекцию между множествами помеченных деревьев порядка и последовательностями длиной из чисел от до |
Доказательство: |
|
Следствием из этой теоремы является формула Кэли.