Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Задачи, близкие к задаче о кратчайшем пути



1. Наиболее надежный путь.

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

где ρ ij – надежность ребра (xi, xj).

2. Самый длинный (критический) путь.

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

3. Путь с наибольшей пропускной способностью.

В этом случае каждое ребро графа имеет пропускную способность qij и требуется найти путь от s к t с наибольшей пропускной способностью. Пропускная способность пути P определяется ребром из P с наименьшей пропускной способностью, т.е.

Определение. Если множество вершин графа G(X, U) разбить на два подмножества Х1 и Х2 (где Х=Х1 È Х2), то множество ребер графа, одни концевые вершины которых лежат в Х1, а другие в Х2, называется разрезом графа G.

Теорема Форда – Фалкерсона (1955, L.R. Ford, D.R. Fulkerson). Пропускная способность пути с наибольшей пропускной способностью от s к t равна

где К – любой (s-t) разрез.

Для нахождения пути с наибольшей пропускной способностью в неографе предложен следующий алгоритм.

Алгоритм Франка – Фриша

Алгоритм Франка-Фриша (G. Frank, I. Frisch) заключается в следующем.

1. Взять (s-t) разрез К1 = ({s}, X\{s}) и найти

2. Закоротить все ребра графа (xi, xj) с qij≥ Q1, т.е. заменить вершины xi и xj на вершину х, удалив ребро (xi, xj), положить Гх=Гxi È Гxj.

3. Для полученного графа G1 выбрать другой (s-t) разрез К2 и найти

4. Закоротить все ребра графа (xi, xj) с qij≥ Q2. Получить граф G2 … и т.д., пока не будут объединены вершины s-t.

5. Теперь каждый (s-t) путь в графе G', образованный вершинами из G и теми ребрами, которые оказались закороченными, будет иметь максимальную пропускную способность.

Пример. Найти (s-t) путь с наибольшей пропускной способностью в графе G(X, U) (рис. 7.8).

s
x1
x2
x3
x4
x5
x6
x7
x8
x9
x10
x11
x12
t
8
6
14
16
9
8
10
15
15
13
16
9
4
7
6
16
6
18
13
11
9
18
10
7
12
7
14
12
8
10

Рисунок 7.8. Исходный граф

1. Проводим разрез К1 = ({s}, X \{s}) (рис. 7.9).

s
x1
x2
x3
x4
x5
x6
x7
x8
x9
x10
x11
x12
t
8
6
14
16
9
8
10
15
15
13
16
9
4
7
6
16
6
18
13
11
9
18
10
7
12
7
14
12
8
10
К1

Рисунок 7.9. Разрез К1

2. Находим

3. Закорачиваем все ребра графа (xi, xj) с qij≥ Q1.

4. Это ребра (s, x4), (x3, x6), (x5, x8), (x6, x9) и (x7, x12). Получаем граф G1 (рис. 7.10).

s, х4
x1
x2
x3, х6, х9
x7, х12
x10
x11
t
8
6
10, 14
9
8
15
15
13, 7
4
7,
6, 9
6,
13, 7
11
7, 9
10
12
14
12
8
10
К2
x5, х8

Рисунок 7.10. Разрез К2

5. Проводим разрез К2, находим

 

6. Закорачиваем все ребра графа (xi, xj) с qij≥ Q2. Это ребра (s, x4, х4, х6, х9), (x3, x6), (х1, х2, x5, x8, t). Получаем граф G2 (рис. 7.11).

7. Проводим разрез К3, находим

 

x1, x2, x5, х8, t
x7, х12
x10
x11
8
6 10
6 7
8
10
13 7
4, 6, 9
13, 7
11
9, 7
12
12
8
10
К3
9
s, х4, x3, х6, х9

Рисунок 7.11. Разрез К3

8. Закорачиваем все ребра графа (xi, xj) с qij ≥ Q3. Получаем граф G3 (рис. 7.12).

s, х4, x3, х6, х9, x1, x2, x5, х8, t
x7, х12
x10
x11
6, 8, 10
6, 8, 9 7
10
7
4, 6, 9, 10
7, 12
8, 11
9
12
7

Рисунок 7.12. Окончательный граф

9. Вершины s-t объединены. Пропускная способность искомого пути Q(P)=13.

10. Строим граф, вершины которого – вершины исходного графа G, а ребра – ребра с пропускной способностью qij ≥ Q(P)=13.

На рисунке 7.13 показан путь с наибольшей пропускной способностью.

16
15
13
14
14
16
s
x1
x2
x3
x4
x5
x6
x7
x8
x9
x10
x11
x12
16
15
18
13
18
t

Рисунок 7.13. Путь с наибольшей пропускной способностью.

Задача Штейнера

Виды используемых деревьев определяются технологией выполнения соединений и схемотехническими требованиями. При автоматизированном конструировании схем проводного и печатного монтажа ставятся разные задачи построения минимальных деревьев соединений. В первом случае не допускается вводить дополнительные вершины (соединение «контакт» - «контакт»). Для решения такой задачи используют рассмотренные ранее эффективные алгоритмы Краскала, Прима и другие. Во втором случае разрешается вводить дополнительные вершины и соединяющие их ребра (соединения «контакт» - «проводник», «проводник» - «проводник»). Такая задача называется задачей Штейнера (J. ), деревья соединений – деревьями Штейнера (ДШ), а дополнительные вершины – точками Штейнера (ТШ).

Задача построения дерева Штейнера имеет следующий вид. Требуется найти такой связный ациклический граф с использованием дополнительных вершин Штейнера (дерево Штейнера) Т’ = (Х’, U’), что Х’ включает все вершины Х и дополнительные вершины (вершины Штейнера) и суммарный вес ребер в T’ будет минимальным. На рис. 7.14 (а) показано МСД, суммарная длина ребер - 10, 123, а на рис. 7.14 (б) – дерево Штейнера, суммарная длина ребер – 9, 196.

б
а

Рисунок 7.14. МСД (а) и дерево Штейнера (б)

Задача о соединении точек оптимальным образом – одна из старейших оптимизационных задач. Она восходит еще к П. Ферма (Pierre de Fermat). Еще в ХVII столетии была предложена следующая задача. На плоскости найти такую точку Р, которая минимизирует суммарное расстояние от Р до трех заданных точек плоскости. Ферма, Торричелли (E. Torricelli) и Кавальери (B.F. Cavalieri) независимо друг от друга нашли решение этой задачи.

Общим решением этой задачи является следующее. Точка Р либолежит внутри треугольника, построенного на заданных точках, либо совпадает с одной из этих точек. В первом случае каждый из углов между отрезками, соединяющими Р с каждой их точек, составляет 1200. Во втором случае угол, образованный отрезками, соединяющими эту точку с другими заданными точками, равен или больше 1200. Рис. 7.15. демонстрирует способ решения задачи, найденный в середине ХVII века.

Для отыскания точки Р, ближайшей (в смысле суммарного расстояния) к заданным точкам А, B, C, сначала строится треугольник (АBC) и на одной из его сторон, например на АC, строится равносторонний треугольник. (АBХ) так, что точка В лежит вне этого треугольника. Точка пересечения окружности, описанной вокруг равностороннего треугольника (АBХ), с отрезком () есть искомая точка Р.

B
Точкой Торричелли треугольника (ABC) называется такая точка Р, из которой стороны данного треугольника видны под углом 1200, т.е. углы Ð AРB, Ð AРC и Ð BРC равны 1200.

x
A
C
P

Рисунок 7.15. Нахождение точки Торричелли

Трехточечная задача используется как составная часть алгоритмов решения задачи Штейнера.

Перебираем тройки вершин графа и находим точки Торричелли. Выбираем такие точки, включение которых в дерево даст максимальный эффект.

Задача Штейнера относится к классу так называемых NP-полных задач, поэтому алгоритмы, дающие точные решения, как правило, не могут быть использованы в САПР из-за неприемлемой временной сложности. Это обстоятельство послужило стимулом для разработки многочисленных эвристических алгоритмов. Наибольший практический интерес представляет алгоритм последовательного введения дополнительных вершин в дерево Прима-Краскала.

Возможно, наиболее важным практическим применением задачи Штейнера является конструирование интегральных электронных схем. Более короткая сеть проводящих линий на интегральной схеме требует меньшего времени зарядки-разрядки по сравнению с более длинной сетью и повышает, таким образом, быстродействие схемы. Однако задача отыскания кратчайшей сети на интегральной схеме имеет другую геометрию, так как проводники на ней обычно проходят лишь в двух направлениях — горизонтальном и вертикальном. Такая задача получила название прямоугольной задачи Штейнера.

Для случая ортогональной метрики доказано, что если через каждую точку из исходного множества точек провести горизонтальные и вертикальные линии, то решение задачи Штейнера можно получить, рассматривая в качестве возможных дополнительных вершин только точки пересечения полученной сетки линий (рис.7.16 (а)).

Алгоритм последовательно вводит в текущее дерево Прима-Краскала каждую из дополнительных вершин решеточного графа, строит новое дерево Прима и запоминает полученный выигрыш в длине. После оценки всех дополнительных точек в текущее дерево включается точка с максимальным выигрышем (рис.7.16 (б)). При этом, чтобы избежать в процессе преобразования появления избыточных точек, необходимо учитывать, что дополнительные точки в дереве Штейнера могут иметь только степень 3 и 4.

а
б
Точки Штейнера
Возможные точки Штейнера
Р1
Р2
Р3
Р4
Р5
Р6
Точки Штейнера
Возможные точки Штейнера
Р1
Р2
Р3
Р4
Р5
Р6

 

Рисунок 7.16. Кратчайшие остовное дерево (а) (L = 18)

и дерево Штейнера (б) (L = 15)

Рассмотрим некоторые эвристические методы построения деревьев Штейнера.

Метод Ханана

Метод Ханана (M. Hanan) заключается с следующем.

1. Все множество вершин с координатами s разбивается на классы S1, S2, ..., Sm в порядке неубываниякоординаты si так, чтобы у всех вершин одного класса была одинаковая координата s.

2. Анализируется множество вершин класса S1 и соединяется между собой прямой.

3. Образуется множество I, состоящее из вершин, включенных в дерево и точек, принадлежащих построенной прямой.

4. Выбирается следующее множество Si+1, имеющее наименьшую координату s. Для вершины xkÎ Si+1 определяется точка xj, для которой dkj = min{dkg} xgÎ I. Вершина xk соединяется двухзвенной ломаной линией с точкой xjÎ I.

5. Для очередной вершины класса Si+1 операция подсоединения к дереву выполняется в соответствии с пунктами 3, 4.

6. Пункты 3, 4, 5 повторяются для всех множеств Si до построения полного дерева.

Рассмотрим пример построения дерева Штейнера по методу Ханана для вершин, представленных на рис. 7.17 (а).

1. Разобьем множество вершин X = {x1, x2, ..., x5} на классы по неубыванию координаты si, получим: S1={x1}, S2={x2, x3}, S3={x4}, S4={x5}.

2. В классе S1 всего одна вершина, поэтому соединение вершин не производим.

3. Вершину x2Î S2 соединяем с x1 двухзвенной ломаной линией, причем сначала в направлении перпендикулярном оси s, а затем оси t.

4. Вершину x3Î S2 соединяем с ближайшей точкой уже построенного фрагмента.

5. Переходим в следующий класс и x4Î S3 соединяем с ближайшей точкой дерева, получаем ТШ 1.

6. Вершину x5Î S4 соединяем по кратчайшему расстоянию с ближайшей точкой построенного дерева, получаем ТШ 2.

Результат построения дерева Штейнера с суммарной длиной ребер L=11 представлен на рис. 7.17 (б).

а
б

 

Рисунок 7.17. Вершины графа (а); дерево Штейнера (метод Ханана) (б)

Столб Штейнера

Метод " Столб Штейнера" является одним из наиболее эффективных по времени реализации эвристических алгоритмов построения дерева Штейнера и предусматривает следующий порядок действия.

1. Все вершины проецируются на ось s.

2. Расстояние от наименьшей до наибольшей координаты s делится пополам, и из этой точки проводится перпендикуляр (столб Штейнера).

3. Из каждой вершины опускается перпендикуляр до пересечения со столбом Штейнера.

 

Рассмотрим пример построения дерева Штейнера по данному методу для представленного на рис. 7.17 (а) множества вершин.

1. Находим среди множества проекций на ось s (s1=1, s2= s3=2, s4=4, s5=5) минимальное и максимальное значения: minsi = s1 = 1, maxsi = s5 = 5.

2. Вычисляем координату проведения столба Штейнера: si = (s1 + s5) / 2 = 3.

3. Проводим столб Штейнера с координатой si = 3 и опускаем из всех вершин перпендикуляры до пересечения со столбом.

Результат построения дерева Штейнера с суммарной длиной ребер L=12 представлен на рис. 7.18 (а).

Аналогично строится горизонтальный столб (рис. 7.18 (б)), L=12.

 

 

t
s
t
s

 


а
б

Рисунок 7.18. Деревья Штейнера, построенные методом " Столб Штейнера", (

а) – вертикальный; (б) – горизонтальный столбы

Временная сложность алгоритма О(n2).

В. На втором этапе предпринимается попытка точно решить, на каком слое каждое соединение может располагаться.

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

Если расслоение проводится до собственно трассировки, то для контактов каждой цепи строится минимальный охватывающий прямоугольник. Строится граф перекрытий прямоугольников, вершины которого цепи, а ребра между вершинами проводятся, если прямоугольники перекрываются. Граф перекрытий раскрашивается в минимальное число цветов. В результате: цвет – слой.

Если расслоение проводится после трассировки, то получают совмещенную топологию. Строят граф пересечений, в котором вершины – проводники, а ребра их соединяют, если проводники пересекаются. Граф пересечений раскрашивается в минимальное число цветов.

Расслоение в процессе трассировки будет рассмотрено в подразделе 7.4.7.

Алгоритмы раскраски графа

Задача раскраски вершин графа относится к NP-полным задачам. Различают точные и приближенные алгоритмы раскраски.

Примером точных алгоритмов служит алгоритм Вейссмана (J. Weissman). Иногда его называют алгоритмом, использующим метод Магу (K. Maghout).

Алгоритм Вейссмана

Алгоритм состоит из двух частей:

1. Построение семейства максимальных внутренне устойчивых множеств (МВУМ) (метод Магу);

2. Выбор минимального числа МВУМ, покрывающих все вершины графа (метод Петрика). Метод Петрика использовался в курсовой работе по дисциплине «Дискретная математика» для нахождения минимальных нормальных форм.

Идея метода Магу заключается в последовательном удалении из графа звездного подграфа с вершиной xi.

Используется преобразование булевых выражений

(xi Ú x1) (xi Ú x2)...(xi Ú xj) = xi Ú x1 x2...xj.

Алгоритм состоит из следующих операций:

1. В матрице соединений R для каждой вершины подсчитывается число ненулевых элементов ri;

2. Находится вершина xi с max ri, если таких вершин несколько, то выбирается любая;

3. Для выбранной вершины xi записывается выражение

Ci = (xi Ú xa xb...xq), где Гxi = {xa, xb, ..., xq};

4. Из матрицы R удаляются строка и столбец, соответствующие вершине xi;

5. Если R ¹ Æ, то переход к п. 2, иначе к п. 6;

6. Составляется конъюнкция П = Ù Ci. Раскрываются скобки. В полученной дизъюнкции на основе законов булевой алгебры выполняется минимизация. Т. к. в выражении нет отрицаний, используются только два закона: тавтологии аа=а ипоглощения a Ú ab = a;

7. Результат минимизации записывается в виде П = Ú Kj;

8. Для каждого Kj ищутся вершины графа, не вошедшие в него. Получено jj и семейство МВУМ Y = {j1, j2, ..., jl};

9. Для каждой вершины xiÎ Х определяются подмножества jj, в которые входит вершина xiÎ jj. Составляется дизъюнкция ti = Ú jj;

10. Составляется конъюнкция П’ = Ù ti. Раскрываются скобки. В полученной дизъюнкции на основе законов булевой алгебры выполняется минимизация;

11. Получена дизъюнкция конъюнктивных термов П’ = Ú (Ù jj). Выбирается конъюнктивный терм Ù jj с минимальным числом сомножителей.

Количество сомножителей в этом терме и есть хроматическое число графа. Число минимальных термов – число вариантов раскраски графа. А каждое jj – множество вершин, которые можно окрасить в один цвет.

Заметим, что п.п. 1-8 составляют метод Магу, а п.п. 9-11 – метод Петрика.

Пример. Раскрасить вершины графа рис.7.19.

x5
x1
x6
x3
x4
x2

Рисунок 7.19. Исходный граф и его матрица соединений

1. В матрице R подсчитываем число ненулевых элементов ri;

2. max ri = r1 = r4 = 4, выбираем x1;

3. Гx1 = {x2, x3, x5, x6}, записываем выражение

C1 = (x1 Ú x2 x3 x5 x6);

4. Из матрицы R удаляем строку и столбец, соответствующие вершине x1;

5. R ¹ Æ, max ri = r4 = 4;

Гx4 = {x2, x3, x5, x6}, C4 = (x4 Ú x2 x3 x5 x6);

6. Из матрицы R удаляем строку и столбец, соответствующие вершине x4;

7. R ¹ Æ, max ri = r2 = r3 = r5 = r6 = 1, выбираем x2;

Гx2 = {x3}, C2 = (x2 Ú x3);

8. Из матрицы R удаляем строку и столбец, соответствующие вершине x2;

9. R ¹ Æ, max ri = r5 = r6 = 1, выбираем x5;

Гx5 = {x9}, C5 = (x5 Ú x6);

10. Из матрицы R удаляем строку и столбец, соответствующие вершине x5;

11. R =Æ;

12. Составляем конъюнкцию Ci и выполняем минимизацию

П = Ù Ci = C1 C2 C4 C5 = (x1 Ú x2 x3 x5 x6)(x2 Ú x3)(x4 Ú x2 x3 x5 x6)(x5 Ú x6) =

= x1 x2 x4 x5 Ú x1 x2 x4 x6 Ú x1 x3 x4 x5 Ú x1 x3 x4 x6 Ú x2 x3 x5 x6 = Ú Kj =

= K1 Ú K2 Ú K3 Ú K4 Ú K5;

13. Для каждого Kj ищем jj:

j1 = {x3, x6}, j2 = {x3, x5}, j3 = {x2, x6}, j4 = {x2, x5}, j5 = {x1, x4}. Получено семейство МВУМ Y ;

14. Для каждой вершины определим подмножества jj, в которые она входит. Строим дизъюнкцию ti = Ú jj;

t1 = j5; t2 = j3 Ú j4; t3 = j1 Ú j2; t4 = j5; t5 = j2 Ú j4; t6 = j1 Ú j3;

15. Составляем конъюнкцию и выполняем минимизацию булевой функции

П’ = Ù ti = t1 t2 t3 t4 t5 t6 = j5(j3 Ú j4)(j1 Ú j2) j5(j2 Ú j4)(j1 Ú j3) = j1j4j5 Ú j2j3j5.

Хроматическое число графа c(G) = 3. Существует два варианта раскраски графа.

Первый: в синий цвет вершины j1 = {x3, x6}, в зеленый - j4 = {x2, x5}, в красный - j5 = {x1, x4}.

Второй: в синий цвет вершины j2 = {x3, x5}, в зеленый - j3 = {x2, x6}, в красный - j5 = {x1, x4}.

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


Поделиться:



Популярное:

  1. I I. Цели, задачи, результаты выполнения индивидуального проекта
  2. I.3. ВОЗРАСТНЫЕ ИЗМЕНЕНИЯ В ОРГАНИЗМЕ ЛЮДЕЙ СТАРШЕГО ВОЗРАСТА И ПУТИ ИХ ПРОФИЛАКТИКИ
  3. II. На пути к нормальной науке
  4. III. Задачи, решаемые организацией с помощью ИСУ и ИТУ.
  5. III. Трудности на пути реформ
  6. V. ПУТИ ФОРМИРОВАНИЯ РЕЧИ У ДЕТЕЙ
  7. А. П. Петрова. «Сценическая речь» - Пути воплощения сверхзадачи
  8. Анализ использования основных фондов: задачи, объекты, этапы, источники информации, основные показатели.
  9. Анализ финансового состояния организации: задачи, методы, виды, последовательность, информационная база.
  10. Анализ финансовых результатов: задачи, объекты, этапы, источники информации, основные показатели.
  11. Антивитамины – вещества, тормозящие действие витаминов; часто близкие по строению к соответствующим витаминам; антивитамин – разновидность антиметаболитов.
  12. Биография Г.И. Успенского. Начало творческого пути.


Последнее изменение этой страницы: 2017-03-10; Просмотров: 1465; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.11 с.)
Главная | Случайная страница | Обратная связь