[英]Simplify Regular Expression, Automata Theory
我最近需要找出語言 {w |的正則表達式 |w| 是奇數,w 在字母表 {a,b} 上以符號 b} 開始和結束。
我想出了一個解決方案
b(ab+bb+aaab+aabb+abab+abbb+bbbb+bbab+babb+baab)*
解決方案很長,所以我希望有人能告訴我一種可以簡化的方法,
你可以試試b|(b(a|b)((a|b)(a|b))*b)
你描述的語言只能產生 b,這被第一個分支捕獲,這是唯一的大小它可以產生 1 個字符串。 然后它可以產生大小為 3,5,7,... 的字符串。 那些被第二個分支捕獲。 開頭和結尾的 b 是不言自明的。 這些占2個字符。 中間位是經典語言{w | |w| is odd}
{w | |w| is odd}
{w | |w| is odd}
超過{a,b}
。
更強大的語法將允許類似b((a|b)((a|b)^2)*b)?
,它更緊湊,但等效。
最簡單的一個:
(b(a|b)(aa|ab|ba|bb)*b)|b
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.