Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Відшукування найкоротшого шляху у зв’язувальній мережіСодержание книги
Поиск на нашем сайте
Задача про відшукування найкоротшого за довжиною шляху у зв'язувальній мережі належить до фундаментальних задач комбінаторної оптимізації. До неї можна зводити широке коло практичних задач, котрі виникають в різних галузях народного господарства, й насамперед у зв'язку.
О з н а ч е н н я. Шляхом називається послідовність вершин µir = (i, j, …, r) або послідовність дуг (ребер) µir = {(i, j),…(к, r)}, що з'єднують пару вершин i та r графа G.
Сума наданих дугам (ребрам) ваг у шляху µir визначає довжину шляху. Шлях з вершини i у вершину r, що має мінімально можливу довжину, називається найкоротшим шляхом. Мережа називається зв'язувальною, якщо в ній для кожної пари вершин є принаймні один шлях, котрий їх сполучує. На підставі мережної моделі задачу про знаходження найкоротшого шляху можна сформулювати таким чином. Нехай дана зв'язувальна мережа G, в якій кожній дузі (ребру) надана позитивна вага, пропорційна до її (його) довжини. Потрібно знайти шлях µst поміж заданими вершинами s та t, що має мінімально можливу довжину, тобто
де М – множина всіх можливих шляхів з s в t. Одним з найбільш ефективних алгоритмів, що розв'язують поставлену задачу, є алгоритм Дейкстри, що носить ім'я автора. Особливістю цього алгоритму є той факт, що в процесі його виконання водночас будуються найкоротші шляхи із заданої вершини s у решту вершин мережі. Це пояснюється тим, що будь-яка вершина i Позначки поділяються на тимчасові і постійні. Тимчасові позначки можуть змінюватися внаслідок роботи алгоритму, а постійні – не змінюються. Нижче наводиться алгоритм Дейкстри в покроковій формі. Крок 0. Для вершини s покладається Lss = 0, а для інших вершин Lsj = ∞. Всі вершини мають тимчасові позначки виду (Lsj,s). Крок 1. Серед вершин з тимчасовими позначками вибираємо вершину r, для котрої Lsr=min(Lsj). Позначка вершини r стає постійною. Крок 2. Якщо всі вершини мережі дістали постійні позначки – кінець роботи алгоритму. В противному разі – перехід до кроку 3. Крок 3. Перераховуємо тимчасові позначки для вершин, суміжних до вершини r, що дістала постійну позначку на кроці 1, відповідно до виразу: Lsj=min(Lsj, Lsr+Lrj ). Перехід до кроку 1. Трасування шляху µst складається в оберненому напрямку, слідуючи з вершини t у s, керуючись вершинами i в постійних позначках. Проілюструємо роботу алгоритму Дейкстри на прикладі. Віднайдемо найкоротший шлях із вершини s у вершину t в мережі, зображеній на рис. 2.9. Ваги, проставлені біля ребер, визначають їхні довжини. Крок 0. Позначка P для вершини s має вид: Рs=(0, 0). Для решти вершин Рi=(∞, s). Всі позначки тимчасові. Крок 1. Серед тимчасових позначок найменший параметр довжини має вершина s, оскільки Lss=0. Її позначка стає постійною (позначимо її подвійними дужками). Крок 3. Перераховуємо тимчасові позначки для вершин, суміжних до вершини s. Для вершини 1 параметр довжини Ls1 = Lss + ls1 = 0 + 15 = 15. Дістане значення менше за те, що є (Lsi = ∞) і тому нове значення тимчасової позначки буде P1 = (15, s). Для вершини 2 нова позначка має значення P2 = (17, s). Для вершини 3 P3 = (10, s). Перейшовши до кроку 1, обираємо вершину 3, оскільки вона має найменший параметр довжини Ls3 = 10, серед усіх вершин з тимчасовими позначками. Її позначка стає постійною. Оскільки ще не всі вершини дістали постійні позначки, переходимо до кроку 3 і здійснюємо перелік позначок для вершин, суміжних до вершини 3: P2 =(17, s) можна залишити без зміни, оскільки новий параметр довжини дорівнює попередньому значенню. P5 =(22, 3), Pt =(30, 3). Вершина 1 на кроці 1 дістає постійну позначку, оскільки її параметр довжини мінімальний. Нове значення позначки на кроці 3 дістає вершина 4, а саме P4 = (24, 1).
Рисунок 2.9
Повертаючись до кроку 1, встановлюємо постійну позначку для вершини 5. Змінити значення позначок на кроці 3 не вдається. Фіксуємо наступну вершину з постійною позначкою – це вершина 4. Змінити тимчасову позначку для вершини t не вдається – і вона автоматично стає постійною. На цьому робота алгоритму закінчується. Трасування шляху µst визначаємо, рухаючись у зворотному напрямку від t до s через вершини, вказані в позначках: t→ 3→ s.
|
||
|
Последнее изменение этой страницы: 2016-04-23; просмотров: 380; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.009 с.) |