精華區beta RegExp 關於我們 聯絡資訊
抱歉不是連續,不好意思 請問怎麼表示偶數個a跟奇數個b的任意組合呢? 如aabbb、aba等等,想了很久,想不到如何可以完整表達, 在此先謝過~~ -- 河豚は食いたし命はおしし.... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.126.4.129
LyinZ:aba 裡的 a 不是就不連續了? 04/19 20:20
giacch:/aa+b(bb)*aa+/ 04/19 20:43
※ 編輯: shingoliang 來自: 220.134.25.16 (04/19 21:18)
LPH66:/((aa)*b(bb)*)*/ 04/20 00:47
LPH66:唔等等... 04/20 00:47
LPH66:它可以弄出DFA 沒道理寫不出regexp...@_@ 04/20 00:48
freesamael:我也是想到先畫DFA耶,比較好思考 04/20 00:50
giacch:/(aa)*b(bb)*(aa)+|(aa)+b(bb)*|a(aa)*b(bb)*a(aa)*/ 04/20 09:32
giacch:啊... 我給的是有連續的... XD 04/20 09:35
giacch:一直給錯東西, 真是抱歉... orz 04/20 19:49
shingoliang:不會啦,謝謝:P 04/20 20:42
> -------------------------------------------------------------------------- < 作者: LPH66 (IWH68S0XZ8M89) 看板: RegExp 標題: Re: [問題] 連續a跟奇數b.. 時間: Sun Apr 20 01:19:22 2008 ※ 引述《shingoliang (那個冬天..是永恆)》之銘言: : 抱歉不是連續,不好意思 : 請問怎麼表示偶數個a跟奇數個b的任意組合呢? : 如aabbb、aba等等,想了很久,想不到如何可以完整表達, : 在此先謝過~~ 這玩意建DFA是秒殺 a ┌──┐ ↘↓ a │ ┌─○─→○←┐ b│ ↑ │ │b │ b│ ↓b │ └→◎←─○─┘ │ a ↑ └──┘ a 但從這個DFA轉出來的regexp卻囧得跟什麼一樣: (a(bb)*a)*(b|ab(bb)*a)((a(bb)*a)*|(b|ab(bb)*a)(a(bb)*a)*(b|ab(bb)*a))* 原PO如果要用的話就把這串拿去試吧 @_@ (我目前想不到短一點的表示法了... 要我直接解釋這一長串我也想不到 orz) -- 試著去對原PO舉的兩個例子: aabbb: (a(bb)*a)*(b|ab(bb)*a)((a(bb)*a)*|(b|ab(bb)*a)(a(bb)*a)*(b|ab(bb)*a))* [ aa ][b] [ bb ] aba: (a(bb)*a)*(b|ab(bb)*a)((a(bb)*a)*|(b|ab(bb)*a)(a(bb)*a)*(b|ab(bb)*a))* [ ε ] [ab a][ ε ] -- [LPH] Oops, your OOP's a problem? 說: 你現在還是看不到狗? ************* 說: 看得到 只是 他們不會跑 就一直呆呆在那邊 一直在起點 [LPH] Oops, your OOP's a problem? 說: 你要按"ㄅㄧㄤˋ"它們才會跑啊@@" -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.30.84
freesamael:突然想起過去在修自動機理論的日子了XD 04/20 01:28
LPH66:就是上學期修過印象還很深XD 04/20 03:58
shingoliang:謝謝我看一下,我是只畫得出DFA,Reg太複雜弄不出來orz 04/20 15:39
※ 編輯: LPH66 來自: 140.112.30.84 (04/20 18:21)
giacch:我發現單個 b 會過... 的樣子..? (沒自信 = = 04/20 19:56
shingoliang:單個b可以阿~~ 04/20 20:42
giacch:嗯... 我誤以為要有a有b... 呵呵~ 04/20 21:03
> -------------------------------------------------------------------------- < 作者: shingoliang (那個冬天..是永恆) 看板: RegExp 標題: Re: [問題] 連續a跟奇數b.. 時間: Sun Apr 20 15:54:40 2008 : -- : 試著去對原PO舉的兩個例子: : : aabbb: (a(bb)*a)*(b|ab(bb*)a)((a(bb)*a)*|(b|ab(bb*)a)(a(bb)*a)*(b|ab(bb*)a))* : [ aa ][ b ] [ bb ] : : aba: (a(bb)*a)*(b|ab(bb*)a)((a(bb)*a)*|(b|ab(bb*)a)(a(bb)*a)*(b|ab(bb*)a))* : [ ε ] [ab a][ ε ] 比較好奇的是這邊... (b|ab(bb*)a) 應該是b 或者 ab(bb*)a ,應該寫成ab(bb)*a?? 不然bb*至少一定有一個b吧? 就會變成abba @@" 當時助教隨意解沒解出來,他提供了個想法: 兩個都偶再配一個b (ε|aabb|abab|abba|bbaa|baba|baab ) assume 為 A Reg: A*bA* 不過這例子沒包含到aba、abbba、aabaa、aaaabbbaa、abaabba等等格式, 後來直接想實在想不到 orz 而且沒教DFA轉REG方法,所以... -- 河豚は食いたし命はおしし.... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.126.4.129 ※ 編輯: shingoliang 來自: 122.126.4.129 (04/20 15:55)
LPH66:囧 我打錯了 那裡應該是(b|ab(bb)*a) 04/20 18:20
LPH66:等等我回一篇試著拆的解釋法好了 04/20 18:20
> -------------------------------------------------------------------------- < 作者: LPH66 (IWH68S0XZ8M89) 看板: RegExp 標題: Re: [問題] 連續a跟奇數b.. 時間: Sun Apr 20 18:57:13 2008 我來試著硬拆好了 ※ 引述《LPH66 (IWH68S0XZ8M89)》之銘言: : (a(bb)*a)*(b|ab(bb)*a)((a(bb)*a)*|(b|ab(bb)*a)(a(bb)*a)*(b|ab(bb)*a))* 整個式子是 R*G(R*|GR*G)* 的結構 表示整個式子相當於拆成用G分隔的段 然後第一個G抓住前面的一堆R (R*G) 後面兩個G一組 抓住其中的一堆R (GR*G) 在組與組之間的一堆R則由R*抓住 (也就是式子表示為一堆R和G的組合 其中G有奇數個 從後面兩個兩個G一組拆開) 從字串本身來看的話 我們可以照字串中兩個a一組 中間劃分開來 (因為一個R或一個G有0或2個a 而由於a有偶數個 必然不會有落單的) 例如: aaaaabbbbaaaaaabbbaaa => aa aa abbbba aa aa abbba aa abbbbbaaababa => abbbbba aa b aba aabbbbbaaaaabbbba => aa bbbbb aa aa abbbba abbabbaba => abba bb aba abababababa => aba b aba b aba 然後 把所有是兩個a之中有偶數個b的部份代換成R 其他的代換成G 由於b有奇數個 而代換成R的部份必然一共用去了偶數個b 因此剩下的b有奇數個 然後也只剩下了 (1)連續奇數個b (2)兩個a中間有奇數個b 因此代換成一個G的一段必然有奇數個b 因此全部必然有奇數個G 正好符合上面所提到的型式 (全部有奇數個G 兩兩間有0或多個R) 於是R就是(a(bb)*a) G就是(b(bb)*|ab(bb)*a) 之所以上面的G是(b|ab(bb)*a)的理由是取奇數個b一組和取一個b一組是一樣的 這相當於上面的分組中把只有一串b的拆成一個b一段 例如: aabbbbbaaaaabbbba => aa b b b b b aa aa abbbba abbabbaba => abba b b aba 這樣G仍然會是奇數個 由於所有這樣的字串這樣拆完再代換完必然是如此型式 所以就可以用上面的R,G表示 把R,G代入對應字串就得到原式 反之不合的這樣拆必然出問題 --- 這樣一分析的話 就可以得到另一種稍微直覺的寫法: RG組合,G奇數個 可以寫成 R*GR*(GR*GR*)* 這樣就成了 (a(bb)*a)*(b|ab(bb)*a)(a(bb)*a)*((b|ab(bb)*a)(a(bb)*a)*(b|ab(bb)*a)(a(bb)*a)*)* 比上一個稍長 但仍然符合要求 -- 'You've sort of made up for it tonight,' said Harry. 'Getting the sword. Finishing the Horcrux. Saving my life.' 'That makes me sound a lot cooler then I was,' Ron mumbled. 'Stuff like that always sounds cooler then it really was,' said Harry. 'I've been trying to tell you that for years.' -- Harry Potter and the Deathly Hollows, P.308 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.30.84
shingoliang:太感謝了,真題真複雜,我仔細研究,thanks~~ 04/20 19:07