2017-01-22 1 views
-1

Ich verwende Django und versuchen, ein Modell für einen endlichen Automaten zu schaffen, und das ist, was ich kam mit so weit nach oben:Django - Modellierung einer Übergangsfunktion

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 

Nun würde Ich mag den Übergang modellieren Funktion gibt es einen für jeden Automaten:

Beispiel: wir von state1 gehen können mit symbol1

ich bin nicht sicher sTATE2 wie er damit gehen, würde jede Hilfe dankbar!

Antwort

0

Das folgende könnte einen einzelnen Übergang der Übergangsfunktion für einen endlichen Automaten modellieren. Es ist jedoch bemerkenswert, dass deterministische endliche Automaten und nicht-deterministische endliche Automatenübergänge unterschiedlich aussehen. DFA-Übergänge werden auf einen einzelnen Status abgebildet, während NFA die Zuordnung zu einer Gruppe von Zuständen übergibt. Sie müssen dies berücksichtigen, wenn Sie die Beziehungen hinzufügen.

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

Ich habe nicht daran gedacht, dies zu machen, danke für den Hinweis! – Meryem