Алгоритм достижимости с ограничениями в виде многокомпонентных контекстно-свободных грамматик

Использование многокомпонентных контекстно-свободных грамматик в качестве ограничений на пути в графе позволяет решать фундаментальные задачи статического анализа кода (Program Analysis via Multiple Context Free Language Reachability). Нашим коллективом был разработан алгоритм, решающий задачу достижимости с требуемыми ограничениями, использующий операции линейной алгебры (Multiple context-free path querying by matrix multiplication). Однако этот алгоритм требует доработки для того, чтобы быть применимым к реальным данным. Требуется сделать следующее. * Поставить эксперименты на данных для статического анализа и выявить узкие места в алгоритме. * Предложить и реализовать способы оптимизации алгоритма. Возможно, будут полезны наработки Ильи Муравьёва (Оптимизация алгоритма контекстно-свободной достижимости, основанного на операциях линейной алгебры) * Интегрировать алгоритм в коллекцию алгоритмов анализа графов на основе линейной алгебры LAGraph

Требования к студенту
  • Хорошее знание языков Си и Python.
  • Хорошие знания теории формальных языков: контекстно-свободные грамматики, конечные автоматы.
  • Основы статического анализа кода: графы потока данных/потока управления, анализ указателей, анализ алиасов, меж- и внутрипроцедурные анализы.
  • Основы теории графов: ориентированные графы, матрица смежности графа, задачи поиска путей/достижимости и алгоритмы их решения, обходы в ширину/глубину.
  • Основы линейной алгебры: матрицы, вектора, операции над ними, полукольца, моноиды.
Уровень

3 курс, Бакалаврская ВКР, Магистерская ВКР


Руководитель

Григорьев Семен Вячеславович


Консультант

Grigorev Semyon


Источник

Кафедра системного программирования СПбГУ