|  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

    Vilka är några exempel på icke-Turing igenkännbara språk och hur skiljer de sig från Turing-språk?

    Okej, låt oss utforska området för icke-Turing-igenkännbara språk och hur de skiljer sig från turing-igenkännande (rekursivt faktiskt) och turing-avgörande (rekursiva) språk. Det är ett landskap av vad datorer * inte kan göra, och det är ganska intressant!

    Förstå landskapet först

    Innan vi dyker in i exempel, låt oss klargöra kategorierna:

    * turing-deciderbara (rekursiva) språk: Det här är språk för vilka en Turing -maskin kan * alltid * stoppa och korrekt svara på "Ja" (acceptera) om ingångssträngen finns på språket eller "nej" (avvisa) om ingångssträngen inte finns på språket. Turing -maskinen ger alltid ett definitivt svar.

    * turing-igenkännande (rekursivt faktiskt) språk: Dessa är språk för vilka en Turing -maskin kommer att stoppa och acceptera om ingångssträngen * är * på språket. Men om ingångssträngen är * inte * på språket, kan Turing -maskinen antingen stoppa och avvisa, eller så kan den gå för evigt (slinga). Nyckeln är att den * så småningom * säger "ja" för strängar på språket.

    * Icke-Turing Erkännande (icke-återkänsligt faktiskt) språk: Detta är språk för vilka * ingen * Turing -maskin kan till och med utformas för att på ett tillförlitligt sätt känna igen strängar på språket. Oavsett hur smart du är, kan du inte bygga en Turing -maskin som accepterar alla strängar på språket (och potentiellt stoppar när det inte är det). Komplementet av ett Turing-igenkännligt språk är icke-turing igenkännbart.

    Exempel på icke-Turing igenkännbara språk

    De vanligaste exemplen på icke-Turing igenkännbara språk involverar ofta komplement av välkända obeslutbara problem.

    1. Komplementet för stoppproblemet (¬halt):

    * Stoppproblemet (stopp): Detta är språket som innehåller alla Turing Machine -kodningar `⟨m, w⟩` där Turing Machine` m` stannar på ingångssträngen `w`. (Detta är Turing-igenkännande men * inte * turing-avkoppbart).

    * ¬halt: Detta är språket som innehåller alla Turing Machine -kodningar `⟨m, w⟩` där Turing Machine` m` gör * inte * på ingångssträngen `w`.

    * Varför är det icke-Turing igenkännbart: Om ¬halt var turing-igenkännande, skulle stopp vara turing-avgörande (vi kunde simulera "m" på "w" och om vår igenkänning för ¬halt accepterar, vet vi att "m" inte stoppar; om det avvisar, vet vi att "m" stannar). Men stopp är * bevisat * obeslutbart. Eftersom stoppet är Turing-igenkännande men inte turing-avkoppbart, måste dess komplement, ¬halt, vara icke-turing igenkännande. Om stopp var avgörande skulle både det och det är kompliment att vara igenkännligt.

    2. Komplementet för acceptansproblemet (¬a tm ):

    * Acceptansproblemet (A tm ): Detta är språket som innehåller alla Turing Machine -kodningar `⟨m, w⟩` där Turing Machine` m` accepterar inmatningssträng `w`. (Detta är Turing-igenkännande men inte turing-avkoppbart).

    * ¬a tm : Detta är språket som innehåller alla Turing Machine -kodningar `⟨m, w⟩` där Turing Machine` m` inte * accepterar ingångssträng `w`. `M` kan antingen avvisa eller slinga.

    * Varför är det icke-Turing igenkännbart: Liknande resonemang som med ¬halt. Om ¬a tm var turing-igenkännbara, sedan en tm skulle vara turing-avgörande och motsäga den kända obeslutbarheten hos en tm .

    3. Komplementet av tomhetsproblemet för Turing -maskiner (¬E tm ):

    * Tomhetsproblemet (E tm ): Detta är språket som innehåller alla Turing Machine -kodningar `⟨m⟩ 'där språket som erkänns av Turing Machine` m` är tom (dvs `l (m) =∅`). (Detta är * inte * Turing-igenkännande).

    * ¬E tm : Detta är språket som innehåller alla Turing Machine -kodningar `⟨m⟩ 'där språket som erkänns av Turing Machine` m` är * inte * tom (dvs `l (m) ≠ ∅`).

    * Varför det är Turing-igenkännbart: En Turing -maskin kan känna igen detta språk genom att simulera maskinen "m" på alla möjliga ingångar tills "m" accepterar.

    4. Språket för Turing -maskiner som inte stoppar på * någon * ingång:

    * Tänk på språket för Turing -maskiner som, när den startas på * någon * inmatningssträng, aldrig kommer att stoppa. Det finns ingen allmän algoritm för att bestämma detta.

    * Du kan försöka köra maskinen på många olika ingångar, men du kommer aldrig att vara säker på att den inte kommer att stoppa på någon annan, otestad ingång.

    Hur icke-Turing igenkännbara språk skiljer sig

    Den viktigaste skillnaden ligger i förmågan att skapa en Turing -maskin som * pålitligt * känner igen strängar på språket:

    * turing-decidabla: En Turing -maskin * ger alltid * ett korrekt svar ("ja" eller "nej") och stoppar.

    * turing-igenkännande: En Turing -maskin ger ett "ja" -svar om strängen är på språket, men kan slinga för alltid om strängen är * inte * på språket.

    * icke-Turing igenkännbart: * Ingen* Turing -maskin kan konstrueras för att till och med pålitligt känna igen strängar på språket. Varje Turing -maskin du försöker kommer antingen att acceptera några strängar som * inte * på språket, slinga för alltid på strängar som * är * på språket eller misslyckas på något annat grundläggande sätt.

    intuition

    Tänk på det så här:

    * Avgörbar: Du har ett perfekt pålitligt test som alltid ger dig rätt svar.

    * igenkänd: Du har ett test som * definitivt kommer att säga "ja" om det är rätt svar, men det kanske inte kan berätta om svaret är "nej."

    * icke-igenkännande: Du kan inte ens skapa ett test som pålitligt identifierar "ja" -fallen. Varje test du kommer med kommer att vara felaktiga och kan ge dig felaktiga resultat.

    Viktiga konsekvenser

    Förekomsten av icke-Turing igenkännbara språk har djupa konsekvenser för datavetenskap och matematik:

    * beräkningsgränser: Det visar att det finns inneboende begränsningar för vad datorer kan göra, oavsett hur kraftfulla de blir.

    * odecidability: Det belyser förekomsten av problem som i grunden är obeslutbara - det finns ingen algoritm som kan lösa dem i alla fall.

    * Bevisstekniker: Det kräver användning av sofistikerade bevistekniker (som diagonalisering och reduktioner) för att visa obeslutbarhet eller icke-igenkännande av vissa problem.

    Kort sagt definierar icke-Turing igenkännbara språk gränsen för vad som är grundläggande okomputerbart. De är en avgörande del av att förstå de teoretiska beräkningsgränserna.

    Tidigare:

    nästa:
    relaterade artiklar
    ·Vilken kod använder 7 bitars binär för att återge v…
    ·Hur man skapar ett Word Array i MIPS
    ·Hur du krypterar e-post i ColdFusion
    ·Information om flödesscheman
    ·Hur man gör en Program-menyn i TI - 83 Grundläggande …
    ·Hur man använder en listruta i ett Query
    ·Hur att offentliggöra med CPP
    ·Hur man uppgraderar PHP på iWeb
    ·Vad kallas det när din dator känner igen en karaktär…
    ·Hur Multiplicera en matris med en variabel i MATLAB
    Utvalda artiklarna
    ·Vilka är fördelarna med COM +
    ·Hur Upphör din VB Script
    ·Hur får Funktioner av ett objekt i Python
    ·Steg för att skapa ett verktygsfält i Visual Basic
    ·Typer av Horn klausuler i Prolog
    ·Vad är monteringsspråk och hur de använde i datorpro…
    ·Så här importerar Java Console
    ·Vad är ett Decimal String
    ·Hur konvertera en array i PHP
    ·Hur man bygger en elektronisk Timer
    Copyright © Dator Kunskap https://www.dator.xyz