Анотація
Білик
А.В., Грунський І.С., Ногіна Н.В.
Метод
побудови найкоротших шляхів у
дворівневому графі.
Запропоновано
новий метод пошуку найкоротших шляхів у дворівневому графі
з поміченими вершинами і дугами.
Загальна постановка проблеми
Проблема пошуку
найкоротших
шляхів у графі є загально відомою та важливою для різних застосовань.
Існує ряд
алгоритмів для вирішення цієї задачі. В останній час ця проблема
інтенсивно вивчається для графів складної багаторівневої структури.
У даній
роботі розглядається задача пошуку найкоротших шляхів у поміченому
дворівневому
графі від початкової вершини до деякої фінальної.
Актуальність проблеми для таких складних графів
полягає в
тому, що в
прикладних задачах найкоротші шляхи потрібно знаходити для перевезень,
які
проходять через шляхи, міста, складні транспортні розв’язки.
Тому
тематика
даної роботи достатньо актуальна.
Мета статті
Розробити метод
пошуку
найкоротших шляхів у дворівневому графі з поміченими
вершинами і дугами, який дозволяв би знаходити помітки найкоротших
шляхів та
якість цих шляхів.
Постановка задачі
Розглядаються зв'язні неорграфи [2]
зі скінченими
множинами вершин Q і
ребер E, що не мають
петель.
Ребро – це є пара вершин (q, u). Ребра графа G відмічено мітками
з множини Y,
виділено початкову
вершину та
множину фінальних вершин.
Таким чином, G=(Q, E, Y, ρ, q0,
F), де:
Q –
скінченна множина
вершин графа
G ;
E –
множина ребер графа G;
Y –
множина поміток ребер
графа G;
ρ: E→Y –
функція розмітки ребер
графа 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;
µ:
T→M –
функція розмітки
вершин графа
Gi;
t: D→P
– функція
розмітки дуг графа Gi;
n0 –
початкова вершина графа Gi;
fi –
фінальна вершина графа Gi.
Вершина графа Gi має наступний
вигляд: (qi;
tj), де qi –
номер
вершини графа G, а tj – номер
вершини графа Gi. Дуга графа G з¢єднує унікальну
пару
вершин різних графів Gi.
Кожній вершині qi графа G поставимо у
відповідність число Z(qi) –
якість цієї вершини.
Шляхом у графі G
назвемо скінченну послідовність l
= q1 e1
q2 e2…ek-1 qk, де qk з Q, а ei – дуга,
початком якої є
вершина qi, а кінцем
– qi+1.
Шляхом у графі Gi.
назвемо скінченну
послідовність s = (q1;
ti)
d1 (q2;
tj)d2…dk-1(qk;
tn), де (qi;
tj) з Ti, а di – дуга,
початком якої є
вершина (qi;
tj), а кінцем
– (qi+1; tn).
Відмітка шляху s – це
послідовність
відміток w(s)=m1 p1 m2 p2…pk-1 mk, де mi=
µ(Ti),
pi
=t (di).
Генеральним шляхом
назвемо послідовність I=
(q1; ti)
x1 (q2;
tj)x2…xk-1(qk;
tn), де (qi;
tj) з Ti, а xi
може
бути дугою ei графа G або
дугою di графа Gi.
Відмітка шляху I – це
послідовність
відміток w(I)=a1 b1 a2 b2…bk-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 q ≠ q0 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.