2017-01-22 9 views
-1
私はジャンゴを使用し、有限オートマトンのモデルを作成しようとしている

をモデル化し、これは私がこれまでに思い付いたものです:ジャンゴ - 遷移関数

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 

は、今私は、遷移をモデル化したいと思います関数は、各オートマトンに1つあります:

例:私たちは、私はそれを使用して通過するかどうかはわかりませんシンボル1

を使用してSTATE2するSTATE1から行くことができますが、任意の助けいただければ幸いです!

答えて

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