» »

Paano gumawa ng isang turing machine. Ang mga pangunahing posisyon ng Turing machine. Ano ito

06.06.2021

Sabihin nating, isang mahabang panahon ang nakalipas ... at sa katunayan, ang mga makina ay nilikha bago lumilikha ng isang makina ng Turing. Halimbawa, kailangan mong kumuha ng logarithm, Nuk, at ipaalam sa isang makina na magbabasa ng numero at kunin ang logarithm. O kailangan mong sabihin, dalawang numero ang nakatiklop - narito ang makina para sa pagdaragdag ng dalawang numero. At ngayon may mga tulad ng mga kotse, halimbawa, calculators. Ano ang magagawa nila? Upang tiklop, ibawas, multiply, at engineering - kahit na kumuha ng isang cosine o sain. Ito ay lumiliko ang mga bobo na mga kotse, maliban sa mga naitala sa kanila ng mga pagkilos, hindi nila maaaring matupad at hindi.

Kaya magiging kawili-wili upang lumikha ng gayong kotse na hindi mababasa ang mga numero at hindi mga simbolo, kundi isang algorithm, at gagawa ito, ibig sabihin, upang lumikha ng isang programmable machine. Iyon ay kung saan tapos na ang Turing (sasabihin ko na bilang karagdagan sa tyurring tulad abstractions ng maraming). At imbento ang modelo ng naturang kotse. Ito ay naka-out na upang maisagawa ang mga kumplikadong algorithm kailangan lamang ng isang karwahe, isang walang katapusang tape, mahusay, ang kakayahan upang baguhin ang mga halaga na naitala sa tape at ilipat kasama ito. Ito ay lumiliko na ang abstraction na ito ay maaaring aktwal na maging isang tunay na kotse, ang isa lamang, na may paghihigpit, na hindi namin maaaring magbigay ng isang kotse na may isang walang katapusang laso, ngunit maaari naming gumawa ng isang mahabang laso;)

Retreat. Sa totoo lang, kung paano gumagana ang Turing machine, nagsasabi ng anumang bagay, tulad ng sinabi ko, maaari itong matagpuan napakadali. Samakatuwid, ipalagay namin na alam mo na kung paano ito gumagana.

Well, ang ilang mga simpleng algorithm ng Turing machine ay gumaganap, ito ay walang alinlangan. Ngunit paano ang tungkol sa kumplikado? At, halimbawa, kung paano ayusin ang isang cycle gamit ang MT? O kung paano malaman ang sumasanga? Ito ay lumiliko na may mga theorems na nagpapatunay na ang MT ay maaaring magsagawa ng mga siklo at sanga, na nagsasabi sa amin na ang paggamit ng isang napaka-simpleng mekanismo, maaari kang gumawa ng mga programa mula sa simpleng sangay at mga bloke ng cycle, at samakatuwid, maaari mong programa ang lahat ng bagay na maaaring programmed. At dito, sa teorya, dapat magkaroon ng isang piraso ng pagpapaliwanag na mayroon ding mga di-gobyerno na pag-andar, at samakatuwid, hindi matutunaw na mga gawain, at ang mga gawaing ito ay hindi malulutas gamit ang MT. Iyan ay kung paano.

Ngunit walang imbento ng anumang bagay na may isang palamigan ng Turing machine, kaya ang lahat ng mga programming language na ginagamit namin ngayon ay maaaring programa hindi hihigit sa Turing machine. Mula dito nagkaroon ng isang konsepto ng pagkakumpleto sa kahabaan ng Turing, na nangangahulugan na ang wika (o iba pa) ay puno ng Turing sa kaganapan na maaari mong isulat ang lahat ng mga algorithm sa Turing machine. At upang patunayan na ang wika ay kumpleto sa pamamagitan ng Turing, sa pamamagitan ng pagsulat ng isang emulator ng Turing machine dito. Ito ang mga pie.

Mula sa pananaw ng matematika, ang post-Fuflo, ngunit ito ay malinaw, para sa Nafig, kailangan namin ng isang Turing machine. Well, aktwal na magsulat ng mga algorithm para sa kotse na ito - isang kawili-wiling puzzle. Naniniwala ako sa mga nagsasabi na pagkatapos ng programming exp (x) sa kotse ng Turing, talagang naintindihan niya kung ano ang isang algorithm. Hindi ko sinubukan, ngunit ito ay isang kagiliw-giliw na gawain.

Turing machine (MT) - Abstract performer (abstract computing). Ipinanukala ito ni Alan Turing noong 1936 upang gawing pormal ang konsepto ng algorithm.

Ang Turing machine ay ang pagpapalawak ng isang may wakas na automaton at, ayon sa tesis ng simbahan - Turing, magagawang tularan ang lahat ng performers (Gamit ang gawain ng mga panuntunan sa paglipat), sa anumang paraan na ipapatupad ang proseso ng pagkalkula ng step-by-step, kung saan ang bawat hakbang ng pagkalkula ay sapat na elemento.

Iyon ay, ang bawat intuitive algorithm ay maaaring ipatupad gamit ang ilang Turing machine.

Encyclopedic Youtube.

    1 / 5

    ✪ 09 - Panimula sa mga algorithm. Turing machine.

    ✪ Turing machine - Alexander Shen.

    ✪ Lecture 20: Turing Machine.

    ✪ Turing machine. Halimbawa ng trabaho

    ✪ 16 - computability. Turing machine. Pagganyak at mga halimbawa

    Subtitle

Aparato ng makina ng Turing

Kasama sa komposisyon ng Turing Machine ang walang limitasyong sa parehong direksyon tape (Posibleng machine ng Turing, na may ilang walang katapusang mga tape), nahahati sa mga cell, at pamamahala ng device (tinatawag din pagsusulat ng ulo (Gzch.)), kaya ng pagiging isa sa maraming mga estado. Ang bilang ng mga posibleng estado ng kontrol ng aparato ay tinukoy.

Ang aparato ng kontrol ay maaaring lumipat sa kaliwa at kanan sa laso, basahin at i-record ang mga character ng ilang mga may hangganan alpabeto sa cell. Inihalal na espesyal walang laman Ang simbolo ay pumupuno sa lahat ng mga cell ng tape, maliban sa mga ito (pangwakas na mga numero) kung saan ang data ng input ay naitala.

Gumagana ang kontrol ng aparato ayon kay mga panuntunan para sa paglipatna kumakatawan sa algorithm ipinatupad Ang makina ng Turing. Ang bawat tuntunin ng paglipat ay nagrereseta ng isang makina, depende sa kasalukuyang estado at ang simbolo na sinusunod sa kasalukuyang cell, sumulat ng isang bagong simbolo sa cell na ito, pumunta sa isang bagong estado at lumipat sa isang cell sa kaliwa o kanan. Ang ilang mga estado ng Turing machine ay maaaring may label na terminal, at ang paglipat sa alinman sa kanila ay nangangahulugan ng pagtatapos ng trabaho, itigil ang algorithm.

Turing machine na tinatawag na deterministic.Kung ang bawat kumbinasyon ng katayuan at ang simbolo ng laso sa mesa ay tumutugma sa hindi hihigit sa isang panuntunan. Kung mayroong isang pares ng "simbolo ng laso - kondisyon" kung saan mayroong 2 o higit pang mga utos, ang naturang turing machine ay tinatawag na di-deterministic.

Paglalarawan ng makina ng Turing

Ang partikular na makina ng Turing ay itinakda ng pagbilang ng mga elemento ng hanay ng alpabeto alpabeto, ang hanay ng mga estado Q at ang hanay ng mga patakaran kung saan gumagana ang makina. Mayroon silang form: Qiaj → Q I1 isang J1 DK (kung ang ulo ay nasa isang estado Qi, at ang AJ sulat ay naitala sa exserved cell, ang ulo napupunta sa Q I1 estado, sa cell sa halip ng AJ naitala a J1, ang ulo ay gumagawa ng kilusan ng DK, na may tatlong mga pagpipilian: sa cell na natitira (L), sa cell right (R), mananatili sa lugar (n)). Para sa bawat posibleng pagsasaayos Mayroong eksaktong isang panuntunan (para sa isang di-deterministikong Turing machine maaaring may mas malaking bilang ng mga patakaran). Ang mga patakaran ay hindi lamang para sa huling estado, paghagupit kung saan, ang kotse ay hihinto. Bilang karagdagan, dapat mong tukuyin ang pangwakas at paunang estado, ang unang pagsasaayos sa laso at ang lokasyon ng makina ng makina.

Isang halimbawa ng isang tyurring machine

Nagbibigay kami ng isang halimbawa ng MT upang i-multiply ang mga numero sa unary number system. Pag-record ng "Qiaj → Q I1 A J1 R / L / N" Ang mga panuntunan ay dapat na maunawaan: Qi - ang estado kung saan ang panuntunang ito ay pinaandar, AJ - ang data sa cell kung saan ang ulo ay matatagpuan, Q I1 ay ang estado sa Na kailangan mong pumunta, isang J1 - kung ano ang kailangan mong isulat sa cell, R / L / N ay isang utos para sa paglipat.

Gumagana ang makina sa mga sumusunod na hanay ng mga patakaran:

q 0. q 1. q 2. q 3. q 4. q 5. q 6. q 7. q 8.
1 q 0 1 → Q 0 1R. q 1 1 → Q 2 AR. q 2 1 → Q 2 1l. q 3 1 → Q 4 AR. q 4 1 → Q 4 1R. q 7 1 → Q 2 AR.
× q 0 × → Q 1 × R. q 2 × → Q 3 × L. q 4 × → Q 4 × R. q 6 × → Q 7 × R. q 8 × → Q 9 × N.
= q 2 \u003d → Q 2 \u003d L. q 4 \u003d → Q 4 \u003d R. q 7 \u003d → Q 8 \u003d L.
a. q 2 A → Q 2 Al. q 3 A → Q 3 Al. q 4 A → Q 4 AR. q 6 A → Q 6 1R. q 7 A → Q 7 AR. q 8 A → Q 8 1L.
* q 0 * → q 0 * R. q 3 * → Q 6 * R. q 4 * → Q 5 1R.
q 5 → Q 2 * L.

Paglalarawan ng Katayuan:

Magsimula
q 0. pangunahing estado. Naghahanap kami ng "X" sa kanan. Kapag naghanap ng Q1.
q 1. pinalitan namin ang "1" sa "A" at pumunta sa Q2 State
Ilipat ang lahat ng "1" mula sa unang numero sa resulta
q 2. naghahanap kami ng "X" sa kaliwa. Kapag naghanap ng Q3.
q 3. hinahanap namin ang "1" sa kaliwa, palitan ito ng "A" at pumunta sa Q4 State.

Sa kaso ng "1" natapos, nakita namin ang "*" at pumunta sa Q6 estado

q 4. pumunta sa dulo (naghahanap ng "*" sa kanan), palitan ang "*" sa "1" at pumunta sa Q5 State
q 5. idagdag "*" hanggang sa dulo at pumunta sa Q2 State
Ipagpatuloy namin ang bawat kategorya ng pangalawang numero
q 6. hinahanap namin ang "X" sa kanan at pumunta sa Q7 estado. Habang hinahanap namin ang "A" sa "1"
q 7. hinahanap namin ang "1" o "\u003d" tama

kapag nakita mo ang "1" pinalitan namin ito ng "A" at pumunta sa Q2 State

kapag "\u003d" pumunta sa Q8 estado

wakas
q 8. naghahanap kami ng "X" sa kaliwa. Kung nakita mo ito pumunta sa Q9 estado. Habang hinahanap namin ang "A" sa "1"
q 9. terminal state (stop algorithm)

Multiply sa MT 3 hanggang 2 sa isang solong sistema. Ang protocol ay naglalaman ng paunang at pangwakas na estado ng MT, ang unang pagsasaayos sa tape at lokasyon ng makina (salungguhit na simbolo).

Magsimula. Kami ay nasa isang estado Q 0, ang data ay ipinasok sa kotse: * 111x11 \u003d *, ang ulo ng makina ay matatagpuan sa unang simbolo *.

1st step. Tinitingnan namin ang talahanayan ng mga patakaran na gagawin ng makina, sa isang estado q 0 at sa itaas ng simbolo "*". Ang panuntunang ito mula sa ika-1 na hanay ng ika-5 na hilera - q 0 * → q 0 * R. Nangangahulugan ito na pumunta kami sa Q 0 estado (iyon ay, hindi namin binabago ito), ang simbolo ay magiging "*" (iyon ay, hindi ito magbabago) at lumipat sa pamamagitan ng teksto "* 111x11 \u003d *" sa Karapatan sa isang posisyon (R), mayroong isang 1st simbolo 1. Sa pagliko, ang estado Q 0 1 (1st column 1st line) ay naproseso ng panuntunan q 0 1 → Q 0 1r. Iyon ay, ito ay nangyayari muli ang paglipat sa karapatan sa 1 posisyon. Nangyayari ito hanggang sa maging simbolo "X". At iba pa: kunin ang kondisyon (index sa Q), kumuha ng simbolo kung saan kami tumayo (salungguhit na simbolo), ikonekta ang mga ito at makita ang pagproseso ng kumbinasyon na nakuha sa talahanayan ng mga patakaran.

Ang mga simpleng salita, ang algorithm ng multiplikasyon ay ang mga sumusunod: Markahan namin ang 1st unit ng 2nd factor, pinalitan ito ng titik na "A", at ilipat ang buong 1st multiplier para sa tanda ng pagkakapantay-pantay. Ang paglipat ay isinasagawa ng isa sa unang kapalit ng mga yunit ng 1st factor sa "A" at pagdaragdag ng parehong bilang ng mga yunit sa dulo ng linya (sa kaliwa ng matinding karapatan "*"). Pagkatapos ay baguhin ang lahat ng "A" sa pag-sign ng multiplikasyon na "X" pabalik sa mga yunit. At ang cycle ay paulit-ulit. Sa katunayan, dahil ang isang multiply sa in ay maaaring kinakatawan bilang isang + A + at minsan. Namin na ngayon ang 2nd unit ng 2nd factor ng titik na "A" at ilipat muli ang mga yunit. Kapag ang pag-sign "\u003d" ay hindi nagiging mga yunit - nangangahulugan ito na ang pagpaparami ay nakumpleto.

Kapunuan sa tiaring.

Maaari itong sabihin na ang Turing machine ay ang pinakasimpleng computing machine na may isang linear memory, na, ayon sa pormal na panuntunan, nag-convert ng data ng input gamit ang pagkakasunud-sunod elementary Action..

Ang elementalidad ng mga aksyon ay ang pagkilos ay nagbabago lamang ng isang maliit na piraso ng data sa memorya (sa kaso ng isang Turing machine - isang cell lamang), at ang bilang ng mga posibleng pagkilos ng kurso. Sa kabila ng pagiging simple ng Turing machine, maaari itong kalkulahin sa lahat ng bagay na maaaring kalkulahin sa anumang iba pang makina na nagdadala ng pagkakasunud-sunod ng mga pagkilos ng elementarya. Ang ari-arian na ito ay tinatawag na. kapunuan.

Isa sa mga likas na paraan ng katibayan na ang mga algorithm ng pagkalkula na maaaring ipatupad sa isang makina ay maaaring ipatupad sa kabilang banda, ay ang imitasyon ng unang kotse sa pangalawa.

Ang imitasyon ay ang mga sumusunod. Naghahain ang input ng ikalawang makina ng paglalarawan ng programa (mga patakaran ng trabaho) ng unang kotse D (\\ displayStyle d) at data ng pag-input X (\\ displayStyle x)Na kailangang pumunta sa pasukan ng unang kotse. Ito ay kinakailangan upang ilarawan ang tulad ng isang programa (ang mga patakaran ng pagpapatakbo ng ikalawang machine) upang bilang isang resulta ng mga kalkulasyon sa output, ang parehong bagay ay ibabalik sa unang kotse kung ito ay nakatanggap ng data X (\\ displayStyle x).

Tulad ng sinabi, sa Turing machine maaari mong gayahin (gamit ang gawain ng mga patakaran sa paglipat) Lahat ng iba pang mga performers, sa anumang paraan na pagpapatupad ng proseso ng step-by-step na pagkalkula, kung saan ang bawat hakbang ng pagkalkula ay sapat na elemento.

Sa Turing machine, maaari mong gayahin ang post machine, normal na mga algorithm ng Markov at anumang programa para sa mga ordinaryong computer, pag-convert ng data ng input sa katapusan ng linggo ng anumang algorithm. Sa turn, sa iba't ibang abstract performers, maaari mong gayahin ang isang turing machine. Ang mga performer para sa kanino posible ay tinatawag na. buong sa Turing. (Kumpleto ang Turing).

May mga programa para sa mga ordinaryong computer na tumutugma sa pagpapatakbo ng Turing machine. Ngunit ito ay dapat na nabanggit na ang imitasyon na ito ay hindi kumpleto, tulad ng sa Turing machine mayroong isang abstract walang katapusang tape. Ang walang katapusang tape na may data ay hindi maaaring ganap na imitated sa isang computer na may ultimate memory (ang kabuuang memorya ng computer - RAM, hard drive, iba't ibang mga panlabas na carrier ng data, registers at cache ng processor, atbp. - Maaaring maging napakalaking, ngunit, gayunpaman, palaging sa wakas).

Mga variant ng makina ng Turing

Ang modelo ng Turing machine ay nagbibigay-daan sa pagpapalawak. Maaari mong isaalang-alang ang mga machine ng Turing na may di-makatwirang bilang ng mga ribbons at maraming mga ribbons na may iba't ibang mga paghihigpit. Gayunpaman, ang lahat ng mga machine na ito ay kumpleto sa pamamagitan ng Turing at simulate ng isang maginoo Turing machine.

Turing machine na nagtatrabaho sa semi-infinite ribbon.

Bilang halimbawa, isinasaalang-alang namin ang impormasyong ito sa sumusunod na teorama: Para sa anumang Turing Machine mayroong isang katumbas na makina ng Turing na tumatakbo sa isang semi-walang-katapusang tape (iyon ay, sa isang tape, walang katapusang isang paraan).

Isaalang-alang ang katibayan na ibinigay ni Yu. G. KARPOV sa aklat na "Awtomatikong Teorya" na aklat. Ang patunay ng teorama na ito ay nakakatulong, iyon ay, magbibigay kami ng isang algorithm kung saan ang isang katumbas na makina ng Turing na may inihayag na ari-arian ay maaaring itayo para sa anumang Turing machine. Una, arbitrarily natamo ang mga cell ng nagtatrabaho tape MT, iyon ay, tinutukoy namin ang isang bagong lokasyon ng impormasyon sa tape:

Pagkatapos ay dalhin namin ang mga cell, at ipalagay namin na ang simbolo na "*" ay hindi nakapaloob sa diksyunaryo ng MT:

Sa wakas, babaguhin natin ang Turing machine sa pamamagitan ng pag-doubing ng bilang ng mga estado nito, at baguhin ang paglilipat ng read-write head upang ang isang grupo ng mga estado ang gawain ng makina ay katumbas ng trabaho nito sa may kulay na zone, at Sa ibang grupo ng mga estado, ang makina ay gagana habang gumagana ang pinagmulan ng makina sa maruming zone. Kung ang simbolo ng "*" ay magkikita kapag nagtatrabaho ng MT, nangangahulugan ito na ang read-write head ay umabot sa mga hangganan ng zone:

Ang unang estado ng bagong Turing machine ay naka-install sa isa o ibang zone depende sa kung aling bahagi ng source ribbon ay ang read-write head sa orihinal na configuration. Ito ay malinaw na sa kaliwa ng mga limitasyon ng mga marker "*" ang tape sa katumbas na makina ng Turing ay hindi ginagamit.

Dalawang-dimensional machine ng Turing.

  • Ant Langton ant.

Tingnan din

  • Ang JFLAP cross-platform machine machine guns, Turing machine, grammatics ay nakakakuha ng graph ng makina

Hanggang ngayon, maginhawang tinutukoy namin ang karanasan sa programmer, nagsasalita ng mga algorithm, programa, interpreter, step-by-step na katuparan, atbp. Pinapayagan ito sa amin na huwag pansinin ang mga detalye ng pagtatayo ng ilang mga algorithm sa ilalim ng pagkukunwari na ang mambabasa ay madaling ibalik ang mga ito (o hindi bababa sa hindi pa rin magiging anumang mambabasa sa kanyang buhay ang sumulat ng isang Pascal Interpreter sa Pascal).

Ngunit sa ilang mga kaso ito ay hindi sapat. Hayaan, halimbawa, gusto naming patunayan ang algorithmic kawalan ng katapatan ng ilang mga gawain, sa kahulugan ng kung saan walang sinasabi tungkol sa mga programa (sa seksyon na ito, halimbawa, kami ay patunayan ang pagkabilanggo ng mga problema ng pagkakapantay-pantay ng mga salita sa semigroups na tinukoy ng pagbabalangkas at ratios). Karaniwang ginagawa ito. Ipinakikita namin na ang paghinto ng problema ay nabawasan sa gawaing ito. Upang gawin ito, gayahin namin ang gawain ng isang arbitrary na algorithm sa mga tuntunin ng problema sa pagsasaalang-alang (na nangangahulugang makikita ito mula sa halimbawa sa ibaba). Sa kasong ito, mahalaga para sa amin na ang kahulugan ng algorithm ay kasing simple hangga't maaari.

Kaya, ang aming plano ay. Inilalarawan namin ang isang medyo tinukoy na klase ng mga machine (maaari itong mapili nang iba, gagamitin namin ang tinatawag na Turing machine), pagkatapos ay ipahayag na ang anumang computable function ay maaaring kalkulahin sa tulad ng isang makina, at pagkatapos ay ipakita na ang tanong ng pagtigil sa Ang Turing machine ay maaaring mabawasan sa tanong ng pagkakapantay-pantay ng mga salita sa semigroup.

Ang isa pang dahilan kung bakit ang mga simpleng modelo ng computing ay mahalaga (ang mga naturang modelo ay may maraming iba't ibang uri ng Turing machine, address machine, atbp.), Ay nauugnay sa teorya ng computting complexity kapag nagsimulang maging interesado kami. lead time. mga programa. Ngunit ang tanong na ito ay lampas sa klasikal na teorya ng mga algorithm.

Turing machine: kahulugan.

Turing machine. ay walang katapusang sa magkabilang panig lentu., nahahati sa mga parisukat ( mga cell). Sa bawat cell, ang ilang simbolo ng naayos (para sa makina na ito) ng huling hanay, na tinatawag na huling hanay, ay maitatala. alpabeto Ang kotse na ito. Ang isa sa mga simbolo ng alpabeto ay naka-highlight at tinatawag na "espasyo" na ipinapalagay na ang buong tape ay walang laman, iyon ay, puno ng mga puwang.

Maaaring baguhin ng Turing machine ang mga nilalaman ng tape gamit ang isang espesyal na pagbabasa at pagsulat mga ulona gumagalaw kasama ang tape. Sa bawat sandali ang ulo ay nasa isa sa mga selula. Ang Turing machine ay nakakakuha ng impormasyon mula sa ulo tungkol sa kung aling simbolo ang nakikita, at depende sa ito (at mula sa panloob na estado) ay nagpasiya kung ano ang gagawin, iyon ay, kung ano ang simbolo ay isulat sa kasalukuyang cell at kung saan lumipat pagkatapos nito (kaliwa , tama o manatili sa lugar). Binabago din nito ang panloob na estado ng makina (ipinapalagay namin na ang kotse ay hindi binibilang ang tape ay ang huling memorya, iyon ay, isang may hangganan na bilang ng mga panloob na estado). Kailangan mo pa ring sumang-ayon, kung saan tayo nagsisimula at kapag natapos na natin ang trabaho.

Kaya, upang itakda ang Turing machine, dapat mong tukuyin ang mga sumusunod na bagay:

Ang talahanayan ng paglipat ay nakaayos tulad ng sumusunod: Ang Troika ay ipinahiwatig para sa bawat pares. Dito, ang shift ay isa sa mga numero -1 (kaliwa), 0 (sa lugar) at 1 (kanan). Kaya, ang talahanayan ng paglipat ay isang function ng uri ng s x a -\u003e s x isang x (-1,0,1), na tinukoy sa mga pares kung saan ang estado ay hindi pangwakas.

Ito ay nananatiling upang ilarawan ang pag-uugali ng Turing machine. Sa bawat sandali ay may ilan configuration.Ang natitiklop sa mga nilalaman ng tape (pormal na pagsasalita, ang mga nilalaman ng tape ay may arbitrary display z -\u003e a), ang kasalukuyang posisyon ng ulo (ilang integer) at ang kasalukuyang estado ng makina (elemento ng). Ang configuration conversion sa susunod ay nangyayari ayon sa mga likas na panuntunan: Tinitingnan namin ang mesa na kailangan mong gawin para sa estado na ito at para sa simbolo na ito, iyon ay, nalaman namin ang bagong estado ng makina, baguhin ang simbolo sa tinukoy at Pagkatapos ay ilipat namin ang ulo sa kaliwa, kanan o umalis sa lugar. Kasabay nito, kung ang isang bagong kondisyon ay isa sa mga pangwakas, ang pagpapatakbo ng makina ay nagtatapos. Nananatili itong makipag-ayos kung paano namin isumite ang impormasyon sa input ng makina at kung ano ang itinuturing na resulta ng trabaho nito. Ipinapalagay namin na ang alpabeto ng makina, bilang karagdagan sa espasyo, ay naglalaman ng mga character 0 at 1 (at din, marahil ilang iba pang mga character). Ang pasukan at pag-access ng makina ay ang huling pagkakasunud-sunod ng mga zero at mga yunit (mga binary na salita). Ang input word ay nakasulat sa isang walang laman na tape, ang ulo ng makina ay inilagay sa unang cell nito, ang makina ay hinihimok sa unang estado at nagsisimula. Kung ang makina ay hihinto, ang resulta ay ang binary na salita, na maaaring basahin, simula sa posisyon ng ulo at lumipat sa kanan (hanggang sa isang simbolo ay naiiba mula 0 at 1).

Kaya, ang anumang Turing machine ay nagtatakda ng ilang bahagyang pag-andar sa binary na mga salita. Ang lahat ng naturang mga function ay natural na tawag maaaring i-compute sa machine ng Turing..

Turing machine: Talakayan

Siyempre, ang aming kahulugan ay naglalaman ng maraming partikular na detalye na maaaring mabago. Halimbawa, ang tape ay maaaring walang katapusan lamang ng isang paraan. Maaari mong ibigay ang makina ng dalawang tape. Maaari naming ipalagay na ang makina ay maaaring magsulat ng isang bagong simbolo, o ilipat, ngunit hindi magkasama. Maaari mong limitahan ang alpabeto, isinasaalang-alang, sabihin na dapat itong magkaroon ng eksaktong 10 character. Maaari mong hingin na sa dulo ng ribbon walang anuman, bilang karagdagan sa resulta ng trabaho (ang natitirang mga cell ay dapat walang laman). Ang lahat ng nakalista at maraming iba pang mga pagbabago ay hindi nagbabago sa klase ng computing sa mga machine ng Turing function. Siyempre, mayroon ding mga hindi sopistikadong pagbabago. Halimbawa, kung ipinagbabawal mo ang kotse upang lumipat sa kaliwa, ito ay radikal na baguhin ang kaso sa mga merito ng tape ay magiging walang silbi, dahil hindi ito posible na bumalik sa mga lumang talaan.

Paano maunawaan kung anong mga pagbabago ang hindi nakakapinsala, at hindi? Tila, may ilang karanasan sa praktikal na programming sa mga machine ng Turing, hindi bababa sa maliit. Pagkatapos nito, maaari mo na isipin ang mga posibilidad ng makina, nang walang ganap na pagsulat ng mga programa, ngunit ginagabayan lamang ng isang tinatayang paglalarawan. Bilang isang halimbawa, inilalarawan namin ang makina na doble ang input word (gumagawa ng salitang XX, kung ang word x ay input).

Kung nakikita ng makina ang puwang (ang input word ay walang laman), ito ay nagtatrabaho. Kung hindi, naaalala nito ang kasalukuyang simbolo at inilalagay ang marka (sa alpabeto bilang karagdagan sa mga character 0 at 1 magkakaroon ng mas maraming "minarkahang mga pagpipilian" at). Pagkatapos ay gumagalaw siya sa karapatang mawalan ng laman, pagkatapos ay nagsusulat siya ng isang kopya ng nakaimbak na simbolo doon. Pagkatapos ay gumagalaw siya sa kaliwa sa marka; Nasira sa marka, umalis pabalik at naaalala ang sumusunod na simbolo at iba pa hanggang sa ito ay nag-cops ng salita.

Ang pagkakaroon ng ilang mga karanasan, maaari mong makita ang lahat ng mga parirala upang makita kongkreto piraso ng programa para sa Turing machine. Halimbawa, ang mga salitang "Naaalaala ang simbolo at gumagalaw sa kanan" ay nangangahulugan na mayroong dalawang grupo ng mga estado, isa para sa isang sitwasyon kung saan ang zero ay naka-imbak, ang isa kapag ang yunit ay naalala, at sa loob ng bawat grupo, ang kilusan sa Ang karapatan sa unang walang laman na cell ay na-program.

Ang pagkakaroon ng kaunti pang karanasan, maaari itong maunawaan na sa paglalarawan na ito ay may isang error ay hindi nagbibigay ng isang stop mekanismo kapag ang lahat ng mga salita ay kinopya, dahil ang mga kopya ng mga character ay hindi naiiba mula sa mga simbolo ng pinagmulan ng salita. Ito ay malinaw at kung paano maaaring maitama ang error bilang mga kopya upang magsulat ng mga espesyal na character at, at sa huling yugto, ang lahat ng mga marka ay aalisin.

77 . Ipakita na ang "apela" function na lumiliko ang salita pabalik nang maaga, kalkulahin sa Turing machine.

Isa pang halimbawa ng impormal na pangangatwiran: Ipaliwanag kung bakit hindi ka maaaring gumamit ng karagdagang mga character, maliban sa 0, 1 at isang walang laman na simbolo. Magkaroon ng isang kotse na may malaking alpabeto mula sa mga character. Magtatayo kami ng isang bagong kotse na gayahin ang gawain ng lumang, ngunit ang bloke ng K cell ay tumutugma sa bawat cell ng lumang cell. Ang laki ng bloke (numero K) ay maayos upang ang loob ng yunit ay maaaring naka-encode sa mga zero at yunit ng lahat ng mga simbolo ng malaking alpabeto. Ang unang mga simbolo 0, 1 at walang laman ay i-encode bilang 0, na sinusundan ng (K-1) ng walang laman na mga character, 1, na sinusundan ng (K-1) na walang laman na mga character, at isang grupo ng mga walang laman na character. Upang magsimula, ito ay kinakailangan upang itulak ang mga titik ng input salita sa distansya K, na maaaring gawin nang walang karagdagang mga character (na umaabot sa matinding mga titik, ilipat ito, pagkatapos ay maabot ang susunod, ilipat ito at lubos at iba pa); Kinakailangan lamang upang maunawaan na maaari mong tukuyin ang dulo ng salita bilang isang posisyon sa likod kung saan higit pa k walang laman na mga character. Maliwanag na sa prosesong ito dapat nating panatilihin ang ilang pangwakas na impormasyon sa memorya, kaya posible. Pagkatapos nito, maaari mong gayahin ang operasyon ng source machine kasama ang mga hakbang, at para dito, masyadong, isang patunay na ultimate memory (E ng isang may hangganan na bilang ng mga estado), dahil mahalaga lang kami sa amin lamang ng isang maliit na kapitbahayan ng ulo ng simulated machine. Sa wakas, ito ay kinakailangan upang i-compress ang resulta pabalik.

Sa konklusyon, ipinakikita namin ang argumento na ipinangako sa itaas sa pabor sa katotohanan na ang anumang pag-andar ng pag-compute ay kinakalkula sa Turing machine. Magkaroon ng isang function na maaaring kalkulahin ng isang tao. Kasabay nito, natural, dapat gumamit ng lapis at papel, dahil bilang ng impormasyonna maaari niyang iimbak "sa isip" ay limitado. Ipagpalagay natin na nagsusulat siya sa magkakahiwalay na papel. Bilang karagdagan sa kasalukuyang sheet, mayroong isang stack ng mga papel sa kanan at isang stack ng kaliwa; Sa alinman sa mga ito, maaari mong ilagay ang kasalukuyang sheet sa pamamagitan ng pagkumpleto nito dito, at mula sa isa pang stack gawin ang mga sumusunod. Ang isang tao ay may lapis at pambura. Dahil ang napakaliit na mga titik ay hindi nakikita, ang bilang ay malinaw na maliwanag na mga estado ng sheet ng kurso, at maaari naming ipalagay na ang isang titik mula sa ilang mga may hangganan (bagaman napakalaki) alpabeto ay naitala sa sheet. Ang tao ay mayroon ding tunay na memorya, kaya ang kanyang kalagayan ay ang elemento ng ilang mga may hangganan na hanay. Kasabay nito, posible na gumawa ng ilang mesa kung saan ito ay nakasulat kaysa sa trabaho nito sa isang sheet na may nilalamang ito, na nagsimula sa estado na ito (na kung saan ay nasa sheet, sa kung anong estado ang magiging tao at mula sa kung anong pakete Ang susunod na sheet ay dadalhin). Maliwanag na ang mga aksyon ng isang tao ay tumutugma lamang sa gawain ng Turing machine na may malaking (ngunit may hangganan) alpabeto at isang malaking (ngunit may hangganan) bilang ng mga panloob na estado.

1. Paglalarawan ng Turing machine. 3.

1.1 Mga katangian ng Turing Machine bilang isang algorithm. lima

2. Ang pagiging kumplikado ng mga algorithm. 7.

2.1 Pagkumpleto ng mga problema .. 9.

3. Turing machine at algorithmically abtractable problema .. 12.

Konklusyon. labing-anim

Mga sanggunian .. 18.

Panimula

Ang Turing Machine ay isang napaka-simpleng computing device. Ito ay binubuo ng isang walang katapusang luntiang haba, nahahati sa mga selula, at mga ulo na lumilipat sa kahabaan ng laso at maaaring magbasa at magtala ng mga character. Gayundin, ang Turing machine ay may tulad na katangian bilang isang estado na maaaring ipahayag bilang isang integer mula sa zero hanggang sa ilang pinakamataas na halaga. Depende sa estado, ang Turing machine ay maaaring magsagawa ng isa sa tatlong pagkilos: magsulat ng simbolo sa isang cell, lumipat sa isang cell sa kanan o kaliwa at i-install ang panloob na estado.

Ang aparato ng Turing Machine ay sobrang simple, ngunit maaari itong maisagawa halos anumang programa dito. Upang matupad ang lahat ng mga pagkilos na ito, isang espesyal na talaan ng mga patakaran ang ibinigay, kung saan ito ay nakasulat na kailangan mong gawin sa iba't ibang mga kumbinasyon ng mga kasalukuyang estado at mga simbolo na nabasa mula sa tape.

Noong 1947, pinalawak ni Alan Turying ang kahulugan sa pamamagitan ng paglalarawan ng "Universal Turing Machine". Mamaya, upang malutas ang ilang mga klase ng mga gawain, ang iba't-ibang nito ay ipinakilala, na pinapayagan hindi isang gawain, at ilang.

1. Turing machine paglalarawan

Ang background ng paglikha ng gawaing ito ay nauugnay sa mga salita ni David Hilbert sa International Mathematical Congress sa Paris noong 1900 ng mga hindi nalutas na problema sa matematika. Ang isa sa mga ito ay ang gawain ng katibayan ng pagkakapare-pareho ng sistema sa pamamagitan ng Axiom ng ordinaryong aritmetika, na tinukoy ni Hilbert bilang isang "problema sa solvability" - paghahanap ng isang pangkalahatang paraan upang matukoy ang pagiging posible ng pahayag na ito sa wika ng pormal na lohika.

Ang artikulo ni Turing ay isang tugon lamang sa problemang ito - ang pangalawang problema ni Hilbert ay naging buo. Ngunit ang halaga ng artikulo ng Turing ay napunta sa kabila ng saklaw na kung saan ito ay isinulat kung saan ito ay isinulat.

Ipinakikita namin ang mga katangian ng gawaing ito na kabilang sa John Hopcroft: "Paggawa sa problema ni Hilbert, Turing ay upang magbigay ng isang malinaw na kahulugan ng konsepto ng paraan. Stripping mula sa intuitive ideya ng paraan bilang isang algorithm, ibig sabihin Pamamaraan na maaaring maisagawa nang wala sa loob, walang creative intervention ipinakita niya kung paano ang ideya na ito ay maaaring katawanin sa anyo ng isang detalyadong modelo ng proseso ng computing. Ang nakuha na modelo ng mga kalkulasyon kung saan ang bawat algorithm ay nahahati sa isang pagkakasunud-sunod ng simple, elementarya, at isang lohikal na disenyo, na tinatawag na Turing sa dakong huli. "

Ang Turing Machine ay isang extension ng isang modelo ng isang may wakas na automat, isang extension na kinabibilangan ng potensyal na walang katapusan na memorya na may posibilidad ng paglipat (kilusan) mula sa kasalukuyang napapansin na mga selula sa kaliwa o kanang kapitbahay.

Sa pormal, ang Turing machine ay maaaring inilarawan bilang mga sumusunod. Hayaan silang tatanungin:

ang huling hanay ng mga estado - Q, kung saan ang Turing machine ay maaaring;

final set ng tape character - r;

ang pag-andar δ (paglipat o pag-andar ng programa), na tinukoy ng pagpapakita ng isang pares mula sa cartocle ng produkto q xg (ang makina ay nasa isang estado qi at tinatanaw ang simbolo ng GI) sa tuktok ng decartian ng produkto Q x k (l, r) (ang makina napupunta sa estado ng qi, pumapalit sa simbolo ng GI sa simbolo ng GJ at gumagalaw sa kaliwa o kanan sa isang simbolo ng laso) - q x g -\u003e q x x (l, r)

isang character mula sa g -\u003e e (walang laman);

ang subset σ є g - -\u003e ay tinukoy bilang isang subset ng mga simbolo ng input ng tape, at e (r - σ);

ang isa sa mga estado ay Q0 Q ay ang unang estado ng makina.

Ang nalutas na problema ay tinukoy sa pamamagitan ng pagtatala ng huling bilang ng mga character mula sa set σ g - Si є σ sa tape:

es1S2S3S4 ... ... ... SNE.

pagkatapos nito, ang makina ay isinalin sa paunang estado at ang ulo ay naka-install sa pinakamaliit na di-walang laman na simbolo (Q0, W) -, pagkatapos nito, alinsunod sa tinukoy na function ng paglipat (Qi, SI) -\u003e (QJ, Sk, l o r), nagsisimula ang makina upang palitan ang mga simbolo ng pangkalahatang-ideya, ilipat ang ulo sa kanan o kaliwa at lumipat sa iba pang mga estado na iniresetang mga function ng paglipat.

Ang paghinto ng makina ay nangyayari sa kaganapan na para sa isang pares (qi, si) ang paglilipat ng function ay hindi tinukoy.

Iminungkahi ni Alan Turing na ang anumang algorithm sa intuitive na kahulugan ng salitang ito ay maaaring kinakatawan ng isang katumbas na kotse ng Turing. Ang palagay na ito ay kilala bilang ang sanaysay ng Chercha-Turing. Maaaring gayahin ng bawat computer ang isang Turing machine (pagpapatakbo ng mga cell ng muling pagsusulat, paghahambing at paglipat sa isa pang katabing cell, isinasaalang-alang ang pagbabago sa estado ng makina). Dahil dito, maaari itong gayahin ang mga algorithm sa anumang pormalismo, at mula sa tesis na ito ay sumusunod na ang lahat ng mga computer (hindi alintana ng kapangyarihan, arkitektura, atbp.) Ay katumbas sa mga tuntunin ng pangunahing posibilidad ng paglutas ng mga algorithmic na gawain.

1.1 Turing machine properties bilang isang algorithm.

Sa halimbawa ng Turing machine, ang mga katangian ng mga algorithm ay mahusay na traced. Hilingin sa mga estudyante na ipakita na ang Turing machine ay may lahat ng mga katangian ng algorithm.

Discreteness. Ang Turing machine ay maaaring pumunta sa (k + 1) - ang hakbang lamang pagkatapos magsagawa ng bawat hakbang, dahil ito ay bawat hakbang na tumutukoy kung ano ang magiging (k + 1) - ika pitch.

Constability. Sa bawat hakbang, ang isang simbolo mula sa alpabeto ay nakasulat sa cell, ang makina ay gumagawa ng isang paglipat (l, n, n), at ang Turing machine ay napupunta sa isa sa mga estado na inilarawan.

Deterministration. Sa bawat cell ng Turing Machine table, isang pagpipilian sa pagkilos ay naitala. Sa bawat hakbang, ang resulta ay tiyak na tinukoy, samakatuwid, ang pagkakasunud-sunod ng mga hakbang upang malutas ang problema ay tiyak na tinukoy, i.e. Kung ang Turing machine ay pumasok sa parehong word input, ang output word ay magiging parehong output.

Pagganap. Ang mga resulta ng bawat hakbang at ang buong pagkakasunud-sunod ng mga hakbang ay tiyak na tinukoy, samakatuwid, isang maayos na nakasulat na Turing machine para sa isang may hangganan na bilang ng mga hakbang ay pupunta sa Q0 estado, i.e. Para sa isang may hangganan na bilang ng mga hakbang, ang isang tugon sa tanong ng problema ay matatanggap.

Mastiness. Ang bawat Turing machine ay tinukoy sa lahat ng wastong mga salita mula sa alpabeto, sa ito at binubuo ng isang massability. Ang bawat Turing machine ay dinisenyo upang malutas ang isang klase ng gawain, i.e. Para sa bawat gawain ay nagsusulat nito (bago) Turing machine.

2. Ang pagiging kumplikado ng algorithm

Ang pagiging kumplikado ng algorithm ay tinutukoy ng mga kapasidad ng computing na kinakailangan para sa pagpapatupad nito. Ang computational complexity ng algorithm ay madalas na sinusukat ng dalawang parameter: T (pansamantalang kumplikado) at S (spatial complexity, o mga kinakailangan sa memorya). At t, at s ay karaniwang kinakatawan bilang mga function mula sa N, kung saan n ay ang laki ng data ng pag-input. (Mahahalagang at iba pang mga paraan upang masukat ang pagiging kumplikado: ang bilang ng mga random na piraso, ang lapad ng channel ng komunikasyon, ang halaga ng data, atbp.)

Karaniwan, ang computational complexity ng algorithm ay ipinahayag ng notasyon ng "on the large", t. E ay inilarawan ng pagkakasunud-sunod ng computational complexity. Ito ay isang miyembro lamang ng agnas ng pag-andar ng pagiging kumplikado, ang pinakamabilis na lumalagong sa pagtaas ng n, ang lahat ng mas mababang mga miyembro ng order ay hindi pinansin. Halimbawa, kung ang temporal na kumplikado ng algorithm na ito ay 4n2 + 7n + 12, pagkatapos ay ang computational complexity ng order N2, na isinulat bilang O (N2).

Ang pansamantalang kumplikado na sinusukat sa ganitong paraan ay hindi nakasalalay sa pagpapatupad. Hindi na kailangang malaman ang eksaktong oras ng pagpapatupad ng iba't ibang mga tagubilin, o ang bilang ng mga bits na ginagamit upang kumatawan sa iba't ibang mga variable o kahit na ang bilis ng processor. Ang isang computer ay maaaring 50 porsiyento na mas mabilis kaysa sa iba, at ang ikatlong data ng bus ay maaaring dalawang beses na mas malawak, ngunit ang pagiging kumplikado ng algorithm, tinatayang sa isang straightener, ay hindi magbabago. Ito ay hindi isang scam, kapag nagtatrabaho sa mga algorithm, kaya kumplikado tulad ng inilarawan sa aklat na ito, ang lahat ng iba pang mga bagay ay maaaring napapabayaan (na may katumpakan ng isang pare-pareho multiplier) kumpara sa pagiging kumplikado sa pagkakasunud-sunod ng magnitude.

Ang notasyon na ito ay nagbibigay-daan sa iyo upang makita kung paano ang dami ng data ng pag-input ay nakakaapekto sa mga kinakailangan para sa oras at ang halaga ng memorya. Halimbawa, kung ang t \u003d o (n), ang pagdoble ng data ng pag-input ay doblehin ang oras ng algorithm. Kung t \u003d o (2n), ang pagdaragdag ng isang bit sa data ng input ay doble ang oras ng pagpapatupad ng algorithm.

Karaniwan ang mga algorithm ay inuri alinsunod sa kanilang pansamantalang o spatial na kumplikado. Ang algorithm ay pare-pareho kung ang pagiging kumplikado nito ay hindi nakasalalay sa N: 0 (1). Ang algorithm ay linear kung ang pansamantalang kumplikado nito o (n). Ang mga algorithm ay maaaring parisukat, kubiko, atbp. Ang lahat ng mga algorithm na ito ay polynomials, ang kanilang pagiging kumplikado - o (m), kung saan ang M ay isang pare-pareho. Ang mga algorithm na may polynomial pansamantalang kumplikado ay tinatawag na polynomial algorithms.

Ang mga algorithm, ang pagiging kumplikado ng kung saan ay katumbas ng (tf (n)), kung saan ang t ay isang pare-pareho, malaki kaysa sa 1, isang f (n) ay ilang polinomyal na function mula sa n, na tinatawag na exponential. Ang isang subset ng mga exponential algorithm, ang pagiging kumplikado ng kung saan ay katumbas ng (cf (n)), kung saan ang C ay isang pare-pareho, isang f (n) ay nagiging mas mabilis kaysa sa pare-pareho, ngunit mas mabagal kaysa sa isang linear function, na tinatawag na superpolinomial.

Sa isip, ang cryptograph ay nais na magtaltalan na ang algorithm, ang pinakamahusay para sa pag-hack ng isang dinisenyo algorithm ng pag-encrypt, ay may pansamantalang pansamantalang kumplikado. Sa pagsasagawa, ang pinakamatibay na pahayag na maaaring gawin sa kasalukuyang estado ng teorya ng computational complexity, ay may form na "lahat ng mga kilalang algorithm para sa pagbubukas ng cryptosystem na ito ay may superpolinomial temporal na kumplikado." Iyon ay, ang mga autopsy algorithm na kilala sa amin ay may superpolinomial temporal na kumplikado, ngunit imposible pa rin upang patunayan na ang pambungad na algorithm ay hindi mabubuksan sa polynomial temporal na kumplikado. Ang pag-unlad ng teorya ng computational complexity ay posible sa ibang araw ay magbibigay-daan sa iyo upang lumikha ng mga algorithm kung saan ang pagkakaroon ng mga algorithm na may polinomyal na oras ng pagbubukas ay maaaring hindi kasama sa katumpakan ng matematika.

Ang Turing Machine ay isa sa mga pinaka-nakakaintriga at kapana-panabik na matatalinong pagtuklas ng ika-20 siglo. Ito ay isang simple at kapaki-pakinabang na abstract computing modelo (computer at digital), na kung saan ay karaniwang karaniwang upang isama ang anumang gawain sa computer. Salamat sa simpleng paglalarawan at pagtatasa ng matematika, ito ay bumubuo ng pundasyon ng teoretikal na informatics. Ang pag-aaral na ito ay humantong sa isang mas malalim na kaalaman sa mga digital na computer at calculus, kabilang ang pag-unawa na mayroong ilang mga problema sa computational na hindi nalutas sa karaniwang mga computer ng gumagamit.

Hinahangad ni Alan Turing na ilarawan ang pinaka-primitive na modelo ng isang mekanikal na aparato na magkakaroon ng parehong mga pangunahing tampok bilang isang computer. Inilarawan muna ni Turing ang kotse noong 1936 sa artikulong "sa mga numero ng computable na may isang apendiks sa problema sa solvability," na lumitaw sa mga gawa ng London Mathematical Society.

Ang Turing Machine ay isang computing device na binubuo ng pagbabasa / pagsulat ng ulo (o "scanner") na may papel tape na dumadaan dito. Ang tape ay nahahati sa mga parisukat, ang bawat isa ay nagdadala ng isang character - "0" o "1". Ang layunin ng mekanismo ay gumaganap din ito bilang isang paraan para sa input at output, at bilang isang gumaganang memorya para sa pagtatago ng mga resulta ng mga intermediate na yugto ng mga kalkulasyon. Mula sa kung saan ang aparato ay binubuo ng bawat naturang makina ay binubuo ng dalawang bahagi: walang limitasyong tape. Ito ay walang katapusang sa magkabilang panig at nahahati sa mga selula. Ang makina ay isang pinamamahalaang programa, isang ulo ng scanner para sa pagbabasa at pagsusulat ng data. Maaari itong maging sa bawat sandali sa isa sa maraming mga estado.

Ang bawat makina ay nagbubuklod ng dalawang huling serye ng data: alpabeto ng mga papasok na character A \u003d (A0, A1, ..., am) at alpabeto ng mga estado q \u003d (Q0, Q1, ..., QP). Kondisyon Q0 ay tinatawag na passive. Ito ay pinaniniwalaan na ang aparato ay natapos ang trabaho nito pagdating sa kanya. Kondisyon Q1 ay tinatawag na ang paunang - ang kotse ay nagsisimula sa mga kalkulasyon nito habang nasa simula nito. Ang input word ay matatagpuan sa tape para sa isang titik sa isang hilera sa bawat posisyon. Sa magkabilang panig nito ay matatagpuan lamang ang mga walang laman na selula.

Paano gumagana ang mekanismo

Ang Turing Machine ay may pangunahing pagkakaiba mula sa mga aparatong computing - ang imbakan nito aparato ay may walang katapusang tape, habang ang mga digital na aparato tulad ng isang aparato ay may isang strip ng isang tiyak na haba. Ang bawat klase ng mga gawain ay malulutas lamang ang isang constructed turing machine. Ang mga gawain ng isa pang species ay nagmumungkahi ng pagsulat ng isang bagong algorithm. Ang kontrol ng aparato, na nasa isang estado, ay maaaring lumipat sa anumang bahagi ng tape. Nagtatala ito sa mga selula at binabasa ang mga simbolo ng huling alpabeto sa kanila. Sa panahon ng proseso ng pag-aalis, isang walang laman na elemento ang inilaan, na pumupuno sa mga posisyon na hindi naglalaman ng data ng pag-input. Ang algorithm para sa Turing machine ay tumutukoy sa mga panuntunan sa paglipat para sa kontrol ng aparato. Itinakda nila ang write-reading heads tulad ng mga parameter: nagre-record sa cell ng bagong character, lumipat sa isang bagong estado, lumipat sa kaliwa o kanan sa laso.

Mga katangian ng mekanismo

Ang Turing machine, tulad ng iba pang mga sistema ng computing, ay nagtatampok ng likas dito, at pareho ang mga ito sa mga katangian ng mga algorithm: discreteness. Ang digital machine ay nagpapatuloy sa susunod na hakbang n + 1 lamang pagkatapos na maisagawa ang nakaraang isa. Ang bawat executed stage ay nagtatalaga kung ano ang n + 1. Constability. Ang aparato ay gumaganap lamang ng isang aksyon para sa parehong cell. Tama ang sukat ng simbolo mula sa alpabeto at gumagawa ng isang kilusan: kaliwa o kanan. Deterministration. Ang bawat posisyon sa mekanismo ay tumutugma sa isang solong sagisag ng isang scheme, at sa bawat yugto ng pagkilos at ang pagkakasunud-sunod ng kanilang pagpapatupad ay hindi malabo. Pagganap. Ang eksaktong resulta para sa bawat yugto ay tumutukoy sa Turing machine. Ang programa ay gumaganap ng algorithm at para sa huling bilang ng mga hakbang na napupunta sa Q0 estado. Mastiness. Ang bawat aparato ay tinutukoy sa itaas ng mga pinahihintulutang salita na kasama sa alpabeto. Ang mga function ng Turing machine sa paglutas ng mga algorithm ay madalas na nangangailangan ng pagpapatupad ng function. Depende sa posibilidad ng pagsulat ng isang kadena para sa pagkalkula, ang function ay tinatawag na algorithmically natutunaw o hindi mailalarawan. Bilang isang hanay ng mga natural o rational na mga numero, ang mga salita sa huling alpabeto n para sa makina ay isinasaalang-alang ng pagkakasunud-sunod ng set B - mga salita sa loob ng binary code alpabeto B \u003d (0.1). Gayundin, ang resulta ng pagkalkula ay isinasaalang-alang ang "hindi natukoy na" halaga na nangyayari sa panahon ng "hanging" ng algorithm. Para sa pagpapatupad ng function, mahalaga para sa pagkakaroon ng isang pormal na wika sa huling alpabeto at ang resolusyon ng problema ng pagkilala sa tamang paglalarawan.

Programa para sa device.

Ang mga programa para sa mekanismo ng Turing ay nakuha sa mga talahanayan kung saan ang unang string at haligi ay naglalaman ng mga simbolo ng panlabas na alpabeto at ang mga halaga ng posibleng mga panloob na estado ng makina - ang panloob na alpabeto. Ang data ng Tabar ay mga utos na nakikita ang Turing machine. Ang solusyon ng mga gawain ay nangyayari sa ganitong paraan: ang sulat, basahin ng ulo sa cell, sa itaas kung saan ito ay kasalukuyang matatagpuan, at ang panloob na estado ng awtomatikong ulo ay tinutukoy kung alin sa mga utos ang dapat gawin. Sa partikular, ang utos na ito ay nasa intersection ng mga simbolo ng panlabas na alpabeto at ang panloob, na matatagpuan sa talahanayan.

Computing components.

Upang bumuo ng isang Turing machine upang malutas ang isang partikular na gawain, kinakailangan upang matukoy ang mga sumusunod na parameter para dito. Panlabas na alpabeto. Ito ay ilang mga huling hanay ng mga character na pamilyar sa mga bahagi ng kung saan ang mga elemento ay tinatawag na mga titik. Isa sa mga ito - A0 - ay dapat walang laman. Halimbawa, ang alpabeto ng aparato ng Turing, nagtatrabaho sa binary na mga numero, ganito ang hitsura nito: A \u003d (0, 1, A0). Ang patuloy na kadena ng mga titik-character na naitala sa tape ay tinatawag na salita. Ang makina ay tinatawag na isang aparato na gumagana nang walang pagkagambala ng mga tao. Sa Turing machine, mayroon itong maraming iba't ibang mga estado upang malutas ang mga problema at sa ilalim ng tiyak na mga kondisyon na gumagalaw mula sa isang posisyon papunta sa isa pa. Ang kumbinasyon ng naturang mga estado ng karwahe ay isang panloob na alpabeto. Mayroon itong alpabetikong pagtatalaga ng uri Q \u003d (Q1, Q2 ...). Ang isa sa mga probisyon ay Q1 - ay dapat na ang paunang, iyon ay, sa paglulunsad nito ang programa. Ang isa pang kinakailangang elemento ay ang estado Q0, na kung saan ay ang wakas, iyon ay, sa pamamagitan ng pagkumpleto ng programa at isinasalin ang aparato sa posisyon ng stop.

Talaan ng mga transition.

Ang bahagi na ito ay isang algorithm para sa pag-uugali ng isang karwahe ng aparato, depende sa kung ano ang kasalukuyang estado ng automaton at ang halaga ng character na binabasa.

Algorithm para sa machine gun.

Ang tagapag-alaga ng Turing Device sa panahon ng operasyon ay namamahala sa programa, na sa bawat hakbang ay nagsasagawa ng pagkakasunud-sunod ng mga sumusunod na pagkilos: Pag-record ng simbolo ng panlabas na alpabeto sa posisyon, kabilang ang walang laman, elemento nito, kabilang ang walang laman, elemento . Lumipat sa isang step-cell sa kaliwa o kanan. Pagbabago ng iyong panloob na estado. Kaya, kapag nagsusulat ng mga programa para sa bawat pares ng mga character o posisyon, kinakailangan upang tumpak na ilarawan ang tatlong parameter: AI - isang elemento mula sa napiling alpabeto A, ang direksyon ng shift ng carriage ("←" na natitira, "→" sa kanan , "Point" - walang kilusan) at QK - ang bagong estado ng aparato. Halimbawa, ang command 1 "←" Q2 ay "pinapalitan ang isang simbolo sa 1, ilipat ang ulo ng karwahe sa kaliwa sa isang step-cell at gawin ang paglipat sa estado ng Q2. "