конечный автомат и квантификация
От: VjcheslavV  
Дата: 25.07.22 06:49
Оценка:
видел в драконьей книге как недетерминированный КА превращают в детерминированный
а что делать если есть квантификация?
если недетерминированный интерпретировать то всё понятно — или самое короткое или самое длинное вхождение
а как быть с этим преобразованием? или он с квантификацией не дружит?
Re: конечный автомат и квантификация
От: Pzz Россия https://github.com/alexpevzner
Дата: 25.07.22 06:54
Оценка: +2
Здравствуйте, VjcheslavV, Вы писали:

VV>видел в драконьей книге как недетерминированный КА превращают в детерминированный

VV>а что делать если есть квантификация?

Я тоже читал драконью книгу, и даже представляю, как недетерминированный КА превращают в детерминированный (ну т.е., пробовал такое делать в боевой программе).

Однако слово квантификация мне ничего не говорит. Может, введешь в курс дела?
Re[2]: конечный автомат и квантификация
От: VjcheslavV  
Дата: 25.07.22 07:08
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Однако слово квантификация мне ничего не говорит. Может, введешь в курс дела?


квантификация у регулярных выражений https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5_%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F
одним словом бывает так что можно пойти по одним и тем же символам по разному с разными состояниями
Re: конечный автомат и квантификация
От: VjcheslavV  
Дата: 25.07.22 08:19
Оценка:
Здравствуйте, VjcheslavV, Вы писали:

если просто преобразовывать в лоб то в состояниях будет и ревнивая и жадная квантифакация...
вот только что потом с ней делать? или что-то делать до преобразования?
Re[3]: конечный автомат и квантификация
От: Pzz Россия https://github.com/alexpevzner
Дата: 25.07.22 08:26
Оценка: 3 (1)
Здравствуйте, VjcheslavV, Вы писали:

Pzz>>Однако слово квантификация мне ничего не говорит. Может, введешь в курс дела?


VV>квантификация у регулярных выражений https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5_%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F

VV>одним словом бывает так что можно пойти по одним и тем же символам по разному с разными состояниями

А, понятно. Обрати внимание, у тебя содержательно есть только один "интересный" символ, это бесконечный повтор. Остальные разворачиваются так (e — это epsilon, примитив регулярного выражения, всегда сопоставляющийся с пустой строкой):

X?     -> X | e
X+     -> X X*
X{n}   -> X X X ... X
X{m,n} -> X X X ... X   (X | e) (X | e) ... (X | e)


Т.е., все эти красивые штучки — это синтаксический сахар в общепринятой записи регулярных выражений. Содержательно, у тебя есть только три операции: конкатенация, альтернация и бесконечный повтор.

При преобразовании в детерминированный КА эти красивые штучки не порождают прохода по одним и тем же символам в разных состояниях, а порождают сложный автомат в виде развесистой клюквы, в котором повторяющиеся фрагменты регулярного выражения порождают повторяющиеся фрагменты в графе состояний.

Ну и учти еще, что POSIX regexp, из-за возможности ссылаться на уже насканированное, не является регулярным языком по Хомскому, и обычно реализуется в виде автомата с возвратами и стеком состояний.
Re: конечный автомат и квантификация
От: σ  
Дата: 25.07.22 08:36
Оценка: 3 (1)
VV>видел в драконьей книге как недетерминированный КА превращают в детерминированный
VV>а что делать если есть квантификация?
VV>если недетерминированный интерпретировать то всё понятно — или самое короткое или самое длинное вхождение
VV>а как быть с этим преобразованием? или он с квантификацией не дружит?

Любая конечная или бесконечная итерация выражается через либо конечное объединение, либо через звезду Клини.
Их можно преобразовать в ε-НКА (3.2.3. Преобразование регулярного выражения в автомат в «Введение в теорию автоматов, языков и вычислений»)
Любой ε-НКА же, как утверждается в той же книге (2.5.5. Устранение ε-переходов), преобразуется в ДКА.
Re[2]: конечный автомат и квантификация
От: VjcheslavV  
Дата: 25.07.22 11:00
Оценка:
Здравствуйте, σ, Вы писали:

σ>Любая конечная или бесконечная итерация выражается через либо конечное объединение, либо через звезду Клини.

σ>Их можно преобразовать в ε-НКА (3.2.3. Преобразование регулярного выражения в автомат в «Введение в теорию автоматов, языков и вычислений»)
σ>Любой ε-НКА же, как утверждается в той же книге (2.5.5. Устранение ε-переходов), преобразуется в ДКА.

глянул как-то не на наглядном примере объяснено ...
там повторяются только цифры а после них идёт точка или конец (то есть квантификация не где, ни на что не повлияет)

как я понял чтобы построить детерминированный автомат всегда строят эквивалентный не детерминированный?
вот был бы пример с квантификацией ...
Re[2]: конечный автомат и квантификация
От: Pzz Россия https://github.com/alexpevzner
Дата: 25.07.22 11:32
Оценка:
Здравствуйте, σ, Вы писали:

σ>Любой ε-НКА же, как утверждается в той же книге (2.5.5. Устранение ε-переходов), преобразуется в ДКА.


Причем, что характерно, если не полениться сделать минимализацию, то всегда одним и тем же образом, с точностью то поворотов в графе.
Re[3]: конечный автомат и квантификация
От: VjcheslavV  
Дата: 25.07.22 12:02
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Причем, что характерно, если не полениться сделать минимализацию, то всегда одним и тем же образом, с точностью то поворотов в графе.


а причём тут оптимизация?
Re: конечный автомат и квантификация
От: VjcheslavV  
Дата: 25.07.22 12:51
Оценка:
весь интернет прогуглил но про квантификацию ничего не нашёл...
как её всё таки делают в регулярных выражениях? ума не приложу...
Re[4]: конечный автомат и квантификация
От: Pzz Россия https://github.com/alexpevzner
Дата: 25.07.22 15:33
Оценка:
Здравствуйте, VjcheslavV, Вы писали:

Pzz>>Причем, что характерно, если не полениться сделать минимализацию, то всегда одним и тем же образом, с точностью то поворотов в графе.


VV>а причём тут оптимизация?


Не оптимизация, а минимализация машины состояний. Один и тот же регулярный язык может быть представлен разными конечными автоматами. Но при этом минимальный автомат однозначно определяется языком.
Re[2]: конечный автомат и квантификация
От: vsb Казахстан  
Дата: 25.07.22 15:44
Оценка: 3 (1) +1
Здравствуйте, VjcheslavV, Вы писали:

VV>весь интернет прогуглил но про квантификацию ничего не нашёл...

VV>как её всё таки делают в регулярных выражениях? ума не приложу...

В чём проблема-то? Что именно тебе не понятно? Pzz вроде всё доступно изложил.
Re[4]: конечный автомат и квантификация
От: vsb Казахстан  
Дата: 25.07.22 15:47
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Ну и учти еще, что POSIX regexp, из-за возможности ссылаться на уже насканированное, не является регулярным языком по Хомскому, и обычно реализуется в виде автомата с возвратами и стеком состояний.


Насколько я помню, с регвырами несложно построить выражение, которое при реализации через КА построит КА то ли экспоненциального то ли около того размера. В общем большой КА получится. Получается, что НКА в худшем случае долго работает, а КА в худшем случае требует очень много памяти. Ну и НКА более богатый и на практике с вырожденными случаями сталкиваться приходится редко. Поэтому НКА и используют для реализации, хотя есть и реализации на КА, если действительно важна O(N) производительность.
Re[2]: конечный автомат и квантификация
От: σ  
Дата: 25.07.22 17:14
Оценка: -1
VV>весь интернет прогуглил но про квантификацию ничего не нашёл...
VV>как её всё таки делают в регулярных выражениях? ума не приложу...
https://swtch.com/~rsc/regexp/
Re[3]: конечный автомат и квантификация
От: VjcheslavV  
Дата: 26.07.22 05:00
Оценка:
Здравствуйте, vsb, Вы писали:


vsb>В чём проблема-то? Что именно тебе не понятно? Pzz вроде всё доступно изложил.

действительно я ничего не понял ...
я понял что якобы это не по теме — там вроде не было как задаются жадная или ленивая квантификация...
Re[4]: конечный автомат и квантификация
От: VjcheslavV  
Дата: 26.07.22 05:07
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>
Pzz>X?     -> X | e
Pzz>X+     -> X X*
Pzz>X{n}   -> X X X ... X
Pzz>X{m,n} -> X X X ... X   (X | e) (X | e) ... (X | e)
Pzz>


Pzz>Т.е., все эти красивые штучки — это синтаксический сахар в общепринятой записи регулярных выражений. Содержательно, у тебя есть только три операции: конкатенация, альтернация и бесконечный повтор.


что-то не догнал... а это по теме?
Re[4]: конечный автомат и квантификация
От: vsb Казахстан  
Дата: 26.07.22 05:17
Оценка: 3 (1) +1
Здравствуйте, VjcheslavV, Вы писали:

vsb>>В чём проблема-то? Что именно тебе не понятно? Pzz вроде всё доступно изложил.

VV>действительно я ничего не понял ...
VV>я понял что якобы это не по теме — там вроде не было как задаются жадная или ленивая квантификация...

Ну сразу бы и написал, что тебе нужна эта жадность или ленивость. В классических алгоритмах такого понятия нет. Там или есть совпадение, или нет. Для этого нужны более продвинутые алгоритмы, можешь попробовать почитать труд "NFAs with Tagged Transitions, their Conversion to Deterministic Automata and Application to Regular Expressions".
Re[4]: конечный автомат и квантификация
От: VjcheslavV  
Дата: 26.07.22 05:35
Оценка:
Здравствуйте, Pzz, Вы писали:


Pzz>
Pzz>X?     -> X | e
Pzz>X+     -> X X*
Pzz>X{n}   -> X X X ... X
Pzz>X{m,n} -> X X X ... X   (X | e) (X | e) ... (X | e)
Pzz>


а можно для "X{n}?" и для "X{n}+" ?
e вроде просто убирается — какой с неё толк?
Отредактировано 26.07.2022 5:40 VjcheslavV . Предыдущая версия . Еще …
Отредактировано 26.07.2022 5:39 VjcheslavV . Предыдущая версия .
Re[5]: конечный автомат и квантификация
От: VjcheslavV  
Дата: 26.07.22 06:00
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Ну сразу бы и написал, что тебе нужна эта жадность или ленивость. В классических алгоритмах такого понятия нет. Там или есть совпадение, или нет. Для этого нужны более продвинутые алгоритмы, можешь попробовать почитать труд "NFAs with Tagged Transitions, their Conversion to Deterministic Automata and Application to Regular Expressions".


продвинутые алгоритмы???
я офигиваю ... а на русском чтонибудь есть?
а эти алгоритмы с детерминированным KA или только с недетерминированным?
Re[6]: конечный автомат и квантификация
От: vsb Казахстан  
Дата: 26.07.22 06:25
Оценка: 3 (1) +1
Здравствуйте, VjcheslavV, Вы писали:

vsb>>Ну сразу бы и написал, что тебе нужна эта жадность или ленивость. В классических алгоритмах такого понятия нет. Там или есть совпадение, или нет. Для этого нужны более продвинутые алгоритмы, можешь попробовать почитать труд "NFAs with Tagged Transitions, their Conversion to Deterministic Automata and Application to Regular Expressions".


VV>продвинутые алгоритмы???

VV>я офигиваю ... а на русском чтонибудь есть?

Сомневаюсь, на русском вообще мало что есть кроме совсем уж классических трудов, а уж малоизвестные исследования — тем более, кому надо их переводить.

VV>а эти алгоритмы с детерминированным KA или только с недетерминированным?


Deterministic Automata это и есть детерминированный автомат. Так что да — с детерминированным.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.