Skip to content

Commit

Permalink
Добавлена задача про GLL + RSM.
Browse files Browse the repository at this point in the history
  • Loading branch information
gsvgit committed Apr 5, 2024
1 parent 3c43903 commit 961921c
Showing 1 changed file with 5 additions and 15 deletions.
20 changes: 5 additions & 15 deletions tasks/task9.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,10 @@
# Задача 9. Матричный алгоритм решения задачи достижимости с КС ограничениями
# Задача 9. Алгоритм решения задачи достижимости с КС ограничениями, основанный на GLL

* **Мягкий дедлайн**: 20.04.2023, 23:59
* **Жёсткий дедлайн**: 24.04.2023, 23:59
* Полный балл: 12
* **Жёсткий дедлайн**: 01.05.2024, 23:59
* Полный балл: 14

## Задача

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

## Замечания

Обратите внимание, что реализуемая в данной задаче функция --- уже вторая для решения задачи достижимости с КС ограничениями. Постарайтесь организовать код так, чтобы эти функции, с одной стороны, могли быть использованы вместе (например, в дальнейшем, при сравнении производительности), а с другой --- так, чтобы было понятно, какой именно алгоритм реализуется. Один из возможных вариантов: создать пространство имён (модуль) cfpq, а в него "поселить" функции hellings, matrix, tensor, каждая из которых уже реализует свой алгоритм. Тогда использование будет выглядеть как cfpq.hellings. Данный вариант, конечно, не единственный, но варианты в духе cfqp1, cfpq2, cfpq_N --- плохие.

0 comments on commit 961921c

Please sign in to comment.