2010-04-27 18 views
5

dizeleri için düzenli ifade 0 ve 1 dizeleri için eşit sayıda sıfır ve çift sayı olan düzenli ifade nedir?Eşit sayıda sıfır olan ve

(1*01*01*)*(0*10*10*)* gibi bir şey var.

Güzel görünüyor mu?

+2

Sadece ben olabilirdim, ama bu soru tamamen bana mantıklı gelmiyor. Belki rephrase? –

+0

hey listenate/.... sadece ne yaptığımı sorup sormadığımı soruyorum ... ve eğer yardım etmek istemiyorsanız o zaman ..... – Kevinniceguy

+8

"nice guy": Kaba tepkilere gerek yok **, ** 'nin, sorunuzun belirsiz olduğuna işaret ederek yardım etmeye çalışan birine. (Ve eğer bu "hoş" ise, "Kevinmeanguy" ile tanışmaktan nefret ederim ...) –

cevap

6

1100 dili bu dilde, ancak ifadenizi eşleşmiyor. 10101, dilinde değil, ifadenizle eşleşiyor.

Bir DFA çizerek başlamanızı öneririm. Bu dili tanıyan oldukça açık 4-durumlu bir makine var. (Daha iyi yapmak mümkün mü?) Boş dize dili, başlangıç ​​durumu kabul eden bir durumdur. Başka kabul eden devletler var mı? Kabul etmeyen bir durum S için, , sizi başlangıç ​​-> S'den alan bir önek var mı? Kabul eden bir devlete çarpmadan S'den S'ye dönmenin bir yolu var mı? S'den geri kabul eden bir devlete götüren son ek var mı?

1

Verilen normal ifadeniz için bir karşı poz örnek 01010101'dur.

Bu belirli sorun için normal bir ifade yazma (her zamanki düzenli ifade dilinde bazı olmayan normal uzantılarını kullanmak sürece) mümkün olacak olmadığını fark edebilirsiniz.

Aşağıda Jim Lewis'in belirttiği gibi, bu gerçekten çözülebilir bir problem olmalıdır.

+0

Bütün dizelerin sayısı {0,1} 'den fazla, 0'ların çift sayısı ve hatta 1'leri ile birlikte kesinlikle normaldir. Dört durumlu bir DFA yeterli olmalıdır. –

+0

@Jim Lewis: Teşekkürler, daha ileride haklısınız. –

+0

İnsanların neden daha önce katılmadıklarını keşfettikleri şeyleri neden vurduklarını merak ettim. Sadece onu silmeye ve cevabını yeniden ifade etmeye eğilimliyim. Bana öyle geliyor ki, grev son cevaba hiçbir değer katmıyor, ve eğer birisi ilgileniyorsa, tarihimizde “eğitimimiz” görülebilir. Oldukça az insan gördüğümden beri merak ediyorum. – paxdiablo

11

Eh, bu muhtemelen ödev, ama n'olacak:

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

Düzenleme: basitleştirilmiş!

+1

+1: Güzel iş. Bunu etkileşimli olarak denemek isteyen herkes için http://www.gskinner.com/RegExr/ – brainjam

+0

@tloflin'i deneyin: JFLAP kullandınız mı? Ben yaptım ve aynı cevap verdi :) – tiftik

+2

@tiftik, haha ​​hayır, Not Defteri kullanılır. Ama bir DFSM ile başladım ve düşürdüm, bu yüzden şaşırmadım. – tloflin

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

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

Bu normal bir ifade değil. Bu bir program. – tiftik

İlgili konular