Цялостност по Тюринг: Разлика между версии
Изтрито е съдържание Добавено е съдържание
Редакция без резюме |
-ш, статията е превод от англ |
||
Ред 1:
{{обработка|проверка на термините, изчистване на машинния превод}}
{{експерт}}
В [[Изчислителна теория|изчислителната теория]], система от правила за манипулация на данни (като набор от инструкции на компютъра, [[Език за програмиране|програмен език]], или клетъчен автомат) се смята за цялостна по Тюринг или изчислително универсална, ако може да се използва за симулиране на която и да било еднолентова машина на Тюринг. Концепцията е наречена на името на английския математик [[Алън Тюринг]]. Класически пример е [[Анонимна функция|ламбда функцията]].
Тясно свързана концепция е тази за Тюрингова еквивалентност
За да докажем, че нещо е цялостно по Тюринг, е достатъчно да се докаже, че може да се използва за симулиране на някаква цялостна Тюринг система. Например, [[Императивно програмиране|императивен език на програмиране]] е цялостен по Тюринг, ако има условно разклоняване (например,
== История ==
Цялостност по Тюринг е показател за това,
Първата цялостна по Тюринг
В края на 19 век, [[Леополд Кронекер]] формулира идеята за изчислимостта, дефинирайки примитивни [[рекурсивни функции]]<ref>[http://cpp-examples.com/singlelecture.php?id=rekursivni%20funkcii Рекурсивни функции]</ref>. Тези функции могат да бъдат механично извършвани изчисления, но не биха били достатъчни, за да се направи универсален компютър, защото инструкциите които изчисляват те не позволяват един безкраен цикъл. В началото на 20 век, [[Давид Хилберт]] е достигнал до програма, която да аксиоматизира всички математически изчисления с точни аксиоми и определени логически правила на удържане, които биха
Действителната идея за изчисление е
== Извън математическо ползване ==
В разговорният език понятието „Цялост по
Реалните компютри, изградени до ден днешен, са основани на една единствена лента на Машината на Тюринг. Следователно математически е възможно, чрез абстракция, те да бъдат експлоатирани от достатъчно голямо разстояние. Истинските компютри имат ограничени технически ресурси, така че те са автоматично праволинейно ограничени. За разлика от тях, универсалният компютър се определя като устройство с пълен набор от команди на Тюринг
== Тюринг Oracle ==
Line 27 ⟶ 25:
== Изчислителна теория на Тюринг ==
Първите резултати от изчислителната теория показват, че е невъзможно да се предвиди какъв резултат ще даде Тюринг
Друга теорема показва, че има проблеми, решими от Тюринг-пълни езици, които не могат да бъдат решени от друг език, които имат ограничени способности (т.е., всеки език, който гарантира всяка програма, че накрая ще спре(HALT)). Получавайки гарантирано спрян език, изчислената функция която е произведена от диагоналния аргумент на Кантор върху всички изчислени функции на този език не са изчислими в него.
Line 38 ⟶ 36:
=== Цялостност по Тюринг ===
Изчислителна система, която може да изчисли всяка Тюрингово-изчислима функция, се нарича цялостна по Тюринг. Алтернативно, такава система е тази, която може да симулира универсална Тюрингова машина.
=== Еквивалентност по Тюринг ===
Цялостна по Тюринг система се нарича еквивалентна по Тюринг, ако всяка функция, която може да изчисли е също Тюринг-изчислима; т.е., изчислява точно същия клас функции като [[Машина на Тюринг|Тюринговата машина]]. Алтернативно, Тюринг-еквивалента система е тази, която може да симулира и да бъде симулирана чрез универсална Тюрингова машина. (Всички известни цялостни по Тюринг системи са Тюринг еквивалентни, което поддържа [[Тезис на Чърч|тезата на Чърч-Тюринг]].)
=== (Изчислителна) универсалност ===
Една системата се нарича универсална по отношение на клас системи, ако може да се изчисли всяка функция изчислима от системи в този клас (или може да симулира всяка от тези системи). Обикновено терминът универсалност, по подразбиране, се използва по отношение на цялостни по Тюринг клас системи. Терминът
▲Една системата се нарича универсална по отношение на клас системи, ако може да се изчисли всяка функция изчислима от системи в този клас (или може да симулира всяка от тези системи). Обикновено терминът универсалност, по подразбиране, се използва по отношение на цялостни по Тюринг клас системи. Терминът "слабо универсален" понякога се използва, за да се разграничи система (например клетъчен автомат), чиято универсалност се постига само чрез промяна на стандартната дефиниция за [[Машина на Тюринг|Тюринговата машина]], така че да включат входни потоци данни с безкрайно много 1s.
== Не-цялостни по Тюринг езици ==
Съществуват много изчислителни езици, които не са цялостни по Тюринг. Такъв пример е множество от регулярни езици, които са генерирани от [[Регулярен израз|регулярни изрази]], и които се разпознават от [[Краен автомат|крайните автомати]]. По-мощно, но все пак не-цялостно по Тюринг, разширение на крайните автомати е категорията на бутащ автомат(
В [[Функционално програмиране|изцяло функционалните езици за програмиране]], като например Charity<ref>[https://en.wikipedia.org/wiki/Charity_(programming_language) Charity]</ref> и Epigram<ref>[https://en.wikipedia.org/wiki/Epigram_(programming_language) Epigram]</ref>, всички функции са абсолютни и трябва да се прекратят. Charity използва система за писане и контролни конструкции, базирани на [[Теория на категориите|теорията за категориите]], докато Epigram използва зависими типове. Езикът LOOP е проектиран така, че да изчислява само функциите, които са примитивно рекурсивни. Всички те изчисляват характерни подгрупи на абсолютно изчислимите функции, тъй като пълният набор от абсолютно изчислимите функции не може да бъде изчислимо номериран(„computably enumerable“). Тъй като всички функции в тези езици са абсолютни, на тях не могат да се пишат алгоритми за рекурсивно номерирани множества, в сравнение с машина на Тюринг.
Line 57 ⟶ 52:
=== Езици за бази данни ===
Понятието за цялостност по Тюринг не се прилага за езици като [[XML]], [[HTML]], [[JSON| JSON (JavaScript Object Notation)]], YAML и S-expressions, защото обикновено се използват за представяне на структурирани данни, а не за описване на изчисления. Понякога се наричат [[Маркиращ език|маркиращи езици]], или по-правилно като
== Примери ==
Line 94 ⟶ 89:
Презаписващите системи също са Тюринг-цялостни.
Цялостност по Тюринг е по-скоро абстрактно изявление за способност, отколкото определяне на специфичните особености на езика, използвани за осъществяването на тази способност. Характеристиките, използвани за постигането на тази способност, могат да са доста различни; [[FORTRAN|Фортран]] системите биха използвали циклични конструкции или дори
Тюринг-цялостност в декларативния [[SQL]] се постига чрез общи рекурсивни изрази. Не е изненадващо, че процедурните разширения на SQL (PLSQL и т.н.) също са цялостни по Тюринг. Това показва една от причините защо сравнително мощни не-цялостни по Тюринг езици са рядкост: колкото по-мощен е езикът първоначално, толкова по-сложни са задачите, за които се прилага и толкова по-скоро липсата му на завършеност се възприема като недостатък, което насърчава неговото разширяване, докато стане Тюринг цялостен.
Line 124 ⟶ 119:
== Вижте също ==
* [[Изчислителна теория]]
* [[Йерархия на Чомски]]
* [[Стивън Волфрам]]
** [[:en:Principle of Computational Equivalence|Principle of Computational Equivalence]]
* [[Тезис на Чърч]]
Line 138 ⟶ 132:
* [[:en:Turing tarpit|Turing tarpit]]
==
<references />
|