Hjem Personlig finansiering Java Programmeringsudfordring: Oprettelse af en enkel turingmaskine - dummier

Java Programmeringsudfordring: Oprettelse af en enkel turingmaskine - dummier

Video: Java Tutorial for Beginners [2019] 2025

Video: Java Tutorial for Beginners [2019] 2025
Anonim

I matematikeren Alan Turing blev der opfattet en bedragerisk simpel type beregningsmaskine kaldet en Turing Machine . Turing har aldrig faktisk bygget en Turing Machine. I stedet var det en hypotetisk enhed, som han koncocted til at støtte i undersøgelsen af ​​beregningsevne - det vil sige om komplekse problemer kan løses ved beregningstrin og om en maskine kan udtænkes, der kan løse ethvert beregbart problem. (Hvis du er interesseret i at vide mere om historien eller anvendelsen af ​​Turing-maskiner, kan du finde mange artikler om dem på internettet. Brug bare enhver søgemaskine til at søge efter "Turing-maskine".)

Funktionen af ​​en Turing Machine er enkel. Det er kun et par grundlæggende begreber:

  1. Hjertet i en Turing Machine er et uendeligt langt bånd, som er opdelt i celler, på hvilke oplysninger der kan skrives.

    I egentlig praksis kan selvfølgelig ingen fysisk enhed have et uendeligt antal celler. Men i teorien om en Turing Machine er båndet uendeligt.

  2. De oplysninger, der kan skrives på hver celle, er begrænset til et enkelt symbol, f.eks. En 0 eller en 1. Imidlertid kan oplysninger repræsenteres af de kombinerede værdier af successive celler.

    Du kan for eksempel repræsentere numeriske værdier ved successive forekomster af symbolet 1 efterfulgt af en 0. Således repræsenterer 1110 værdien 3, fordi der er tre 1'er; 111111011110 kan repræsentere værdierne 6 og 4 (seks 1'er efterfulgt af et nul efterfulgt af fire 1'er efterfulgt af et andet nul).

  3. Turing Machine indeholder et læse-skrivehoved , som altid er placeret over en (og kun en) af kassens celler.

    Denne læse skrive hoved kan læse symbolet, der er indeholdt i cellen. Det kan også slette symbolet og, hvis det ønskes, skrive et nyt symbol på sin plads. Cellen, over hvilken læse-skrivehovedet er placeret, betegnes som nuværende celle eller hovedcelle .

  4. Båndet er motoriseret, så det kan flyttes til venstre eller højre under læs-skrivehovedet en celle ad gangen.

  5. Maskinen har en tilstand , som er repræsenteret af et symbol som et bogstav i alfabetet.

Som enhver computer kan en Turing Machine programmeres. Et program til en Turing Machine ligner imidlertid ikke på eksternt et Java-program.

I stedet er et Turing Machine-program simpelthen et sæt regler, som evalueres for at bestemme, hvilke handlinger maskinen skal tage. Hver regel identificerer en handling, der skal tages, når den aktuelle celle indeholder et givet symbol, og maskinen er i en given tilstand.For eksempel kan en regel diktere hvad man skal gøre, hvis den nuværende celle indeholder en 1, og maskinens tilstand er "a".

Hver regel kan angive en af ​​tre handlinger:

  • Slet den aktuelle celle eller skriv en ny værdi til cellen.

  • Flyt båndet en celle til venstre eller en celle til højre.

  • Skift maskinens tilstand til en ny tilstand.

For eksempel kan en regel angive, at hvis den nuværende celle indeholder en 1 og maskinens tilstand er "a", skal turingmaskinen skrive en 0 i den nuværende celle, fremføre båndet en celle til højre og ændre Maskinen tilstand til "b. "

Ud over et program kan Turing Machine's tape have en startværdi.

Det er det; Det er hele definitionen af ​​en Turing Machine. På trods af sin enkelhed kan en Turing Machine beregne alt fra 2 + 2 til bane af en raket til Mars.

Til denne udfordring skal du oprette en meget enkel Turing Machine. For at forenkle problemet accepterer du følgende begrænsninger på denne version af Turing Machine:

  • Båndet behøver ikke at være uendeligt. Du kan bruge en hvilken som helst Java-funktion - et array, en streng eller en samling - for at repræsentere båndet.

    (Bemærk at selvom båndet ikke behøver at være uendeligt, skal du nemt kunne flytte til venstre eller højre fra den aktuelle celle. Hvis du vælger at bruge en matrix, skal du ikke starte med den nuværende celle ved elementet 0 fordi du ikke kan flytte til venstre derfra.)

  • En celle kan være tom, eller den kan indeholde et hvilket som helst bogstav eller tal. En tom celle er repræsenteret af en understregningstegn.

  • Staten kan være en enkelt alfanumerisk karakter.

  • Programmet til Turing Machine læses fra en tekstfil. Denne tekstfil indeholder en regel pr. Linje. Hver regel indeholder fem tegn, adskilt af mellemrum, der angiver detaljerne for hver regel, som følger:

    • Nuværende celle: Den værdi, der skal matches for den nuværende celle.

    • Nuværende tilstand: Den værdi, der skal matches til den aktuelle maskinstilstand.

    • Ny celle: Værdien til at skrive til den nye celle. _ at slette cellen, * forlade cellen uændret

    • Bevægelse: L eller R for at flytte båndet til venstre eller højre; H for at stoppe programmet enhver anden karakter for ikke at flytte båndet.

    • Ny tilstand: Den nye værdi for maskinens tilstand.

  • For eksempel siger følgende, at når den nuværende celle er 1, og staten er "a", skal den nuværende celle indstilles til 0, båndet flyttede en celle til venstre, og staten skal indstilles til " b: "

    1 a 0 L b
    
    • Den første linje i tekstfilen skal indeholde en streng, der repræsenterer de oprindelige værdier for båndet.

    • Den anden linje i tekstfilen skal indeholde den oprindelige status.

Følgende figur viser brugergrænsefladen til prøveopløsningen, men du er velkommen til at bruge ethvert brugergrænseflade design, du gerne vil have til dette projekt.

En potentiel Turing Machine-grænseflade.

Her er nogle overvejelser for at oprette grænsefladen:

  • Værdi og nuværende celle: I det mindste skal du vise værdien af ​​båndet og markere den aktuelle celle.

  • Værktøjer og display: Du bør også give mulighed for at starte, stoppe eller genstarte programmets udførelse, og du skal vise resultaterne af hvert trin i programmet.

  • Programudførelse: Du kan give brugeren mulighed for at køre det indlæste program fra start til slut samt en måde, hvorpå brugeren kan gennemgå et enkelt trin gennem programmet ved at klikke på en knap for at udføre hvert trin af programmet.

  • Indlæser programmet : Du skal angive knapper, der giver brugeren mulighed for at indlæse et Turing Machine-program fra en tekstfil, og det giver brugeren mulighed for at nulstille maskinen for at køre programmet igen.

Her er et tip til implementering af det uendelige bånd: Brug tre strengvariabler til at holde båndværdierne, en for det enkelte tegn gemt i den aktuelle celle, et sekund for tegnene til venstre for den aktuelle celle og en tredje for tegnene til højre for den aktuelle celle. Du kan så nemt flytte den aktuelle celle til venstre eller højre ved at bruge den rigtige kombination af sammenkædnings- og substringsoperationer.

Du kan finde løsningen på denne udfordring på fanen Downloads i Java All-in-One for Dummies, 4. udgave produktside.

Held og lykke!

Java Programmeringsudfordring: Oprettelse af en enkel turingmaskine - dummier

Valg af editor

Hvordan man skriver en check for en fremragende bill i QuickBooks Online - dummies

Hvordan man skriver en check for en fremragende bill i QuickBooks Online - dummies

Du kan Brug QuickBooks Online (QBO) Check vinduet til at skrive en check for at betale et faktura, du tidligere indtastede - noget, du ikke kan gøre i QuickBooks desktop produkt. Brug ikke Check-transaktionen, hvis du planlægger at betale flere regninger. Hvis du vælger en betalingsmodtager, for hvem der foreligger en udestående faktura, QBO ...

Sådan afskrives fakturaer med QuickBooks Online Accountant - dummies

Sådan afskrives fakturaer med QuickBooks Online Accountant - dummies

Vælger skrivefakturaer fra revisionsværktøjerne menuen i QBOA viser siden Skriv ud fakturaer, som giver dig mulighed for at se fakturaer, du måske vil afskrive, og derefter skrive dem til en konto efter eget valg. Øverst på siden indstiller du filtre for at få vist de fakturaer, du vil have ...

Importrevisorens ændringer til QuickBooks 2012 Datafil - dummies

Importrevisorens ændringer til QuickBooks 2012 Datafil - dummies

Din klient importerer de ændringer, som du ' har lavet i revisorens kopi af QuickBooks 2012-datafilen i hendes arbejdskopi af datafilen. For at gøre dette vælger klienten filen Arkiv → Revisorens Kopi → Klientaktiviteter → Kommandoen Import Revisorens Ændringer. QuickBooks viser dialogboksen Importer regnskabsførerens ændringer. For at bruge importkontoens ændringer ...

Valg af editor

Brug Flash med Nature Photography - dummies

Brug Flash med Nature Photography - dummies

Som regel afhænger du af naturlig belysning til naturfotografering. Du kan dog bruge flash-flash eller en ekstra flash-enhed til at øge naturlig belysning. On-flash-kamera De fleste digitale kameraer leveres med en flash på kameraet. Blitzenheden springer op, når det er nødvendigt. Du kan også aktivere flash på kameraet, når du skal tilføje en ...

Brug tredjeparts rå software til HDR fotografi - dummies

Brug tredjeparts rå software til HDR fotografi - dummies

Du kan købe eller downloade et væld af Råredigerere og konvertere fra tredjepart, der hjælper dig med at lave billeder med høj dynamisk rækkevidde. Hvis du er utilfreds med din nuværende software og vil prøve noget nyt, skal du hænde på en eller flere af de programmer, der er angivet i tabellen. Rå redaktører fra tredjepart Navn URL Platform (er) Freeware? ...

Brug dekorative accenter i mad stil og madfotografi - dummies

Brug dekorative accenter i mad stil og madfotografi - dummies

Når fødevaren alene ikke skaber Det drama eller den intrigue, du vil have i din fotografering med dekorative accenter - af farve, form eller tekstur - kan give dine billeder den ekstra effekt, du leder efter. Accenter er forbedringer af fødevarematerialet, og selvom de tjener formålet med at ophæve maden, er de ...

Valg af editor

Sådan finder du formatering i Word 2007 - dummies

Sådan finder du formatering i Word 2007 - dummies

Du kan bruge kommandoen Find til at skure dit Word 2007-dokument til formatering af oplysninger. Hvis du f.eks. Kun vil finde de forekomster af ordet, der ligger i fed skrift, kan du gøre det. Dette eksempel søger efter teksten gåseæg med en skriftstørrelse på 24 point i en ...

Hvordan man finder tekst i Word 2016 - dummies

Hvordan man finder tekst i Word 2016 - dummies

Ikke gider med båndet! For at finde tekst i dit Word 2016-dokument, tryk Ctrl + F, den mindeværdige tastaturgenvej til kommandoen Find. Du ser navigationsruden, svarende til hvad der vises her. Navigationsruden. Skriv den tekst, du vil lokalisere, i feltet Søg dokument. Når du skriver forekomster af teksten ...

Hvordan man finder stilarter i Word 2016 - dummies

Hvordan man finder stilarter i Word 2016 - dummies

Stilarter bor på Word 2016 Home-fanen navngivet Styles-gruppe, som vist her. Hvad du ser på båndet er Style Gallery, som kan udvides til en fuld menu med stilvalg. Hvor Word-stilarter lurer. Klik på dialogboksen launcher i det nederste højre hjørne af Styles-gruppen ...