O kúpeľni - Strop. Kúpeľne. Dlaždica. Vybavenie. Oprava. Inštalatérstvo

Turingov edu index php t. Turingov test. Globálny trh AI

Vidíme to neustále. “RESTful” toto, “REST” protokol, že atď. Mnohí z nás však v skutočnosti presne nechápu, čo to znamená. Presne túto medzeru opravíme v tomto článku!

Štát

V informatike (a do určitej miery aj v matematike) existuje pojem štátu. Určitý systém môže byť v stave A alebo môže byť v stave B alebo to môže byť veľa iných stavov (zvyčajne konečný zoznam stavov).

Povedzme napríklad, že napíšete program, ktorý zmení obrazovku na červenú, ak je teplota vyššia ako 80 stupňov farenheita, alebo ju zmení na modrú, ak je teplota nižšia ako 80 stupňov farenheita.

Prvý stav (teplota > 80 stupňov) môžeme nazvať stavom „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 všeobecná myšlienka štátu. Tu je definícia, ktorú poskytuje vševediaca Wikipedia:

"V informatike a teórii automatov je stav digitálneho logického obvodu alebo počítačového programu technický termín pre všetky uložené informácie v danom časovom bode, ktoré používa obvod alebo program."

V skratke ide o akúsi „kombináciu“ všetkých informácií, ktoré program zohľadňuje.

Teraz urobíme skok do niečoho, čo sa považuje do značnej miery za teoretické a zbytočné, a potom sa nejako spojíme s veľmi praktickým svetom ODPOČINKU.

Turingove stroje

Bol tam muž menom Alan Turing a bol to celkom bystrý matematik so záujmom o fungovanie počítačov. Vytvoril imaginárny počítač (ktorý, ako uvidíme, v skutočnosti nie je možné postaviť), ktorý použil na uvažovanie o veciach, ktoré sa dejú v skutočných počítačoch.

Počítač sa skladá z pásky nekonečnej dĺžky, s hlavou, cez ktorú páska prechádza. Páska má „bunky“, do ktorých je možné zapisovať informácie (čísla, farby atď.). Páska sa týmto zariadením posúva doľava alebo doprava po jednej bunke. Zariadenie naskenuje všetko, čo už je na páske, a v závislosti od toho, v akom stave sa nachádza, niečo zapíše späť na pásku a následne zmení svoj stav.

Možno si budete chcieť prečítať túto definíciu znova, aby sa do nej úplne začlenila. Podstatou myšlienky je, že robí operácie s pamäťou na základe stavu a stavy sa mení podľa operácií s pamäťou.

Vyzerá to ako celkom zbytočná teoretická fantázia (hoci na tom nie je absolútne nič zlé, prečítajte si Apology matematika, ak vás zaujíma, prečo sa ľudia zaujímajú o teoretické veci). Je to však dosť možno najzákladnejší koncept informatiky.

Pomocou Turingovho stroja sú počítačoví vedci schopní uvažovať o akomkoľvek algoritme, ktorý možno spustiť na počítači. V skutočnosti Turingov stroj viedol k mnohým pokrokom v informatike.

Turingov stroj nám teda ukazuje, že dnes (poznámka: neuvažujem o procesoroch na redukciu grafov), doslova všetko v počítačovej vede je založené na myšlienke štátu.

Sieť

Potom prišiel koncept internetu. Toto je miesto, kde sa pakety môžu pokaziť a sú znova odosielané, kým nedosiahnu svoj cieľ. Vo všeobecnosti nikdy nedochádza k úplnému prenosu úplných údajov.

Klienti prichádzajú rýchlo a odchádzajú dvakrát rýchlejšie. Držanie stavu klienta ako také nedáva veľký zmysel pri práci na sieťovom systéme.

Vo všeobecnosti bolo príliš veľa stavu v systéme príčinou veľkej bolesti (čo tiež vedie k funkčným programovacím jazykom, ktoré neumožňujú udržanie stavu vo veľkej časti vášho kódu).

Teraz ľudia potrebovali sieťový protokol pre internet, ktorý by bol jednoduchý, rýchly a dobre zvládal riadenie štátu v extrémne dynamickom prostredí.

Tým protokolom bol HTTP a teória, ktorá vyrástla z práce na HTTP, bola označená ako REST.

ODPOČINOK

REST je skratka pre: REpresentational State Transfer. Je to systém postavený na koncepte „klient-server“, na ktorom sú postavené siete (dobre, existujú aj siete typu peer-to-peer, ale klient-sever je pravdepodobne najjednoduchšia a najviac testovaná architektúra). Samotný názov je mierne zavádzajúci, pretože server je úplne bez štátu!

Existuje niekoľko obmedzení, ktoré musia dodržiavať všetky systémy, ktoré vyhlasujú, že sú „RESTful“.

V prvom rade to musieť byť systémom klient-server. Toto obmedzenie bolo v minulosti upravené, ale vo formálnej definícii (a aby teória REST fungovala správne) máme servery, ku ktorým sa môžu klienti pripojiť.

Server je plne bezstavový. To znamená, že pre každú požiadavku klienta na server nie je na serveri vyhradený žiadny stav. Napríklad, ak klient (používajúci HTTP) požiada o indexovú stránku a následne požiada o stránku /user/home, tieto dve požiadavky sú od seba úplne nezávislé. Klient drží všetky stavu systému (preto máme tlačidlo späť).

Odpovede zo servera musia byť uložiteľné do vyrovnávacej pamäte, čo znamená, že na serveri musí byť systém, ktorý identifikuje odpovede ako uložiteľné do vyrovnávacej pamäte alebo nie, aby klienti (napr. webové prehliadače) mohli využívať vyrovnávaciu pamäť.

Nakoniec musíme mať jednoduché, čisté a jednotné rozhranie. Ak máte nejaké skúsenosti s fungovaním HTTP, formuláre žiadostí sú veľmi jednoduché. Sú to prevažne slovesá a podstatné mená s veľmi ľahko analyzovateľným a ľudsky čitateľným formátom. SOAP je ďalšou formou sieťového protokolu, ktorý túto požiadavku absolútne ruší, a preto sa s ním často veľmi ťažko pracuje.

Teraz, čo všetky tieto vlastnosti, keď sa vezmú dohromady, znamenajú?

Dôsledky ODPOČINKU

Umožňujú nám vytvárať systémy, ktoré sú čisto oddelené, škálovateľné a ľahko laditeľné.

Uvažujme najskôr o obmedzení stavu bez stavu na serveri, môže to byť ten najdôležitejší (a tiež najčastejšie porušovaný takzvanými RESTful architektúrami) bit.

Ako už bolo spomenuté, v architektúre klient-server sú klienti veľmi obratní; vystrelia žiadosti a zrazu zabijú všetku komunikáciu. V takejto situácii je oveľa čistejšie neukladať stav o klientovi na serveri. To nám umožňuje veľmi jednoducho uvažovať o HTTP serveroch; s každou požiadavkou klienta sa môže zaobchádzať, ako keby išlo o úplne nového klienta, a neznamenalo by to ani cent rozdielu.

Po druhé, odpovede uložené vo vyrovnávacej pamäti znamenajú, že klienti sú schopní získať údaje oveľa rýchlejšie, pretože často je možné údaje získať z pamäte klienta. To okamžite zvyšuje výkon klienta a v niektorých systémoch aj škálovateľnosť servera.

Jednotné rozhranie môže byť najdôležitejšie. Po spolupráci so SOAP vám môžem povedať, že jednoduchý formát HTTP je požehnaním pri pokuse o ladenie kódu servera a to isté platí pre iné systémy RESTful.

Navrhovanie RESTful systému

Povedzme, že potrebujeme napísať server, ktorý bude vracať ceny akcií, ako aj uchovávať zoznam akcií na monitorovanie (a používateľ môže zoznam pridať alebo vymazať).

Toto je vynikajúci prípad pre systém RESTful, pretože je vo svojej podstate nezávislý od identity klienta. Preto server nemusí mať žiadny stav o klientovi.

Najprv začneme definovaním toho, ako bude jazyk protokolu fungovať (niečo ako slovesá GET a POST HTTP):

ZÍSKAŤ KNÚT ticker- udáva cenu za konkrétnu akciu
ADDTICKER ticker- pridá danú zásobu do zoznamu
GETLIST - získa čiarkami oddelený zoznam akcií v zozname

Je to pomerne jednoduchý protokol a na serveri nemá žiadny stav. Teraz, čo sa týka ukladania do vyrovnávacej pamäte, môžeme povedať, že ceny aktualizujeme každú hodinu, takže kešky staršie ako jednu hodinu môžu byť vyhodené.

A to je všetko! Samozrejme, stále to musíme implementovať, ale všeobecná myšlienka systému je celkom jednoduchá a čistá!

Záver

Dúfajme, že tento článok vám dal solídne pochopenie REST.

Tiež dúfam, že teraz budete môcť osloviť ľudí, ktorí príliš veľa hádžu výrazom „RESTful“ – môžem vám povedať, že ich je veľa!

Turingov test, ktorý navrhol Alan Turing, bol vyvinutý ako uspokojivá funkčná definícia inteligencie. Turing sa rozhodol, že nemá zmysel vyvíjať rozsiahly zoznam požiadaviek na vytvorenie umelej inteligencie, ktoré by si mohli aj protirečiť, a navrhol test založený na skutočnosti, že správanie objektu s umelou inteligenciou bude v konečnom dôsledku na nerozoznanie od správanie takých nepopierateľne inteligentných entít, akými sú ľudské bytosti. Počítač prejde týmto testom, ak ľudský experimentátor, ktorý mu kladie písomné otázky, nedokáže určiť, či sú písomné odpovede od inej osoby alebo z nejakého zariadenia.

Vyriešenie problému s napísaním programu pre počítač, aby prešiel týmto testom, si vyžaduje veľa práce. Takto naprogramovaný počítač musí mať tieto schopnosti:

  • Vybavenie spracovanie textu v prirodzenom jazyku(Natural Language Processing - NLP), umožňujúci úspešnú komunikáciu s počítačom, povedzme v angličtine.
  • Vybavenie reprezentácia znalostí, pomocou ktorej môže počítač zapisovať do pamäte to, čo sa naučí alebo prečíta.
  • Vybavenie automatické generovanie logických záverov, poskytujúce možnosť použiť uložené informácie na nájdenie odpovedí na otázky a vyvodenie nových záverov.
  • Vybavenie strojové učenie, ktoré vám umožňujú prispôsobiť sa novým okolnostiam, ako aj odhaliť a extrapolovať znaky štandardných situácií.

V Turingovom teste je priama fyzická interakcia medzi experimentátorom a počítačom zámerne vylúčená, keďže na vytvorenie umelej inteligencie nie je potrebná fyzická imitácia človeka. Ale v tzv kompletný Turingov test použitie video signálu je zabezpečené tak, aby experimentátor mohol otestovať percepčné schopnosti testovaného objektu a tiež mal možnosť prezentovať fyzické objekty „v neúplnej forme“ (prechádzať ich „tieňovaním“). Aby počítač prešiel úplným Turingovým testom, musí mať nasledujúce schopnosti:

  • Strojové videnie pre vnímanie predmetov.
  • Vybavenie robotické na manipuláciu s predmetmi a pohyb v priestore.

Šesť výskumných oblastí uvedených v tejto časti tvorí väčšinu umelej inteligencie a Turing si zaslúži naše poďakovanie za poskytnutie testu, ktorý je relevantný aj o 50 rokov neskôr. Výskumníci umelej inteligencie sa však prakticky nezaoberajú problémom absolvovania Turingovho testu a veria, že je oveľa dôležitejšie študovať základné princípy inteligencie, než duplikovať jedného z nositeľov prirodzenej inteligencie. Najmä problém „umelého letu“ bol úspešne vyriešený až potom, čo bratia Wrightovci a ďalší výskumníci prestali napodobňovať vtáky a začali študovať aerodynamiku. Vo vedeckých a technických prácach o letectve nie je cieľ tejto oblasti poznania definovaný ako „vytvorenie strojov, ktoré sa pri lete tak podobajú holubom, že dokážu oklamať aj skutočné vtáky“.

Pravdepodobne dnes neexistuje človek, ktorý by aspoň raz nepočul o takom koncepte, akým je test Alana Turinga. Väčšina ľudí má pravdepodobne ďaleko od toho, aby pochopila, čo je to taký testovací systém. Poďme sa mu preto venovať trochu podrobnejšie.

Čo je Turingov test: základný koncept

Koncom 40. rokov minulého storočia sa veľa vedeckých myslí zaoberalo problémami prvého vývoja počítačov. Práve vtedy si jeden z členov istej mimovládnej skupiny Ratio Club, zaoberajúcej sa výskumom v oblasti kybernetiky, položil úplne logickú otázku: je možné vytvoriť stroj, ktorý by myslel ako človek, alebo aspoň napodobňovať jeho správanie?

Musím povedať, kto vynašiel Turingov test? Zjavne nie. Počiatočným základom celého konceptu, ktorý je aktuálny aj dnes, bol nasledujúci princíp: bude človek po určitom čase komunikácie s nejakým neviditeľným partnerom na úplne iné ľubovoľné témy schopný určiť, kto je pred ním - skutočná osoba alebo stroj? Inými slovami, otázkou nie je len to, či stroj dokáže napodobniť správanie skutočnej osoby, ale aj to, či dokáže sám myslieť. táto otázka je stále kontroverzná.

História stvorenia

Vo všeobecnosti, ak Turingov test považujeme za akýsi empirický systém na určenie „ľudských“ schopností počítača, stojí za to povedať, že nepriamym základom pre jeho vytvorenie boli kuriózne výroky filozofa Alfreda Ayera, ktoré sformuloval ešte v roku 1936.

Sám Ayer takpovediac porovnával životné skúsenosti rôznych ľudí a na základe toho vyslovil názor, že bezduchý stroj by nedokázal prejsť žiadnou skúškou, keďže nedokázal myslieť. V najlepšom prípade to bude čistá imitácia.

V princípe je to takto. Len napodobňovanie nestačí na vytvorenie mysliaceho stroja. Mnoho vedcov uvádza príklad bratov Wrightovcov, ktorí postavili prvé lietadlo a opustili tendenciu napodobňovať vtáky, čo bolo mimochodom charakteristické pre takého génia, akým bol Leonardo da Vinci.

Istria mlčí, či on sám (1912-1954) vedel o týchto postulátoch, ale v roku 1950 zostavil celý systém otázok, ktoré mohli určiť stupeň „humanizácie“ stroja. A treba povedať, že tento vývoj stále patrí k tým zásadným, aj keď len pri testovaní napríklad počítačových botov a pod. V skutočnosti sa princíp ukázal byť taký, že Turingov test obstálo len máloktorý program. . A potom sa „vyhovuje“ hovorí s veľkým dôrazom, pretože výsledok testu nikdy nemal ukazovateľ 100 percent, v najlepšom prípade - o niečo viac ako 50.

Na úplnom začiatku svojho výskumu použil vedec vlastný vynález. Volal sa Turingov testovací stroj. Keďže všetky konverzácie mali byť zadávané výlučne v tlačenej podobe, vedec si stanovil niekoľko základných smerníc pre písanie odpovedí, ako je posun tlačovej pásky doľava alebo doprava, vytlačenie konkrétneho znaku atď.

Programy ELIZA a PARRY

Postupom času sa programy stali zložitejšími a dva z nich v situáciách, keď bol aplikovaný Turingov test, vykazovali v tom čase ohromujúce výsledky. Boli to ELIZA a PARRY.

Čo sa týka „Elizy“, vytvorenej v roku 1960: na základe otázky mal stroj určiť kľúčové slovo a na základe neho vytvoriť spätnú odpoveď. To umožnilo oklamať skutočných ľudí. Ak takéto slovo neexistovalo, stroj vrátil zovšeobecnenú odpoveď alebo zopakoval jednu z predchádzajúcich. Priechod Eliza testu je však stále otázny, keďže skutoční ľudia, ktorí s programom komunikovali, boli spočiatku psychologicky pripravení tak, že si vopred mysleli, že sa rozprávajú s človekom a nie so strojom.

Program PARRY je trochu podobný ako Eliza, ale bol vytvorený na simuláciu komunikácie paranoidnej osoby. Najzaujímavejšie je, že na testovanie sa použili skutoční klinickí pacienti. Po zaznamenaní prepisov rozhovorov pomocou ďalekopisu ich posúdili profesionálni psychiatri. Len v 48 percentách prípadov dokázali správne posúdiť, kde sa nachádza človek a kde stroj.

Okrem toho takmer všetky programy tej doby fungovali s prihliadnutím na určité časové obdobie, pretože človek v tých dňoch myslel oveľa rýchlejšie ako stroj. Teraz je to naopak.

Superpočítače Deep Blue a Watson

Vývoj korporácie IBM vyzeral celkom zaujímavo, nielen mysleli, ale mali neuveriteľný výpočtový výkon.

Veľa ľudí si zrejme pamätá, ako v roku 1997 vyhral superpočítač Deep Blue 6 šachových partií proti vtedy aktuálnemu svetovému šampiónovi Garrymu Kasparovovi. V skutočnosti je Turingov test na tento stroj veľmi podmienene použiteľný. Ide o to, že spočiatku obsahoval veľa herných šablón s neuveriteľným množstvom interpretácií vývoja udalostí. Stroj dokázal vyhodnotiť asi 200 miliónov pozícií dielikov na hracej ploche za sekundu!

Počítač Watson, pozostávajúci z 360 procesorov a 90 serverov, vyhral americkú televíznu hernú show, keď vo všetkých ohľadoch prekonal ostatných dvoch účastníkov, za čo v skutočnosti dostal bonus 1 milión dolárov. Otázka je opäť sporná, pretože stroj bol nabitý neuveriteľným množstvom encyklopedických údajov a stroj jednoducho analyzoval otázku na prítomnosť kľúčového slova, synoným alebo všeobecných zhôd a potom dal správnu odpoveď.

Emulátor Eugena Goostmana

Jedným z najzaujímavejších vývojov v tejto oblasti bol program obyvateľa Odesy Jevgenija Gustmana a ruského inžiniera Vladimira Veselova, teraz žijúceho v Spojených štátoch, ktorý napodobňoval osobnosť 13-ročného chlapca.

7. júna 2014 program Eugene ukázal svoje plné schopnosti. Zaujímavosťou je, že testovania sa zúčastnilo 5 robotov a 30 reálnych ľudí. Len v 33 % prípadov zo sto dokázala porota určiť, že ide o počítač. Ide o to, že úlohu skomplikovala skutočnosť, že dieťa má nižšiu inteligenciu ako dospelý a menej vedomostí.

Otázky Turingovho testu boli najvšeobecnejšie, Eugene však mal aj niekoľko špecifických otázok o udalostiach v Odese, ktoré si žiadny obyvateľ nemohol nevšimnúť. Ale odpovede ma aj tak nútili myslieť si, že porota bola dieťa. Napríklad na otázku o mieste bydliska program odpovedal okamžite. Keď bola položená otázka, či bol spolubesedník v meste v taký a taký dátum, program uviedol, že o tom nechce hovoriť. Keď sa účastník rozhovoru pokúsil trvať na rozhovore v súlade s tým, čo sa presne v ten deň stalo, Eugene sa zaprel tým, že povedal, že by ste sami mali vedieť, prečo sa ho pýtať? Vo všeobecnosti sa emulátor dieťaťa ukázal ako mimoriadne úspešný.

Toto je však stále emulátor, nie mysliaci tvor. Takže strojové povstanie sa neudeje ešte veľmi dlho.

ale na druhej strane

Na záver ostáva dodať, že zatiaľ neexistujú žiadne predpoklady na vytváranie mysliacich strojov v blízkej budúcnosti. Ak sa však predchádzajúce problémy s rozpoznávaním týkali konkrétne strojov, teraz musí takmer každý z nás dokázať, že nie ste stroj. Stačí sa pozrieť na zadanie captcha na internete, aby ste získali prístup k nejakej akcii. Doteraz sa verí, že ešte nebolo vytvorené jediné elektronické zariadenie, ktoré by dokázalo rozpoznať skreslený text alebo súbor znakov, s výnimkou osoby. Ale ktovie, všetko je možné...

TURING

TURING(Turing) Alan (1912-54), anglický matematik a logik, ktorý formuloval teórie, ktoré sa neskôr stali základom výpočtovej techniky. V roku 1937 prišiel s Turingov stroj - hypotetický stroj schopný transformovať súbor vstupných príkazov. Bol to predchodca moderných počítačov. Turing tiež použil myšlienku počítača, aby poskytol alternatívny a jednoduchší dôkaz Gödelovej vety o neúplnosti. Turing zohral hlavnú úlohu pri riešení Enigmy, komplexnej šifrovacej metódy používanej Nemeckom počas druhej svetovej vojny. V roku 1948 sa podieľal na vytvorení jedného z prvých počítačov na svete. V roku 1950 prišiel s Turingov test - mal to byť test schopnosti počítača „myslieť“. V podstate sa v ňom uvádzalo, že človek nebude schopný rozlíšiť dialóg so strojom od dialógu s inou osobou. Táto práca vydláždila cestu k vytvoreniu UMELEJ INTELIGENCIE. Turing sa zaoberal aj teoretickou biológiou. Prebieha "Chemický základ morfogenézy"(1952) navrhol model opisujúci pôvod rôznych štruktúrnych vzorcov organizmov v biológii. Odvtedy sa takéto modely často používajú na opis a vysvetlenie mnohých systémov pozorovaných v prírode. Turing spáchal samovraždu po tom, čo bol oficiálne obvinený z homosexuality.


Vedecko-technický encyklopedický slovník.

Pozrite sa, čo je „TURING“ v iných slovníkoch:

    Turing, Alan Mathison Alan Turing Pamätník Alan Mathison Turing v parku Sackville Dátum narodenia ... Wikipedia

    - (Turing) Alan Mathieson (1912 54), anglický matematik. V rokoch 1936-1937 zaviedol matematický koncept abstraktného ekvivalentu algoritmu alebo vyčísliteľnej funkcie, ktorý sa potom nazýval Turingov stroj... Moderná encyklopédia

    - (Turing), Alan Matheson (23. 6. 1912 - 7. 6. 1954) - angl. logik a matematik. V rokoch 1936–37 navrhol idealizovaný výpočtový model stroja. proces - výpočtová schéma blízka činnostiam osoby, ktorá vykonáva výpočty, a predložená... ... Filozofická encyklopédia

    Turing A.- Turing A. anglický matematik. Témy informačná bezpečnosť SK Turing… Technická príručka prekladateľa

    Alan Turing Pamätník Alana Turinga v Sackville Park Dátum narodenia: 23. jún 1912 Miesto narodenia: Londýn, Anglicko Dátum úmrtia: 7. jún 1954 ... Wikipedia

    Turing- Anglický matematik Alan M. Turing, jeden z tvorcov logických základov výpočtovej techniky, konkrétne uviedol jednu z formálnych definícií algoritmu; dokázal, že existuje trieda počítačov, ktoré dokážu simulovať... ... Lemov svet – slovník a sprievodca

    - (Turing) Alan Mathieson (23.6.1912, Londýn, 7.6.1954, Wilmslow, pri Manchestri), anglický matematik. Člen Kráľovskej spoločnosti (1951). Po absolvovaní Cambridgeskej univerzity (1935) pracoval na doktorandskej dizertačnej práci na Princetone... ... Veľká sovietska encyklopédia

    Turing A.M.- TURING (Turing) Alan Mathieson (191254), angl. matematik. Základné tr. v matematike logika, počíta. matematiky. V roku 193637 zaviedol matematiku. potom sa nazýva pojem abstraktného ekvivalentu algoritmu alebo vyčísliteľnej funkcie. auto T... Biografický slovník

    - (úplný názov Alan Mathison Turing) (23. júna 1912, Londýn 7. júna 1954, Wilmslow, Spojené kráľovstvo), britský matematik, autor prác o matematickej logike a výpočtovej matematike. V rokoch 1936-1937 zaviedol matematický pojem... encyklopedický slovník

knihy

  • Dokáže stroj myslieť? Všeobecná a logická teória automatov. Vydanie 14, Turing A., Táto kniha, obsahujúca diela Alana Turinga a Johna von Neumanna, ktorí stáli pri zrode prvých mysliacich počítačov, patrí ku klasike filozoficko-kybernetického... Kategória: Databázy Séria: Umelé vedy Vydavateľstvo: URSS, Výrobca: URSS,
  • Dokáže stroj myslieť? Všeobecná a logická teória automatov. Vydanie č. 14, Turing A., Táto kniha, obsahujúca diela Alana Turinga a Johna von Neumanna, ktorí stáli pri zrode prvých „mysliacich strojov“ počítačov, patrí ku klasike filozoficko-kybernetického smer... Kategória:

Téma „Turingov stroj“ v školskom kurze informatiky

I.N. Falina,
Moskva

V mnohých učebniciach informatiky sa pri štúdiu konceptu a vlastností algoritmu vyskytujú frázy s nasledujúcim obsahom: „... existuje veľa rôznych spôsobov, ako napísať rovnaký algoritmus, napríklad písanie vo forme textu, písanie vo forme vývojového diagramu, písanie v nejakom algoritmickom jazyku, reprezentácia algoritmu vo forme Turingovho stroja alebo Post stroja...“ Bohužiaľ, tieto typy fráz sú jediné, ktoré spomínajú Turingov stroj. Objem hodín venovaných štúdiu algoritmov nám nepochybne neumožňuje zahrnúť do tejto témy aj štúdium spôsobov, ako napísať algoritmus vo forme Turingovho stroja. Ale táto téma je mimoriadne zaujímavá, dôležitá a užitočná pre školákov, najmä tých, ktorí sa zaujímajú o informatiku.

Tému „Turingov stroj“ je možné študovať v 8. – 11. ročníku v rámci témy „Informačné procesy. Spracovanie informácií“, vo výberových triedach, v systéme doplnkového vzdelávania, napríklad v školách pre mladých programátorov. Štúdium tejto témy môže byť sprevádzané počítačovou podporou, ak má učiteľ softvérový simulátor „Turing Machine“. Na pokročilých hodinách programovania môžu študenti samostatne napísať program Turingovho stroja. V rámci tohto článku vám ponúkame workshop na riešenie problémov na tému „Turingov stroj“. Teoretický materiál k tejto téme už viackrát vyšiel na stránkach Informatických novín, napr. v č.3/2004 článok I.N. Falina „Prvky teórie algoritmov“.

Stručný teoretický materiál

Turingov stroj je prísna matematická konštrukcia, matematický aparát (podobný napr. aparátu diferenciálnych rovníc), vytvorený na riešenie určitých problémov. Tento matematický aparát bol nazvaný „stroj“ z toho dôvodu, že z hľadiska popisu jeho súčastí a činnosti je podobný počítaču. Základný rozdiel medzi Turingovým strojom a počítačmi je v tom, že jeho úložným zariadením je nekonečná páska: v skutočných počítačoch môže byť úložné zariadenie také veľké, ako chcete, ale musí byť konečné. Turingov stroj nie je možné realizovať práve preto, že jeho páska je nekonečná. V tomto zmysle je výkonnejší ako akýkoľvek výpočtový stroj.

Každý Turingov stroj má dve časti:

1)neobmedzené spiatočná cesta stuha, rozdelené na bunky;

2) stroj(čítacia/zápisová hlava riadená softvérom).

Každý Turingov stroj je spojený s dve záverečné abecedy: abeceda vstupných symbolov A = (a 0 , a 1 , ..., a m ) a abeceda stavov Q = (q 0, q 1, ..., q p ). (Rôzne Turingove stroje môžu mať priradené rôzne abecedy A A Q.) Stav q 0 sa nazýva pasívny. Predpokladá sa, že ak sa stroj dostane do tohto stavu, potom dokončil svoju prácu. Stav q 1 sa volá počiatočné. V tomto stave stroj začína svoju prácu.

Vstupné slovo je umiestnené na páske po jednom písmene v po sebe nasledujúcich bunkách. Naľavo a napravo od vstupného slova sú iba prázdne bunky (v abecede A vždy obsahuje prázdne písmeno A 0 znamená, že bunka je prázdna).

Stroj sa môže pohybovať po páske doľava alebo doprava, čítať obsah buniek a zapisovať do buniek písmená. Nižšie je schematický nákres Turingovho stroja, ktorého automat skúma prvú bunku s údajmi.

Stroj zakaždým „vidí“ iba jednu bunku. Podľa toho aké písmeno ai vidí, a tiež v závislosti od jeho stavu qj Stroj môže vykonávať nasledujúce akcie:

  • · napísať nové písmeno do pozorovanej bunky;
  • · posunúť pásku o jednu bunku doprava/doľava alebo zostať nehybná;
  • · prejsť do nového stavu.

To znamená, že Turingov stroj má tri typy operácií. Zakaždým pre ďalší pár ( q j, a i) Turingov stroj vykoná príkaz pozostávajúci z troch operácií s určitými parametrami.

Program Turingovho stroja je tabuľka s príkazom napísaným v každej bunke.

Bunka ( q j, a i) určujú dva parametre – symbol abecedy a stav stroja. Príkaz je indikáciou: kam presunúť čítaciu/zapisovaciu hlavu, aký znak zapísať do aktuálnej bunky, do akého stavu má stroj prejsť. Na označenie smeru pohybu stroja používame jedno z troch písmen: „L“ (vľavo), „P“ (vpravo) alebo „N“ (stacionárne).

Keď stroj vykoná ďalší príkaz, prejde do stavu q m(ktorý sa v konkrétnom prípade môže zhodovať s predchádzajúcim stavom q j). Ďalší príkaz by sa mal nachádzať v m riadok tabuľky na priesečníku so stĺpcom a l(list a l stroj vidí po zmene).

Dohodnime sa, že keď páska obsahuje vstupné slovo, potom je stroj umiestnený oproti nejakej bunke v stave q 1. Automat bude počas prevádzky skákať z jednej bunky programu (tabuľky) na druhú, až kým nedosiahne bunku, v ktorej je napísané, že automat má prejsť do stavu q 0 Tieto bunky sú tzv zastavovacie bunky. Po dosiahnutí akejkoľvek takejto bunky Turingov stroj zastaví.

Napriek svojmu jednoduchému dizajnu môže Turingov stroj vykonávať všetky možné transformácie slov, čím implementuje všetky možné algoritmy.

Príklad. Musíte postaviť Turingov stroj, ktorý k číslu na páske pridá jednotku. Vstupné slovo pozostáva z desiatkových celých číslic zapísaných do po sebe nasledujúcich buniek na páske. V počiatočnom momente je stroj umiestnený oproti číslici úplne vpravo.

Riešenie. Zariadenie musí pridať jednu k poslednej číslici čísla. Ak je posledná číslica 9, nahraďte ju 0 a pridajte jednu k predchádzajúcej číslici. Program pre daný Turingov stroj môže vyzerať takto:

V tomto Turingovom stroji q 1-miestny stav zmeny, q 0 - stav zastavenia. Ak môžeš q l stroj vidí číslo 0..8, potom ho podľa toho nahradí 1..9 a prejde do stavu q 0, t.j. auto zastaví. Ak vidí číslo 9, nahradí ho 0, presunie sa doľava a zostane v stave q l. Toto pokračuje, kým stroj nenarazí na číslo menšie ako 9. Ak sa všetky čísla rovnajú 9, potom ich nahradí nulami, napíše 0 na miesto najvyššej číslice, posunie sa doľava a napíše 1 do prázdnej bunky. Potom to prejde do stavu q 0, t.j. sa zastaví.

Praktické úlohy

1. Páska Turingovho stroja obsahuje sekvenciu symbolov „+“. Napíšte program pre Turingov stroj, ktorý nahradí každý druhý symbol „+“ znakom „–“. Nahradenie začína od pravého konca sekvencie. Stroj je schopný q 1 sa pozrie na jeden zo znakov v určenom poradí. Okrem samotného tabuľkového programu popíšte slovami, čo stroj vykonáva v každom stave.

2. Dané číslo n v osmičkovej číselnej sústave. Navrhnite Turingov stroj, ktorý zvýši dané číslo n na 1. Stroj je schopný q 1 sa pozrie na určitú číslicu vstupného slova. Okrem samotného tabuľkového programu popíšte slovami, čo stroj vykonáva v každom stave.

3. Vzhľadom na desiatkový zápis prirodzeného čísla n> 1. Vyviňte Turingov stroj, ktorý by zredukoval dané číslo n na 1. Stroj je schopný q 1 sa pozrie na pravú číslicu čísla. Okrem samotného tabuľkového programu popíšte slovami, čo stroj vykonáva v každom stave.

4. Dané prirodzené číslo n> 1. Vyviňte Turingov stroj, ktorý by zredukoval dané číslo n o 1, pričom najvýznamnejšia číslica vo výstupnom slove by nemala byť 0. Napríklad, ak vstupné slovo bolo „100“, potom výstupné slovo by malo byť „99“, nie „099“. Stroj je schopný q 1 sa pozrie na pravú číslicu čísla. Okrem samotného tabuľkového programu popíšte slovami, čo stroj vykonáva v každom stave.

5. Dané pole otváracích a zatváracích zátvoriek. Zostavte Turingov stroj, ktorý by odstránil dvojice vzájomných zátvoriek, t.j. umiestnené v riadku „()“.

Napríklad, ak zadáte „“) (() (()“, musíte získať „“) ... ((“.

Stroj je schopný q

6. Daný reťazec písmen “ a"A" b" Vyviňte Turingov stroj, ktorý bude pohybovať všetkými písmenami “ a"vľavo a písmená" b” - na pravú stranu riadku. Stroj je schopný q 1 sa pozrie na znak úplne vľavo v riadku. Okrem samotného tabuľkového programu opíšte slovami, čo stroj v jednotlivých stavoch vykonáva.

7. Na páske Turingovho stroja je číslo napísané v desiatkovej číselnej sústave. Vynásobte toto číslo 2. Stroj je schopný q 1 sa pozerá na ľavú číslicu čísla. Okrem samotného tabuľkového programu popíšte slovami, čo stroj vykonáva v každom stave.

8. Sú dané dve prirodzené čísla m A n, prezentované v unárnej číselnej sústave. Zodpovedajúce znakové sady sú „|“ oddelené prázdnou bunkou. Stroj je schopný q 1 sa pozrie na znak úplne vpravo vo vstupnej sekvencii. Vyviňte Turingov stroj, ktorý zanechá na páske súčet čísel m A n. Okrem samotného tabuľkového programu opíšte slovami, čo stroj v jednotlivých stavoch vykonáva.

9. Sú dané dve prirodzené čísla m A n, prezentované v unárnej číselnej sústave. Zodpovedajúce znakové sady sú „|“ oddelené prázdnou bunkou. Stroj je schopný q 1 sa pozrie na znak úplne vpravo vo vstupnej sekvencii. Vyviňte Turingov stroj, ktorý zanechá rozdiel medzi číslami na páske. m A n. To je známe m> n. Okrem samotného tabuľkového programu popíšte slovami, čo stroj vykonáva v každom stave.

10. Na páske Turingovho stroja je desatinné číslo. Určte, či je toto číslo bezo zvyšku deliteľné 5. Ak je deliteľné, napíšte slovo „áno“ napravo od čísla, inak - „nie“. Stroj skúma určitú číslicu zadaného čísla. Okrem samotného tabuľkového programu popíšte slovami, čo stroj vykonáva v každom stave.

Riešenia problémov

Schopný q 1 stroj hľadá pravý koniec čísla, schopný q 2 - preskočí znamienko „+“, keď sa dostane na koniec sekvencie - zastaví sa. Schopný q 3, stroj nahradí znamienko „+“ znamienkom „–“ a keď dosiahne koniec sekvencie, zastaví sa.

Riešenie tohto problému je podobné ako v príklade diskutovanom vyššie.

Štát q 1 - znížime najnižšiu (nasledujúcu) číslicu o 1. Ak sa nerovná nule, tak hneď po znížení prestaneme, ak je najnižšia číslica 0, tak namiesto nej napíšeme 9, posunieme doľava a znova vykonáme odčítanie; . V klietke [ a 0 , q 1] Turingov stroj nikdy nezasiahne, takže môže zostať nenaplnený.

Úloha 4 (komplikácia úlohy 3)

Štát q 1 - vedľajšiu (nasledujúcu) číslicu zmenšíme o 1. Ak je väčšia ako 1, tak po zmenšení okamžite prestaneme, ale ak je vedľajšia číslica 0, tak napíšeme 9, posunieme doľava a vykonáme odčítanie znova. Ak je zmenšovaná číslica 1, napíšeme namiesto nej 0 a prejdeme do stavu q 2 .

Štát q 2 - po napísaní „0“ na ľubovoľnú pozíciu je potrebné analyzovať, či je táto nula najvýznamnejšou číslicou (t. j. či je naľavo od nej vo výstupnom zázname slova a 0).

Štát q 3 - ak je zaznamenaná „0“ najvýznamnejšia číslica, musí sa odstrániť zo záznamu výstupného slova.

Tie bunky, do ktorých sa Turingov stroj nikdy nedostane, zostanú prázdne.

Štát q 1: ak sa vyskytne „(“, posuňte sa doprava a prejdite do stavu q 2; ak ste sa stretli" a 0“, potom zastavte.

Štát q 2: analýza symbolu „(“ pre párovanie, v prípade párovania by mali vidieť „“)“. Ak je to parná miestnosť, vráťte sa doľava a prejdite do stavu q 3 .

Štát q 3: najprv vymažte „(“, potom „“)“ a prejdite na q 1 .

Riešenie tohto problému zvyčajne spôsobuje ťažkosti školákom. Pri analýze riešenia tohto problému môžete postupovať napríklad nasledujúcim spôsobom.

Prezrite si so svojimi študentmi nasledujúce možnosti vstupných slov a požiadajte ich, aby sformulovali, čo by mal Turingov stroj robiť, ako vyzerá výstupné slovo a ako sa tieto možnosti líšia z pohľadu Turingovho stroja:

aaa ->

a -> výstupné slovo sa zhoduje so vstupným slovom, prechádzame cez vstupné slovo, kým neskončí.

bbb -> výstupné slovo sa zhoduje so vstupným slovom, prechádzame cez vstupné slovo, kým neskončí.

b -> výstupné slovo sa zhoduje so vstupným slovom, prechádzame cez vstupné slovo, kým neskončí.

ab -> výstupné slovo sa zhoduje so vstupným slovom, prechádzame cez vstupné slovo, kým neskončí.

Výsledok diskusie. Turingov stroj musí „pochopiť“, ktorý reťazec písmen nasleduje, t.j. musí mať aspoň dva stavy. Nech štát q 1 - pohyb pozdĺž reťazca písmen “ a", A q 2 - stav pohybu pozdĺž reťazca písmen “ b" Upozorňujeme, že reťaz môže pozostávať aj z jedného písmena. Ak sme sa dostali na koniec riadku v stave q 1 alebo q 2, t.j. stretol a 0, stroj by sa mal zastaviť, spracovali sme celý riadok.

Zvážte nasledujúce možnosti zadávania slov:

bba -> abb

bbbaab -> aabbbb

aabbbaab -> aaaabbbb

Výsledok diskusie. Prvá verzia vstupného slova môže byť spracovaná postupne takto: bba -> bbb-> návrat na ľavý koniec reťaze písmen “ b” -> abb(prvé písmeno v tomto reťazci nahraďte „ a"). Na vykonanie týchto akcií budeme musieť zaviesť dva nové stavy a navyše stav objasniť q 2. Aby sme tento problém vyriešili, musíme postaviť Turingov stroj s nasledujúcimi stavmi:

q 1 - choďte doprava pozdĺž reťazca písmen “ a" Ak reťaz končí a 0, potom prejdite na q 0; ak to končí písmenom „ b“, potom ideme na q 2 ;

q 2 - choďte doprava pozdĺž reťazca písmen “ b“ ak reťaz končí a 0, potom prejdite na q 0; ak skončí “ a“, potom nahraďte písmeno „ a"zapnuté" b“, prejdite do štátu q 3 (reťazec druhov bol nahradený reťazcom druhov);

q 3 - choďte doľava pozdĺž reťazca písmen “ b“ na jeho ľavý koniec. Ak ste sa stretli a 0 alebo “ a“, potom ideme na q 4 ;

q 4 - nahradiť “ b"zapnuté" a“ a prejdite na q 1 (reťazec formulára nahradíme reťazou formulára .

Problém 7

štát q 1 - vyhľadajte pravú (najnižšiu) číslicu čísla;

štát q 2 - násobenie nasledujúcej číslice čísla 2 bez pridania 1 prenosu;

štát q 3 - násobenie ďalšej číslice čísla 2 s pridaním 1 niesť.

Turingov stroj pre tento program vyzerá triviálne jednoducho – má len jeden stav. Takýto Turingov stroj vykonáva nasledujúce činnosti: vymaže ťah úplne vpravo, hľadá oddeľovač (prázdnu bunku) a umiestni ťah do tejto prázdnej bunky, čím vytvorí súvislú sekvenciu ťahov dĺžky. n + m.

Je však zvláštne, že riešenie tohto problému spôsobuje veľké ťažkosti. Študenti veľmi často stavajú Turingov stroj, ktorý vykonáva cyklické akcie: postupne tlačiť doprava nťahy doľava.

V tomto prípade ich program vyzerá takto:

štát q 1 - hľadanie oddeľovača;

štát q 2 - posunul zdvih;

štát q 3 - skontrolujte koniec (či boli všetky ťahy posunuté).

Príklad tohto problému jasne ukazuje, ako často sa deti pokúšajú vyriešiť problém už známymi spôsobmi. Zdá sa mi, že tým, že študentom ponúkneme problémy s konštruovaním Turingových strojov, rozvíjame schopnosť nachádzať nezvyčajné riešenia a rozvíjame schopnosť kreatívne myslieť!

Táto úloha sa školákom zdá celkom jednoduchá, no pri zastavení Turingovho stroja vznikajú ťažkosti. Nižšie je uvedená jedna možná verzia Turingovho stroja pre túto úlohu.

Nápad na riešenie (stop stav). Na páske sú dve počiatočné polia ťahov.

Začneme vymazávať ťahy z ľavého konca poľa m. A jeden po druhom vymažeme ťah úplne vľavo v poli m a ťah úplne vpravo v poli n. Ale pred vymazaním pravého ťahu v poli n, skontrolujeme, či je jediný (t. j. posledný, ktorý treba vymazať) alebo nie.

Najprv si popíšme stavy Turingovho stroja, ktoré sú potrebné na vyriešenie nášho problému, a potom vytvoríme tabuľkový program.

Štát q 1 - hľadanie oddeľovača medzi poľami ťahov pri pohybe sprava doľava;

štát q 2 - hľadanie ľavého ťahu v poli m;

štát q 3 - odstránenie ľavého ťahu v poli m;

štát q 4 - hľadanie oddeľovača pri pohybe zľava doprava;

štát q 5 - vyhľadajte správny ťah v poli n;

štát q 6 - kontrola jedinečnosti tohto zdvihu v poli n, t.j. určiť, či to bolo posledné;

štát q 7 - ak to bolo posledné, zastavte, inak prejdite na nový cyklus vykonávania algoritmu.

Pri riešení tohto problému by ste mali venovať pozornosť správnemu písaniu abecedy:

A = ( a 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, D, A, N, E, T).

Štát q 1 - vyhľadajte pravý koniec čísla;

štát q 2 - analýza najmenej významnej číslice čísla; ak sa rovná „0“ alebo „5“, t.j. číslo je deliteľné 5, potom prechod do stavu q 3, inak prechod do stavu q 5 ;

štát q 3 - napíšte písmeno „D“ napravo od slova na pásku;

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

štát q 5 - písanie písmena „N“ napravo od slova;

štát q 6 - písanie písmena „E“ napravo od slova;

štát q 7 - napíšte písmeno „T“ napravo od slova a zastavte stroj.

Vlastnosti Turingovho stroja ako algoritmu

Na príklade Turingovho stroja je možné jasne vidieť vlastnosti algoritmov. Požiadajte študentov, aby ukázali, že Turingov stroj má všetky vlastnosti algoritmu.

Diskrétnosť. Turingov stroj môže ísť do ( k + 1) krok až po dokončení do- krok, pretože presne tak do- krok určuje, čo bude ( k + 1) krok.

Jasnosť. Pri každom kroku sa do bunky zapíše symbol z abecedy, automat urobí jeden pohyb (L, P, N) a Turingov stroj prejde do jedného z popísaných stavov.

Determinizmus. Každá bunka tabuľky Turingovho stroja obsahuje iba jednu možnosť akcie. Pri každom kroku je jednoznačne definovaný výsledok, preto je jednoznačne definovaná postupnosť krokov riešenia problému, t.j. Ak Turingov stroj dostane rovnaké vstupné slovo, výstupné slovo bude zakaždým rovnaké.

Produktivita. Z hľadiska obsahu sú výsledky každého kroku a celá postupnosť krokov jednoznačne definovaná, preto správne napísaný Turingov stroj prejde do stavu v konečnom počte krokov q 0, t.j. v konečnom počte krokov sa získa odpoveď na problémovú otázku.

Hromadný charakter. Každý Turingov stroj je definovaný nad všetkými prípustnými slovami z abecedy, to je vlastnosť hromadného charakteru. Každý Turingov stroj je navrhnutý tak, aby riešil jednu triedu problémov, t.j. Pre každý problém je napísaný jeho vlastný (nový) Turingov stroj.

OD REDAKCIE

Všetky problémy uvedené v článku sa dajú vyriešiť jednoducho v zošite nakreslením informačného prúžku a tabuľkovým programom. Tento proces však môžete urobiť zábavnejším a vizuálnejším: použite strojovú implementáciu - interpret Post stroja a Turingov stroj „Algo2000“, ktorý vytvoril Radik Zartdinov. Program má intuitívne rozhranie a jeho požiadavky sú najmiernejšie: počítač IBM PC AT 486 alebo vyšší, operačný systém Windows 95/98/NT.

Pozrime sa vo všeobecnosti na to, ako „Algo2000“ funguje.

V ponuke programu vyberte položku Tlmočník a uveďte, s ktorým strojom chceme pracovať (v našom prípade je to „Turingov stroj“).

Pred nami sa objaví pole Turingovho stroja.

Teraz je potrebné nastaviť externú abecedu, t.j. v rade Externá abeceda uveďte, ktoré znaky sú v ňom zahrnuté (ak reťazec Externá abeceda nie je vidieť, musíte vybrať položku ponuky Zobraziť | Externá abeceda). Každý znak je možné zadať iba raz. Po ukončení zadávania externej abecedy sa vytvorí prvý stĺpec tabuľky: vyplní sa znakmi externej abecedy v rovnakom poradí. Pri úprave externej abecedy sa tabuľka automaticky zmení: riadky sa vložia, vymažú alebo vymenia.

Nezabudnime, že symboly vonkajšej abecedy je potrebné nejako usporiadať do sekcií pásky (všetky sekcie môžete nechať prázdne) a vozík umiestniť oproti jednej zo sekcií, t.j. musíte nastaviť program a nejaký stav stroja.

Teraz môžete pristúpiť priamo k napísaniu algoritmu na vyriešenie problému. Uvádza sa vo forme tabuľky: znaky z vnútornej abecedy sa zadávajú do každého stĺpca horného riadku a znaky z vonkajšej abecedy sa zadávajú do každého riadku prvého stĺpca. Príkazy sú umiestnené v bunkách na priesečníkoch iných stĺpcov a riadkov. Ak na priesečníku ktoréhokoľvek riadku a ľubovoľného stĺpca dostaneme prázdnu bunku, znamená to, že v tomto vnútornom stave tento symbol nemožno nájsť.

Napríklad vytvárame algoritmus na nájdenie rozdielu medzi dvoma kladnými celými číslami (v desiatkovej sústave čísel), ak je známe, že prvé číslo je väčšie ako druhé a je medzi nimi znamienko mínus.

Pole programu bude vyzerať takto:

Formát príkazu v každej bunke je aKq. Tu:
a je nový obsah aktuálnej bunky (nový symbol externej abecedy, ktorý sa zadáva do aktuálnej bunky), K je príkaz páskového mechanizmu Turingovho stroja (vľavo, vpravo, stop), q je nový vnútorný stav Turingovho stroja.

Tlačidlo spustí program. Ak exekúcia nebola pozastavená, začína vždy od nulového vnútorného stavu Q0.

Program je možné dokončiť krok za krokom. Ak to chcete urobiť, kliknite na tlačidlo na paneli nástrojov (ak tlačidlá nie sú viditeľné, musíte vybrať položku ponuky Zobraziť | Panel s nástrojmi) alebo vyberte z hlavnej ponuky Štart | Krok za krokom. Ak potrebujete úplne prerušiť vykonávanie programu, môžete to urobiť pomocou tlačidla na paneli nástrojov alebo pomocou hlavného menu ( Štart | Prerušiť). Položka menu Rýchlosť umožňuje nastaviť rýchlosť vykonávania programu.

Program bude pokračovať, kým sa neobjaví príkaz „Stop“ alebo kým sa nevyskytne nejaká chyba.

Ak máte nejaké otázky pri práci s programom tlmočníka, pozrite si súbor pomocníka Algo2000.hlp. Rovnako ako samotný program „Algo2000“ nájdete na webovej stránke novín „Informatics“ http://inf.1september.ru v sekcii „Na stiahnutie“.



Páčil sa vám článok? Zdieľajte so svojimi priateľmi!
Bol tento článok nápomocný?
Áno
Nie
Ďakujem za spätnú väzbu!
Niečo sa pokazilo a váš hlas nebol započítaný.
Ďakujem. Vaša správa bola odoslaná
Našli ste chybu v texte?
Vyberte ho, kliknite Ctrl + Enter a všetko napravíme!