русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Алгоритм самой близкой вставки


Дата добавления: 2013-12-23; просмотров: 4347; Нарушение авторских прав


1. Выбрать любую вершину. Выбрать инцидентное вершине ребро е с самым маленьким весом, и пусть С является последовательностью ребер: е, е. С - стартовый "цикл", (хотя строго говоря это не цикл, так как данная последовательность содержит повторяющееся ребро).

2. Выбрать ребро с самым маленьким весом, которое присоединяет инцидентную ему вершину, находящуюся вне цикла С к вершине входящей в цикл С (может иметься несколько возможностей выбора таких ребер).

3. Увеличении цикла в результате включения выбранной вершины V0. Чтобы решить, как вставить V0, следует рассмотреть все пары V1 , V2 смежных вершин цикла С и выбрать такую пару, для которой выражение:

I = d10 + d02- d12

является минимальным, где dij - обозначает вес ребра, соединяющего Vi и Vj. Это выражение I представляет увеличение полного веса цикла С, после включения в него вершины V0. Мы увеличиваем цикл С, включая вершину V0 путем присоединения ребра соединяющего вершины V1 и V0, и ребра, соединяющего вершины V0 и V2, и удаляя затем ребро соединяющее вершины V1 и V2.

4. Повторяем шаги 2 и 3, пока цикл не будет включать в себя все вершины графа.

Пример 5.1. Проиллюстрируем алгоритм ближайшего включения для сети, представленной на рис. 13 (которая удовлетворяет неравенству треугольника). Веса ребер представлены в матрице расстояний, см. табл.9.

 

Табл. 9. Матрица расстояний dij, пример 4

узел А B C D E F
A
B
C
D
E
F

 

Чтобы выполнить шаг I, мы снача­ла выберем вершину маркированную на рисунке буквой А (мы могли бы, конечно, выбрать любую другую из вершин). Ребро eAF является ребром, инцидентным вершине А, и имеет самый маленький вес из числа ребер, инцидентных вершине А. Поэтому первый цикл будет: eAF, eFA (от вершины А до вершины F и назад к вершине А).



Рис. 13

Ребро с самым маленьким весом, инцидентное вершине А или вершине — F это ребро еАВ, поэтому вершина В — это первая вершина, которую следует вставить. Самый короткий путь, которым вершина В может быть вставлена в цепь будет: от вершины А до вершины В и назад через вершину F. Это порождает цепь еАВ, eBF, eFA, показанную на рис. 14.

Рис. 14

 

Вершина, которая является самой близкой к вершине этой цепи — это вершина С, поэтому мы должны найти лучший способ вставить ее. Цены I для трех ребер текущей цепи будут:

I (еAB) = dAC + dCB - dAB = 9 + 6 - 4 = 11,

I (eBF) = dBC + dCF - dBF = 6 + 12 - 6 = 12 ,

I (eFA) = dFC + dCA - dFA = 12 + 9 - 3 = 18.

Мы таким образом увеличиваем цепь путем удаления ребра еAB и вставляя на его место ребра еАС, еCB. Это дает цепь, показанную на рис. 15.

Рис. 15

 

Повторяя этот процесс дважды, мы увеличиваем цепь, включая сначала вершину D и затем вершину Е. Заключительная цепь, eAC, eCD, eDE, eEB, eBF, eFA, является тре­буемой цепью Гамильтона с полным весом 9 + 5 + 4+ 10+ 6 + 3 = 37.

Этот пример иллюстрирует тот факт, что алгоритм самой близкой вставки может не производить минимальную цепь Гамильтона. Граф действительно имеет единственную минимальную цепь Гамильтона - еАВ, еBC, eCD, eDE, eEF, eFA с полным весом 29.

 

 

ЛЕКЦИЯ 6. Сетевое планирование. Задача о кратчайшем сроке.



<== предыдущая лекция | следующая лекция ==>
Алгоритм Краскала или жадный для поиска минимального остовного дерева | ЛЕКЦИЯ 7. Максимальные потоки. Теорема Форда и Фалкерсона.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.