Цялостност по Тюринг: Разлика между версии
Изтрито е съдържание Добавено е съдържание
Редакция без резюме |
Редакция без резюме |
||
Ред 1:
В [[Изчислителна теория|изчислителната теория]], система от правила за манипулация на данни (като набор от инструкции на компютъра, [[Език за програмиране|програмен език]], или клетъчен автомат) се смята за цялостна по Тюринг или изчислително универсален, ако може да се използва за симулиране на която и да било еднолентова машина на Тюринг. Концепцията е наречена на името на английския математик [[Алън Тюринг]]. Класически пример е [[Анонимна функция|ламбда функцията]].
Тясно свързана концепция е тази за Тюрингова еквивалентност - два компютъра P и Q се наричат еквивалентни, ако P може да симулира Q, то и Q може да симулира P. Тезата на Чърч-Тюринг предполага, че всяка функция, чиито стойности могат да бъдат изчислени чрез [[алгоритъм]] може да бъде изчислена от една машина на Тюринг, и следователно ако реален компютър може да бъде симулиран от машина на Тюринг, то той е Тюрингов еквивалент на машина на Тюринг. Универсална Тюрингова машина може да се използва за симулиране на всяка машина на Тюринг и по подразбиране на изчислителните аспекти на който и да било реален компютър.
За да
{{обработка|изчистване на машинния превод}}
{{copyvio}}
== История ==
Цялостност по Тюринг е показател за това, че всеки дизайн на изчислително устройство в реалният свят може да бъде симулиран,
Първата Тюринг-завършена машина е щяла да бъде Аналитичния двигател на [[Чарлз Бабидж]] (1830г.), ако е била построена по времето, когато е била и проектирана. Бабидж е твърдял, че машината е в състояние да извършва изключителни постижения в изчислението, включително примитивно логическо мислене, но той не е предполагал, че никоя
В края на 19 век, [[Леополд Кронекер]] формулира идеята за изчислимостта, дефинирайки примитивни [[рекурсивни функции]]<ref>[http://cpp-examples.com/singlelecture.php?id=rekursivni%20funkcii Рекурсивни функции]</ref>. Тези функции могат да бъдат механично извършвани изчисления, но не биха били достатъчни, за да се направи универсален компютър, защото инструкциите които изчисляват те не позволяват един безкраен цикъл. В началото на 20 век, [[Давид Хилберт]] е достигнал до програма, която да аксиоматизира всички математически изчисления с точни аксиоми и определени логически правила на удържане, които биха могли да се извършват от една машина. Скоро става ясно, че един малък набор от правила за удържане са достатъчни, за да се възпроизведат последствията от всеки набор от аксиоми. Тези правила са били доказани от [[Курт Гьодел|Кърт Гьодел]] през 1930 г., като достатъчни,за да се възпроизвежда всяка теорема. Въпреки това, те винаги ще доказват , това че някой теореми са едновременно верни и грешни за аксиоматиране не по-просто от аксиомите на Пеано.
Действителната идея за изчисление е изолиранa скоро след
== Извън математическо ползване ==
В разговорният език
Реалните компютри, изградени до ден днешен, са основани на една единствена лента на Машината на Тюринг
== Тюринг Oracle ==
Компютър с достъп до безкрайна лента данни може да е по-силен от една машина на Тюринг. Например, лентата може да съдържа решението на проблема за спиране(HALT), или някакъв друг Тюринг-нерешим проблем. Такава една безкрайна лента на данни се нарича Тюринг Oracle<ref>[https://en.wikipedia.org/wiki/Oracle_machine Oracle machine]</ref>. Дори Тюринг Oracle с произволни данни не е изчислима (с вероятност 1), тъй като има преброим брой изчисления, но не и пребродим брой оракули.
== Изчислителна теория на Тюринг ==
Първите резултати от изчислителната теория е, че е невъзможно да се предвиди какъв резултат ще даде Тюринг- пълна програма, за неопределено дълго време. Например, не е възможно да се определи за всеки входен чифт данни, дали програмата в крайна сметка ще спре
== Дигитална физика ==
Всички известни закони на физиката имат последици, които са
== Официални дефиниции ==
В [[Изчислителна теория|изчислителната теория]], множество тясно свързани термини, се използват за описване на изчислителната мощ на изчислителната система (като [[абстрактна машина]] или [[език за програмиране]]):
=== Цялостност по Тюринг ===
Изчислителна система, която може да изчисли всяка Тюрингово-изчислима функция, се нарича цялостна по Тюринг. Алтернативно, такава система е тази, която може да симулира универсална Тюрингова машина.
=== Еквивалентност по Тюринг ===
Цялостна по Тюринг система се нарича еквивалентна по Тюринг, ако всяка функция, която може да изчисли
=== (Изчислителна) универсалност ===
Една системата се нарича универсална по отношение на клас системи, ако може да се изчисли всяка функция изчислима от системи в този клас (или може да симулира всяка от тези системи). Обикновено терминът универсалност, по подразбиране, се използва по отношение на цялостни по Тюринг клас системи. Терминът "слабо универсален" понякога се използва, за да се разграничи система (например клетъчен автомат), чиято универсалност се постига само чрез промяна на стандартната дефиниция за [[Машина на Тюринг|
== Не-цялостни по Тюринг езици ==
Съществуват много изчислителни езици, които не са цялостни по Тюринг. Такъв пример е множество от регулярни езици, които са генерирани от [[Регулярен израз|регулярни изрази]], и които се разпознават от [[Краен автомат|
В [[Функционално програмиране|изцяло функционалните езици за програмиране]], като например Charity и Epigram, всички функции са абсолютни и трябва да се прекратят. Charity използва система за писане и контролни конструкции, базирани на [[Теория на категориите|теорията за категориите]], докато Epigram използва зависими типове. Езикът LOOP е проектиран така, че да изчислява само функциите, които са примитивно рекурсивни. Всички те изчисляват характерни подгрупи на абсолютно изчислимите функции, тъй като пълният набор от абсолютно изчислимите функции не може да бъде изчислимо номериран(„computably enumerable“).
Въпреки че нетипизираната [[Анонимна функция|ламбда функция]](„untyped lambda calculus“) е цялостна по Тюринг, просто типизираната ламбда функция(„simply typed lambda calculus“) не е.
=== Езици за бази данни ===
Понятието за цялостност по Тюринг не се прилага за езици като XML, HTML, JSON, YAML и S-expressions, защото обикновено се използват за представяне на структурирани данни, а не за описване на изчисления. Понякога се наричат [[Маркиращ език|маркиращи езици]], или по-правилно като "контейнер езици" или " езици за описване на данни". Въпреки това, Rule 110<ref>[https://en.wikipedia.org/wiki/Rule_110 Rule 110]</ref>, цялостен по Тюринг клетъчен автомат, е бил успешно приложена в CSS<ref>[https://bg.wikipedia.org/wiki/CSS CSS]</ref>(Cascading Style Sheets), доказвайки по този начин (до определена степен) неговата цялостност по Тюринг (в действителност не всеки е съгласен с това, например Франсис Маккейб твърди, че CSS не е цялостен по Тюринг, тъй като няма опция за дефиниране на функции).
== Примери ==
Ред 92:
Презаписващите системи също са Тюринг-цялостни.
Цялостност по Тюринг е по-скоро абстрактно изявление за способност, отколкото определяне на специфичните особености на езика, използвани за осъществяването на тази способност. Характеристиките, използвани за постигането на тази способност, могат да са доста различни; [[FORTRAN|Фортран]] системите биха използвали циклични конструкции или дори “goto” изявления за постигане на повторение; Haskell и Prolog, при които почти изцяло липсват цикли, ще използват [[рекурсия]]. Повечето програмни езици описват изчисления по структурирането на фон Нойман, което има памет (RAM<ref>[https://bg.wikipedia.org/wiki/%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D0%B0_%D0%BF%D0%B0%D0%BC%D0%B5%D1%82#RAM RAM]</ref> и регистър) и блок за управление. Тези два елемента правят тази структура цялостна по Тюринг. Дори чисто [[Функционално програмиране|функционалните езици]] са цялостни по Тюринг.
Тюринг
Нетипизираните [[Анонимна функция|ламбда функции]] са цялостни по Тюринг, но много от типизираните, включително System F, не са. Стойността на типизираните системи се базира на умението им да представят повечето компютърни програми и едновременно с това да засичат повече грешки.
Rule 110
=== Игри ===
Много игри са цялостни по Тюринг по случайност.
* Видео игри:
-[[Живот (игра)|Conway’s Game of Life]]
Ред 117:
-[[:en:Pokémon_Yellow|Pokemon Yellow]]
* Игри с карти:
-[[Magic: The Gathering]]
|