- •Основная теорема теории чисел Теорема: 4
- •Алгоритм Ферма
- •Бинарный алгоритм
- •Разложение числа в цепную дробь
- •Вычисление подходящих дробей
- •Диафантовы уравнения
- •Сравнение
- •Арифметика сравнений
- •Функция Эйлера и ее свойства.
- •Теорема Эйлера-Ферма (Малая теорема Ферма)
- •Решение сравнений в первой степени.
- •Теорема: Вильсена
- •Китайская теорема об остатках
- •Многочлены
- •Наибольший общий делитель
- •Алгоритм Евклида для 2-х многочленов
- •Частный случай теоремы 23
- •Приближенная интерполяция
- •Метод наименьших квадратов
- •Полиномиальное кодирование.
- •Коды Шеннона-Фено
- •Алгоритм Хоффмана.
- •Лексикографический порядок
- •Антилексикографический порядок
- •Алгоритм лексикографического порядка
- •Бинарный код Грея
- •Числа Стирлинга первого и второго рода
- •Числа Стирлинга
- •Числа Белла
- •Разбиение чисел
- •Рекуррентное уравнение (Уравнение в конечных разностях)
- •Линейные рекуррентные уравнения порядка k
- •Нахождение частного решения неоднородного уравнения
- •Основы теории графов
- •Связность
- •Алгоритм построения Эйлеровой цепи.
- •Деревья
- •Коциклы
- •Элементы теории вероятности
Алгоритм построения Эйлеровой цепи.
Списки инцидентности.
Каждой вершине сопоставим список, в этом списке все вершины смежные с данным ребром.
[v] VV1V2…
Для изолированной вершины пустой список.
Граф – это массив списков.
[V1] Для неориентированного графа ребро
(V1,V2) графа вершина в V1 и
[V2] эта же вершина V2 может быть список
списков.
….
[Vn]
Из произвольной вершины идем к смежной и это ребро удаляем и.т.д. т.к. все вершины четные, то мы вернемся в V0 и заносим вершину в маршрут, а из стека удаляем, переходим к следующей вершине в стеке.
Списки инцидентности
S1 SE={} сюда будем заносить вершины, заносим все подряд.
Stack={V}
S2 If Stack – пуст Stop Граф имеет Эйлерову цепь
S3 else V:=top(stack) – Вытаскиваем верхний элемент
If (SI[V]0) U:=SI[V]; Список инцидентности, не пуст, то вытаскиваем элемент
Del(U,V) в списке для U удаляем V, а в списке для V удаляем U и заносим в стек
Если SI[V]=0, то V SE{} и V удаляем из стека.
Пример:
4
3
5
1 6
8
2
7 9
Список Инцидентности
123
2378
31245
435
53468
65789
72689
82567
967
Stack 1 2,1 3,2,1 1X,3,2,1 4,3,2,1 5,4,3,2,1 3X,5,4,3,2,1 6,5,4,3,2,1
SE 0 0 0 1 1 1 1,3 1,3
Stack 7,6,5,4,3,2,1 2,7,6,5,4,3,2,1 8,2,7,6,5,4,3,2,1 5X,8,2,7,6,5,4,3,2,1
SE 1,3 1,3 1,3 1,3,5
Stack 6,8,2,7,6,5,4,3,2,1 9,6,8,2,7,6,5,4,3,2,1 7,9,6,8,2,7,6,5,4,3,2,1
SE 1,3,5 1,3,5 1,3,5
Удаляем весь стек SE 1,3,5,8,7,9,6,8,2,7,6,5,4,3,2,1
Деревья, каркасы.
Деревья
Определение: Связанный граф не содержащий циклов называется деревом.
Просто граф не содержащий циклов, называется лесом.
Дерево Лес
Теорема: 48
Граф является деревом тогда и только тогда, когда между его двумя вершинами существует одна и только одна цепь.
Доказательство:
Граф – дерево, тогда граф связан и две вершины можно соединить цепью, пусть есть две цепи, тогда из них, можно построить цикл (следствие 2, теорема 43) и наоборот.
Теорема: 49
Дерево содержащее не менее двух вершин имеет, по крайней мере 2 концевые вершины (DegV<1).
Доказательство: Рассмотрим максимальную цепь:
a0x1a1x2…xLaL
Докажем, что deg a0 и aL =1
Пусть deg aL>1, тогда из нее есть ребро aL+1, xLaL причем aL+1ai, иначе получился бы цикл, это не дерево => максимальная цепь удлиняется, значит deg aL>1, тоже для а0.
Лемма: После удаления из дерева концевой вершины вместе с ребром получается дерево.
Теорема: 50 Дерево с Р вершинами имеет Р-1 ребро.
Доказательство: Индукция по P:
1. P=1 - 0 ребер.
2. Индукционный переход Пусть P<=k верно
Докажем для k+1>=2.
Дерево не более двух вершин или 2 концевые вершины (т. 49) по лемме одну концевую вершину убираем, тогда получим,
Для k вершин - k-1 ребро
+ +
1 1
k+1 вершин - k ребер
Определение: Дерево в графе, которое содержит, все его вершины называется каркасом данного графа (стягивающее дерево, покрывающий граф)
Т.е. ребра, которые надо оставить, чтобы сохранилась связанность.
каркас
Теорема: 51 В связанном графе существует по крайней мере 1 каркас.
Доказательство:
Если в связанном графе нет циклов, то это дерево.
Если есть циклы, то удаляем любое ребро из цикла, пока не кончиться цикл.
Пример, построения графа в глубину.
{(V,U)} идет в каркас, мы обойдем все вершины и у нас будет каркас( т.к. не будет циклов), мы не возвращаемся обратно в вершину.
8 9
5 6 7
2 3 4
1
8,5,6,7,4,3,2,1
Т – множество ребер, содержащих каркас.
T={(1,2), (2,3), (3,4), (4,7), (7,6), (6,5), (5,8), (6,9)}
Если граф дерево, то существует 1 каркас, если граф цикл, то – несколько.
Следствие к т.51
1) Граф связан G=(V,E) и есть подмножество ребер FE, для любого цикла графа G существует хотя бы 1 ребро не лежащее в F, тогда можно построить каркас Т, все ребра F будут принадлежать T. T=(V,E`) FE`
Доказательство:
Мы можем удалить ребро из цикла, не принадлежащее F.
2) Связанный граф с Р вершинами и Р-1 ребрами, является деревом.
Доказательство:
Допустим P, P-1, если были бы циклы, то при построении Р вершин, было бы Р ребер, т.е. удаляя 1 ребро получим дерево.
Если связанный граф имеет p вершин и q ребер, то q-p+1 >= 0.
Строя каркас, Р и Р-1 ребер, а в графе больше ребер, чем в каркасе. Следовательно это и будет >= 0.
Определение: Есть произвольный граф p – вершин, q – ребер.
k – число компонент связности, тогда говорят, что :=p-k –называется корангом графа.
:=q-p+k – называется цикломатическим числом графа.
p1q1 p2q2 … pkqk
(V1,E1) (V2,E2) … (Vk,Ek)
k – число компонент связности. Тогда для любой компоненты есть коранг и цикломатическое число.
i:=pi –1 =i=1ki
i:=qi -pi+1 =i=1ki
Теорема: 52
Для любого графа его >=0, т.к. i=qi-pi+1>=0 (Теорема 51)
G – связанный
G – дерево <=> =0 ( необходимый и достаточный признак дерева).
Определение: Пусть есть связанный граф P – вершин, q – ребер
G(V,E), T=(V,E) – стягивающее дерево
XE` - ребра из каркаса называются ветвями, которые не вошли хорды.
Если возьмем каркас и к этому каркасу прибавим хорду, то получим цикл. Этот цикл называется главным циклом, определяемым этой хордой.
yE\E` y – хорда
Каждой хорде соответствует главный цикл.
М – главным циклов (сколько хорд)
P – вершин, q – ребер из них вычесть ветви (p-1)
q-(p-1)=
Пример: На главные циклы
x1,x2,x3,x4,x5 – ветви с y1 e y2 циклы: bcedb: y1
y1,y2,y3 – хорды x2 b x3 x4dx5 f defd : y2
ax1 y3 abdfa: y3
Определение: Пусть есть каркас данного графа
Элементарное преобразование дерева. Вводим хорду, получаем цикл, удаляем ветвь, получаем каркас.
Главные циклы и коциклы.