- •Вероятность. Случайные переменные. Стохастический процесс.
- •Понятие о смо.
- •Классификация смо и основные характеристики смо.
- •Методы организации и обработки очереди.
- •11.2. Приоритетное обслуживание очередей (pq)
- •11.3. Обычное обслуживание очередей (сq)
- •11.4. Справедливые очереди (wfq)
- •11.5. Справедливые очереди, базирующиеся на классах (cbwfq)
- •11.6. Очереди с малой задержкой (llq)
- •11.7. Методы работы в условиях перегрузки
- •11.8. Алгоритм leaky bucket ("дырявое ведро")
- •11.9. Алгоритм "маркерное ведро"
- •Основные понятие теории графов.
- •Способы представление графов.
- •Бинарные операции над графами.
- •Унарные операции над графами.
- •Маршрут, пути и циклы.
- •Маршруты и связность в орграфах.
- •Эйлеровы пути и циклы
- •Поиск в ширину
- •Поиск в глубину
- •Пространство циклов графа
- •Графы атак
- •Экспе́ртная систе́ма
- •Основные проблемы синтеза графов атак.
- •Топология анализа защищенности.
Пространство циклов графа
Зафиксируем
некоторое множество
и
рассмотрим множество
всех
графов с множеством вершин
.
Буквой
будем
обозначать пустой граф из этого множества:
.
Для
графов
и
из
определим
их сумму по модулю
(в
дальнейшем в этом разделе будем называть
ее просто суммой) как граф
где
обозначает
симметрическую разность множеств
и
.
Иначе говоря, ребро принадлежит графу
тогда
и только тогда, когда оно принадлежит
в точности одному из графов
и
.
Пример показан на рис.
7.1.
Рис. 7.1.
Следующие свойства введенной операции очевидны или легко проверяются.
Коммутативность:
для
любых
и
.Ассоциативность:
для
любых
.
.
.
Отсюда
следует, что множество
относительно
операции
образует
абелеву группу. Нейтральным элементом
("нулем") этой группы служит граф
,
а противоположным к каждому графу
является сам этот граф. Уравнение
с
неизвестным
и
заданными графами
и
имеет
единственное решение
.
Благодаря свойству ассоциативности мы
можем образовывать выражения вида
,
не используя скобок для указания порядка
действий. Легко понять, что ребро
принадлежит графу
тогда
и только тогда, когда оно принадлежит
нечетному количеству из графов
.
Рассмотрим
множество из двух элементов
.
Оно является полем относительно операций
умножения и сложения по модулю 2. Определим
операцию умножения элементов этого
поля на графы:
,
для
любого графа
.
Множество
с
введенными операциями сложения графов
и умножения на элементы поля является
линейным векторным пространством.
Зафиксируем
некоторый граф
и
рассмотрим множество всех его остовных
подграфов, которое будем обозначать
.
Это множество состоит из
элементов,
среди них сам граф
и
граф
.
Оно замкнуто относительно сложения
графов и умножения на элементы поля,
следовательно, является подпространством
пространства
.
Его называют пространством подграфов
графа
.
Любой
граф из
может
быть выражен как сумма однореберных
подграфов. Всего у графа
имеется
однореберных
подграфов и они, очевидно, линейно
независимы. Следовательно, однореберные
подграфы образуют базис пространства
,
а размерность этого пространства равна
.
В
пространстве
можно
очень естественным способом ввести
координаты. Занумеруем ребра графа
:
.
Теперь остовному подграфу
можно
поставить в соответствие характеристический
вектор
его
множества ребер:
Получаем
взаимно однозначное соответствие между
множеством
и
множеством всех двоичных векторов с
координатами.
Сумме графов соответствует векторная
(покоординатная) сумма по модулю 2 их
характеристических векторов.
Алгоритм поиска кратчайшего пути
В задаче о кратчайшем пути (shortest-paths problem) задается взвешенный ориентированный граф G = (V, Е) с весовой функцией w : Е —> R, отображающей ребра на их веса, значения которых выражаются действительными числами. Вес (weight) пути р = (Vo, Vi,..., Vk) равен суммарному весу входящих в него ребер.
Вес
кратчайшего пути (shortest-path weight) из вершины
и в вершину v определяется соотношением
Тогда
по определению кратчайший
путь (shortest
path) из вершины и в вершину v — это любой
путь, вес которого удовлетворяет
соотношению w (р) = delta(u, v).
Вес каждого из ребер можно интерпретировать не как расстояние, а как другую метрику. Часто они используются для представления временных интервалов, стоимости, штрафов, убытков или любой другой величины, которая линейно накапливается по мере продвижения вдоль ребер графа и которую нужно свести к минимуму.
Алгоритм позволяет решить многие другие задачи, в том числе те, что перечислены ниже.
1) Задача о кратчайшем пути в заданный пункт назначения (single-destination shortest-paths problem). Требуется найти кратчайший путь в заданную вершину назначения (destination vertex) t, который начинается в каждой из вершин v. Поменяв направление каждого принадлежащего графу ребра, эту задачу можно свести к задаче о единой исходной вершине.
2) Задача о кратчайшем пути между заданной парой вершин (single-pair shortest-paths problem). Требуется найти кратчайший путь из заданной вершины u в заданную вершину v. Если решена задача о заданной исходной вершине u, то эта задача тоже решается.
3) Задача о кратчайшем пути между всеми парами вершин (all-pairs shortest-paths problem). Требуется найти кратчайший путь из каждой вершины u в каждую вершину v. Эту задачу тоже можно решить с помощью алгоритма, предназначенного для решения задачи об одной исходной вершине, однако обычно она решается быстрее.
В данном разделе представлен алгоритм Беллмана-Форда, позволяющий решить задачу о кратчайшем пути из фиксированного истока в общем случае, когда вес любого ребра может быть отрицательным. Этот алгоритм отличается своей простотой. К его достоинствам также относится то, что он определяет, содержится ли в графе цикл с отрицательным весом, достижимый из истока. Также в разделе описывается алгоритм Дейкстры, который характеризуется меньшим временем выполнения, чем алгоритм Беллмана-Форда, но требует, чтобы вес каждого из ребер был неотрицательным. Кроме того, приведен алгоритм динамического программирования — алгоритм Флойда-Варшалла (Floyd-Warshall), который позволяет решить задачу о поиске кратчайших путей между всеми парами вершин.
