Примером точных алгоритмов служит алгоритм Вейссмана.
Алгоритм состоит из двух частей:
1. Построение семейства максимальных внутренне устойчивых множеств (МВУМ) (метод Магу);
2. Выбор минимального числа МВУМ, покрывающих все вершины графа (метод Петрика).
Множество вершин Хs графа G(X,U) называется внутренне устойчи-вым (независимым), если никакие две вершины из этого множества не смежны, XsX [ГXsXs=]. Внутренне устойчивое множество называется максимальным, если оно не является собственным подмножеством некоторого другого независимого множества.
2. Находится вершина xi с max ri, если таких вершин несколько, то выбирается любая;
3. Для выбранной вершины xi записывается выражение
Ci = (xi xa xb...xq), где Гxi = {xa, xb, ..., xq};
4. Из матрицы R удаляются строка и столбец, соответствующие вершине xi;
6. Составляется конъюнкция П = Ci. Раскрываются скобки. В полученной дизъюнкции на основе законов булевой алгебры выполняется минимизация.
7. Результат минимизации записывается в виде П = Kj;
9. Для каждой вершины xiХ определяются подмножества j, в которые входит вершина xij. Составляется дизъюнкция ti = j;
8. Для каждого Kj ищутся вершины графа, не вошедшие в него. Получено j и семейство МВУМ = {1, 2, ..., l};
Количество сомножителей в этом терме и есть хроматическое число графа. Число минимальных термов – число вариантов раскраски графа. А каждое j – множество вершин, которые можно окрасить в один цвет.
Заметим, что п.п. 1-8 составляют метод Магу, а п.п. 9-11 – метод Петрика.
2. max ri = r1 = r4 = 4, выбираем x1;
4. Из матрицы R удаляем строку и столбец, соответствующие вершине x1;
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 = {x6}, C5 = (x5 x6);
10 . Из матрицы R удаляем строку и столбец, соответствующие вершине x5;
11. R = ;
13. Для каждого Kj ищем j:
1 = {x3, x6}, 2 = {x3, x5}, 3 = {x2, x6}, 4 = {x2, x5}, 5 = {x1, x4}. Получено семейство МВУМ ;
14. Для каждой вершины определим подмножества j, в которые она входит. Строим дизъюнкцию ti = j;
t1 = 5; t2 = 3 4; t3 = 1 2; t4 = 5; t5 = 2 4; t6 = 1 3;
15. Составляем конъюнкцию и выполняем минимизацию булевой функции
П’ = ti = t1 t2 t3 t4 t5 t6 = 5(3 4)(1 2) 5(2 4)(1 3) = =145 235
Хроматическое число графа (G) = 3. Существует два варианта раскраски графа.
с,с
с,с
к,к
к,з
з,з
з,к
1. Положить j = 1;
2. В матрице R подсчитываем число ненулевых элементов ri;
3. Упорядочим вершины графа в порядке не возрастания ri.;
5. Если остались неокрашенные вершины, то удалить из матрицы R строки и столбцы, соответствующие окрашенным вершинам. Положить j = j + 1 и перейти к п. 2, иначе, задача решена.
3. Красим в первый цвет вершины x1 и x3. Вершины x4, и x8 смежны вершине x3, остальные – смежны вершине x1;
4. Остались неокрашенные вершины, поэтому удалим из матрицы R строки и столбцы, соответствующие вершинам x1 и x3. Положим
j = j + 1 = 2.
7. Остались неокрашенные вершины, удалим из матрицы R строки и столбцы, соответствующие вершинам x2, x4 и x8. Положим j = j + 1 = 3.
8. Упорядочим вершины графа в ri : x5, x6, x7.
9. Красим в третий цвет вершины x5 и x7. Вершины x6 и x5 смежны;
10. Осталась неокрашенная вершина, удалим из матрицы R строки и столбцы, соответствующие вершинам x5 и x7. Положим j = j + 1 = 4.
11. В четвертый цвет окрашиваем вершину x6.
Все вершины окрашены.
Действительно, если в первый цвет окрасить вершины x1, x4 и x8, во второй – x2 и x5, то в третий можно окрасить оставшиеся вершины x3, x6 и x7.
Алгоритмы размещения элементов
Постановка задачи
Задано множество конструктивных элементов, связанных между собой в соответствии с принципиальной электрической схемой узла. Требуется разместить элементы на некотором плоском коммутационном поле таким образом, чтобы некоторый функционал достигал экстремального значения.
Классическим критерием задачи размещения является критерий суммарной длины соединений, который интегральным образом учитывает многочисленные требования, предъявляемые к расположению элементов и трасс их соединений.
Учитывая симметричность матриц R и D, запишем выражение для суммарной длины соединений
Таким образом, задача размещения по критерию СДС состоит в минимизации функционала F(P) на множестве перестановок Р. Данная задача называется задачей квадратичного назначения.
Заданы: матрица соединений R и матрица расстояний D.
Для каждого элемента ei найдем суммарное число соединений с другими элементами
Для каждой позиции pi найдем суммарное расстояние до остальных позиций
Очевидно, что позиции в центральной части коммутационного поля имеют меньшую характеристику di, чем позиции на периферии. Естественно, что центральные позиции наиболее благоприятны для размещения сильно связанных элементов.
Разместить элементы, заданные взвешенным графом G на множестве позиций Р.
Целевая функция размещения F(р)=24.
У оптимального размещения значение целевой функции F(р)=22.
Рассмотрим алгоритм Дейкстры. Он основан на приписывании вер-шинам временных пометок, дающих верхнюю границу длины пути от s к этой вершине. Эти пометки постепенно уточняются, и на каж-дом шаге итерации точно одна из временных пометок становится постоянной. Это указывает на то, что пометка уже не является верхней границей, а дает точную длину кратчайшего пути от s к рассматриваемой вершине.
Алгоритм работает только для графов без ребер отрицательного веса.
Пусть l(xi) пометка вершины xi, а l(xi)+ - постоянная пометка вершины.
2. Для всех xi Гр, пометки которых временные, изменить пометки в соответствии со следующим выражением
l(xi) = min[l(xi), l(p) + c(p,xi)].
3. Среди всех вершин с временными пометками найти такую, для которой l(xi*) = min[l(xi)].
4. Считать пометку вершины xi* постоянной l(xi*)+ и положить p= xi*.
5. (Если надо найти лишь путь от s до t).
Если p=t, то l(p) – длина кратчайшего пути, конец. Если p ≠ t, перейти к п.2.
6. (Если надо найти путь от s до всех остальных вершин).
Если все вершины имеют постоянные пометки, то конец, если есть временные пометки, то перейти к п.2.
Сами пути можно получить при помощи рекурсивной процедуры с использованием соотношения: l(xi’) + c(xi’, xi)= l(xi), где xi’ – вершина, непосредственно предшествующая вершине xi в кратчайшем пути от s к xi.
3. l(xi*) = min[l(xi)] = l(x2) = 2.
4. x2 получает постоянную пометку l(x2) = 2+, p=x2.
5. Не все вершины имеют постоянные пометки, Гp ={x1, x3, x7} – временные пометки имеют вершины x3, x7, уточняем их:
l(x3)=min[∞, 2++3]=5; l(x7)=min[17, 2++10]=12.
9. l(xi*) = min[l(xi)] = l(x6) = 8.
10. l(x6) = 8+, p=x6.
11. Гp ={x1, x5, x7} – временные пометки имеют вершины x5, x7, уточняем их: l(x5)=min[∞ , 8++15]=23; l(x7)=min[12, 8++3]=11.
15. l(xi*) = min[l(xi)] = l(x4) = 16.
16. l(x4) = 16+, p=x4.
17. Не все пометки постоянные, Гp ={x3, x5, x7} – временную пометку имеет вершина x5, уточняем ее: l(x5)=min[23, 16++5]=21.
18. l(xi*) = l(x5) = 21.
19. l(x5) = 21+, p=x5.
20. Все пометки постоянные.
l(x5) = 21, Гx5 ={x4, x6},
21 = l(x4)+ c(x4, x5)=16+5, 21 ≠ l(x6)+ c(x6, x5)=8+15.
Это означает, что в вершину x5 мы попали из вершины x4.
Далее, l(x4) = 16, Гx4 ={x3, x5, x7}, 16 ≠ l(x3)+ c(x3, x4)=5+15,
16 ≠ l(x5)+ c(x5, x4)=21+15, 16 = l(x7)+ c(x7, x4)=11+5.
Это означает, что в вершину x4 мы попали из вершины x7.
Далее, l(x7) = 11, Гx7 ={x1, x4, x6}, 11 ≠ l(x1)+ c(x1, x7)=0+17,
11 ≠ l(x4)+ c(x4, x7)=16+5, 11 = l(x6)+ c(x6, x7)=8+3.
Это означает, что в вершину x7 мы попали из вершины x6.
Далее, l(x6) = 8, Гx6 ={x1, x3, x5, x7}, 8 ≠ l(x1)+ c(x1, x6)=0+10,
8 = l(x3)+ c(x3, x6)=5+3, 8 ≠ l(x5)+ c(x5, x6)=21+15, 8 ≠ l(x7)+ c(x7, x6)=11+3.
Это означает, что в вершину x6 мы попали из вершины x3.
Далее, l(x3) = 5, Гx3 ={x2, x4, x6}, 5 = l(x2)+ c(x2, x3)=2+3,
5 ≠ l(x4)+ c(x4, x3)=16+15, 5 ≠ l(x6)+ c(x6, x3)=8+3.
Это означает, что в вершину x3 мы попали из вершины x2.
Это означает, что в вершину x2 мы попали из вершины x1.
Кратчайший путь от вершины x1 до вершины x5 найден .
Задачи, близкие к задаче о кратчайшем пути
1. Наиболее надежный путь.
В этом случае вес ребра представляет его надежность. Надежность пути от s к t, составленного из ребер, взятых из множества P, задается формулой где ρij – надежность ребра (xi, xj).
3. Путь с наибольшей пропускной способностью.
В этом случае каждое ребро графа имеет пропускную способность qij и требуется найти путь от s к t с наибольшей пропускной способностью. Пропускная способность пути P определяется ребром из P с наименьшей пропускной способностью, т.е.
Определение. Если множество вершин графа G(X,U) разбить на два подмножества Х1 и Х2 (где Х=Х1 Х2), то множество ребер графа, одни концевые вершины которых лежат в Х1, а другие в Х2, называется разрезом графа G.
Алгоритм Франка – Фриша
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 и теми ребрами, которые оказались закороченными, будет иметь максимальную пропускную способность.
4. Это ребра (s, x4), (x3, x6), (x5, x8), (x6, x9) и (x7, x12). Получаем граф G1.
18
7. Проводим разрез К3, находим
18
Путь с наибольшей пропускной способностью.
Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:
Email: Нажмите что бы посмотреть