Turingmaschinen in autotool

$Id: turing.html,v 1.1.1.1 2002/05/24 10:46:47 challenger Exp $

Benutzung

Ein Ansatz für die Aufgabe IX.3 sieht so aus:
import Turing

student :: Turing Char Integer
student = Turing 
        { eingabealphabet = mkSet "I"
        , leerzeichen     = '#'
        , arbeitsalphabet = mkSet "#abI"
        , zustandsmenge  = mkSet [ 0, 1, 2, 3, 4, 5, 6, 7]
        , tafel = t
        , startzustand   =  0
        , endzustandsmenge = mkSet [ 7 ]
        }

t = listToFM
      [ ( ('I', 0), mkSet [ ( 'a', 1, R ) ] )
      , ( ('I', 1), mkSet [ ( 'a', 2, R ) ] )
      , ( ('I', 2), mkSet [ ( 'a', 2, R ), ('I', 3, L) ] )
	]

Implementierung

(Definition siehe Skript Seite 61). Der Datentyp ist im Allgemeinen
data Turing y z = 
     Turing { eingabealphabet  :: Set y
	    , arbeitsalphabet  :: Set y
	    , leerzeichen      :: y
	    , zustandsmenge    :: Set z 
	    , tafel	       :: FiniteMap (y, z) (Set (y, z, Bewegung))
	    , startzustand     :: z
	    , endzustandsmenge :: Set z
	    }

data Bewegung = L | O | R
     deriving (Eq, Show, Ord)
wir verwenden meistens die spezielle Instanz Turing Char Integer.

Set y ist der Typ der Mengen mit Elementen aus y, und FiniteMap a b sind endliche Abbildungen (stellen Sie sich Hashtabellen oder Suchbäume vor) mit Schlüsseln aus a und Werten aus b.


Mehr Infos


best viewed with any browser


http://www.informatik.uni-leipzig.de/~joe/ mailto:joe@informatik.uni-leipzig.de