РЕШЕНИЕ ЗАДАЧ НАХОЖДЕНИЯ КРАТЧАЙШЕГО МАРШРУТА СЛЕДОВАНИЯ СПЕЦТРАНСПОРТА МЧС РОССИИ К МЕСТУ ВЫЗОВА НА ОСНОВЕ АЛГОРИТМА «ПОИСКА В ШИРИНУ BFS»
С.Н. Терёхин, доктор технических наук, профессор; А.В. Вострых; И.В. Скуртул.
Санкт-Петербургский университет ГПС МЧС России
Выявлена одна из самых актуальных задач повседневной деятельности оперативных служб МЧС России, а именно выбор оптимального пути доставки сил и средств пожарно-спасательных подразделений к месту вызова. С помощью алгоритма BFS (от англ. breadth-first search) и программной реализации с помощью модели распределённых вычислений MapReduce представлено решение возникающих проблем, связанных с выполнением нормативных регламентов и скорейшего прибытия к месту происшествий в ситуации невозможности использования или отсутствия навигационных средств. Произведена итерационная работа алгоритма на примере Невского района Санкт-Петербурга с учетом кривизны дорог и наличия проблемных участков. Приведен проект программы, строящей оптимальные пути доставки сил и средств.
Ключевые слова: силы и средства, подразделения МЧС России, фреймворк MapReduce, оптимальный маршрут следования, алгоритм BFS
THE DECISION OF THE TASKS OF FINDING THE SHORTEST ROUTE OF THE INVESTIGATION OF THE SPECIAL TRANSPORT OF EMERCOM OF RUSSIA TO THE PLACE OF THE CALL ON THE BASIS OF THE ALGORITHM OF SEARCH IN BFS WIDTH
S.N. Terekhin; A.V. Vostrykh; I.V. Skurtul.
Saint-Petersburg university of State fire service of EMERCOM of Russia
Revealed one of the most urgent tasks of the daily activities of operational services EMERCOM of Russia, namely the choice of the best way to deliver forces and means of fire and rescue units to the place of call. Using the BFS algorithm (from the English breadth-first search) and the software implementation using the MapReduce distributed computing model, a solution is presented to emerging problems related to the implementation of regulatory procedures and early arrival to the site of incidents in a situation of inability to use or lack of navigation tools. An iterative algorithm was performed using the example of Nevsky District of Saint-Petersburg, taking into account the curvature of roads and the presence of problem areas. A draft program is presented that builds the best ways to deliver forces and equipment.
Keywords: forces and resources, units of EMERCOM of Russia, framework MapReduce, optimal route, BFS algorithm
Сегодня, в быстро растущей динамике движения и строительства современных мегаполисов проблемы защиты населения от происшествий природного и техногенного характера являются наиболее приоритетными. Пожарно-спасательные подразделения МЧС России ежедневно совершают сотни выездов на происшествия различного характера и сложности, больше половины из которых в нашей стране приходится на городскую территорию [1].
Особенностью городской среды является высокоплотный поток движения автотранспорта, вызванный стремительным ростом как количества населения в городах, так и числом водителей. В такой ситуации возникновение пробок, заторов и аварий на дорогах практически непредсказуемо и может внезапно препятствовать подразделениям спасателей, следующих к месту вызова. Используемые в настоящее время устройства навигации и картографические приложения обладают рядом серьёзных недостатков, которые недопустимы в работе оперативных подразделений МЧС России, когда каждая минута может стоить человеческих жизней.
Дающие сбои алгоритмы картографических приложений не гарантируют безотказной работы. Они больше специализированы на сферы услуг, такие как такси, предоставляя не всегда кратчайшие маршруты следования в целях коммерческой выгоды. Ситуации со сбоями в интернет-соединении также могут привести к внезапным трудностям, когда все надежды были направлены на эти сервисы, поэтому разработка программного обеспечения, позволяющего предоставлять оптимальные маршруты следования к месту происшествия для подразделений МЧС России, является достаточно актуальной в настоящее время [2].
Сложность задачи выбора оптимального маршрута доставки сил и средств заключается как в постоянном увеличении количества объектов, находящихся в зоне прикрытия определённого подразделения МЧС России [2-4], так и в постоянно растущей дорожной сети, что приводит к росту числа комбинаций путей, ведущих к месту происшествия. Поэтому основной идеей являться заблаговременное отсечение заведомо ложных маршрутов с учётом проблематичных участков дорог, железнодорожных переездов, количества светофоров и даже поворотов на пути следования, которые снижают скорость пожарно-спасательной техники и, как следствие, увеличивают время прибытия.
В качестве инструмента нахождения оптимальных маршрутов на графе выбран алгоритм «поиск в ширину ВБ8» [5]. Обход графа в ширину является итеративным алгоритмом. Он работает следующим образом: на каждой итерации производится работа с некоторым множеством вершин, начиная с первой (начальной вершины). От неё находятся минимальные расстояния до всех прилегающих к ней смежных вершин. Самой первой вершине п0 присваиваем значение 0 (рис. 1). Далее рассматриваем все вершины, к которым можно перейди за один шаг от п0, это п1, п2, п3, выделенные оранжевым цветом, и присваиваем им значение 1.
На следующей итерации переходим к следующим вершинам, расположенным в одном шаге от П1, п2, п3, получаем п4, п5, п6, п7, присваиваем им значение 2 и выделяем бордовым цветом. На последней итерации, в рассматриваемом примере, переходим от множества вершин п4, п5, п6, п7 к вершинам, находящимся также на расстоянии одного ребра - это п8 и п9, присваивая им значение 3 и выделяя фиолетовым цветом. Таким образом, пройдя 4 множества (фронта) вершин:
В
Рис. 1. Параллельный поиск в ширину БЕ8, начальный этап
1) no;
2) ni, П2, пз;
3) П4, п5, п6, п7;
4) п8 и n9 обход завершается (рис. 2).
Рис. 2. Распределение вершин по трём фронтам алгоритма BFS
Теперь реализуем алгоритм поиска в ширину с помощью модели распределённых вычислений MapReduce.
MapReduce - это фреймворк, используемый для параллельных вычислений над большими наборами данных в компьютерных кластерах. Вычисления MapReduce проводят на двух этапах: Map и Reduce, названных по аналогии с функциями высшего порядка map и reduce. На Мар-шаге производится предварительная обработка входных данных. Для этого главный узлел (master node) получает входные данные задачи, разделяет их на части и передает рабочим узлам (worker node) для предварительной обработки. На Reduce-шаге производится свёртка предварительно обработанных данных. Главный узел получает ответы от рабочих узлов и на их основе формирует результат - решение задачи рис. 3.
Рис. 3. Схематичное представление работы модели MapReduce
Основное преимущество фреймворка заключается в возможности распределенно производить операции предварительной обработки и свертки, которые работают независимо друг от друга и могут производиться параллельно. Аналогично, множество рабочих узлов может осуществлять свертку [6].
Используем модель MapReduce для расчётов многочисленных вариантов графа возможных путей следования подразделений МЧС России к месту происшествия. Данные будут представляться в виде ключей (key) и значений (value). В качестве ключа возьмём номер вершины: вершина n (1, 2, 3, 4...) рис. 4. Value: d (расстояние от начала), adjacency list (вершины, доступные из n). Инициализация для всех вершин, кроме первой (начальной), d=оо.
Рис. 4. Примерный граф путей следования пожарно-спасательных подразделений
к месту происшествия
Запись первого поля имеет вид: 1 -> [0, {2, 3, 4}], где 1 - номер вершины; 0 - минимальное расстояние до рассматриваемой вершины; {2, 3, 4} - список смежных вершин. Общая запись имеет вид:
1 -> [0, {2, 3, 4}]
2 -> [ оо, {5, 6}]
3 -> [ о, { }]
4 -> [ о, {7, 8}]
5 -> [ о, {9, 10}]
Так из вершины 2 возможен переход в вершины 5 и 6; вершина 3 не имеет исходящих вершин, потому ей присваивается пустой список { } и т.д. (рис. 5). Изначально, зная, что из первой вершины в первую расстояние равно нулю, присваиваем ей значение 0, остальным вершинам присваиваем оо. Проводя итерации эти значения будут постепенно меняться, таким образом, пройдя весь граф получим минимальные расстояния до каждой из вершин. Программная реализация mapper будет иметь вид: mapper (key, value):
emit (key, value)
V m e value.adjacency_list: emit (m, value.d+1).
Mapper 1
1 -> [0, {2, 3, 4}]
Mapper 2
2 -> [oo, {5, 6} ]
1 -> to, {2, 3, 4}]
2 -> [1, {} ]
3 -> [1, {} ]
4 -> [1, {} ]
2 -> [00, {5, 6}]
5 -> [oo, {} ]
6 -> {} ]
Рис. 5. Визуализация алгоритма в MapReduce
Псевдокод программной реализации алгоритма BFS будет иметь вид: class Reducer
method Reduce (nid m, [d1, d2, ...])
dmin — да //минимальное расстояние равно бесконечности
M ^ 0 //структура графа пока пустая
For all d counts [di, d2, .] do //перебираем все значения d
If IsNode (d) then //если это значение хранит список смежностей
M ^ d
Else if d < dmin then dmin ^ d
M.Distance ^ dmin Emit (nid m, node M)
/тогда запоминаем это значение
//если расстояние меньше данного //то обновляем расстояние //запоминается минимальное расстояние
Таким образом, перебрав все значения, получим структуру графа (список смежностей для вершин) и минимальное расстояние до каждой вершины.
Для выполнения алгоритма необходимо запускать несколько итераций (рис. 6). Выход одной программной задачи будет являться входом для другой. На начальном этапе имеем расстояние первой вершины, равное 0, и список смежных вершин. На второй итерации получим расстояние до вершины 2, 3, 4, равное 1, до остальных расстояния остаются равными да.
Input
Iteration 1
l -> [0, <2, 3, 4}]
2 -> [oo, [5, 6} ]
3 -> [00, {>
4 -> [00, {7, 8} ]
5 -> [00, {9, 10} ]
1 -> [0, {2, 3, 4}]
2 -> [1, (5, 6} ]
3 -> [1, О 1
4 -> [1, [7, 8} ]
5 -> [oo, (9, 10} ]
Result
1 -> [0, {2, 3, 4}]
2 -> [1, (5, 6} ]
3 -> [1, {}
4 -> [1, <7, 8} ]
5 -> [2, (9, 10} ]
Iteration 2
Ф-Ф
1 -> [0, (2, 3, 4}]
2 -> [1, [5, 6} ]
3 -> [1, {}
4 -> [1, [7, 8} ]
5 -> [2, [9, 10} ]
Рис. 6
На следующей итерации на вход берётся новая полученная структура, с помощью которой находим расстояние до вершины 5, получаем значение 2 и т.д. На последней итерации получаем минимальное расстояние до каждой вершины и структуру графа.
Количество итераций будет равно диаметру графа. Алгоритм останавливается после того, как будут получены все расстояния. Для реализации этого необходимо использовать механизм счётчиков в MapReduce (если ещё остались неизвестные расстояния, до каких-либо вершин, то запускается следующая итерация, если нет, то счётчик останавливается). С помощью счётчиков в конце задачи выводится, сколько оказалось неизвестных расстояний до вершин.
Основным преимуществом реализации алгоритма поиска в ширину BFS на MapReduce (в отличии, например, от алгоритма Дейкстры) является возможность обработать граф с большим объёмом данных [7]. Так как в решаемой задаче рассматриваются многочисленные объекты как с массовым пребыванием людей, потенциально опасные объекты, так и жилые здания и широкий спектр комбинаций дорог, по которым можно до них добраться, то данная реализация как нельзя лучше подойдёт для поиска оптимальных путей следования подразделений МЧС России к месту вызова.
Рассмотренный алгоритм будет применяться дважды, первый раз в представленной выше форме: Vm Еvalue.adjacencylist: emit (m, value.d+1) для оценки выбранного маршрута по количеству точек (поворотов, светофоров), которые являются количеством отдельных рёбер. По результатам расчётов можно будет судить о степени труднодоступности пути.
Вторая реализация будет расширена следующей записью: V m Е value.adjacency list: emit (m, value.d+wp) и критерием остановки алгоритма (итерации завершаются, когда минимальный путь у каждой вершины больше не меняется). С помощью этого становится возможным присвоение каждому ребру определённого веса (длина участка дороги). Этим получим возможность просчитывать кратчайшие пути из всех возможных для выбора оптимального маршрута.
Рассмотрим реализацию алгоритма поиска в ширину на примере имитации пожарной тревоги в общеобразовательной школе № 350. В соответствии с расписанием выезда к месту происшествия будут направлены силы и средства пожарно-спасательной части № 40 Невского района. Смоделируем возможные пути доставки спасателей к месту вызова (рис. 7).
В процессе моделирования выделено три возможных маршрута доставки сил и средств пожарно-спасательного подразделения:
Рис. 7. Граф путей следования пожарно-спасательных подразделений
1) 0-1-3-7-8-11;
2) 0-1-2-5-6-7-8-11;
3) 0-1-2-4-9-10-11;
Произведя расчёты, оказалось, что протяжённость маршрутов равна соответственно 1) 920 м; 2) 870 м; 3) 910 м (рис. 8).
Рис. 8. Возможные маршруты следования с расстояниями
Полученные на первом программном этапе результаты оказались недостаточными для однозначного выбора маршрута, расстояния получились примерно одинаковыми.
Теперь, переходя ко второму программному этапу расчётов оценки оптимальности маршрутов, определим трудоёмкость пути по количеству поворотов и светофоров, влияющих на скорость передвижения:
1) 1 светофор, 3 поворота;
2) 0 светофоров, 7 поворотов;
3) 0 светофоров, 4 поворота.
Таким образом, 3 вариант будет предпочтительнее, по причине отсутствия светофоров, практически наименьшему количеству поворотов и расстоянию до места происшествия.
Приведенный пример на реальных объектах Невского района Санкт-Петербурга показал эффективность и гибкость алгоритма поиска в ширину BFS для определения оптимальных маршрутов следования подразделений МЧС России к возможному месту происшествия. На его основе возможно создание программного продукта с использованием ресурсов фреймворка MapReduce, языка «HTML» и стилей «CSS3» [8, 9] и данных с различных информационных систем [10]. Работа программы будет заключаться в поиске кратчайшего маршрута доставки сил и средств подразделений МЧС России с учётом не только расстояния, но и трудоёмкости маршрута (количества поворотов и светофоров) в случае отсутствия интернет-соединения.
Литература
1. МЧС России. Чрезвычайные ситуации. Статистика чрезвычайных ситуаций за 2003-2018 гг. // МЧС России. URL: http://www.mchs.gov.ru /activities/ stats/Chrezvichajnie_situacii (дата обращения: 12.05.2019).
2. Технический регламент о требованиях пожарной безопасности: Федер. закон Рос. Федерации от 22 июля 2008 г. № 123-Ф3. Доступ из справ.-правовой системы «КонсультантПлюс».
3. Об утверждении Боевого устава подразделений пожарной охраны, определяющего порядок организации тушения пожаров и проведения аварийно-спасательных работ: Приказ МЧС России от 16 окт. 2017 г. № 444. Доступ из справ.-правовой системы «КонсультантПлюс».
4. Об утверждении Положения о пожарно-спасательных гарнизонах: Приказ МЧС России от 25 окт. 2017 г. № 467. Доступ из информ.-правового портала «Гарант».
5. Левитин А.В. Метод уменьшения размера задачи: Поиск в ширину // Алгоритмы. Введение в разработку и анализ. М.: Вильямс, 2006. 576 с.
6. Dean and S. Ghemawat. MapReduce: Simplified Data Processing on Large Clusters. InOSDI'04, 6th Symposium on Operating Systems Design and Implementation, Sponsored by USENIX, in cooperation with ACM SIGOPS. 2004. S. 137-150.
7. Решение задачи выбора оптимального маршрута следования сил и средств подразделений МЧС России к месту возникновения происшествий с помощью алгоритма Дейкстры / М.В. Буйневич [и др.] // Проблемы управления рисками в техносфере. 2018. № 3 (47). С. 68-79.
8. Дакетт Дж.HTML и CSS. Разработка и дизайн веб-сайтов. М.: Эксмо, 2013. 480 с.
9. Дакетт Дж. Javascript и jQuery. Интерактивная веб-разработка. М.: Эксмо, 2017.
640 с.
10. Терехин С.Н., Вострых А.В. Информационно-управляющая система на основе риск-ориентированного метода обеспечения пожарной безопасности субъекта Российской Федерации. Современные технологии обеспечения гражданской обороны и ликвидации последствий чрезвычайных ситуаций: сб. ст. по материалам X Всерос. науч.-практ. конф. с междунар. уч. Воронеж, 2019. 507 с.
References
1. MCHS Rossii. CHrezvychajnye situacii. Statistika chrezvychajnyh situacij za 2003-2018 gg. // MCHS Rossii. URL: http://www.mchs.gov.ru /activities/ stats/Chrezvichajnie_situacii (data obrashcheniya: 12.05.2019).
2. Tekhnicheskij reglament o trebovaniyah pozharnoj bezopasnosti: Feder. zakon Ros. Federacii ot 22 iyulya 2008 g. № 123-FZ. Dostup iz sprav.-pravovoj sistemy «Konsul'tantPlyus».
3. Ob utverzhdenii Boevogo ustava podrazdelenij pozharnoj ohrany, opredelyayushchego poryadok organizacii tusheniya pozharov i provedeniya avarijno-spasatel'nyh rabot: Prikaz MCHS Rossii ot 16 okt. 2017 g. № 444. Dostup iz sprav.-pravovoj sistemy «Konsul'tantPlyus».
4. Ob utverzhdenii Polozheniya o pozharno-spasatel'nyh garnizonah: Prikaz MCHS Rossii ot 25 okt. 2017 g. № 467. Dostup iz inform.-pravovogo portala «Garant».
5. Levitin A.V. Metod umen'sheniya razmera zadachi: Poisk v shirinu // Algoritmy. Vvedenie v razrabotku i analiz. M.: Vil'yams, 2006. 576 s.
6. Dean and S. Ghemawat. MapReduce: Simplified Data Processing on Large Clusters. In0SDI'04, 6th Symposium on Operating Systems Design and Implementation, Sponsored by USENIX, in cooperation with ACM SIGOPS. 2004. S. 137-150.
7. Reshenie zadachi vybora optimal'nogo marshruta sledovaniya sil i sredstv podrazdelenij MCHS Rossii k mestu vozniknoveniya proisshestvij s pomoshch'yu algoritma Dejkstry / M.V. Bujnevich [i dr.] // Problemy upravleniya riskami v tekhnosfere. 2018. № 3 (47). S. 68-79.
8. Dakett Dzh.HTML i CSS. Razrabotka i dizajn veb-sajtov. M.: Eksmo, 2013. 480 s.
9. Dakett Dzh. Javascript i jQuery. Interaktivnaya veb-razrabotka. M.: Eksmo, 2017. 640 s.
10. Terekhin S.N., Vostryh A.V. Informacionno-upravlyayushchaya sistema na osnove risk-orientirovannogo metoda obespecheniya pozharnoj bezopasnosti sub"ekta Rossijskoj Federacii. Sovremennye tekhnologii obespecheniya grazhdanskoj oborony i likvidacii posledstvij chrezvychajnyh situacij: sb. st. po materialam X Vseros. nauch.-prakt. konf. s mezhdunar. uch. Voronezh, 2019. 507 s.