2017-01-22 10 views
-1

Я использую Django и пытаюсь создать модель конечного автомата, и это то, что я придумал до сих пор:Джанго - Моделирование функции перехода

class Alphabet(models.Model): 
    alphabet = models.CharField(max_length = 10, null = True, blank = True) 
    automata = models.ForeignKey(Automata, on_delete = models.CASCADE) 

class States(models.Model): 
    state = models.CharField(max_length = 10, null = True, blank = True) 
    final = models.BooleanField(default = False) 
    initial = models.BooleanField(default = False) 
    automata = models.ForeignKey(Automata, on_delete = models.CASCADE) 

class Automata(models.Model): 
    pass 

Теперь я хотел бы моделировать переход функция, есть один для каждого автомата:

Пример: мы можем перейти от State1 к State2 используя symbol1

я не уверен, как пройти через это, любая помощь будет оценен по достоинству!

ответ

0

Следующие могут моделировать один переход переходной функции для конечного автомата. Следует, однако, отметить, что детерминированные конечные автоматы и недетерминированные конечные переходы автоматов выглядят иначе. Переходы DFA переходят в одно состояние, тогда как переходы NFA сопоставляются с множеством состояний. Вы должны помнить об этом при добавлении отношений.

class Transition(models.Model): 

    current_state = models.ForeignKey(State) 
    symbol = models.CharField(max_length=1) 
    next_state = models.ForeignKey(State) 

    def __str__(self): 
     return "T({0}, {1}) = {2}".format(
      self.current_state, 
      self.symbol, 
      self.next_state 
     ) 
+0

Я не думал об этом при создании этого, спасибо за указание! – Meryem