Назад в библиотеку

Метод побудови найкоротших шляхів у дворівневому графі

Автори: Г.В. Білик, І.С. Грунський, Н.В. Ногіна
Джерело: Информационно-управляющие системы и компьютерный мониторинг / Материалы IV международной научно-технической конференции студентов, аспирантов и молодых ученых.   Донецк, ДонНТУ 2013, секция 8 [Перейти]

  Анотація

    Білик А.В., Грунський І.С., Ногіна Н.В. Метод побудови найкоротших шляхів у дворівневому графі. Запропоновано новий метод пошуку найкоротших шляхів у дворівневому графі з поміченими вершинами і дугами.

   Загальна постановка проблеми

Проблема пошуку найкоротших шляхів у графі є загально відомою та важливою для різних застосовань. Існує ряд алгоритмів для вирішення цієї задачі. В останній час ця проблема інтенсивно вивчається для графів складної багаторівневої структури. У даній роботі розглядається задача пошуку найкоротших шляхів у поміченому дворівневому графі від початкової вершини до деякої фінальної.

Актуальність проблеми для таких складних графів полягає в тому, що в прикладних задачах найкоротші шляхи потрібно знаходити для перевезень, які проходять через шляхи, міста, складні транспортні розв’язки. Тому тематика даної роботи достатньо актуальна.

   Мета статті

Розробити метод пошуку найкоротших шляхів у дворівневому графі з поміченими вершинами і дугами, який дозволяв би знаходити помітки найкоротших шляхів та якість цих шляхів.

   Постановка задачі

Розглядаються зв'язні неорграфи [2] зі скінченими множинами вершин Q і ребер E, що не мають петель. Ребро – це є пара вершин (q, u). Ребра графа G відмічено мітками з множини Y, виділено початкову вершину та множину фінальних вершин. Таким чином, G=(Q, E, Y, ρ, q0, F), де:

Q – скінченна множина вершин графа G ;

E – множина ребер графа G;

Y – множина поміток ребер графа G;

ρ: EY – функція розмітки ребер графа G;

q0 – початкова вершина графа G;

F–множина фінальних вершин графа G.

Граф G будемо називати графом першого рівня. Кожна вершина q графа G є графом Gi – графом другого рівня без петель і кратних дуг, в якому вершини і ребра відмічено мітками з множин M і P відповідно. Так, Gi =(Ti, Di, Mi, Pi, µ , t,  n0, fi), де:

Ti – скінченна множина вершин графа Gi;

Di – множина дуг графа Gi;

Mi – множина поміток вершин графа Gi; 

Pi – множина поміток дуг графа Gi;

µ: TM – функція розмітки вершин графа Gi;

t: DP  функція розмітки дуг графа Gi;

n0 – початкова вершина графа Gi;

fi – фінальна вершина графа Gi.

Вершина графа Gi  має наступний вигляд: (qi; tj), де  qi  – номер вершини  графа G, а  tj – номер вершини графа Gi. Дуга графа G з¢єднує унікальну пару вершин різних графів Gi.

Кожній вершині qi графа G поставимо у відповідність число Z(qi) – якість цієї вершини.

Шляхом у графі G назвемо скінченну послідовність l = q1 e1 q2 e2ek-1 qk, де qk з Q, а ei – дуга, початком якої є вершина qi, а кінцем – qi+1.

Шляхом у графі Gi. назвемо скінченну послідовність s = (q1; ti) d1 (q2; tj)d2dk-1(qk; tn), де (qi; tj) з Ti, а di – дуга, початком якої є вершина (qi; tj), а кінцем – (qi+1; tn).

Відмітка шляху s – це послідовність відміток w(s)=m1 p1 m2 p2pk-1 mk, де mi= µ(Ti), pi =t (di).

Генеральним шляхом назвемо послідовність I= (q1; ti) x1 (q2; tj)x2xk-1(qk; tn), де (qi; tjз Ti, а xi  може бути дугою ei графа G або дугою di графа Gi.

Відмітка шляху I – це послідовність відміток w(I)=a1 b1 a2 b2bk-1 ak, де ai= µ(Ti), bi = ρ(ei) або bi = t (di).

Вагою генерального шляху I між вершинами qi та qj, будемо називати вагу шляху між вершинами (qi; tn)та (qj; tm) і визначимо її величину за наступною формулою на рисунку 1.1.

                                                  Формула ваги генерального шляху                                 

                                                                                  Рисунок  1.1 – Формула ваги генерального шляху

Якість генерального шляху I визначимо через величину dis (I) за  формулою на рисунку 1.2.

                                           Формула якості генерального шляху                          

                                                                     Рисунок  1.2 – Формула якості генерального шляху                                               

 

Для вершини qi визначимо множину Pre(qi) = (qj | (qj, qi)=ei) та множину Post(qi) = (qj | (qi, qj)=ei).

Визначимо операцію з'єднування поміток різних дуг і шляхів. Коли з'єднуються помітки різних дуг, то між ним ставиться оператор об'еднання «W», який у подальшому замінюється відповідно правилам:

а) якщо оператор «W» з'єднує помітки двох однакових вершин: (qi,tn)xw(qj,tm)W(qj,tm)xv (qk,tp), то замінюємо ці помітки разом з оператором на одну помітку: (qi,tn) xw (qj,tm) xv (qk,tp);

б) якщо оператор «W» з'єднує помітки двох різних вершин: (qi,tn)xw (qj,tm)W(qk,tm), але існує дуга або шлях між цими вершинами: (qj,tm)xv (qk,tm), то замінюємо ці помітки разом з оператором на помітку знайденої дуги або шляху: (qi,tn) xw (qj,tm)xv(qk,tm);

в) якщо пункти а або б не виконуються, то операція з'єднування не можлива.

   Алгоритм

Вхідні дані: помічений дворівневий граф G з початковою і множиною фінальних вершин.

Вихідні дані: одна або декілька поміток найкоротших шляхів, якість цих шляхів.

Крок 1.

1.1)  Для неорієнтованих графів G для кожного ребра між парою вершин qi та qj вводиться дві дуги: (qi,qj) та (qj,qi).

1.2)  У список вершин графа G вводиться фіктивна кінцева вершина fin, а в список дуг – дуга з кожної фінальної вершини qi у вершину fin. Ця дуга позначається відміткою µ(qi;tj).

1.3)  Створюємо представлення графа G у вигляді списку дуг з їх відмітками і вагою, при цьому відмітки відповідних вершин графів Gi. переносяться на дуги графа G (наприклад, якщо помітками двох вершин і дуги між ними будуть відповідно (qi,tn),(qj,tm) та xw, то після перенесення поміток вершин на дугу, помітка дуги матиме наступний вигляд: (qi,tn) xw (qj,tm)).

1.4)  Для кожного ребра графа Gi між парою вершин (qi; tn) та (qj; tm) вводиться дві дуги: ((qi; tn);(qj; tm)) та ((qj; tm);((qi; tn)), при цьому відмітки вершин переносяться на дуги.

Крок 2. If в графі G існує хоч одна  вершина, що не є початковою або фінальною, з якої виходить хоч одна дуга в фінальну, then go to Крок 3, else go to Крок 7.

Крок 3. Вибираємо qi =Pre(fin); q:= qi.

Крок 4. If qq0 then видаляємо вершину q та усі вхідні та вихідні з неї дуги. If при цьому є деякий шлях qi ek q e qj, де qi Pre(q) та qj = Post(q), then у граф додається дуга (qi ,qj) з відміткою ekW e, отриманою за допомогою операції  з'єднування.

Else, якщо q = q0 go to Крок 2.

Крок 5. Видаляємо ті петлі, в помітках яких початок і кінець співпадає.

Крок 6. Заміна оператора з'єднування.

На кроках 4 – 6 відбувається видалення однієї вершини.

Для вершин, помітки яких з'єднані оператором «W» (наприклад, (qi; tn)W(qi; tm)) працює алгоритм [5], який шукає оптимальний шлях між цими вершинами (наприклад, між tn і tm, де tn – визначимо як початкову вершину, а tm – як фінальну). Для цього створюємо представлення відповідного графа Gi ( tn, tm Î Gi) у вигляді списку дуг з їх відмітками і вагою.

If в результаті роботи алгоритму [5] оптимальний шлях знайдено, then поміткою цього шляху замінюємо оператор «W» разом з двома помітками, які він з'єднує.

If оптимальних шляхів декілька, then в список дуг графа G додається така ж сама дуга, але, відповідно, з іншою поміткою.

Else, якщо шляху не існує, then видаляємо дугу (qi ,qj).

Крок 7. Видаляємо усі вершини, що не є початковою або фінальною та усі вхідні та вихідні з них дуги. В результаті одержуємо граф, що складається лише з двох вершин: початкової та фінальної.

Обчислюємо якість шляху QPath для усіх дуг графа G, які з'єднують ці вершини. Оберемо найменше значення QPath, яке і визначає оптимальний шлях у графі. Якщо найменших значень QPath декілька, то результатом буде декілька шляхів з цими значеннями.

    Висновки

Запропоновано новий метод пошуку найкоротших шляхів у дворівневому графі з поміченими вершинами і дугами, який працює з дворівневим графом G без необхідності приводити його до стандартного вигляду однорівневого графа, але при цьому використовується метод локальної редукції графа.

В результаті застосування методу отримуємо одну або декілька поміток для оптимальних  шляхів і якість цих шляхів у графі G.

Легко бачити, що у випадку, коли всі графи Gi мають по одній вершині, розроблений метод співпадає з раніше розробленим алгоритмом пошуку найкоротшого шляху у поміченому графі методом локальної редукції графа [5]. Таким чином, запропонований метод є суттєвим узагальненням раніше розробленого алгоритму. Узагальнення полягає у наступному.

1)  Кожна вершина графа G є графом Gi.

2)  Проводиться обчислення якості шляху з урахуванням ваги помітки кожної вершини у цьому шляху та помітки ваги кожного ребра у той час, як у [5] виконується тільки обчислення ваги  позначок ребер у шляху.

Використовується алгоритм [5] для графів Gi.

  Список використаної літератури

1. Ногина Н.В. Синтез регулярного выражения языка, порожденного помеченным графом, методом его локальной редукции / Н.В. Ногина,  И.С. Грунский // Искусственный интеллект. – 2012. – №3. – С. 348-353.

2.     Кристофидес, Н. Теория графов: алгоритмический подход / Н. Кристофидес. — М.: Мир, 1978. — 430 с.

3.   Ахо А. Построение и анализ вычислительных алгоритмов / А. Ахо, Дж. Хопкрофт, Дж. Ульман. – М.: Мир, 1979. – 536 с.

4.  Батищев Д.И. Многоуровневая декомпозиция гиперграфовых структур / Батищев Д.И., Старостин Н.В., Филимонов А.В. // Прилож. к журналу «Информационные технологии» №5(141). – М.: Новые технологии. – 2008. 32 с.

5.     Ногина Н.В. Построение кратчайшего пути в помеченном графе при помощи локальной редукции графа / Н.В. Ногина, А.В. Билык // Сучасна інформаційна Україна: інформатика, економіка, філософія:  матеріали доповідей конференції, 26 квітня 2012 року. – Донецьк, 2012. – 316 с. – С. 76-79.