Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГОСы - ответы (КБ-61).docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
3.51 Mб
Скачать

12. Сравнения и вычеты. Кольцо вычетов. Малая терема Ферма. Сравнения первой степени. Китайская теорема об остатках.

Сравнения

Зафиксируем натуральное число т =>1, которое условимся называть модулем.

Определение 1. Два целых числа а, bназовем сравнимыми по модулю т, если они при делении на т дают одинаковые остат­ки. Обозначение:

Рассмотрим простейшие свойства сравнений.

Сравнения первой степени – с-ва

Теорема 1. Сравнения целых чисел по модулю т обладают следующими свойствами для любых а, b, с, d€ Z:

(т. е. сравнения можно почленно складывать, вычитать и перемножать),

6) если d есть общий делитель чисел а, b, т, то

7) если числа а, b делятся на d и d взаимно просто с т, то

Классы вычетов по модулю т

Из свойств 1) — 3) сравнений видно, что отношение сравнимо­сти целых чисел по модулю т является отношением эквивалент­ности, и, следовательно, множество целых чисел разбивается на непересекающиеся классы сравнимых по модулю m чисел. Так как различные остатки при делении на т исчерпываются числами 0,1,2,...,m-1, то получим т классов: (2) где через обозначен класс всех чисел, которые при делении на т дают в остатке r. Очевидно, что класс однозначно определяется любым одним своим представителем, и потому в даль­нейшем класс будет обозначаться также в виде , где а — любой представитель этого класса.

Классы (2) называются классами вычетов, а их элементы — вычетами по модулю т. Из определения сравнений следует, что числа из одного класса сравнимы по модулю т, а числа из разных классов не сравнимы по модулю т, т. е.

Определение 1. Совокупность чисел, взятых по одному из каждого класса вычетов по модулю т, называется полной систе­мой вычетов по модулю т.

Примером полной системы вычетов по модулю т является множество чисел 0,1,... , m — 1. Это так называемая полная система наименъшцх неотрица­тельных вычетов.

Cледующее свойство полных систем вычетов.

Теорема 1. Если есть полная система вычетов по модулю т, число а взаимно простое с т и bлюбое целое число, то (3) есть также полная система вычетов по модулю т.

Доказательство (можно не писать – М.С.). Все числа ряда (3) принадлежат разным классам вычетов по модулю т, поскольку в силу свойств сравнений А так как в (3) содержится т чисел, т. е. столько же чисел, сколь­ко и классов, то в (3) имеется ровно по одному представителю из каждого класса. Следовательно, (3) есть полная система вычетов по модулю т

Малая терема Ферма

Теорема. Если натуральные числа а, т взаимно просты, то

Следствие. Если р — простое число и , то

Для доказательства утверждения а) достаточно заметить, что . Утверждение б) при следует из а) и следствия 1 теоремы 2, а при очевидно, поскольку в этом случае

.

Заметим, что утверждение а) следствия впервые доказал Ферма, оно называется малой теоремой Ферма. Теорема б была позднее доказана Эйлером и носит название теоремы Эйлера — Ферма. Она находит ши­рокое применение в математике и ее приложениях и, в частности, может оказаться полезной при нахождении остатков от деления степеней чис­ла на заданное число, при решении сравнений с неизвестными и т. д.

Кольцо вычетов

Рассмотрим множество всех классов вычетов по модулю . Класс состоит из всех чисел вида , где tпробегает множество Z, т. е.

Следовательно, классы вычетов по модулю та совпадают со смеж­ными классами кольца Z по его идеалу mZ.

Теорема 1. Определение операций сложения и умножения классов вычетов по формулам

корректно, и множество с этими операциями является коммутативным кольцом с единицей. Это есть факторкольцо кольца Zпо его идеалу тZ.

Кольцо Z/rn называют кольцом классов вычетов по модулю т.

Опишем обратимые элементы этого кольца.

Теорема 2. Элемент обратим в кольце Z/mтогда и только тогда, когда класс взаимно прост с т, т. е. (а,т) = 1.

Китайская теорема об остатках

Пусть m - натуральное число, m1, m2, ..., mt - взаимно простые натуральные числа, произведение которых больше либо равно m.

Теорема:

Любое число x: 0 <= x <= m может быть однозначно представлено в виде последовательности r(x) = (r1, r2, ..., rt), где ri = x(mod mi).

Для любых чисел r1 .. rt, таким образом, существует единственное число x(mod m), такое что

x = ri(mod mi), 1 <= i <= t

Более того, любое решение x набора такого сравнений имеет вид

x = r1*e1 + ... + rt*et (mod m), где ei = m / mi * ( ( m/mi )-1 mod mi ), 1 <= i <= t.

13. Системы линейного уравнения над кольцом и полем. Системы линейных уравнений над коммутативным кольцом с единицей. Равносильность систем. Системы уравнений над кольцом. Однородные уравнения и функциональная система решений.

14. Алгоритмы на графах. Обход графа в глубину, построение глубинного остового леса и классификация ребер, не вошедших в лес. Алгоритмы нахождения связных компонентов неориентированных графов и сильно связных компонентов ориентированных графов. Поиск в ширину и кратчайшие пути в графе.

Обход в глубину— это обход связного графа (или компоненты связности) по следующим правилам (алгоритм обхода):

1)Рассматриваем вершину Х.Двигаемся в любую другую, ранее непосещенную вершину (если таковая найдется), одновременно запоминая дугу, по которой мы впервые попали в данную вершину;

2) Если из вершины Хнельзя попасть в ранее непосещенную вершину или таковой нет, то возвращаемся в вершину Z, из которой впервые попали в X, и продолжаем обход в глубину из вершины Z.

3) Такой обход графа продолжается до тех пор, пока очередная вершина Х, не совпадет с вершиной Х0,с которой начался обход графа (компоненты связности).

Обход в ширину — это обход связного графа (или компоненты связности) по следующим правилам (алгоритм обхода):

1)Рассматриваем вершину Х. Ей присваивается метка 0;

2) Всем смежным вершинам с вершиной с меткой 0 поочередно присваиваются метки 1;

3) Всем смежным вершинам с вершинами с меткой 1 поочередно присваиваются метки 2;

4) И т.д. до тех пор, пока не будут помечены все вершины в текущем графе (компоненте связности).

Связный граф

Граф, в котором все вершины связаны.

Остовное дерево связного графа

Любой его подграф, содержащий все вершины графа Gи являющийся деревом (т.е. не содержит циклов и из одной вершины в другую можно попасть единственным путем). Определяется неоднозначно.

Компонента связности графа

Некоторое множество вершин графа такое, что для любых двух вершин из этого множества существует путь из одной в другую, и не существует пути из вершины этого множества в вершину не из этого множества.

Лес

Неориентированный граф без циклов (может быть и несвязным). Компонентами связности леса являются деревья (т.е. лес это тот же неориентированный граф, который может быть несвязным).

Сильно связный ориентированный граф (или сильный)

Орграф называется сильно связным или сильным, если для любых двух различных вершинxiи xjсуществует, по крайней мере, один путь, соединяющийxi с xj, т.е. любые две вершины такого графа взаимно достижимы (т.е. из каждой можно попасть в каждую).

Односторонне связный ориентированный граф

Орграф называется односторонне связным, если для любых двух различных вершин xiи xjсуществует, по крайней мере, один путь из xi в xjили из xj в xi. (т.е. можно попасть либоизxiвxjлибо из xj в xi)

Слабо связный ориентированный граф (или слабый)

Орграф называется слабо связным, если для любых двух различных вершин xiи xjсуществует, по крайней мере, один маршрутсоединяющий их(т.е. например изxi можно попасть влюбую xj, но в самуxi нельзя попасть ни из какой другой вершины).

Несвязный ориентированный граф

Если для некоторой пары вершин орграфа не существует маршрута, соединяющего их, то такой граф называется несвязным.

Компонента сильной связности в орграфе

Сильно связными компонентами орграфа называются его максимальные по включению сильно связные подграфы.

Алгоритм построения глубинного остовного леса:

Шаг 1. Выбираем в Gпроизвольную вершину u1, которая образует подграф Giлеса G, являющийся деревом.

Шаг 2. Если i= n, где n= n(G) (проверка на наличие всех вершин исходного леса в построенном остовном лесу), то задача решена, и Gi, искомый остовныйлеслесаG. В противном случае переходим к шагу 3.

Шаг 3. Пусть уже построено дерево Gi, являющееся подграфом лесаG и содержащее некоторые вершины u1, ...ui, где 1<i<n-1. Строим граф Gi+1, добавляя к деревуGiновую вершину ui+1, смежную в Gс некоторой вершиной uj графа Gi, и новое ребро {ui+1 , uj}.Если такое ребро есть, то присваиваем i:=i+l и переходим к шагу 2. Если невозможно найти ребро, соединяющее вершину ui+1с вершиной uj (в силу возможной несвязности леса G), то переходим к шагу 4.

Шаг 4.Принимаем вершину uj+1из шага 3 за начало нового дерева в лесу G, присваиваем i:=i+l и переходим к шагу 2.

К лассификация ребер оргафа

1. Ребра деревьев—это ребра, входящие в лес поиска в глубину. На рис. 2 это ребра (1, 2), (2, 3), (2, 5), (3, 4).

2. Обратные ребра—это ребра, соединяющие вершину с ее предкомв дереве поиска в глубину (ребра-циклы, возможные в ориентированных графах, считаютсяобратнымиребрами).Нарис. 2 эторебра (5, 1), (6, 6).

3. Прямые ребра—это ребра, соединяющие вершину с ее потомком, но не входящие в лес поиска в глубину: (2, 4) на рис. 2.

4. Перекрестные ребра—все остальные ребра графа.Онимогут соединять две вершины из одного дерева поиска в глубину, если ниодна их этих вершин не является предком другой, или же вершины из разных деревьев: (5, 4), (6, 1) на рис. 2.

Выделение компонент связности в неориентированном графе

Этап 1(первоначальная разметка):

Шаг 1.Пометить все вершины графа маркером «1»;

Шаг 2. Пометить любую вершину с маркером «1» маркером «2»;

Этап 2 (разметка соседних вершин):

Шаг 3. Если нет вершин, помеченных маркером «2» - переходим к этапу 3;

Шаг 4. Выбираем любую вершину с маркером «2», помечаем ее маркером «3», а все соседние вершины, помеченные маркером «1», помечаем маркером «2». Затем повторяем этот этап сначала;

Этап 3 (сбор результатов):

Шаг 5. Если нужно получить список вершин, входящих в одну компоненту связности с заданной вершиной, то выбираем вершины, помеченные третьим маркером;

Шаг 6. Если нужно получить список вершин, не входящих в одну компоненту связности с заданной вершиной, то выбираем вершины, помеченные маркером «1»;

Шаг 7.Если нужно просто проверить граф на связность, то считаем вершины, помеченные первым маркером, и сравниваем получившееся число с нулем. Если число вершин, помеченных первым маркером, равно нулю, то граф связный.

Выделение компонент сильной связности в орграфе

Этап 1(первоначальная разметка):

Шаг 1.Пометить все вершины графа маркером «1»;

Шаг 2. Пометить любую вершину с маркером «1» маркером «2»;

Этап 2 (разметка соседних вершин):

Шаг 3. Если нет вершин, помеченных маркером «2» и все вершины в графе помечены маркером «Di» - переходим к этапу 3. Если нет вершин, помеченных маркером «2», но есть вершины с маркером «1» и без маркера «Di», то i = i + 1 и переходим к шагу 2. Если есть вершина с маркером «2», переходим к шагу 4;

Шаг 4. Выбираем любую вершину vс маркером «2», помечаем ее маркером «3» и маркером «Di»(если она еще не помечена маркером «Di»)(здесь i - номер компоненты связности), а все соседние вершины u, достижимые из этой вершины и помеченные маркером «1», помечаем маркером «2». Если нет достижимых соседних вершин с маркером «1», то повторяем этап 2.

Шаг 5. Проверяем, есть ли путь из вершины uобратно в вершину v. Если есть – помечаем вершину uмаркерами «3» и «Di». Если нет – снова помечаем вершину u маркером «1». Затем повторяем этот этап сначала;

Этап 3 (сбор результатов):

Шаг 6. Если нужно получить список вершин, входящих в одну компоненту связности с заданной вершиной, то выбираем вершины, помеченные соответствующим маркером «Di»;

Шаг 7. Если нужно получить список вершин, не входящих в компоненту связности «Di»то выбираем вершины, помеченные маркером, отличным от маркера «Di»;

Таким образом, результатом данного алгоритма будут:

  1. количество компонент сильной связности;

  2. сгруппированные по компонентам связности вершины орграфа;

Поиск в ширину и кратчайшие пути в графе

Поиск в ширину находит расстояния до каждой достижимой вершины в графе от исходной вершины s. Определим длину кратчайшего пути δ(s,v) как минимальное количество ребер на пути от s к v, если пути не существует, то δ(s,v) = ∞. CСледующий алгоритм вычисляет длины кратчайших путей.

1. Пусть G=(V,E) – ориентированный или неориентированный граф, а s – его произвольная вершина, тогда для любого ребра (u,v) графа справедливо δ(s,v) ≤ δ(s,u)+1.

2. Пусть в данном графе процедура поиска (//обхода) в ширину выполняется с исходной вершиной s. Тогда по завершении процедуры для каждой вершины графа v справедливо d[v] ≥ δ(s,v). Где d[v] – метка времени, показывающая, на каком шаге алгоритма обхода в ширину была достигнута вершина v.По сути – расстояние от vдоs.

3. Следствием выполнения процедуры поиска в ширину над графом G=(V,E) является монотонное увеличение параметра d, при каждом следующем шаге алгоритма обхода в ширину.

4. Таким образом, в процессе своей работы алгоритм обхода в ширину открывает все вершины vV, достижимые из s, и по окончании работы алгоритма для каждойviVбудет справедливо d[vi]= δ(s,v). Кроме того, для всех достижимых из s вершин v ≠ s, один из кратчайших путей от s к v – это путь от s к π[v], за которым следует ребро (π[v], v), где π[v]– вершина, из которой мы попали в вершину v, в процессе процедуры поиска в ширину.