Введение 4
1. Постановка задачи 7
2. Обзор 8
2.1. Базовые определения из теории формальных языков . . 8
2.2. Базовые определения из теории графов 11
2.3. Задачи поиска путей с контекстно-свободными ограниче
ниями 12
2.4. Обобщенный LL алгоритм 12
2.5. Алгоритм выполнения контекстно-свободных запросов, ба
зирующийся на GLL 14
3. Реализация алгоритма 16
3.1. Мотивация 16
3.2. Особенности реализации 17
3.3. Архитектура 18
4. Экспериментальное исследование 21
4.1. Оборудование 21
4.2. Эспериментальные данные 21
4.3. Постановка экспериментов 27
4.4. Результаты экспериментов 28
Заключение 36
Список литературы 37
Представление данных в виде помеченных графов находит широкое применение во многих научных областях, таких как анализ социальных сетей, биоинформатика, статический анализ кода и т.д. Одним из основных преимуществ данной модели над реляционной моделью является более быстрое получение информации об отношениях между объектами, ведь взаимосвязи между узлами не вычисляются во время выполнения запроса, а хранятся в самой модели.
При работе с такими данными зачастую возникают запросы навигации и поиска путей между вершинами. Одним из способов выражения такого рода запросов является определение формальных грамматик над алфавитом меток ребер графа. Путь в графе удолетворя- ет ограничениям, задаваемым данной формальной грамматикой, если ему принадлежит слово, получаемое конкатенацией меток на ребрах данного пути. Наибольшее практическое применение находят регулярные грамматики, несколько менее популярными являются контекстносвободные свободные грамматики. Однако, с точки зрения приложений к языкам программирования и компиляции наиболее важными являются именно контекстно-свободные грамматики. Таким образом встает вопрос о необходимости разработки и реализации алгоритмов поиска путей с контекстно-свободными ограничениям (англ. «Context-Free Path Querying», кратко CFPQ).
Несмотря на то, что проблема выполнения контестно-свободных запросов широко изучена и существует целый ряд алгоритмов, ее решающих , тем не менее одной из наиболее остро стоящих проблем является низкая производительность существующих алгоритмов, поэтому актуальной задачей является разработка и реализация новых алгоритмов, решающих данную проблему.
Одним из недавно разработанных методов решения данной задачи является алгоритм, использующий матричное представление для получения информации о достижимостях в графе. Данный алгоритм был предложен Азимовым Р.Ш. и основан на матричных операциях. В его работе было показанно, что данный алгоритм демонстрирует достаточно хорошую производительность. Кроме того, основанный на матрицах CFPQ-алгоритм в дальнейшем стал основой для первой полноценной поддержки контекстно-свободных запросов в результате расширения графовой базы данных RedisGraph.
Матричное представление не единственный возможный способ решения такого рода задач. Более того, результаты исследований показали, что базовые алгоритма распознавания строк по заданной грамматике могут быть ествественным путем обобщены на входные данные в виде граф. Например, существуют описания того, как проблема поиска путей с контекстно-свободными ограничениями может быть решена с помощью использования обобщенного LL-парсера или обобщенного LR-парсера. Более того, такой подход позволяет получать информацию не только о достижимостях в графе, но и о самих путях .
Так, в рамках предыдущих работ была получена реализация алгоритма для выполнения контекстно-свободных запросов в графовой базе данных Neo4j. Данный алгоритм является адаптацией классического алгоритма синтаксического анализа Generlized LL для выполнения контекстно-свободных запросов на графах. Важно отметить, что полученный алгоритм поддерживает весь класс контекстно-свободных языков. Модифицированный GLL, так же как и оригинальный алгоритм, возвращает информацию не только о достижимостях между вершинами, но и информацию для построения самих путей. Несмотря на то, что проведенное экспериментальное исследование показало практическую эффективность полученного решения при работе с контекстносвободными грамматиками, тем не менее данная реализация не позволяет напрямую работать наиболее распространненым на сегодняший день способом задания ограничений — с регулярными выражениями. Для их обработки сначала необходимо преобразование грамматики, что ведет к увеличению количества продукций в ней и, как следствие, ухудшению производительности алгоритма GLL. Обойти данную проблему может помочь выражение грамматик в виде реккурсивных автоматов, которые одинаково оптимально поддерживают как регулярные, так и контекстно-свободные грамматики.
Таким образом, целью данной работы является предоставление реализации GLL алгоритма, основанного на рекурсивном автомате, для обработки входных данных в виде графа как для решения задачи достижимости, так и для поиска путей. Далее планируется проведение экспериментального исследования с целью выявления значимого повышения эффективности по сравнению с альтернативными решениями.
В ходе работы были достигнуты следующие результаты.
• Реализован классический GLL алгоритм.
• Алгоритм GLL был модификацирован для поддержки представления грамматики в виде рекурсивного автомата.
• Реализовано расширение модификацированного GLL алгоритма на входные данные в виде графа.
• Проведено экспериментальное исследование, по результатам которого можно сделать выводы о том, что полученная модификация алгоритма GLL работает существенно эффективнее классического алгоритма GLL.
Можно выделить несколько дальнейших возможных направлений работы.
• Проведение экспериментального исследования на более широком наборе реальных данных. Примером таких данных являются графы MemoryAliases [21]
• Интеграция с одной из графовых баз данных. Примером такой базы является графовая база данных Neo4j.
Реализация представлена в репозитории: https://github.com/vadyushkins/kotgll.
[1] Azimov Rustam, Grigorev Semyon. Context-Free Path Querying by Matrix Multiplication. - GRADES-NDA ’18. - New York, NY, USA : Association for Computing Machinery, 2018. — 10 p. — URL: https: //doi.org/10.1145/3210259.3210264.
[2] Barcelo Baeza Pablo. Querying Graph Databases // Proceedings of the 32nd ACM SIGMOD-SIGACT-SIGAI Symposium on Principles of Database Systems. — PODS ’13. — New York, NY, USA : Association for Computing Machinery, 2013. — P. 175-188. — URL: https://doi. org/10.1145/2463664.2465216.
[3] Barrett Chris, Jacob Riko, Marathe Madhav. Formal-
Language-Constrained Path Problems // SIAM Journal on Computing. — 2000. — Vol. 30, no. 3. — P. 809-837. —
https://doi.org/10.1137/S0097539798337716.
[4] Zhang Xiaowang, Feng Zhiyong, Wang Xin et al. Context-Free Path Queries on RDF Graphs. — 2016. — 1506.00743.
[5] Context-Free Path Querying with Single-Path Semantics by Matrix Multiplication / Arseniy Terekhov, Artyom Khoroshev, Rustam Azimov, Semyon Grigorev // Proceedings of the 3rd Joint International Workshop on Graph Data Management Experiences & Systems (GRADES) and Network Data Analytics (NDA).— GRADES- NDA’20. — New York, NY, USA : Association for Computing Machinery, 2020.— 12 p.— URL: https://doi.org/10.1145/3398682. 3399163.
[6] An Experimental Study of Context-Free Path Query Evaluation Methods / Jochem Kuijpers, George Fletcher, Nikolay Yakovets, Tobias Lin- daaker // Proceedings of the 31st International Conference on Scientific and Statistical Database Management.— SSDBM ’19.— New York, NY, USA : Association for Computing Machinery, 2019. — P. 121— 132. — URL: https://doi.org/10.1145/3335783.3335791.
[7] Fast Algorithms for Dyck-CFL-Reachability with Applications to Alias Analysis / Qirun Zhang, Michael R. Lyu, Hao Yuan, Zhendong Su // SIGPLAN Not. - 2013. - Vol. 48, no. 6. - P. 435-446. - URL: https: //doi.org/10.1145/2499370.2462159.
[8] Grigorev Semyon, Ragozina Anastasiya. Context-Free Path Querying with Structural Representation of Result // Proceedings of the 13th Central amp; Eastern European Software Engineering Conference in Russia. — CEE-SECR ’17.— New York, NY, USA : Association for Computing Machinery, 2017.— 7 p. — URL: https://doi.org/10. 1145/3166094.3166104.
[9] Grigorev Semyon, Ragozina Anastasiya. Context-free path querying with structural representation of result // Proceedings of the 13th Central & Eastern European Software Engineering Conference in Russia. - ACM, 2017. - oct. - URL:
[10] Hellings Jelle. Querying for Paths in Graphs using Context-Free Path Queries. - 2016. - 1502.02242.
[11] Hellings Jelle. Explaining Results of Path Queries on Graphs // Software Foundations for Data Interoperability and Large Scale Graph Data Analytics / Ed. by Lu Qin, Wenjie Zhang, Ying Zhang et al. — Cham : Springer International Publishing, 2020. — P. 84-98.
[12] Medeiros Ciro M., Musicante Martin A., Costa Umberto S. Efficient Evaluation of Context-Free Path Queries for Graph Databases // Proceedings of the 33rd Annual ACM Symposium on Applied Computing. — SAC ’18.— New York, NY, USA : Association for Computing Machinery, 2018.— P. 1230-1237.— URL: https://doi.org/10. 1145/3167132.3167265.
[13] Medeiros Ciro M., Musicante Martin A., Costa Umberto S. An Algorithm for Context-Free Path Queries over Graph Databases. — 2020. — 2004.03477.
[14] Multiple-Source Context-Free Path Querying in Terms of Linear Algebra / Arseniy Terekhov, Vlada Pogozhelskaya, Vadim Abzalov et al. // International Conference on Extending Database Technology.— 2021.
[15] Shemetova Ekaterina, Azimov Rustam, Orachev Egor et al. One Algorithm to Evaluate Them All: Unified Linear Algebra Based Approa
... всего 22 источников