Conversation
|
я очень надеюсь, что при написании вопросов не был использован |
|
а так - я бы пораскрывал везде тему поглубже ;) |
|
@TonitaN Добрый вечер! Прошу Вас проверить мои исправления в ЛР1 |
представил информацию про эпсилон-переходы как отдельный шаг алгоритма, убрал пасту
TonitaN
left a comment
There was a problem hiding this comment.
Я всё равно думаю, что человек так не написал бы, но себе дороже проводить через ещё правки.
@BaldiSlayer , можно пока не вливать, аппрув - для фармы баллов.
TonitaN
left a comment
There was a problem hiding this comment.
Есть ещё что улучшать, но хотя бы начнём с малого.
| } | ||
| ``` | ||
|
|
||
| 2. Избегание неоднозначных шаблонов: Устраняйте конструкции, которые создают неоднозначности, такие как .* в середине выражения. |
There was a problem hiding this comment.
Строго говоря, везде кроме конца выражения .* - это неоднозначность.
Более точной рекомендацией от теории будет избегать любых смежных итераций выражений с пересекающимися алфавитами (а особенно - с пересекающимися языками), а ещё - итераций над выражениями, которые могут принять пустое слово.
Приведите, пожалуйста, здесь примеры и тех, и других, и как их можно переписать грамотнее.
| author: Диас Исаков | ||
| answer: > | ||
| Одной из ключевых задач в теории автоматов является преобразование НКА в эквивалентный ДКА. | ||
| Этот процесс называется алгоритмом subset construction: создаются состояния для ДКА, которые |
There was a problem hiding this comment.
лучше так: "алгоритм подмножеств (subset construction)"
|
|
||
| Шаги алгоритма subset construction: | ||
| 1. Инициализация: Начальным состоянием ДКА является множество состояний НКА, достижимых из его начального состояния с использованием ε-переходов (если они есть). | ||
| 2. Обработка ε-переходов: Для каждого множества состояний, которое появляется в процессе построения ДКА, вычисляется ε-замкнутость. Это множество включает все состояния, которые могут быть достигнуты с помощью ε-переходов, начиная с текущих состояний. |
|
|
||
| Плюсы НКА: | ||
| 1. Компактность: НКА часто требуют меньшее количество состояний для описания сложных шаблонов, чем ДКА. | ||
| 2. Простота построения: Алгоритмы для создания НКА из регулярных выражений проще и выполняются быстрее. |
There was a problem hiding this comment.
проще -> полиномиальны,
и добавить: тогда как алгоритм построения ДКА в худшем случае имеет экспоненциальную сложность
| 3. Простота исполнения: После построения ДКА легче интегрировать в программы, так как не требуется сложная логика обработки состояний. | ||
|
|
||
| Минусы ДКА: | ||
| 1. Размер: ДКА могут требовать экспоненциально больше состояний, особенно для сложных регулярных выражений. |
There was a problem hiding this comment.
Нет, не для всяких сложных, а прежде всего для тех, которые проверяют свойства суффиксов строк.


No description provided.