Коды Прюфера — различия между версиями
Berkut (обсуждение | вклад) (→Пример декодирования кода Прюфера) |
Berkut (обсуждение | вклад) м |
||
Строка 13: | Строка 13: | ||
|proof= | |proof= | ||
# Вершина с номером <tex>n</tex> не может быть удалена, следовательно на последнем шаге у неё была смежная вершина, и число <tex>n</tex> встретилось в коде. | # Вершина с номером <tex>n</tex> не может быть удалена, следовательно на последнем шаге у неё была смежная вершина, и число <tex>n</tex> встретилось в коде. | ||
− | # Если вершина не является листом, то у неё на некотором шаге была смежная вершина - лист, следовательно номер этой вершины встречается в коде. | + | # Если вершина не является листом, то у неё на некотором шаге была смежная вершина <tex>-</tex> лист, следовательно номер этой вершины встречается в коде. |
# Если вершина является листом с номером меньше <tex>n</tex>, то она была удалена до того, как был удален ее сосед, следовательно ее номер не встречается в коде. | # Если вершина является листом с номером меньше <tex>n</tex>, то она была удалена до того, как был удален ее сосед, следовательно ее номер не встречается в коде. | ||
− | Таким образом, номера всех вершин, не являющихся листьями или имеющих номер <tex>n</tex>, встречаются в коде Прюфера, а остальные - нет. | + | Таким образом, номера всех вершин, не являющихся листьями или имеющих номер <tex>n</tex>, встречаются в коде Прюфера, а остальные <tex>-</tex> нет. |
}} | }} | ||
Строка 25: | Строка 25: | ||
|proof= | |proof= | ||
Доказательство проведем по индукции. | Доказательство проведем по индукции. | ||
− | База. <tex>n = 1</tex> - верно. | + | База. <tex>n = 1</tex> <tex>-</tex> верно. |
<br> | <br> | ||
Переход от <tex>n</tex> к <tex>n + 1</tex>. | Переход от <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> не лежащее в <tex>A</tex>. По предыдущей лемме <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>. А теперь мы можем применить предположение индукции. | + | Выберем минимальное число <tex>v</tex> не лежащее в <tex>A</tex>. По предыдущей лемме <tex>v</tex> <tex>-</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>. А теперь мы можем применить предположение индукции. |
}} | }} | ||
Строка 51: | Строка 51: | ||
== Источники == | == Источники == | ||
[http://www.intuit.ru/department/algorithms/graphsuse/11/2.html Интернет Университет INTUIT | Представление с помощью списка ребер и кода Прюфера] | [http://www.intuit.ru/department/algorithms/graphsuse/11/2.html Интернет Университет INTUIT | Представление с помощью списка ребер и кода Прюфера] | ||
+ | |||
+ | [[Категория: Алгоритмы и структуры данных]] | ||
+ | [[Категория: Остовные деревья ]] |
Версия 09:03, 10 декабря 2011
Содержание
Коды Прюфера.
Кодирование Прюфера переводит помеченные деревья порядка
в последовательность чисел от до по алгоритму:Пока количество вершин больше одной { 1. Выбирается листс минимальным номером. 2. В код Прюфера добавляется номер вершины, смежной с . 3. Вершина и инцидентное ей ребро удаляются из дерева. }
Полученная последовательность называется кодом Прюфера для заданного дерева.
Лемма: |
Номер вершины встречается в коде Прюфера тогда и только тогда, когда не является листом или имеет номер . |
Доказательство: |
|
Лемма: |
По любой последовательности длиной из чисел от до можно построить помеченное дерево,
для которого эта последовательность является кодом Прюфера. |
Доказательство: |
Доказательство проведем по индукции.
База. |
Теорема: |
Кодирование Прюфера задаёт биекцию между множествами помеченных деревьев порядка и последовательностями длиной из чисел от до |
Доказательство: |
|
Следствием из этой теоремы является формула Кэли.
Пример построения кода Прюфера
Пример декодирования кода Прюфера
Источники
Интернет Университет INTUIT | Представление с помощью списка ребер и кода Прюфера