O koupelně - Strop. Koupelny. Dlaždice. Zařízení. Opravit. Instalatérství

Turingův edu index php t. Turingův test. Globální trh AI

Vidíme to pořád. „RESTful“ toto, „REST“ protokol, že atd. Mnoho z nás však přesně nerozumí tomu, co to znamená. Přesně tuto mezeru napravíme v tomto článku!

Stát

V informatice (a do určité míry matematice) existuje pojem státu. Určitý systém může být ve stavu A nebo může být ve stavu B nebo to může být spousta dalších stavů (obvykle konečný seznam stavů).

Řekněme například, že napíšete program, který zbarví obrazovku do červena, pokud je teplota vyšší než 80 stupňů farenheita, nebo zmodrá, pokud je teplota nižší než 80 stupňů farenheita.

První stav (teplota > 80 stupňů) můžeme nazvat stavem „A“ a druhý stav (tepl< 80 degrees) state “B”. We’ll call the middling state (temp = 80 degrees) state “C”. As we can see, we have defined behaviours of the programs at state A and state B, but not at state C.

To je obecná představa státu. Zde je definice poskytnutá vševědoucí Wikipedií:

"V informatice a teorii automatů je stav digitálního logického obvodu nebo počítačového programu technický termín pro všechny uložené informace v daném časovém okamžiku, které používá obvod nebo program."

Jde zkrátka o jakousi „kombinaci“ všech informací, které program zohledňuje.

Nyní uděláme skok do něčeho, co je z velké části považováno za teoretické a zbytečné, a pak se nějak propojíme s velmi praktickým světem ODPOČINKU.

Turingovy stroje

Byl to muž jménem Alan Turing a byl to docela chytrý matematik se zájmem o fungování počítačů. Vytvořil imaginární počítač (který, jak uvidíme, ve skutečnosti není možné sestavit), který používal k uvažování o věcech, které se dějí ve skutečných počítačích.

Počítač se skládá z pásky nekonečné délky, s hlavou, kterou páska prochází. Páska má „buňky“, do kterých lze zapisovat informace (čísla, barvy atd.). Páska se tímto strojem pohybuje doleva nebo doprava po jedné buňce. Stroj naskenuje vše, co je již na pásce, a podle toho, v jakém stavu se nachází, něco zapíše zpět na pásku a následně svůj stav změní.

Možná si budete chtít přečíst tuto definici znovu, aby se úplně ponořila. Podstatou myšlenky je, že provádí operace s pamětí na základě stavu a změny stavů podle operací s pamětí.

Vypadá to jako docela zbytečná teoretická fantazie (ačkoli na tom není absolutně nic špatného, ​​přečtěte si Apologii matematika, pokud vás zajímá, proč se lidé zajímají o teoretické věci). Je to však dost možná nejzákladnější pojem informatiky.

Pomocí Turingova stroje jsou počítačoví vědci schopni uvažovat o jakémkoli algoritmu, který lze spustit na počítači. Ve skutečnosti Turingův stroj vedl k mnoha pokrokům v informatice.

Turingův stroj nám tedy ukazuje, že dnes (poznámka: neuvažuji o procesorech pro redukci grafů) je doslova vše v informatice založeno na myšlence státu.

Síť

Pak přišel koncept internetu. Toto je místo, kde se pakety mohou zamotat a jsou znovu odesílány, dokud nedosáhnou svého cíle. Obecně platí, že nikdy nedochází k úplnému přenosu úplných dat.

Klienti přicházejí rychle a odcházejí dvakrát rychleji. Držení stavu klienta jako takové nedává při práci na síťovém systému velký smysl.

Také obecně bylo příliš mnoho stavu v systému příčinou velké bolesti (což také vede k funkčním programovacím jazykům, které neumožňují udržení stavu ve velké části vašeho kódu).

Nyní lidé potřebovali síťový protokol pro internet, který by byl jednoduchý, rychlý a dobře zvládal správu státu v extrémně dynamickém prostředí.

Tím protokolem byl HTTP a teorie, která vyrostla z práce na HTTP, byla označena REST.

ODPOČINEK

REST je zkratka pro: REpresentational State Transfer. Je to systém postavený na konceptu „klient-server“, na kterém jsou postaveny sítě (dobře, existují také sítě typu peer-to-peer, ale klient-sever je pravděpodobně nejjednodušší a nejtestovanější architektura). Samotný název je mírně zavádějící, protože server je zcela bez státu!

Existuje několik omezení, která musí dodržovat všechny systémy, které prohlašují, že jsou „RESTful“.

Za prvé, to musí být systémem klient-server. Toto omezení bylo v minulosti upraveno, ale ve formální definici (a aby teorie REST fungovala správně) máme servery, ke kterým se mohou klienti připojit.

Server je plně bezstavový. To znamená, že pro každý požadavek klienta na server není na serveru rezervován žádný stav. Pokud například klient (pomocí HTTP) požaduje indexovou stránku a následně požaduje stránku /user/home, jsou tyto dva požadavky na sobě zcela nezávislé. Klient drží Všechno stavu systému (proto máme tlačítko Zpět).

Odpovědi ze serveru musí být uložitelné do mezipaměti, což znamená, že na serveru musí existovat systém, který identifikuje odpovědi jako mezipaměti či nikoli, aby klienti (např. webové prohlížeče) mohli využít mezipaměť.

Nakonec musíme mít jednoduché, čisté a jednotné rozhraní. Pokud máte nějaké zkušenosti s tím, jak HTTP funguje, formuláře žádosti jsou velmi jednoduché. Jsou to převážně slovesa a podstatná jména s velmi snadno analyzovatelným a člověkem čitelným formátem. SOAP je další forma síťového protokolu, která tento požadavek absolutně ruší, a proto je často velmi obtížné s ním pracovat.

Co tedy všechny tyto vlastnosti dohromady znamenají?

Důsledky REST

Umožňují nám budovat systémy, které jsou čistě oddělené, škálovatelné a snadno laditelné.

Podívejme se nejprve na omezení bezstavovosti na serveru, může to být ten nejdůležitější (a také nejčastěji porušovaný tzv. RESTful architekturami) bit.

Jak již bylo zmíněno, v architektuře klient-server jsou klienti velmi obratní; vystřelí požadavky a najednou zabijí veškerou komunikaci. V této situaci je mnohem čistší neukládat stav o klientovi na serveru. To nám umožňuje velmi snadno uvažovat o HTTP serverech; s každým klientským požadavkem může být zacházeno, jako by se jednalo o zcela nového klienta, a neznamenalo by to ani korunu rozdílu.

Za druhé, odpovědi uložené v mezipaměti znamenají, že klienti jsou schopni získat data mnohem rychleji, protože často mohou být data načtena z paměti klienta. To okamžitě zvyšuje výkon klienta a v některých systémech i škálovatelnost serveru.

Jednotné rozhraní může být to nejdůležitější. Po práci se SOAP vám mohu říci, že jednoduchý formát HTTP je požehnáním při pokusu o ladění kódu serveru a totéž platí pro ostatní systémy RESTful.

Navrhování RESTful systému

Řekněme, že potřebujeme napsat server, který bude vracet kotace akcií, a zároveň zachovat seznam kotací akcií ke sledování (a uživatel může seznam buď přidat, nebo vymazat).

To je vynikající případ pro systém RESTful, protože je ze své podstaty nezávislý na identitě klienta. Server tedy nemusí uchovávat žádný stav o klientovi.

Nejprve začneme tím, že definujeme, jak bude jazyk protokolu fungovat (trochu jako GET a POST slovesa HTTP):

ZÍSKAT NABÍDKU ticker- udává cenu za konkrétní akcii
ADDTICKER ticker- přidá danou zásobu do seznamu
GETLIST - získá čárkami oddělený seznam akcií v seznamu

To je poměrně jednoduchý protokol a na serveru neuchovává žádný stav. Nyní, pokud jde o ukládání do mezipaměti, můžeme říci, že aktualizujeme ceny každou hodinu, takže keše starší než jednu hodinu mohou být vyhozeny.

A to je všechno! Samozřejmě to ještě musíme implementovat, ale obecná myšlenka systému je docela jednoduchá a čistá!

Závěr

Doufejme, že vám tento článek dal solidní pochopení RESTu.

Také doufám, že nyní budete moci oslovit lidi, kteří příliš omílají termín „RESTful“ – mohu vám říct, že jich je hodně!

Turingův test, navržený Alanem Turingem, byl vyvinut jako uspokojivá funkční definice inteligence. Turing usoudil, že nemá smysl vyvíjet rozsáhlý seznam požadavků na vytvoření umělé inteligence, které by si navíc mohly odporovat, a navrhl test založený na skutečnosti, že chování objektu s umělou inteligencí by nakonec bylo k nerozeznání od chování takových nepopiratelně inteligentních entit, jako jsou lidské bytosti. Počítač projde tímto testem, pokud lidský experimentátor, který mu klade písemné otázky, nemůže určit, zda jsou písemné odpovědi od jiné osoby nebo z nějakého zařízení.

Vyřešení problému s napsáním programu pro počítač, aby prošel tímto testem, vyžaduje hodně práce. Takto naprogramovaný počítač musí mít následující schopnosti:

  • Vybavení zpracování textu v přirozeném jazyce(Natural Language Processing - NLP), umožňující úspěšnou komunikaci s počítačem, řekněme v angličtině.
  • Vybavení reprezentace znalostí, s jehož pomocí může počítač zapisovat do paměti to, co se naučí nebo přečte.
  • Vybavení automatické generování logických závěrů, poskytující možnost používat uložené informace k hledání odpovědí na otázky a vyvozování nových závěrů.
  • Vybavení strojové učení, které vám umožní přizpůsobit se novým okolnostem a také odhalit a extrapolovat známky standardních situací.

V Turingově testu je přímá fyzická interakce mezi experimentátorem a počítačem záměrně vyloučena, protože vytvoření umělé inteligence nevyžaduje fyzickou imitaci člověka. Ale v tzv kompletní Turingův test použití video signálu je zajištěno tak, aby experimentátor mohl otestovat percepční schopnosti testovaného objektu a měl také možnost prezentovat fyzické objekty „v neúplné podobě“ (procházet je „stínováním“). Aby počítač prošel úplným Turingovým testem, musí mít následující schopnosti:

  • Strojové vidění pro vnímání předmětů.
  • Vybavení robotika pro manipulaci s předměty a pohyb v prostoru.

Šest oblastí výzkumu uvedených v této části tvoří většinu umělé inteligence a Turing si zaslouží naše poděkování za poskytnutí testu, který zůstává relevantní i o 50 let později. Výzkumníci umělé inteligence však prakticky neřeší problém absolvování Turingova testu a věří, že je mnohem důležitější studovat základní principy inteligence než duplikovat jednoho z nositelů přirozené inteligence. Zejména problém „umělého letu“ byl úspěšně vyřešen až poté, co bratři Wrightové a další výzkumníci přestali napodobovat ptáky a začali studovat aerodynamiku. Ve vědeckých a technických pracích o letectví není cíl tohoto oboru vědění definován jako „vytvoření strojů, které se při letu podobají holubům tak, že dokážou oklamat i skutečné ptáky“.

Pravděpodobně dnes neexistuje člověk, který by alespoň jednou neslyšel o takovém konceptu, jako je test Alana Turinga. Většina lidí asi ani zdaleka nechápe, co takový testovací systém je. Pojďme se jí proto věnovat trochu podrobněji.

Co je Turingův test: základní koncept

Na konci 40. let minulého století se mnoho vědeckých myslí zabývalo problémy prvního vývoje počítačů. Tehdy si jeden z členů jisté nevládní skupiny Ratio Club, zabývající se výzkumem v oblasti kybernetiky, položil zcela logickou otázku: je možné vytvořit stroj, který by myslel jako člověk, nebo alespoň napodobovat jeho chování?

Musím říkat, kdo vynalezl Turingův test? Očividně ne. Prvotním základem celého konceptu, který je aktuální i dnes, byl následující princip: bude člověk po nějaké době komunikace s nějakým neviditelným partnerem na úplně jiná libovolná témata schopen určit, kdo je před ním? skutečná osoba nebo stroj? Jinými slovy, otázkou není jen to, zda stroj dokáže napodobit chování skutečné osoby, ale také zda dokáže sám myslet. tato otázka zůstává stále kontroverzní.

Historie stvoření

Obecně platí, že pokud Turingův test považujeme za jakýsi empirický systém pro určování „lidských“ schopností počítače, stojí za to říci, že nepřímým základem pro jeho vytvoření byly kuriózní výroky filozofa Alfreda Ayera, které formuloval ještě v roce 1936.

Sám Ayer srovnával takříkajíc životní zkušenosti různých lidí a na základě toho vyslovil názor, že bezduchý stroj by nemohl projít žádnou zkouškou, jelikož neumí myslet. V nejlepším případě to bude čistá imitace.

V principu to tak je. Samotná imitace k vytvoření myslícího stroje nestačí. Mnoho vědců uvádí příklad bratří Wrightů, kteří postavili první letadlo a opustili tendenci napodobovat ptáky, což bylo mimochodem charakteristické pro takového génia, jako je Leonardo da Vinci.

Istrie mlčí, zda on sám (1912-1954) o těchto postulátech věděl, nicméně v roce 1950 sestavil celý systém otázek, které mohly určit míru „humanizace“ stroje. A nutno říci, že tento vývoj stále patří k těm zásadním, i když jen při testování např. počítačových botů apod. Ve skutečnosti se princip ukázal tak, že Turingovým testem obstálo jen málo programů . A pak se „vyhovělo“ říká s velkým důrazem, protože výsledek testu nikdy neměl indikátor 100 procent, v nejlepším případě - o něco více než 50.

Na samém začátku svého výzkumu použil vědec svůj vlastní vynález. Říkalo se mu Turingův testovací stroj. Vzhledem k tomu, že všechny konverzace měly být zadávány výhradně v tištěné podobě, stanovil vědec několik základních směrnic pro psaní odpovědí, jako je posun tiskové pásky doleva nebo doprava, tisk konkrétního znaku atd.

Programy ELIZA a PARRY

Postupem času se programy staly složitějšími a dva z nich v situacích, kdy byl aplikován Turingův test, vykazovaly v té době ohromující výsledky. Byli to ELIZA a PARRY.

Co se týče „Elizy“, vytvořené v roce 1960: na základě otázky měl stroj určit klíčové slovo a na jeho základě vytvořit zpětnou odpověď. To umožnilo klamat skutečné lidi. Pokud takové slovo nebylo, stroj vrátil zobecněnou odpověď nebo zopakoval jednu z předchozích. O průchodu Eliza testu však stále existuje pochybnost, protože skuteční lidé, kteří s programem komunikovali, byli zpočátku psychologicky připraveni tak, že si předem mysleli, že mluví s člověkem a ne se strojem.

Program PARRY je poněkud podobný Elize, ale byl vytvořen za účelem simulace komunikace paranoidního člověka. Nejzajímavější je, že k testování byli použiti skuteční klinickí pacienti. Po zaznamenání přepisů rozhovorů dálnopisem je posoudili profesionální psychiatři. Pouze ve 48 procentech případů dokázali správně posoudit, kde se nachází člověk a kde stroj.

Kromě toho téměř všechny programy té doby fungovaly s ohledem na určité časové období, protože člověk v té době myslel mnohem rychleji než stroj. Teď je to naopak.

Superpočítače Deep Blue a Watson

Vývoj korporace IBM vypadal docela zajímavě, nejen že mysleli, ale měli neuvěřitelnou výpočetní sílu.

Mnoho lidí si asi pamatuje, jak v roce 1997 vyhrál superpočítač Deep Blue 6 šachových partií proti tehdejšímu současnému mistru světa Garry Kasparovovi. Ve skutečnosti je Turingův test na tento stroj velmi podmíněně použitelný. Věc se má tak, že zpočátku obsahovala mnoho herních šablon s neuvěřitelným množstvím výkladu vývoje událostí. Stroj dokázal vyhodnotit asi 200 milionů pozic dílků na desce za sekundu!

Počítač Watson, skládající se z 360 procesorů a 90 serverů, vyhrál americkou televizní herní show, když ve všech ohledech překonal další dva účastníky, za což ve skutečnosti získal bonus 1 milion dolarů. Otázka je opět sporná, protože stroj byl nabitý neuvěřitelným množstvím encyklopedických dat a stroj jednoduše analyzoval otázku na přítomnost klíčového slova, synonym nebo obecných shod a pak dal správnou odpověď.

Emulátor Eugene Goostman

Jedním z nejzajímavějších počinů v této oblasti byl program obyvatele Oděsy Jevgenije Gustmana a ruského inženýra Vladimira Veselova, nyní žijícího ve Spojených státech, který napodoboval osobnost 13letého chlapce.

7. června 2014 předvedl program Eugene své plné schopnosti. Zajímavé je, že testování se zúčastnilo 5 botů a 30 reálných lidí. Pouze ve 33 % případů ze sta dokázala porota určit, že se jedná o počítač. Jde o to, že úkol byl komplikován tím, že dítě má nižší inteligenci než dospělý a méně znalostí.

Otázky Turingova testu byly nejobecnější, nicméně pro Eugena existovaly také některé konkrétní otázky týkající se událostí v Oděse, které nemohly zůstat bez povšimnutí žádného obyvatele. Odpovědi mě ale stále vedly k domněnce, že porota byla dítě. Například na otázku o místě bydliště program odpověděl okamžitě. Když byl položen dotaz, zda je spolubesedník v takové a takové datum ve městě, program uvedl, že o tom nechce mluvit. Když se účastník rozhovoru pokusil trvat na rozhovoru v souladu s tím, co se toho dne přesně stalo, Eugene se popřel tím, že řekl, měl bys to vědět sám, proč se ho ptát? Obecně se dětský emulátor ukázal jako mimořádně úspěšný.

Toto je však stále emulátor, nikoli myslící tvor. Takže strojové povstání nebude ještě hodně dlouho.

ale na druhou stranu

Na závěr zbývá dodat, že zatím neexistují žádné předpoklady pro vytváření myslících strojů v blízké budoucnosti. Pokud se však dřívější problémy s rozpoznáváním týkaly konkrétně strojů, nyní musí téměř každý z nás prokázat, že nejste stroj. Stačí se podívat na zadání captcha na internetu, abyste získali přístup k nějaké akci. Doposud se má za to, že dosud nebylo vytvořeno jediné elektronické zařízení, které by dokázalo rozpoznat zkreslený text nebo sadu znaků, kromě osoby. Ale kdo ví, všechno je možné...

TURING

TURING(Turing) Alan (1912-54), anglický matematik a logik, který formuloval teorie, které se později staly základem výpočetní techniky. V roce 1937 přišel s Turingův stroj - hypotetický stroj schopný transformovat sadu vstupních příkazů. Byl to předchůdce moderních počítačů. Turing také použil myšlenku počítače, aby poskytl alternativní a jednodušší důkaz Gödelovy věty o neúplnosti. Turing hrál hlavní roli při řešení Enigmy, složité šifrovací metody používané Německem během druhé světové války. V roce 1948 se podílel na vytvoření jednoho z prvních počítačů na světě. V roce 1950 přišel s Turingův test - měl to být test schopnosti počítače „myslet“. V podstatě uváděl, že člověk nebude schopen rozlišit dialog se strojem od dialogu s jinou osobou. Tato práce otevřela cestu k vytvoření UMĚLÉ INTELIGENCE. Turing se také zabýval teoretickou biologií. Probíhá "Chemický základ morfogeneze"(1952) navrhl model popisující původ různých strukturních vzorců organismů v biologii. Od té doby se takové modely často používají k popisu a vysvětlení mnoha systémů pozorovaných v přírodě. Turing spáchal sebevraždu poté, co byl oficiálně obviněn z homosexuality.


Vědeckotechnický encyklopedický slovník.

Podívejte se, co je „TURING“ v jiných slovnících:

    Turing, Alan Mathison Alan Turing Památník Alan Mathison Turing v parku Sackville Datum narození ... Wikipedia

    - (Turing) Alan Mathieson (1912 54), anglický matematik. V letech 1936-1937 zavedl matematický koncept abstraktního ekvivalentu algoritmu neboli vyčíslitelné funkce, který se tehdy nazýval Turingův stroj... Moderní encyklopedie

    - (Turing), Alan Mathieson (23. června 1912 - 7. června 1954) - angl. logik a matematik. V letech 1936–37 navrhl idealizovaný strojový model výpočtu. proces - výpočetní schéma blízké činnostem osoby provádějící výpočty a předložená... ... Filosofická encyklopedie

    Turing A.- Turing A. anglický matematik. Témata informační bezpečnosti EN Turing… Technická příručka překladatele

    Alan Turing Památník Alana Turinga v Sackville Park Datum narození: 23. června 1912 Místo narození: Londýn, Anglie Datum úmrtí: 7. června 1954 ... Wikipedia

    Turing- Anglický matematik Alan M. Turing, jeden z tvůrců logických základů zejména výpočetní techniky, podal jednu z formálních definic algoritmu; dokázal, že existuje třída počítačů, které umí simulovat... ... Lemův svět - slovník a průvodce

    - (Turing) Alan Mathieson (23.6.1912, Londýn, 7.6.1954, Wilmslow, u Manchesteru), anglický matematik. Člen Královské společnosti (1951). Po absolvování Cambridgeské univerzity (1935) pracoval na své doktorské disertaci na Princetonu... ... Velká sovětská encyklopedie

    Turing A.M.- TURING (Turing) Alan Mathieson (191254), angl. matematik. Základní tr. v matematice logika, počítá. matematika. V roce 193637 zavedl matematiku. pojem abstraktního ekvivalentu algoritmu nebo vypočitatelná funkce, který se pak nazývá. auto T... Biografický slovník

    - (plné znění Alan Mathison Turing) (23. června 1912, Londýn 7. června 1954, Wilmslow, Velká Británie), britský matematik, autor prací o matematické logice a výpočetní matematice. V letech 1936-1937 zavedl matematický koncept... encyklopedický slovník

knihy

  • Může stroj myslet? Obecná a logická teorie automatů. Vydání 14, Turing A., Tato kniha, obsahující díla Alana Turinga a Johna von Neumanna, kteří stáli u zrodu prvních myslících počítačů, patří ke klasikům filozoficko-kybernetického... Kategorie: Databáze Řada: Umělé vědy Vydavatel: URSS, Výrobce: URSS,
  • Může stroj myslet? Obecná a logická teorie automatů. Vydání č. 14, Turing A., Tato kniha obsahující díla Alana Turinga a Johna von Neumanna, kteří stáli u zrodu prvních „myslících strojů“ počítačů, patří ke klasikům filozoficko-kybernetického směr... Kategorie:

Téma „Turingův stroj“ ve školním kurzu informatiky

V. Falina,
Moskva

V mnoha učebnicích informatiky se při studiu konceptu a vlastností algoritmu vyskytují fráze s následujícím obsahem: „... existuje mnoho různých způsobů, jak napsat stejný algoritmus, například psaní ve formě textu, psaní ve formě vývojového diagramu, psaní v nějakém algoritmickém jazyce, reprezentace algoritmu ve formě Turingova stroje nebo Postova stroje...“ Bohužel tyto typy frází jsou jediné, které zmiňují Turingův stroj. Objem hodin věnovaných studiu algoritmů nám bezpochyby neumožňuje zahrnout do tohoto tématu také studium způsobů, jak napsat algoritmus ve formě Turingova stroje. Ale toto téma je nesmírně zajímavé, důležité a užitečné pro školáky, zejména pro zájemce o informatiku.

Téma „Turingův stroj“ lze studovat v 8.–11. ročníku v rámci tématu „Informační procesy. Zpracování informací“, ve výběrových třídách, v systému dalšího vzdělávání např. ve školách pro mladé programátory. Studium tohoto tématu může být doprovázeno počítačovou podporou, pokud má učitel softwarový simulátor „Turing Machine“. V pokročilých hodinách programování mohou studenti samostatně napsat program Turingova stroje. V rámci tohoto článku vám nabízíme workshop řešení problémů na téma „Turingův stroj“. Teoretický materiál na toto téma byl nejednou publikován na stránkách Informatických novin, např. v č. 3/2004 článek I.N. Falina „Prvky teorie algoritmů“.

Stručný teoretický materiál

Turingův stroj je striktní matematická konstrukce, matematický aparát (podobný např. aparátu diferenciálních rovnic), vytvořený k řešení určitých problémů. Tento matematický aparát byl nazýván „strojem“ z toho důvodu, že je z hlediska popisu jeho součástí a činnosti podobný počítači. Základní rozdíl mezi Turingovým strojem a počítači je v tom, že jeho úložným zařízením je nekonečná páska: ve skutečných počítačích může být úložné zařízení tak velké, jak chcete, ale musí být konečné. Turingův stroj nelze realizovat právě proto, že jeho páska je nekonečná. V tomto smyslu je výkonnější než jakýkoli počítačový stroj.

Každý Turingův stroj má dvě části:

1)neomezený okružní výlet stuha, rozdělené na buňky;

2) stroj(čtecí/zápisová hlava řízená softwarem).

Každý Turingův stroj je spojen s dvě závěrečné abecedy: abeceda vstupních symbolů A = (a 0 , a 1 , ..., a m ) a abeceda stavů Q = (q 0, q 1, ..., q p ). (Různé Turingovy stroje mohou mít různé abecedy spojené s nimi A A Q.) Stav q 0 se nazývá pasivní. Předpokládá se, že pokud se stroj dostane do tohoto stavu, pak dokončil svou práci. Stav q 1 je volán počáteční. V tomto stavu stroj zahájí svou práci.

Vstupní slovo je na pásku umístěno po písmenech v po sobě jdoucích buňkách. Vlevo a vpravo od vstupního slova jsou pouze prázdné buňky (v abecedě A vždy obsahuje prázdné písmeno A 0 znamená, že buňka je prázdná).

Stroj se může pohybovat po pásce doleva nebo doprava, číst obsah buněk a zapisovat písmena do buněk. Níže je schematický nákres Turingova stroje, jehož automat zkoumá první buňku s daty.

Stroj pokaždé „vidí“ pouze jednu buňku. Podle toho jaké písmeno ai vidí, a také v závislosti na jeho stavu qj Stroj může provádět následující akce:

  • · napsat nové písmeno do pozorované buňky;
  • · posunout pásku o jednu buňku doprava/doleva nebo zůstat bez pohybu;
  • · přejít do nového stavu.

To znamená, že Turingův stroj má tři typy operací. Pokaždé pro další pár ( q j, a i) Turingův stroj vykonává příkaz sestávající ze tří operací s určitými parametry.

Program Turingova stroje je tabulka s příkazem zapsaným v každé buňce.

Buňka ( q j, a i) je určeno dvěma parametry - symbolem abecedy a stavem stroje. Příkaz je indikací: kam přesunout čtecí/zapisovací hlavu, jaký znak zapsat do aktuální buňky, do jakého stavu má stroj přejít. Pro označení směru pohybu stroje používáme jedno ze tří písmen: „L“ (vlevo), „P“ (vpravo) nebo „N“ (nehybný).

Poté, co stroj provede další příkaz, přejde do stavu q m(který se může v konkrétním případě shodovat s předchozím stavem q j). Další příkaz by měl být nalezen v mřádek tabulky na průsečíku se sloupcem a l(dopis a l stroj vidí po směně).

Shodneme se, že když páska obsahuje vstupní slovo, pak je stroj umístěn proti nějaké buňce ve stavu q 1. Za provozu bude automat přeskakovat z jedné buňky programu (tabulky) na druhou, dokud nedosáhne buňky, ve které je napsáno, že automat má přejít do stavu q 0 Tyto buňky se nazývají zastavovací buňky. Po dosažení jakékoli takové buňky, Turingova stroje zastaví.

Navzdory své jednoduché konstrukci může Turingův stroj provádět všechny možné transformace slov, čímž implementuje všechny možné algoritmy.

Příklad. Potřebujete postavit Turingův stroj, který k číslu na pásce přidá jedničku. Vstupní slovo se skládá z desetinných celých číslic zapsaných do po sobě jdoucích buněk na pásce. V počátečním okamžiku je stroj umístěn naproti číslici zcela vpravo.

Řešení. Stroj musí k poslední číslici čísla přidat jedničku. Pokud je poslední číslice 9, nahraďte ji 0 a přidejte jednu k předchozí číslici. Program pro daný Turingův stroj může vypadat takto:

V tomto Turingově stroji q 1-místný stav změny, q 0 - stav zastavení. Jestli můžeš q l stroj vidí číslo 0..8, pak ho nahradí 1..9 a přejde do stavu q 0, tj. auto zastaví. Pokud vidí číslo 9, nahradí ho 0, přesune se doleva a zůstane ve stavu q l. Toto pokračuje, dokud stroj nenarazí na číslo menší než 9. Pokud byla všechna čísla rovna 9, nahradí je nulami, na místo nejvyšší číslice napíše 0, posune se doleva a do prázdné buňky zapíše 1. Pak to přejde do stavu q 0, tj. se zastaví.

Praktické úkoly

1. Páska Turingova stroje obsahuje sekvenci symbolů „+“. Napište program pro Turingův stroj, který nahradí každý druhý symbol „+“ znakem „–“. Výměna začíná od pravého konce sekvence. Stroj je schopen q 1 se podívá na jeden ze znaků v zadané sekvenci. Kromě samotného tabulkového programu slovně popište, co stroj v jednotlivých stavech provádí.

2. Dané číslo n v osmičkové číselné soustavě. Navrhněte Turingův stroj, který zvýší dané číslo n na 1. Stroj je schopen q 1 se dívá na určitou číslici vstupního slova. Kromě samotného tabulkového programu slovně popište, co stroj v jednotlivých stavech provádí.

3. Daný desítkový zápis přirozeného čísla n> 1. Vyviňte Turingův stroj, který by zmenšil dané číslo n na 1. Stroj je schopen q 1 se podívá na pravou číslici čísla. Kromě samotného tabulkového programu slovně popište, co stroj v jednotlivých stavech provádí.

4. Je dáno přirozené číslo n> 1. Vyviňte Turingův stroj, který by zmenšil dané číslo n o 1, přičemž nejvýznamnější číslice ve výstupním slově by neměla být 0. Pokud bylo například vstupní slovo „100“, pak by výstupní slovo mělo být „99“, nikoli „099“. Stroj je schopen q 1 se podívá na pravou číslici čísla. Kromě samotného tabulkového programu slovně popište, co stroj v jednotlivých stavech provádí.

5. Je dána řada otevíracích a zavíracích závorek. Sestavte Turingův stroj, který by odstranil dvojice vzájemných závorek, tzn. umístěné v řádku „()“.

Například zadané „“) (() (()“, musíte získat „“) ... ((“.

Stroj je schopen q

6. Daný řetězec písmen “ A" A " b" Vyvinout Turingův stroj, který bude pohybovat všemi písmeny “ A“ doleva a písmena “ b” - na pravou stranu řádku. Stroj je schopen q 1 se podívá na znak úplně vlevo na řádku. Kromě samotného tabulkového programu slovně popište, co stroj v jednotlivých stavech provádí.

7. Na pásce Turingova stroje je číslo zapsané v desítkové číselné soustavě. Vynásobte toto číslo 2. Stroj je schopen q 1 se podívá na číslici nejvíce vlevo v čísle. Kromě samotného tabulkového programu slovně popište, co stroj v jednotlivých stavech provádí.

8. Jsou dána dvě přirozená čísla m A n, prezentované v unární číselné soustavě. Odpovídající znakové sady jsou „|“ oddělené prázdnou buňkou. Stroj je schopen q 1 se podívá na znak zcela vpravo vstupní sekvence. Vyviňte Turingův stroj, který zanechá na pásce součet čísel m A n. Kromě samotného tabulkového programu slovně popište, co stroj v jednotlivých stavech provádí.

9. Jsou dána dvě přirozená čísla m A n, prezentované v unární číselné soustavě. Odpovídající znakové sady jsou „|“ oddělené prázdnou buňkou. Stroj je schopen q 1 se podívá na znak zcela vpravo vstupní sekvence. Vyviňte Turingův stroj, který zanechá rozdíl mezi čísly na pásce. m A n. Je známo že m> n. Kromě samotného tabulkového programu slovně popište, co stroj v jednotlivých stavech provádí.

10. Na pásce Turingova stroje je desetinné číslo. Určete, zda je toto číslo beze zbytku dělitelné 5. Pokud je dělitelné, napište slovo „ano“ napravo od čísla, jinak „ne“. Stroj zkoumá určitou číslici vstupního čísla. Kromě samotného tabulkového programu slovně popište, co stroj v jednotlivých stavech provádí.

Řešení problémů

Schopný q 1 stroj hledá pravý konec čísla, umí q 2 - přeskočí znaménko „+“, zastaví se při dosažení konce sekvence. Schopný q 3, stroj nahradí znaménko „+“ znaménkem „–“, a když dosáhne konce sekvence, zastaví se.

Řešení tohoto problému je podobné jako ve výše uvedeném příkladu.

Stát q 1 - snížíme nejnižší (další) číslici o 1. Pokud se nerovná nule, tak po snížení ihned přestaň, pokud je nejnižší číslice 0, tak místo toho napíšeme 9, posuneme doleva a provedeme odčítání znovu; . V kleci [ A 0 , q 1 ] Turingův stroj nikdy nezasáhne, takže může zůstat nenaplněný.

Úkol 4 (komplikace úkolu 3)

Stát q 1 - vedlejší (další) číslici zmenšíme o 1. Je-li větší než 1, tak po zmenšení ihned přestaneme, ale pokud je vedlejší číslice 0, tak místo ní napíšeme 9, posuneme doleva a provedeme odčítání znovu. Pokud je redukovaná číslice 1, napíšeme místo ní 0 a přejdeme do stavu q 2 .

Stát q 2 - po napsání „0“ na libovolné pozici je nutné analyzovat, zda je tato nula nejvýznamnější číslicí (tj. zda je nalevo od ní ve výstupním záznamu slova A 0).

Stát q 3 - pokud je zaznamenaná „0“ nejvýznamnější číslice, musí být odstraněna ze záznamu výstupního slova.

Ty buňky, do kterých se Turingův stroj nikdy nedostane, zůstanou prázdné.

Stát q 1: pokud se objeví „(“, posuňte se doprava a přejděte do stavu q 2; kdybys potkal" A 0“, pak zastavte.

Stát q 2: analýza symbolu „(“ pro spárování, v případě spárování by měli vidět „“)“. Pokud je to parní místnost, vraťte se doleva a přejděte do stavu q 3 .

Stát q 3: nejprve vymažte „(“, pak „“)“ a přejděte na q 1 .

Řešení tohoto problému obvykle způsobuje potíže školákům. Při rozboru řešení tohoto problému můžete postupovat například následujícím způsobem.

Projděte si se svými studenty následující možnosti vstupních slov a požádejte je, aby formulovali, co by měl Turingův stroj dělat, jak vypadá výstupní slovo a jak se tyto možnosti liší z pohledu Turingova stroje:

aaa ->

a -> výstupní slovo odpovídá vstupnímu slovu, prohlížíme vstupní slovo, dokud neskončí.

bbb -> výstupní slovo odpovídá vstupnímu slovu, prohlížíme vstupní slovo, dokud neskončí.

b -> výstupní slovo odpovídá vstupnímu slovu, prohlížíme vstupní slovo, dokud neskončí.

ab -> výstupní slovo odpovídá vstupnímu slovu, prohlížíme vstupní slovo, dokud neskončí.

Výsledek diskuse. Turingův stroj musí „rozumět“, který řetězec písmen následuje, tzn. musí mít alespoň dva stavy. Nechte stát q 1 - pohyb po řetězci písmen “ A", A q 2 - stav pohybu podél řetězce písmen “ b" Všimněte si, že řetězec může sestávat také z jednoho písmene. Pokud jsme se dostali na konec řádku ve stavu q 1 nebo q 2, tzn. se setkal A 0, stroj by se měl zastavit, zpracovali jsme celý řádek.

Zvažte následující možnosti pro zadávání slov:

bba -> abb

bbbaab -> aabbbb

aabbbaab -> aaaabbbb

Výsledek diskuse. První verzi vstupního slova lze zpracovat postupně takto: bba -> bbb-> návrat na levý konec řetězce písmen “ b” -> abb(první písmeno v tomto řetězci nahraďte „ A"). K provedení těchto akcí bude potřeba zavést dva nové stavy a navíc stav vyjasnit q 2. Abychom tento problém vyřešili, musíme sestavit Turingův stroj s následujícími stavy:

q 1 - jděte doprava podél řetězce písmen “ A" Pokud řetěz skončí A 0, pak přejděte na q 0; pokud to končí písmenem " b“, pak jdeme na q 2 ;

q 2 - jděte doprava podél řetězce písmen “ b“ pokud řetěz končí A 0, pak přejděte na q 0; pokud skončí" A“, poté nahraďte písmeno „ A"zapnuto" b“, jděte do státu q 3 (řetězec druhů byl nahrazen řetězcem druhů);

q 3 - jděte doleva podél řetězce písmen “ b“ na jeho levý konec. Pokud jste se setkali A 0 nebo " A“, pak jdeme na q 4 ;

q 4 - nahradit “ b"zapnuto" A“ a přejděte na q 1 (řetěz formuláře nahradíme řetězcem formuláře .

Problém 7

Stát q 1 - hledání pravé (nejnižší) číslice čísla;

Stát q 2 - násobení další číslice čísla 2 bez přidání 1 nést;

Stát q 3 - násobení další číslice čísla 2 s přidáním 1 nést.

Turingův stroj pro tento program vypadá triviálně jednoduše – má pouze jeden stav. Takový Turingův stroj provádí následující akce: vymaže tah úplně vpravo, hledá oddělovač (prázdnou buňku) a umístí tah do této prázdné buňky, čímž vytvoří souvislou sekvenci tahů délky n + m.

Kupodivu však řešení tohoto problému představuje velké potíže. Studenti velmi často staví Turingův stroj, který provádí cyklické akce: postupné tlačení doprava n tahy doleva.

V tomto případě jejich program vypadá takto:

Stát q 1 - hledání oddělovače;

Stát q 2 - posunul zdvih;

Stát q 3 - zkontrolujte konec (zda byly přesunuty všechny tahy).

Příklad tohoto problému jasně ukazuje, jak často se děti snaží vyřešit problém již známými způsoby. Zdá se mi, že tím, že studentům nabídneme problémy s konstrukcí Turingových strojů, rozvíjíme schopnost nacházet neobvyklá řešení a rozvíjíme schopnost kreativně myslet!

Tento úkol se školákům zdá docela snadný, ale se zastavením Turingova stroje nastávají potíže. Níže je jedna možná verze Turingova stroje pro tento úkol.

Nápad na řešení (stop stav). Na pásce jsou dvě počáteční pole zdvihů.

Začneme mazat tahy od levého konce pole m. A jeden po druhém mažeme tah úplně vlevo v poli m a tah úplně vpravo v poli n. Ale před vymazáním pravého tahu v poli n, zkontrolujeme, zda je jediný (tedy poslední, který je potřeba vymazat) nebo ne.

Nejprve si popišme stavy Turingova stroje, které jsou nutné k vyřešení našeho problému, a poté vytvořte tabulkový program.

Stát q 1 - hledání oddělovače mezi poli tahů při pohybu zprava doleva;

Stát q 2 - hledání levého tahu v poli m;

Stát q 3 - odstranění levého tahu v poli m;

Stát q 4 - hledání oddělovače při pohybu zleva doprava;

Stát q 5 - hledání správného tahu v poli n;

Stát q 6 - kontrola jedinečnosti tohoto zdvihu v poli n, tj.

Stát q určit, zda byl poslední;

7 - pokud to bylo poslední, zastavte se, jinak přejděte na nový cyklus provádění algoritmu.

Při řešení tohoto problému byste měli věnovat pozornost správnému psaní abecedy: A A = (

Stát q 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, D, A, N, E, T).

Stát q 1 - vyhledejte pravý konec čísla; q 2 - analýza nejméně významné číslice čísla; pokud se rovná „0“ nebo „5“, tj. číslo je dělitelné 5, pak přechod do stavu q 5 ;

Stát q 3 , jinak přechod do stavu

Stát q 3 - napište písmeno „D“ napravo od slova na pásce;

Stát q 4 - napište písmeno „A“ napravo od slova a zastavte stroj;

Stát q 5 - psaní písmene „N“ napravo od slova;

Stát q 6 - psaní písmene „E“ napravo od slova;

7 - napište písmeno „T“ napravo od slova a zastavte stroj.

Vlastnosti Turingova stroje jako algoritmu

Na příkladu Turingova stroje lze jasně vidět vlastnosti algoritmů. Požádejte studenty, aby ukázali, že Turingův stroj má všechny vlastnosti algoritmu. Diskrétnost. Turingův stroj může jít do ( k + 1) krok až po dokončení Na- 1) krok až po dokončení krok, protože přesně Diskrétnost. Turingův stroj může jít do ( krok určuje, co bude (

1) krok.

Jasnost. Při každém kroku se do buňky zapíše symbol z abecedy, automat udělá jeden pohyb (L, P, N) a Turingův stroj přejde do jednoho z popsaných stavů.

Determinismus. Každá buňka tabulky Turingova stroje obsahuje pouze jednu možnost pro akci. V každém kroku je jednoznačně určen výsledek, proto je jednoznačně určena posloupnost kroků pro řešení problému, tzn. Pokud Turingův stroj dostane stejné vstupní slovo, pak bude výstupní slovo pokaždé stejné. q Produktivita. Z hlediska obsahu jsou výsledky každého kroku a celá posloupnost kroků jednoznačně definovány, proto správně napsaný Turingův stroj přejde do stavu v konečném počtu kroků;

Masový charakter. Každý Turingův stroj je definován přes všechna přípustná slova z abecedy, to je vlastnost hromadného charakteru. Každý Turingův stroj je navržen tak, aby řešil jednu třídu problémů, tzn. Pro každý problém je napsán jeho vlastní (nový) Turingův stroj.

OD REDAKCE

Všechny problémy uvedené v článku lze vyřešit jednoduše v sešitě nakreslením informačního proužku a tabulkového programu. Tento proces však můžete učinit zábavnějším a vizuálnějším: použijte strojovou implementaci - interpret Post stroje a Turingova stroje „Algo2000“, který vytvořil Radik Zartdinov. Program má intuitivní rozhraní a jeho požadavky jsou nejmírnější: počítač IBM PC AT 486 nebo vyšší, operační systém Windows 95/98/NT.

Podívejme se obecně na to, jak „Algo2000“ funguje.

V nabídce programu vyberte položku Tlumočník a uveďte, se kterým strojem chceme pracovat (v našem případě se jedná o „Turingův stroj“).

Před námi se objeví pole Turingova stroje.

Nyní je potřeba nastavit externí abecedu, tzn. v souladu Externí abeceda uveďte, které znaky jsou v něm obsaženy (pokud řetězec Externí abeceda není vidět, musíte vybrat položku nabídky Zobrazit | Externí abeceda). Každý znak lze zadat pouze jednou. Po dokončení zadávání externí abecedy se vytvoří první sloupec tabulky: vyplní se znaky z externí abecedy ve stejném pořadí. Při editaci externí abecedy se tabulka automaticky změní: řádky se vloží, odstraní nebo zamění.

Nezapomeňme, že je potřeba nějak uspořádat symboly vnější abecedy do sekcí pásky (všechny sekce můžete nechat prázdné) a pojezd umístit naproti jedné z sekcí, tzn. musíte nastavit program a nějaký stav stroje.

Nyní můžete přejít přímo k psaní algoritmu pro řešení problému. Uvádí se ve formě tabulky: do každého sloupce horního řádku se zadávají znaky vnitřní abecedy a do každého řádku prvního sloupce znaky vnější abecedy. Příkazy jsou umístěny v buňkách na průsečíku dalších sloupců a řádků. Pokud na průsečíku libovolného řádku a libovolného sloupce dostaneme prázdnou buňku, znamená to, že v tomto vnitřním stavu tento symbol nelze najít.

Například vytváříme algoritmus pro nalezení rozdílu mezi dvěma kladnými celými čísly (v desítkové soustavě), pokud je známo, že první číslo je větší než druhé a je mezi nimi znaménko mínus.

Pole programu bude vypadat takto:

Formát příkazu v každé buňce je aKq. Tady:
a je nový obsah aktuální buňky (nový symbol vnější abecedy, který se zadává do aktuální buňky), K je příkaz páskového mechanismu Turingova stroje (vlevo, vpravo, stop), q je nový vnitřní stav Turingova stroje.

Tlačítko spustí program. Pokud provádění nebylo pozastaveno, začíná vždy od nulového vnitřního stavu Q0.

Program lze dokončit krok za krokem. Chcete-li to provést, klikněte na tlačítko na panelu nástrojů (pokud tlačítka nejsou viditelná, musíte vybrat položku nabídky Zobrazit | Panel nástrojů) nebo vyberte z hlavní nabídky Start | Krok za krokem. Pokud potřebujete zcela přerušit provádění programu, lze to provést pomocí tlačítka na panelu nástrojů nebo pomocí hlavního menu ( Start | Přerušit). Položka nabídky Rychlost umožňuje upravit rychlost provádění programu.

Program bude pokračovat, dokud nenarazíte na příkaz „Stop“ nebo dokud nedojde k nějaké chybě.

Máte-li nějaké dotazy při práci s překladačem, podívejte se prosím do souboru nápovědy Algo2000.hlp. Ten, stejně jako samotný program „Algo2000“, lze nalézt na stránkách deníku „Informatics“ http://inf.1september.ru v sekci „Stáhnout“.



Líbil se vám článek? Sdílej se svými přáteli!
Byl tento článek užitečný?
Ano
Ne
Děkujeme za vaši odezvu!
Něco se pokazilo a váš hlas nebyl započítán.
Děkuji. Vaše zpráva byla odeslána
Našli jste chybu v textu?
Vyberte jej, klikněte Ctrl + Enter a my vše napravíme!