Как я могу сделать DFA из следующего условия?

Пожалуйста, помогите мне сделать DFA из следующего условия:

L = {w: na(w) по модулю 3 > nb(w) по модулю 3},

где na(w) представляет количество вхождений a в w, а nb(w) представляет количество вхождений b в w.


person Abdul Moiz Lakhani    schedule 13.02.2017    source источник
comment
Давайте начнем. Каждый DFA имеет начальное состояние. Что бы вы назвали переходами из начального состояния в другие состояния и каковы условия этих переходов? Вы также можете иметь одно или несколько состояний, которые принимают строку w, если в ней больше нет символов.   -  person Aaron Mansheim    schedule 14.02.2017


Ответы (2)


Прежде всего, спроектируйте DFA для n (a) mod3 по горизонтали и с его начальным состоянием n (b) mod3 по вертикали ..... Всего потребуется 9 состояний и отметьте состояния (a, b), где a - это n (a) mod3 и b представляют n(b)mod3, а затем делают состояния, в которых первый элемент кортежа больше второго, в качестве конечных состояний (в этом случае их будет 3)..... надеюсь, мой ответ поможет

person Aditya Tiwari    schedule 19.02.2017

Единственное, что нам нужно отслеживать, — это количество вхождений a и b по модулю 3 соответственно. Для каждого из a mod 3 и b mod 3 существует три возможности (0, 1 или 2 соответственно), и, поскольку они независимы, мы можем находиться в общей сложности в девяти состояниях:

  • q00: a по модулю 3 = 0, b по модулю 3 = 0
  • q01: а по модулю 3 = 1, б по модулю 3 = 0
  • q02: а по модулю 3 = 2, б по модулю 3 = 0
  • q10: а по модулю 3 = 0, б по модулю 3 = 1
  • q11: а по модулю 3 = 1, б по модулю 3 = 1
  • q12: а по модулю 3 = 2, б по модулю 3 = 1
  • q20: а по модулю 3 = 0, б по модулю 3 = 2
  • q21: а по модулю 3 = 1, б по модулю 3 = 2
  • q22: а по модулю 3 = 2, б по модулю 3 = 2

Это будут состояния нашего DFA. Переходы следующие:

  • из состояния qij переход в qij' на входе a, где j' = (j + 1) mod 3
  • из состояния qij переход в qi'j на входе b, где i' = (i + 1) mod 3

Это дает нам в общей сложности 18 переходов.

Мы хотим принять, когда мод 3 > b мод 3; то есть:

  • состояние qij принимается тогда и только тогда, когда j > i

Это дает нам 3 принимающих состояния.

Наконец, наше начальное состояние возникает, когда мы видели ноль экземпляров любого символа; то есть:

  • начальное состояние q00

Теперь мы полностью определили DFA для этого языка.

person Patrick87    schedule 22.02.2017