У теорії алгоритмів набір правил маніпуляції даними (набір інструкцій, мова програмування чи клітинний автомат) вважається повним за Тюрінгом тоді і тільки тоді, коли цей набір може моделювати однострічкову машину Тюрінга. Класичними системами, що теж описуються простими правилами та є Тюрінг-повними, є контекстно-залежні граматики, рекурсивні функції та лямбда-числення.
На практиці повнота за Тюрінгом означає, що при застосуванні певної послідовності правил над даними можна отримати результат будь-якого обчислення. Пристрій з Тюрінг-повним набором інструкцій є означенням універсального комп'ютера. Щоб бути повним за Тюрінгом достатньо мати команди переходу як , так і безумовний оператори, та можливість змінювати пам'ять.
Щоб показати, що щось є Тюрінг-повним, достатньо показати, що на ньому можна емулювати найпримітивніший універсальний комп'ютер, оскільки навіть найпростіший універсальний комп'ютер може емулювати найскладніший. Всі мови загального призначення та набори машинних інструкцій є повними за Тюрінгом, доки не постає проблема скінченності пам'яті. Тюрінг-повні машини описані як такі, що мають необмежений обсяг пам'яті, а в той час набори машинних інструкцій складені, щоб працювати з конкретним, обмеженим обсягом оперативної пам'яті.
У теорії алгоритмів існує близький термін:
Тюрінг-еквівалентність — два комп'ютери P та Q називаються Тюрінг-еквівалентними, якщо P може імітувати Q та Q може імітувати P.
Машину Тюрінга може імітувати тільки Тюрінг-повна система, тому цей термін найчастіше застосовується, щоб описати еквівалентну за Тюрінгом до машини Тюрінга. А все тому, що кожен реальний комп'ютер може моделюватись машиною Тюрінга, це спостереження зафіксоване тезою Черча.
Приклади
Тюрінг-повні
Більшість мов програмування є повними за Тюрінгом. Це включає:
- Всі мови загального призначення
- Процедурні як Pascal
- Об'єктно-орієнтовані як Java
- Багатопарадигмові як Python
- А також мови з не такими поширеними парадигмами
- Функціональні, як Haskell та Lisp
- Логічні як Prolog
- Декларативні як XSLT
- Езотеричні мови програмування, як brainfuck
Властивості мови, що використовуються для досягнення Тюрінг-повноти, можуть бути досить різними. Fortran може використовувати цикли, goto чи рекурсію, Haskell, в якому немає циклів, буде використовувати рекурсію. Тюрінг-повнота — це абстрактна властивість, а не домовленість щодо того, які елементи повинна мати мова, щоб реалізувати цю властивість.
Не Тюрінг-повні
Існує багато мов, які не є Тюрінг-повними. Наприклад:
- Регулярні вирази та скінченні автомати, що їх реалізують
- Контекстно-вільні граматики та магазинні автомати, що їх реалізують
- Послідовності формул в електронних таблицях, що не містять циклів.
Попри те, що в цих мовах можна розв'язувати багато цікавих задач, та все ж вони не є Тюрінг-повними, бо не можуть виконувати циклів.
Посилання
- c2.com
Це незавершена стаття про програмування. Ви можете проєкту, виправивши або дописавши її. |
Це незавершена стаття з математики. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
U teoriyi algoritmiv nabir pravil manipulyaciyi danimi nabir instrukcij mova programuvannya chi klitinnij avtomat vvazhayetsya povnim za Tyuringom todi i tilki todi koli cej nabir mozhe modelyuvati odnostrichkovu mashinu Tyuringa Klasichnimi sistemami sho tezh opisuyutsya prostimi pravilami ta ye Tyuring povnimi ye kontekstno zalezhni gramatiki rekursivni funkciyi ta lyambda chislennya Na praktici povnota za Tyuringom oznachaye sho pri zastosuvanni pevnoyi poslidovnosti pravil nad danimi mozhna otrimati rezultat bud yakogo obchislennya Pristrij z Tyuring povnim naborom instrukcij ye oznachennyam universalnogo komp yutera Shob buti povnim za Tyuringom dostatno mati komandi perehodu yak tak i bezumovnij operatori ta mozhlivist zminyuvati pam yat Shob pokazati sho shos ye Tyuring povnim dostatno pokazati sho na nomu mozhna emulyuvati najprimitivnishij universalnij komp yuter oskilki navit najprostishij universalnij komp yuter mozhe emulyuvati najskladnishij Vsi movi zagalnogo priznachennya ta nabori mashinnih instrukcij ye povnimi za Tyuringom doki ne postaye problema skinchennosti pam yati Tyuring povni mashini opisani yak taki sho mayut neobmezhenij obsyag pam yati a v toj chas nabori mashinnih instrukcij skladeni shob pracyuvati z konkretnim obmezhenim obsyagom operativnoyi pam yati U teoriyi algoritmiv isnuye blizkij termin Tyuring ekvivalentnist dva komp yuteri P ta Q nazivayutsya Tyuring ekvivalentnimi yaksho P mozhe imituvati Q ta Q mozhe imituvati P Mashinu Tyuringa mozhe imituvati tilki Tyuring povna sistema tomu cej termin najchastishe zastosovuyetsya shob opisati ekvivalentnu za Tyuringom do mashini Tyuringa A vse tomu sho kozhen realnij komp yuter mozhe modelyuvatis mashinoyu Tyuringa ce sposterezhennya zafiksovane tezoyu Chercha PrikladiTyuring povni Bilshist mov programuvannya ye povnimi za Tyuringom Ce vklyuchaye Vsi movi zagalnogo priznachennya Procedurni yak Pascal Ob yektno oriyentovani yak Java Bagatoparadigmovi yak Python A takozh movi z ne takimi poshirenimi paradigmami Funkcionalni yak Haskell ta Lisp Logichni yak Prolog Deklarativni yak XSLT Ezoterichni movi programuvannya yak brainfuck Vlastivosti movi sho vikoristovuyutsya dlya dosyagnennya Tyuring povnoti mozhut buti dosit riznimi Fortran mozhe vikoristovuvati cikli goto chi rekursiyu Haskell v yakomu nemaye cikliv bude vikoristovuvati rekursiyu Tyuring povnota ce abstraktna vlastivist a ne domovlenist shodo togo yaki elementi povinna mati mova shob realizuvati cyu vlastivist Ne Tyuring povni Isnuye bagato mov yaki ne ye Tyuring povnimi Napriklad Regulyarni virazi ta skinchenni avtomati sho yih realizuyut Kontekstno vilni gramatiki ta magazinni avtomati sho yih realizuyut Poslidovnosti formul v elektronnih tablicyah sho ne mistyat cikliv Popri te sho v cih movah mozhna rozv yazuvati bagato cikavih zadach ta vse zh voni ne ye Tyuring povnimi bo ne mozhut vikonuvati cikliv Posilannyac2 com Ce nezavershena stattya pro programuvannya Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi Ce nezavershena stattya z matematiki Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi