Форум программистов, компьютерный форум, киберфорум
Теория автоматов
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
1 / 11 / 0
Регистрация: 24.09.2016
Сообщений: 98
1

Построение регулярного выражения

13.11.2017, 17:17. Показов 1015. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, у меня есть грамматика и я должна построить по ней регулярное выражение
https://www.cyberforum.ru/cgi-bin/latex.cgi?S\rightarrow bbAaa <br />
A\rightarrow DB|C<br />
B\rightarrow C|\varepsilon: B={(bb)}^{*}{(aa)}^{+}+{bb}^{+}{aa}^{*}+\epsilon <br />
C\rightarrow  Daa|bbD :C={(bb)}^{*}{(aa)}^{*}aa+bb{(bb)}^{*}{(aa)}^{*}={(bb)}^{*}{(aa)}^{+}+{bb}^{+}{aa}^{*}<br />
D\rightarrow bbD|E :D={(bb)}^{*}{(aa)}^{*}<br />
E\rightarrow aaE|\varepsilon :E={(aa)}^{*}

Скажите могу ли я в грамматике B написать что {(bb)}^{*}{(aa)}^{+}+{bb}^{+}{aa}^{*}+\epsilon ={(bb)}^{*}{(aa)}^{+}+{bb}^{+}{aa}^{*}??? или нет ?
и потом если я строю регулярное выражение А у меня там повторяются значения я могу их сократить так сказать ?? или нет ??
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.11.2017, 17:17
Ответы с готовыми решениями:

Построение регулярного выражения
Здравствуйте, дана цепочка начинается с 10 и заканчивается на 1, необходимо построить дкр ,и...

Построить детерминированный автомат для регулярного выражения
Построить детерминированный автомат для регулярного выражения ((c+a)b*)* Я построил этот автомат...

Построение регулярного выражения
Добрый вечер форумчане. Сейчас прохожу тему про &quot;регулярные выражения&quot;. Тема муторная, засыпаю...

Разбор регулярного выражения
Здравствуйте. Проблема такая: пытаюсь зарегистрироваться на китайском сайте, номер телефона не...

11
Эксперт по математике/физике
5003 / 3615 / 1162
Регистрация: 01.09.2014
Сообщений: 9,767
13.11.2017, 18:26 2
Цитата Сообщение от DariaGris Посмотреть сообщение
{(bb)}^{*}{(aa)}^{+}+{bb}^{+}{aa}^{*}+\epsilon ={(bb)}^{*}{(aa)}^{+}+{bb}^{+}{aa}^{*}
Почему вы не обернули эту формулу в тэги LATEX??? И почему вы думаете, что это равенство верно?? Или хотя бы почему вы хотите, чтобы оно было верно???? Последнее aa должно быть в скобках.

Цитата Сообщение от DariaGris Посмотреть сообщение
если я строю регулярное выражение А у меня там повторяются значения я могу их сократить так сказать ??
Что вы под этим имеете в виду¿¿¿
0
1 / 11 / 0
Регистрация: 24.09.2016
Сообщений: 98
13.11.2017, 18:42  [ТС] 3
3D Homer, забыла про тэги,
https://www.cyberforum.ru/cgi-bin/latex.cgi?{(bb)}^{*}{(aa)}^{+}+{(bb)}^{+}{(aa)}^{*}+\epsilon ={(bb)}^{*}{(aa)}^{+}+{(bb)}^{+}{(aa)}^{*} я рассуждаю так:у меня есть же уже итерации {(bb)}^{*} или вот {(аа)}^{*} это же операция итерации и в ней по определению есть пустая цепочка и если мы ее добавим ко всему выражению то ничего не изменится, поэтому я и подумала что мы можем ее убрать. Но я в это не уверена и поэтому спрашиваю могу ли я это сделать или я не правильно понимаю это действие.
А насчет выражение А
получается вот что
https://www.cyberforum.ru/cgi-bin/latex.cgi?A\rightarrow DB|C :A={(bb)}^{*}{(aa)}^{*}*({(bb)}^{*}{(aa)}^{+}+{(bb)}^{+}{(aa)}^{*})+({(bb)}^{*}{(aa)}^{+}+{(bb)}^{+}{(aa)}^{*}) это с учетом что в В я уберу епсилон.
и тут у меня одинаковые слагаемые. и я опять же могу сократить выражение или нет ( у нас же повторяются тут https://www.cyberforum.ru/cgi-bin/latex.cgi?{(bb)}^{*}{(aa)}^{*}??
0
Эксперт по математике/физике
5003 / 3615 / 1162
Регистрация: 01.09.2014
Сообщений: 9,767
13.11.2017, 18:50 4
Действительно, для любого регулярного выражения https://www.cyberforum.ru/cgi-bin/latex.cgi?e имеет место https://www.cyberforum.ru/cgi-bin/latex.cgi?e^*+\epsilon=e^*. Но у вас же слагаемые имеют вид не https://www.cyberforum.ru/cgi-bin/latex.cgi?e^*, а https://www.cyberforum.ru/cgi-bin/latex.cgi?e^*f^+ для некоторого другого выражения https://www.cyberforum.ru/cgi-bin/latex.cgi?f. Пустое слово не входит в язык https://www.cyberforum.ru/cgi-bin/latex.cgi?{(bb)}^{*}{(aa)}^{+}+{(bb)}^{+}{(aa)}^{*}, т.к. слова минимальной длины в этом языке — это aa и bb.

Для любого выражения e имеет место e + e = e.
0
1 / 11 / 0
Регистрация: 24.09.2016
Сообщений: 98
13.11.2017, 19:00  [ТС] 5
3D Homer, тогда у меня получиться вот так
https://www.cyberforum.ru/cgi-bin/latex.cgi?B={(bb)}^{*}{(aa)}^{+}+{(bb)}^{+}{(aa)}^{*}+\varepsilon<br />
 A\rightarrow DB|C:A={(bb)}^{*}{(aa)}^{*}*({(bb)}^{*}{(aa)}^{+}+{(bb)}^{+}{(aa)}^{*}+\varepsilon )+{(bb)}^{*}{(aa)}^{+}+{(bb)}^{+}{(aa)}^{*}
но я не понимаю как мне сократить выражение А

Добавлено через 1 минуту
типо так??
https://www.cyberforum.ru/cgi-bin/latex.cgi?A\rightarrow DB|C:A={(bb)}^{*}{(aa)}^{*}*({(bb)}^{*}{(aa)}^{+}+{(bb)}^{+}{(aa)}^{*}+\varepsilon )^{*}
0
Эксперт по математике/физике
5003 / 3615 / 1162
Регистрация: 01.09.2014
Сообщений: 9,767
13.11.2017, 19:06 6
Можно раскрыть скобки. Тогда https://www.cyberforum.ru/cgi-bin/latex.cgi?(bb)^*(aa)^*\epsilon=(bb)^*(aa)^*, а https://www.cyberforum.ru/cgi-bin/latex.cgi?(bb)^*(aa)^*+(bb)^*(aa)^+=(bb)^*(aa)^*, т.к. язык https://www.cyberforum.ru/cgi-bin/latex.cgi?(bb)^*(aa)^+ содержится в https://www.cyberforum.ru/cgi-bin/latex.cgi?(bb)^*(aa)^*.

Добавлено через 1 минуту
Цитата Сообщение от DariaGris Посмотреть сообщение
типо так??
https://www.cyberforum.ru/cgi-bin/latex.cgi?A\rightarrow DB|C:A={(bb)}^{*}{(aa)}^{*}*({(bb)}^{*}{(aa)}^{+}+{(bb)}^{+}{(aa)}^{*}+\varepsilon )^{*}
Почему вы так решили? В этой науке, как и в алгебре, можно использовать только те равенства, которые доказаны.
0
1 / 11 / 0
Регистрация: 24.09.2016
Сообщений: 98
13.11.2017, 19:15  [ТС] 7
3D Homer, получается было https://www.cyberforum.ru/cgi-bin/latex.cgi?A={(bb)}^{*}{(aa)}^{*}*({(bb)}^{*}{(aa)}^{+}+{(bb)}^{+}{(aa)}^{*}+\varepsilon )+({(bb)}^{*}{(aa)}^{+}+{(bb)}^{+}{(aa)}^{*}) и я убираю последнее слагаемое (я же могу убрать последнее слагаемое??)
https://www.cyberforum.ru/cgi-bin/latex.cgi?({(bb)}^{*}{(aa)}^{+}+{(bb)}^{+}{(aa)}^{*}) и у меня остается https://www.cyberforum.ru/cgi-bin/latex.cgi?A={(bb)}^{*}{(aa)}^{*}*({(bb)}^{*}{(aa)}^{+}+{(bb)}^{+}{(aa)}^{*}+\varepsilon ) и я раскрываю скобки получается следующие:
https://www.cyberforum.ru/cgi-bin/latex.cgi?A={(bb)}^{*}{(aa)}^{*}+{(bb)}^{*}{(aa)}^{*}+{(bb)}^{*}{(aa)}^{*}={(bb)}^{*}{(aa)}^{*} так ??
0
Эксперт по математике/физике
5003 / 3615 / 1162
Регистрация: 01.09.2014
Сообщений: 9,767
13.11.2017, 19:20 8
Цитата Сообщение от DariaGris Посмотреть сообщение
я же могу убрать последнее слагаемое?
Если вы не можете объяснить, почему его можно убрать, значит, вы не можете его убрать. Хотя в данном случае равенство верное, как я объяснил в сообщении 6.

Цитата Сообщение от DariaGris Посмотреть сообщение
я раскрываю скобки получается следующие:
https://www.cyberforum.ru/cgi-bin/latex.cgi?A={(bb)}^{*}{(aa)}^{*}+{(bb)}^{*}{(aa)}^{*}+{(bb)}^{*}{(aa)}^{*}={(bb)}^{*}{(aa)}^{*} так ??
Не так. Сначала выучите законы на регулярных выражениях. Например, выясните, верно ли, что https://www.cyberforum.ru/cgi-bin/latex.cgi?e(f+g)=ef+eg и https://www.cyberforum.ru/cgi-bin/latex.cgi?ef=fe. Сейчас вы пишете равенства наугад.
0
1 / 11 / 0
Регистрация: 24.09.2016
Сообщений: 98
13.11.2017, 19:43  [ТС] 9
3D Homer, я раскрывают скобки по дистрибутивному закону и поэтому записи https://www.cyberforum.ru/cgi-bin/latex.cgi?{(bb)}^{*}{(aa)}^{*}*({(bb)}^{*}{(aa)}^{+}+{(bb)}^{+}{(aa)}^{*}+\varepsilon )={(bb)}^{*}{(aa)}^{*}+{(bb)}^{*}{(aa)}^{*}+{(bb)}^{*}{(aa)}^{*}={(bb)}^{*}{(aa)}^{*} идентичны а т.к. тут три одинаковые цепочки символов то я записала это как https://www.cyberforum.ru/cgi-bin/latex.cgi?{(bb)}^{*}{(aa)}^{*}

P.S.я не прошу вас решить, скажите просто в чем я не права или что мне нужно посмотреть, я хочу не тупо решить задание но и понять, что я делаю не правильно .
0
Эксперт по математике/физике
5003 / 3615 / 1162
Регистрация: 01.09.2014
Сообщений: 9,767
13.11.2017, 19:49 10
Я не знаю, что вы называете дистрибутивным законом, но равенство https://www.cyberforum.ru/cgi-bin/latex.cgi?{(bb)}^{*}{(aa)}^{*}*({(bb)}^{*}{(aa)}^{+}+{(bb)}^{+}{(aa)}^{*}+\varepsilon )={(bb)}^{*}{(aa)}^{*}+{(bb)}^{*}{(aa)}^{*}+{(bb)}^{*}{(aa)}^{*} не является его частным случаем. И лучше не писать * для конкатенации. Вы пишете ее только один раз после первого https://www.cyberforum.ru/cgi-bin/latex.cgi?(bb)^*(aa)^*. Обычно в определении регулярного выражения есть пункт: если e и f — рег. выражения, то ef также рег. выражение, без всякой *.

Добавлено через 1 минуту
Цитата Сообщение от DariaGris Посмотреть сообщение
скажите просто в чем я не права или что мне нужно посмотреть
Для начала установите, истинны ли равенства в конце сообщения 8.
0
1 / 11 / 0
Регистрация: 24.09.2016
Сообщений: 98
13.11.2017, 20:17  [ТС] 11
3D Homer, то что вы мне написал если я правильно понимаю то
L(M+N)=LM+MN это левосторонний дистрибутивный закон конкатенации относительно объединения ( поэтому я могу открыть скобки).
а то что вы написали ef=fe я не пойму к чему применяется в моем примере
и не понимаю что мне надо сделать когда вы говорите установите истинны ли равенства
0
Эксперт по математике/физике
5003 / 3615 / 1162
Регистрация: 01.09.2014
Сообщений: 9,767
13.11.2017, 20:35 12
Цитата Сообщение от DariaGris Посмотреть сообщение
L(M+N)=LM+MN это левосторонний дистрибутивный закон конкатенации относительно объединения
Да. И равенство в сообщении 10 не является его частным случаем.

Цитата Сообщение от DariaGris Посмотреть сообщение
то что вы написали ef=fe я не пойму к чему применяется в моем примере
и не понимаю что мне надо сделать когда вы говорите установите истинны ли равенства
Серьезно? Вы прочитали в сообщении 4, что через e и f я обозначил произвольные регулярные выражения; то, что вы обозначили через L, M и N? И вы не знаете, как проверить, верно ли равенство ef = fe для произвольных регулярных выражений e и f? Я предложил рассмотреть это равенство, потому что предположил, что вы неявно использовали его при выводе равенства в сообщении 10.

Мы не говорим о каких-то сложных вещах здесь. Если есть закон x(y + z) = xy + xz, то нужно применять его буквально, то есть сопоставить выражение, которое у вас есть с левой частью, установить, чему равны x, y и z в конкретном случае и затем выписать правую часть для этих x, y, z. Но использовать таким образом можно только равенства, в которых вы уверены, которые вы можете доказать. Это учат в средних классах школы.
0
13.11.2017, 20:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.11.2017, 20:35
Помогаю со студенческими работами здесь

Понимание регулярного выражения
Добрый день ув. пользователи! Подскажите пожалуйста, что значит эта запись. ...

Разбор регулярного выражения
Стал разбирать регулярные выражения. На одном из ресурсов наткнулся на такой код: var...

Приоритет регулярного выражения
Здравствуйте. Не могу решить одну проблему. Сделал регулярочку: public const string pattern3 =...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru