2010-04-27 75 views
5

什麼是具有偶數數量的零和偶數個1 0和1串的正則表達式?定期與偶數0和1串表達

我有類似(1*01*01*)*(0*10*10*)*

它看起來不錯嗎?

+2

它可能只是我,但這個問題對我來說完全沒有意義。也許換個話題? – 2010-04-27 22:11:59

+0

嘿聽隊友/ ....我只是問我是否做得對或不...如果你不想幫助,那麼不要..... – Kevinniceguy 2010-04-27 22:12:22

+8

「好人」:不需要粗魯的迴應對**正試圖幫助的人,指出你的問題不清楚。 (如果這很「好」,我討厭會見「Kevinmeanguy」......) – 2010-04-27 22:26:28

回答

6

1100在語言中,但與您的表達不符。 10101不在語言中, 但您的表達符合它。

我建議從繪製DFA開始。有一個非常明顯的識別這種語言的4狀態機器。 (是否有可能做得更好?)空字符串在語言中,所以開始狀態是一個接受狀態。還有其他接受狀態嗎?對於非接受狀態S,是 還有一個前綴,可以從開始 - > S開始?有沒有辦法從S回到S而沒有接受狀態?是否有後綴讓你從S回到接受狀態?

1

一個反了給定的正則表達式是01010101

您可能會發現寫一個正則表達式這個 特殊問題不會是可能的(除非你使用一些 非正規擴展到一般的正則表達式語言)。

如下面吉姆·劉易斯提到的,這的確應該是一個可以解決的問題。

+0

{0,1}上的所有字符串的集合,偶數個0和偶數個1是肯定有規律的。具有四個州的DFA應該足夠了。 – 2010-04-27 22:24:37

+0

@Jim劉易斯:謝謝,進一步考慮你是對的。 – 2010-04-27 22:28:28

+0

我經常想知道爲什麼人們發現他們後來發現他們不同意的東西。我傾向於刪除它並重新解釋答案。在我看來,三振出局對最終答案沒有任何價值,如果任何人有興趣,我們的「教育」可以在歷史中看到。只是好奇,因爲我見過不少人這樣做。 – paxdiablo 2010-04-27 22:40:39

11

嗯,這大概是功課,但究竟發生了什麼:

^(00|11|(01|10)(00|11)*(01|10))*$ 

編輯:簡化!

+1

+1:不錯的工作。對於任何想要以交互方式嘗試此操作的人,請嘗試http://www.gskinner.com/RegExr/ – brainjam 2010-04-27 23:24:03

+0

@tloflin:您是否使用JFLAP?我做了,它給了完全相同的答案:) – tiftik 2010-04-27 23:47:15

+2

@tiftik,哈哈不,我用記事本。但是我確實從DFSM開始並減少了它,所以我並不感到驚訝。 – tloflin 2010-04-27 23:49:37

-1
@tmp = $str =~ /0/g; 

print scalar @tmp % 2 == 0 ? 'even' : 'odd'; 
+7

這不是一個正則表達式。這是一個程序。 – tiftik 2010-04-27 23:39:02