Skip to content

Commit

Permalink
Merge pull request #134 from FormalLanguageConstrainedPathQuerying/ta…
Browse files Browse the repository at this point in the history
…sk_query_lang

Задача 11. Про парсер. Описание языка.
Задача 12. Про интерпретатор.
Причёсана задача 10 про постановку экспериментов.
  • Loading branch information
gsvgit authored Apr 20, 2024
2 parents b8d2e25 + 49c6e58 commit ebd48cb
Show file tree
Hide file tree
Showing 7 changed files with 257 additions and 391 deletions.
48 changes: 36 additions & 12 deletions tasks/task10.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,40 @@
# Задача 11. Тензорный алгоритм решения задачи достижимости с КС ограничениями
# Задача 10. Экспериментальное исследование алгоритмов решения задачи достижимости с КС ограничениями

* **Мягкий дедлайн**: 27.11.2022, 23:59
* **Жёсткий дедлайн**: 30.11.2022, 23:59
* Полный балл: 5
* **Жёсткий дедлайн**: 08.05.2024, 23:59
* Полный балл: 19

## Задача

- [ ] Реализовать **функцию**, основанную на тензорном алгоритме, решающую задачу достижимости между всеми парами вершин для заданного графа и заданной КС грамматики.
- Результат работы функции --- множество троек вида (вершина, нетерминал, вершина).
- Предусмотрите возможность получать граф из различных источников в различных форматах.
- Предусмотрите возможность получать грамматику из различных источников (из файла, как результат работы других функций).
- Для преобразования грамматики в РКА использовать результаты предыдущих работ.
- Для реализации матричных операций использовать [sciPy](https://docs.scipy.org/doc/scipy/reference/sparse.html).
- [ ] На основе предыдущей функции реализовать функцию, позволяющую решать задачу достижимости для заданного набора стартовых и финальных вершин, и заданного нетерминала.
- [ ] Добавить необходимые тесты.
Задача посвящена анализу производительности различных алгоритмов решения задачи достижимости между всеми парами вершин с контекстно-свободными ограничениями: алгоритма Хеллингса, матричного алгоритма, тензорного алгоритма, алгоритма на основе GLL. В ходе анализа необходимо ответить на следующие вопросы.
- Какой из трёх указанных алгоритмов обладает лучшей производительностью?
- Имеет ли смысл для решения задачи достижимости с регулярными ограничениями использовать алгоритмы для КС ограничений (ведь регулярные --- частный случай КС) или всё же лучше использовать специализированные алгоритмы для регулярных ограничений?
- Как влияет грамматика на производительность тензорного алгоритма и алгоритма на основе GLL? Если зафиксировать язык, то как свойства грамматики (размер, (не)однозначность) влияют на производительность.

Решение данной задачи оформляется как Python notebook. Для того, чтобы обеспечить возможность проверки, необходимо сделать notebook самодостаточным: в него должны быть включены все действия, необходимые для воспроизведения эксперимента. Также в notebook размещается отчет и анализ результатов ваших экспериментов в текстовом виде. Отчет сопровождается диаграммами, таблицами, картинками, если это необходимо для объяснения результатов.

Решением является не просто код, но отчёт об экспериментальном исследовании, который должен являться связанным текстом и содержать (как минимум) следующие разделы:
- Постановка задачи
- Описание исследуемых решений
- Описание набора данных для экспериментов
- Графы
- Запросы
- Описание эксперимента
- Оборудование
- Что и как замерялось, как эти измерения должны помочь ответить на поставленные вопросы
- Результаты экспериментов
- Графики, таблицы
- Анализ результатов экспериментов
- Ответы на поставленные вопросы, аргументация ответов

- [ ] Создать Python notebook, подключить необходимые зависимости.
- [ ] Подключить необходимые решения из предыдущих работ.
- [ ] Сформировать набор данных.
- [ ] Выбрать некоторые графы из [набора](https://formallanguageconstrainedpathquerying.github.io/CFPQ_Data/graphs/index.html). Не забудьте обосновать, почему выбрали именно эти графы. Обратите внимание, что в наборе есть графы и грамматики для различных прикладных задач (анализ RDF, анализ указателей в С, анализ Java-программ). Рекомендуется выбирать графы, относящиеся к различным областям.
- [ ] В качестве запросов предлагается использовать грамматики из раздела "Canonical grammars" в описании соответствующего графа ([пример](https://formallanguageconstrainedpathquerying.github.io/CFPQ_Data/graphs/data/taxonomy_hierarchy.html#canonical-grammars)). При необходимости (например, при ответе на третий вопрос), можно "оптимизировать" грамматику, вручную создав оптимальную RSM. Или же наоборот, преобразовать её в ОНФХ, или сделать её (не)однозначной.
- [ ] Сформулировать этапы эксперимента. Что нужно сделать, чтобы ответить на поставленные вопросы? Почему?
- [ ] Провести необходимые эксперименты, замеры
- [ ] Оформить результаты экспериментов
- [ ] Провести анализ результатов
- [ ] Ответить на поставленные вопросы
- [ ] Аргументировать ответы (пользуясь полученными результатами экспериментов)
- [ ] Не забыть опубликовать notebook в репозитории
11 changes: 6 additions & 5 deletions tasks/task11_bonus.md → tasks/task10_bonus.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
# Задача 12. Экспериментальное исследование алгоритмов решения задачи достижимости с КС ограничениями
# Задача 10 (бонусная). Экспериментальное исследование алгоритмов решения задачи достижимости с КС ограничениями

* **Мягкий дедлайн**: 11.12.2022, 23:59
* **Жёсткий дедлайн**: 14.12.2022, 23:59
* Полный балл: 20
* **Жёсткий дедлайн**: 08.05.2024, 23:59
* Полный балл: 25

## Задача

Задача посвящена анализу производительности различных алгоритмов решения задачи достижимости между всеми парами вершин с контекстно-свободными ограничениями: алгоритма Хеллингса, матричного алгоритма, тензорного алгоритма. В ходе анализа необходимо ответить на следующие вопросы.
Задача посвящена анализу производительности различных алгоритмов решения задачи достижимости между всеми парами вершин с контекстно-свободными ограничениями: алгоритма Хеллингса, матричного алгоритма, тензорного алгоритма, алгоритма, основанного на GLL. В ходе анализа необходимо ответить на следующие вопросы.
- Какой из трёх указанных алгоритмов обладает лучшей производительностью?
- Имеет ли смысл для решения задачи достижимости с регулярными ограничениями использовать алгоритмы для КС ограничений (ведь регулярные --- частный случай КС) или всё же лучше использовать специализированные алгоритмы для регулярных ограничений?
- Как влияет грамматика на производительность тензорного алгоритма и алгоритма на основе GLL? Если зафиксировать язык, то как свойства грамматики (размер, (не)однозначность) влияют на производительность.


Решение данной задачи оформляется как Python notebook. Для того, чтобы обеспечить возможность проверки, необходимо сделать notebook самодостаточным: в него должны быть включены все действия, необходимые для воспроизведения эксперимента. Также в notebook размещается отчет и анализ результатов ваших экспериментов в текстовом виде. Отчет сопровождается диаграммами, таблицами, картинками, если это необходимо для объяснения результатов.

Expand Down
Loading

0 comments on commit ebd48cb

Please sign in to comment.