簡體   English   中英

簡化正則表達式,自動機理論

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM