Skip to content

Commit

Permalink
Merge pull request #126 from FormalLanguageConstrainedPathQuerying/task6
Browse files Browse the repository at this point in the history
Новая версия задачи 6.
  • Loading branch information
gsvgit committed Mar 28, 2024
2 parents 4f7c84a + 645de94 commit ba69808
Showing 1 changed file with 18 additions and 19 deletions.
37 changes: 18 additions & 19 deletions tasks/task6.md
Original file line number Diff line number Diff line change
@@ -1,25 +1,24 @@
# Задача 6. Преобразование грамматики в ОНФХ

* **Мягкий дедлайн**: 30.03.2023, 23:59
* **Жёсткий дедлайн**: 03.04.2023, 23:59
* Полный балл: 4

## Определение ОНФХ

Контекстно-свободная грамматика находится в ослабленной нормальной форме Хомского (ОНФХ) тогда и только тогда, когда все её правила имеют следующий вид
1. ```A -> B C```
2. ```A -> a```
3. ```A -> eps```

, где ```A, B, C``` -- произвольные нетерминалы, ```a``` -- произвольный терминал, ```eps```--- обозначение для эпсилон.

Отличия от нормальной формы Хомского (НФХ).
1. Эпсилон может выводиться из любого нетерминала.
2. Стартовый нетерминал может встречаться в правых частях правил.

* **Жёсткий дедлайн**: 03.04.2024, 23:59
* Полный балл: 14

## Задача

- [ ] Используя [возможности pyformlang для работы с контекстно-свободными грамматиками](https://pyformlang.readthedocs.io/en/latest/modules/context_free_grammar.html) реализовать **функцию** преобразования контекстно-свободной грамматики в ослабленную нормальную форму Хомского (ОНФХ), но не классическую нормальную форму Хомского (НФХ). НФХ является частным случаем ОНФХ, а значит можно утверждать, что грамматика, находящаяся в НФХ находится и в ОНФХ. Но в данной задаче нас интересует максимально слабая форма, то есть ОНФХ, но не НФХ.
- [ ] Предусмотреть возможность чтения грамматики из файла. Формат файла определяется возможностями pyformalng. Например, можно использовать [эту функцию](https://pyformlang.readthedocs.io/en/latest/modules/context_free_grammar.html#pyformlang.cfg.CFG.from_text).
- [ ] Используя [возможности pyformlang для работы с контекстно-свободными грамматиками](https://pyformlang.readthedocs.io/en/latest/usage.html#context-free-grammar) реализовать **функцию** преобразования контекстно-свободной грамматики в ослабленную нормальную форму Хомского (ОНФХ).
```python
def cfg_to_weak_normal_form(cfg: pyformlang.cfg.CFG) -> pyformlang.cfg.CFG:
pass
```
- [ ] Реализовать **функцию**, основанную на алгоритме Хеллингса, решающую задачу достижимости между всеми парами вершин для заданного графа и заданной КС грамматики.
- Для работы с графом использовать функции из предыдущих задач.
```python
def cfpq_with_hellings(
cfg: pyformlang.cfg.CFG,
graph: nx.DiGraph,
start_nodes: set[int] = None,
final_nodes: set[int] = None,
) -> set[Tuple[int, int]]:
pass
```
- [ ] Добавить необходимые тесты.

0 comments on commit ba69808

Please sign in to comment.