Пример решения задачи 5
Выполним распаковку кода Прюфера. С этой целью в верхней строке выпишем заданный код. Под этим кодом выпишем последовательность состоящую из чисел 1, 2, …, m+2, где m – длина кода:
Положим B=. Через ai обозначим i-й элемент кода. В частности a1=7, a2=1, a3=5 и т.д. Будем выполнять цикл, на каждой итерации которого находится ребро дерево и удаляется элемент из множества B. На i-й итерации цикла, при i = 1, 2, …, m+1, минимальный элемент bÎB, среди не равных никакому из aj » j ≥ i, соединяется с ai и затем удаляется из B. Цикл выполняется для i=1, 2, 3, 4, 5. В нашей задаче
При i=1 наименьший из среди не равных
равен b=2. Присоединяем ребро . Вычеркиваем 2 из верхней последовательности, и 7 – из нижней. B = B\ =.
При i=2 наименьший из среди не равных
равен b=6. Присоединяем ребро . Вычеркиваем 6 из верхней последовательности, и 1 – из нижней. B = B\ =.
При i=3 наименьший из среди не равных
равен b=1. Присоединяем ребро . Вычеркиваем 1 из верхней последовательности, и 5 – из нижней.B = B\ =.
При i=4 наименьший из среди не равных
равен b=5. Присоединяем ребро . Вычеркиваем 5 из верхней последовательности, и 4 – из нижней.B = B\ =.
При i=5 наименьший из среди не равных
равен b=4. Присоединяем ребро . Вычеркиваем 4 из верхней последовательности, и 3 – из нижней. B = B\ =.
Цикл закончился. Соединяем два оставшихся элемента 3 и 7.
Рис. 2. Дерево с кодом 71543
Сделаем проверку. С этой целью построим код для полученного дерева. Построение кода состоит из цикла, на каждой итерации которого удаляется висячая вершина с наименьшим номером и выписывается номер вершины, соединенной с висячей.
В данном случае удаляем 2 и выписываем 7. Затем удаляем 6 и выписываем 1. Затем удаляем 1 и выписываем 5. Удаляем 5 и выписываем 4. Удаляем 4 и выписываем 3. Цикл заканчивается, когда останется две вершины. В результате получаем код, состоящий из выписанных чисел 7, 1, 5, 4, 3. Этот код совпадает с заданным. Следовательно, дерево построено верно.
Задача 6. Моноиды
Задано вещественное число a и подмножество M Í R множества вещественных чисел. Будет ли M относительно операции x*y = x + y + axy моноидом? Группой? Ниже N = обозначает множество натуральных чисел, Q – множество рациональных дробей m/n (где m,n Î Z, n¹0).
1. M = [0, 1[, a = –1 | 19. M = Q, a = ½ |
2. M = [0, 1[, a = –2 | 20. M = [0, ½], a = –2 |
3. M = ]-1, 1[, a = –1 | 21. M = [0, 5], a = –1/5 |
4. M = , a = –1 | 22. M = N, a = 2 |
5. M = N, a = –1 | 23. M = R, a = – ½ |
6. M = R, a = 1 | 24. M = Q, a = – 1/3 |
7. M = [0, 1], a = –2 | 25. M = N, a = 0 |
8. M = Q, a = 2 | 26. M = ] –1,0], a = 1 |
9. M = R \ , a = –1 | 27. M = ] –1,0], a = 2 |
10. M = R, a = 2 | 28. M = ] –1,0], a = 3/2 |
11. M = R, a = ½ | 29. M = [0,1], a = – 3/2 |
12. M = R, a = – ½ | 30. M = Q, a = ¾ |
13. M = N, a = –2 | 31. M = ] –1,0], a = 4/3 |
14. M = [0, 1[, a = – 1 | 32. M = R \ , a = –2 |
15. M = Q, a = 0 | 33. M = [0, 1/3], a = –3 |
16. M = R, a = – 1 | 34. M = [0,1], a = – 4/3 |
17. M = [0, 1], a = – 3/2 | 35. M = Q, a = 5/6 |
18. M = Q, a = – 1 | 36. M = R \ , a = — 6/5 |
Пример решения задачи 6.
Будет ли множество M = [0,1] с операцией x*y = x+y – (9/8)xy полугруппой? Моноидом? Группой?
1) Проверим, будет ли x*yÎM при x,y ÎM. Это выполнено если для всех удовлетворяющих неравенствам 0£x, y£1 чисел x, y будет иметь место 0£x*y£1. Рассмотрим произвольный 0£y£1. Функция f(x)= x+y – (9/8)xy при фиксированном y будет линейной по x. На концах интервала [0,1] она принимает значения f(0)=y и f(1)=1-(1/8)y. Поскольку эти значения лежат в интервале [0,1], то значения этой функции во внутренних точках интервала принадлежат [0,1]. Отсюда для всех x,y Î M значения x*y принадлежат M.
2) Проверим ассоциативность (x*y)*z=x*(y*z). С этой целью раскроем обе части проверяемого равенства:
Поскольку последнее равенство имеет место, то операция * ассоциативна. Стало быть, (M,*) – полугруппа.
3) Проверим, будет ли (M,*) моноидом. Напомним, что моноидом называется полугруппа M, в которой существует элемент eÎM, удовлетворяющий для всех xÎM соотношениям x*e = e*x = x.
Этот элемент eÎM называется нейтральным. Для нахождения нейтрального элемента получаем тождество x+e –(9/8)xe = x, которое должно быть выполнено для всех xÎM. Легко видеть, что e=0 удовлетворяет этому тождеству. Отсюда вытекает, что (M,*) – моноид.
4) Проверим, будет ли (M,*) группой. Напомним, что моноид (M,*) называется группой, если для каждого x Î M найдется такой y Î M, что x*y = e. Отсюда данный моноид будет группой, если и только если для каждого xÎ M существует yÎM, удовлетворяющий уравнению x+y-(9/8)xy = 0. Находим y = -x/(1-(9/8)x). Отсюда для x=8/9 это уравнение не имеет решений. Стало быть, заданный моноид не является группой.
Ответ: (M,*) является полугруппой, моноидом, но не является группой
Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:
Источник
Алгоритм построения кода Прюфера по дереву
Вход: дерево с n вершинами.
Выход: код Прюфера длины n – 2.
Выбрать вершину v – лист дерева с наименьшим номером;
Добавить номер единственного соседа v в последовательность кода Прюфера;
Удалить вершину v из дерева;
Пример 1. Построение всех кодов Прюфера длины 2. Для этого следует рассмотреть все возможные деревья из 4 вершин. Под каждым деревом приведен соответствующий код.
Алгоритм составления дерева по коду:
1.Выписываем висячие вершины, всего вершин на 2 больше чем значений в коде дерева.
2. находим наименьшее натуральное число, которое не встречается в последовательности.
3. это число – номер вершины, которую необходимо соединить с вершиной, которая встречается первой в коде.
4. находим следующее число.
Рассмотрим применение данного алгоритма на примере.
Пример 1. Постройте дерево, которому соответствует код
1. Выписываем висячие вершины. Всего вершин на 2 больше чем значений в коде дерева, в данном случае такими будут 3,4,5,6,7.
2. Вершину с минимальным номером (3) соединяем с первым значением кода (1).
3. Поскольку вершина (1) еще встречается в коде , то соединяем следующую висячую вершину (4) с вершиной из кода (2).
Дальше вершины (2) больше нет в коде, потому она становится висячей с наименьшим номером, потому следующим шагом я соединяю ее (2) со следующим значением кода (1).
Далее 6 – 7. Код закончился, осталась 6. Соединяем ее с 1.
Пример 2. Построить дерево по к . Смотреть решение »
Задана матрица инцидентности неориентированного графа G:
Источник
Алгоритм построения кода Прюфера по дереву
Вход: дерево с n вершинами.
Выход: код Прюфера длины n – 2.
Выбрать вершину v – лист дерева с наименьшим номером;
Добавить номер единственного соседа v в последовательность кода Прюфера;
Удалить вершину v из дерева;
Пример 1. Построение всех кодов Прюфера длины 2. Для этого следует рассмотреть все возможные деревья из 4 вершин. Под каждым деревом приведен соответствующий код.
Алгоритм составления дерева по коду:
1.Выписываем висячие вершины, всего вершин на 2 больше чем значений в коде дерева.
2. находим наименьшее натуральное число, которое не встречается в последовательности.
3. это число – номер вершины, которую необходимо соединить с вершиной, которая встречается первой в коде.
4. находим следующее число.
Рассмотрим применение данного алгоритма на примере.
Пример 1. Постройте дерево, которому соответствует код
1. Выписываем висячие вершины. Всего вершин на 2 больше чем значений в коде дерева, в данном случае такими будут 3,4,5,6,7.
2. Вершину с минимальным номером (3) соединяем с первым значением кода (1).
3. Поскольку вершина (1) еще встречается в коде , то соединяем следующую висячую вершину (4) с вершиной из кода (2).
Дальше вершины (2) больше нет в коде, потому она становится висячей с наименьшим номером, потому следующим шагом я соединяю ее (2) со следующим значением кода (1).
Далее 6 – 7. Код закончился, осталась 6. Соединяем ее с 1.
Пример 2. Построить дерево по к . Смотреть решение »
Решение задач линейного программирования графическим методом
Задача. Решить графически задачу линейного программирования, определив экстремальное значение целевой функции:
Построим область допустимых решений, т.е. решим графически систему неравенств. Для этого построим каждую прямую и определим полуплоскости, заданные неравенствами (полуплоскости обозначены штрихом).
Построим уравнение 3x1+x2 = 9 по двум точкам.
Для нахождения первой точки . Смотреть решение »
Категория: Линейное программирование | Просмотров: 13671 | Добавил: Admin | Дата: 08.02.2015 | Комментарии (0)
Источник
3.10. Кодирование деревьев
Выделим в дереве какую-нибудь одну вершину, которую назовем корнем. Полученное дерево с выделенной вершиной называетсякорневым.
Для задания (с точностью до изоморфизма) корневыхдеревьев используюткод из 0 и 1, который мы определим индуктивно.
Определение.Кодом корневого дерева с одним ребром является
.Пусть деревья
и
с корнямиa и b соответственно (см. рис.) имеют коды
и
.Тогда кодом дерева
с корнем с является код
, а кодом дерева
с корнем
— код
.
Пример 1. Написать код дерева, изображенного на рисунке.
Итак, код дерева —
.
Справедливо следующее утверждение:для того, чтобы последовательность нулей и единиц являлась кодом некоторого дерева необходимо и достаточно, чтобы число нулей и единиц в этой последовательности было одинаковым, причем в любом начальном отрезке последовательности количество нулей было не меньше количества единиц.
Чтобы построить корневое дерево по кодуиз нулей и единиц, нужно разбить последовательность на пары 0 и 1, следуя правилу: первая попавшаяся в коде единица образует пару с предшествующим нулем; каждая следующая единица образует пару с ближайшим слева неиспользованным нулем. Если образованные таким образом пары пометить снизу кода фигурными скобками, то каждая такая скобка будет соответствовать ребру графа.
Пример 2.Построить дерево по коду
.
Для задания помеченныхдеревьев, т.е. деревьев, вершины которых занумерованы, используют код из натуральных чисел.
Пусть дано помеченное дерево. Чтобы построить его код из натуральных чисел действуем следующим образом. Находим висячую вершину с наименьшим номером. Записываем номер смежной с ней вершины (это начало кода), после чего удаляем эту висячую вершину вместе с инцидентным ей ребром. Для полученного в результате данной операции дерева находим висячую вершину с наименьшим номером, записываем номер смежной с ней вершины (это продолжение кода), после чего удаляем эту висячую вершину вместе с инцидентным ей ребром. Так поступаем до тех пор, пока не останется последнее ребро.
Заметим, что длина кода из натуральных чисел на единицу меньше числа ребер и на две единицы меньше числа вершин данного дерева.
Пример 3.На рисунке изображено помеченное дерево. Его код
.
Построение дерева по коду из натуральных чиселрассмотрим на примере кода. Прежде всего, заметим, что дерево, которое нам предстоит построить, имеет 8 вершин.
Источник