Алгоритмы на графах Волновой метод Волновой метод Постановка задачи. Пусть G – неориентированный связный граф, а и b – две его вершины. Требуется найти цепь, соединяющую вершины а и b и содержащую наименьшее число ребер. Волновой метод 1. 2. 3. Алгоритм решения задачи волновым методом. Помечаем вершину а индексом 0. Вершины, смежные с а и соединенные с а, дугами, инцидентными вершине а, помечаем индексами 1. Вершины, смежные с помеченными индексами 1 и соединенные с ними инцидентными вершинам 1 дугами, помечаем индексами 2. Волновой метод 4. 5. 6. Аналогично помечаем вершины индексами 3, 4, … Совокупность вершин, помеченных индексом m, обозначим Am. В некоторой момент будет помечена вершина b, пусть b∈An. Останавливаем процесс индексации. Волновой метод 7. 8. По построению можно найти вершину b1∈An-1, смежную с b, по тем же соображениям существует вершина b2∈An-2, смежная с b1, и т.д. Искомая цепь с наименьшим числом ребер получается теперь как последовательность вершин (b, b1, b2, …, bn=a), где bi An-i, то есть нужно двигаться, начиная от конечной вершины b в сторону убывания индекса вершины. Задание Найти все кратчайшие цепочки от b до а. 2 1 3 4 5 9 8 13 12 6 7 10 14 21 11 15 16 а 18 19 17 b 20 22 23 24 Условный радиус вершины Если мы не будем останавливать индексацию, то через некоторое количество шагов все вершины графа будут снабжены индексами, причем наибольший из них является условным радиусом графа G относительно вершины а. ra=max d(a, b) Волновой метод В случае ориентированного графа волновой метод позволяет решить две задачи: Найти длины кратчайших путей от вершины а до остальных вершин графа; Найти длины кратчайших путей от каждой вершины графа до вершины а. При этом в основном алгоритме изменяется только построение множества Аn. Задание Для графа найти цепь с наименьшим числом ребер, соединяющих вершины а и b: a=5; b=69 Найти условный радиус вершины а=25 2 1 9 8 4 3 13 10 14 17 18 16 23 29 30 38 39 25 7 21 22 11 15 12 19 20 26 24 31 6 5 27 28 32 41 40 33 48 46 45 47 50 51 55 53 63 54 56 57 58 60 62 64 61 65 66 69 72 36 35 37 34 42 43 49 44 52 59 68 67 70 71 73 74 Центр и диаметр графа Расстоянием между вершинами a и b называется длина кратчайшей цепи из a в b. Радиус графа определяется как наименьший из условных радиусов вершин графа. Центром графа G называется такая вершина a, что максимальное расстояние между a и любой другой вершиной является наименьшим из всех возможных. Это расстояние называется радиусом графа. Диаметром d связного графа называется максимальное возможное расстояние между любыми двумя его вершинами. Если расстояние между двумя вершинами равно диаметру графа, то кратчайший путь, соединяющий эти вершины, называется диаметральным путем, а подграф, образованный вершинами и ребрами этого пути, – диаметральной цепью. Задание Найти радиус и диаметр графа Задание Найти центр, радиус и диаметр графа Задание Найти радиус, диаметр и центр графа Задание Найти радиус, диаметр и центр графа Задание Найти радиус, диаметр и центр графа Условный радиус вершины Если мы не будем останавливать индексацию, то через некоторое количество шагов все вершины графа будут снабжены индексами, причем наибольший из них является условным радиусом графа G относительно вершины а. ra=max d(a, b) Расстоянием между вершинами a и b называется длина кратчайшей цепи из a в b. Радиус графа определяется как наименьший из условных радиусов вершин графа. Центр и диаметр графа Центром графа G называется такая вершина a, что максимальное расстояние между a и любой другой вершиной является наименьшим из всех возможных. Это расстояние называется радиусом графа. Диаметром d связного графа называется максимальное возможное расстояние между любыми двумя его вершинами. Если расстояние между двумя вершинами равно диаметру графа, то кратчайший путь, соединяющий эти вершины, называется диаметральным путем, а подграф, образованный вершинами и ребрами этого пути, – диаметральной цепью. Задание Найти центр, радиус и диаметр графа Задание Найти радиус, диаметр и центр графа Задание Найти радиус, диаметр и центр графа Задание Найти радиус, диаметр и центр графа