2012-05-20 4 views
1

мне нужно создать непустой DFA над языком {а, Ь, с} со следующими свойствами:Создания детерминированных конечных автоматов

  1. Первого символом является.
  2. Имеет четное количество букв.
  3. Последний символ - c.

мне было просто интересно, я должен создать 3 отдельно Automatas, а затем объединить их с помощью перекрестков, или я должен просто создать один, и если это так, то как может он имеет четное число б-х годов? Я знаю, что могу чередовать государства, но не уверен, как это сделать вместе с ним.

Благодаря

+0

Вы должны иметь возможность сделать это с помощью трех состояний. –

+0

@ OliCharlesworth Да, я знаю, что мне нужно начинать с a, а затем, когда я перехожу в состояние оттуда, как я могу заставить b иметь четное число состояний, потому что a, b или c могут быть вставлены в автоматы после первого состояния. – AkshaiShah

+0

Вам нужно одно состояние для представления «нечетное число b», а другое состояние - «четное число b». Каждый раз, когда вы получаете b, переходите из одного состояния в другое. –

ответ

1

Вот ваш автомат (при условии, что 0 даже и для них 0 Б нормально):

[start](a) -> [1] 
[start](b,c,<eoi>) -> [reject] 

[1](a) -> [1] 
[1](<eoi>) -> [reject] 

[1](c) -> [2] 
[1](b) -> [3] 

[2](<eoi>) -> [accept] 
[2](c) -> [2] 
[2](a) -> [1] 
[2](b) -> [3] 

[3](<eoi>) -> [reject] 
[3](a,c) -> [3] 
[3](b)->[1] 

Где «конец входного текста».

Состояние 1: четное число b, последний обработанный символ c. Состояние 2: четное число b, последний обработанный символ c. Состояние 3: нечетное число b.

+0

Обычно на него нахмурилось просто сделать домашнее задание людей для них на SO ... –

+0

Ничего не сказал, что это была домашняя работа. В любом случае было намного проще реализовать его, чем попытаться объяснить, как это делается. Я надеюсь, что OP научится этому. –

+0

Ярмарка достаточно. Но, вероятно, было бы более полезно объяснить общую процедуру для достижения такого решения. –

Смежные вопросы