Dator
 |  Startsida |  Hårdvara |  Nätverk |  Programmering |  Programvara |  Felsökning |  System |   
Programmering
  • C /C + + -programmering
  • Computer Programspråk
  • Delphi Programmering
  • Java Programming
  • JavaScript programmering
  • PHP /MySQL Programmering
  • perl Programmering
  • python Programming
  • Ruby programmering
  • Visual Basics Programmering
  • * Dator Kunskap >> Programmering >> Computer Programspråk >> Content

    Hur man gör en deterministisk Finite State Machine

    Den finita tillståndsmaskin ( FSM ) är en viktig abstraktion där driften av digitala datorer bygger . En FSM består av en uppsättning av stater , är bara en av dem kan vara " upptagen " på en gång , och en uppsättning regler som bestämmer vilken stat kommer att bebos nästa utifrån som för närvarande ockuperat och en ingång . I en deterministisk FSM , leder varje stat endast till en annan stat ( eller sig själv ) för varje möjlig input . De är lätta att rita och analysera på papper med cirklar och pilar . Saker du behöver
    Pencil
    Paper
    Visa fler instruktioner
    1

    rita en cirkel ca 1 tum över på papper för att representera Mikronesiens börjar staten . Ange att det är utgångspunkten staten genom att rita en pil om en tum lång som pekar på det . Skriv ett unikt namn för staten inuti cirkeln , ett gemensamt system är att märka varje stat med " S " och ett nedsänkt ( t.ex. " S0 , S1 , S2 " och så vidare ) , men använder mer beskrivande namn för din stater om det gör FSM lättare att förstå .
    2

    Rita en annan cirkel för att representera ett andra tillstånd . Skriv en etikett för den andra staten i sin krets . Varje stat måste ha ett " svar " definieras för varje möjlig input som den får . Rita så många pilar som leder ut från start staten som det finns möjliga ingångar , märkning varje pil med ingången det motsvarar . Varje pil måste leda tillbaka till utgångsläget staten eller till den andra staten . Som ett exempel , tänk att maskinen har tillgång till en korg av bananer , äpplen och apelsiner som det kommer att plocka igenom en bit i taget tills korgen är tom . Rita en pil märkt med ingången " bananen " från start tillståndet till det andra tillståndet . Rita två pilar , motsvarande " äpple " och "orange ", som leder ut från start staten men looping tillbaka till den . Om två eller flera pilar börjar på samma ställe och slutar på samma plats som denna , kombinera dem för att göra ritningen mindre rörigt , etikett enda pil med alla ingångar den motsvarar
    3 .

    Rita fler stater och ange sina pilar tills maskinen har nått ett tillstånd där den har stött på ingångarna eller sekvens av insignaler den är avsedd att identifiera . För det aktuella exemplet , rita en tredje stat och märka det . Rita en " banan " pilen som leder ut ur det andra tillståndet till det tredje , och en " äpple /orange " pilen som leder ut ur det andra tillståndet tillbaka till sig själv. Rita en enda pil från tredje stat som leder tillbaka till sig själv , märkt med alla tre typer av frukt .
    4

    Rita en något mindre koncentrisk cirkel i den tredje staten att visa att det är ett " acceptera "-tillstånd . Din FSM är klar , men vad gör det ? Simulera vad som skulle hända för ett par korgar exempel frukt du gör upp , och du kommer snabbt att inse att detta FSM kommer att förkasta korgar som inte har 2 bananer ( en korg " avvisas " om frukten tar slut när den mottagande staten ISN 't ockuperade ) . Deterministiska FSM kan ha betydligt mer komplexa funktioner än detta , med flera acceptera stater och komplexa möjliga vägar .

    Tidigare:

    nästa:
    relaterade artiklar
    ·Hur man läser en IIS loggfil
    ·Hur man skriver ett Connection String som en klass fil
    ·Principer för Constraint Programming
    ·Hur att ändra texten som visas när du för muspekaren…
    ·Utveckling av en Struts portlet
    ·Hur vill kolla om det finns ett värde i SQL
    ·Datateknik för nybörjare
    ·Hur du använder Modulus Med Double
    ·Hur man gör en patch-fil
    ·Hur man använder CLR Profiler
    Utvalda artiklarna
    ·Hur man gör en ordlista med två nycklar i Python
    ·Hur man installerar ett WSP Tema
    ·Konvertera JSP till Java
    ·Hur till Redigera Setup.exe
    ·Hur man tar bort punkter från en Array i Java
    ·Hur man Aktivera Fjärrhjälp i registret med WSH
    ·Hur man bort radnummer i MySQL
    ·Hur man skapar en rad komponenter för VB.NET Designer
    ·Hur Rendera en cirkel i OpenGL
    ·Fördelar med diagram dataflödet
    Copyright © Dator Kunskap http://www.dator.xyz