Обчислюваність

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Обчислюваність — властивість задачі бути ефективно розв'язаною. Це ключова тема в області теорії обчислюваності в рамках математичної логіки і теорії алгоритмів у інформатиці. Обчислюваність задачі тісно пов'язана з задачею існування алгоритму для її вирішення.

Найбільш широко вивченими моделями обчислюваності є Тюрінг-обчислювальні і μ-рекурсивні функції[en], та лямбда-числення, всі з них мають парно еквівалентну обчислювальну потужність (алгоритми побудовані для однієї системи мають відповідники у інших). Досліджуються й інші форми обчислюваності: в теорії автоматів вивчаються поняття обчислюваності, які слабкіші за машини Тюрінга, тоді як області гіперобчислень вивчаються сильніші поняття обчислюваності.

Задачі[ред. | ред. код]

Центральною ідеєю теорії є обчислювальна проблема[en], яка є практичним завданням, чию обчислюваність можна вивчати.

Існує два ключових типи проблем:

  • Проблема вибору фіксує набір S, яким може бути набір рядків, натуральних чисел чи інших об'єктів, взятих з деякого більшого набору U. Проблема полягає у тому, чи заданий елемент u з U належить S. Наприклад, U — множина натуральних чисел і S множина простих чисел, відповідній задачі вибору відповідає тест на простоту.
  • Функціональна проблема складається з функції f, у якою U є множиною визначення, а V — множиною значень. Дана проблема обчислює для даного елемента u з U відповідний елемент f(u) з V. Наприклад, U і V можуть бути множиною всіх скінчених двійкових рядків, тоді як f може приймати рядок і повертати рядок у зворотньому порядку (наприклад, f(0101) = 1010).

Інші типи проблем включають в себе задачу пошуку та задачу оптимізації.

Одна з цілей теорії обчислюваності полягає у визначенні, які проблеми або класи проблем можна вирішити в кожній з моделей обчислення.

Формальні моделі обчислень[ред. | ред. код]

Модель обчислення — це формальний опис особливого типу обчислювального процесу. Такий опис часто має форму абстрактної машини, яка призначена для виконання поставленого завдання. До загально відомих моделей обчислення, еквівалентним машині Тюринга (див. тезу Черча-Тюрінга), належать:

Лямбда-числення
Обчислення складається з початкового лямбда-виразу (або двох, якщо ви хочете відокремити функцію та його вхідні дані) та кінцева послідовність лямбда термів, кожен з яких виведено з попереднього терму застосуванням бета-редукції.
Комбінаторна логіка
Концепція, що має багато спільного з лямбда-численням, але яка має важливі відмінності (наприклад, комбінатор фіксованої точки Y має нормальну форму в комбінаторній логіці, але не в лямбда-численні). Комбінаторна логіка розвивалася маючи великі амбіції: отримати розуміння природи парадоксів, зробити основи математики більш економними (концептуально), усунути поняття змінної (таким чином, уточнивши її роль в математиці).
μ-рекурсивні функції[en]
Обчислення складається з μ-рекурсивної функції, точніше, з послідовності, яка її визначає, будь-якого вхідного значення і послідовності рекурсивних функцій, що з'являються у визначеній послідовності з входами і виходами. Таким чином, якщо в визначальній послідовності рекурсивної функції f(x) з'являються функції g(x) і h(x,y), то можуть з'явитися терми виду g(5) = 7 або h(3,2) = 10. Кожен запис у цій послідовності повинен бути застосуванням базової функції або бути наслідком з вищезазначених записів, використовуючи композицію, примітивну рекурсію або μ-рекурсію[en]. Наприклад, якщо f(x) = h(x,g(x)), то для появи f(5) = 3, терми g(5) = 6 і h(3,6) = 3 повинні з'явитися вище у послідовності. Обчислення припиняється тільки в тому випадку, якщо останній терм видає значення рекурсивної функції.
Системи перезапису рядків[en]
Включають алгоритми Маркова, які використовують правила схожі на правила граматик для роботи над рядками символів; також числення Поста.
Регістрова машина
Теоретично цікава ідеалізація комп'ютера. Існує декілька її варіантів. У більшості з них кожен реєстр може містити натуральне число необмеженого розміру, а інструкції прості і малочисельні, наприклад, машина, де існують тільки зменшення на одиницю (у поєднанні з умовним стрибком), збільшення на одиницю і зупинка машини. Відсутність нескінченної (або динамічно зростаючої) множини регістрів (яку можна побачити на машинах Тюринга) можна зрозуміти, замінивши її роль технікою нумерації Геделя: той факт, що кожен реєстр має натуральне число, дає можливість представити складну річ (наприклад послідовність або матрицю) за допомогою відповідного величезного натурального числа — однозначність як представлення, так і інтерпретації встановлюються числовою теорією основ цих методів.
Машина Тюринга
Схожа на кінцевий автомат, за винятком того, що вхід подається на стрічці, яку машина Тюринга може читати, перезаписувати і по якій може вільно послідовно переміщатися (тобто не може перескакувати комірки стрічки). Стрічці дозволено зростати до довільного розміру. Машина Тюринга здатна виконувати складні обчислення, які можуть мати довільну тривалість. Ця модель є, мабуть, найважливішою моделлю обчислень у комп'ютерній науці, оскільки вона імітує обчислення за відсутності визначених обмежень ресурсів.
Машина Тьюринга з декількома стрічками[en]
Машина може мати більше однієї стрічки; крім того, може бути кілька головок на одну стрічку. Несподівано, будь-яке обчислення, яке може бути виконане цим родом машини, також може бути виконане звичайною машиною Тюрінга, хоча остання може бути повільнішою або вимагати більше місця для стрічки.
P′′
Як і машини Тюрінга, P′′ використовує нескінченну стрічку символів (без довільного доступу) і досить мінімалістичний набір інструкцій. Але ці інструкції дуже різні, таким чином, на відміну від машин Тюрінга, P′′ не потрібно підтримувати окремий стан, тому що вся функціональність, залежна від пам'яті, може бути забезпечена однією стрічкою. Замість того, щоб переписувати поточний символ, вона може виконати для нього операцію модульної суми з одиницею. P′′ має також пару інструкцій циклів, та для перевірки на порожній символ. Незважаючи на свій мінімалістичний характер, ця машина стала батьківською формальною мовою для мови програмування під назвою Brainfuck.

На додаток до загально відомих обчислювальних моделей, існують деякі більш прості обчислювальні моделі, які корисні для специфічних, обмежених застосувань. Регулярні вирази, наприклад, визначають шаблони рядків у багатьох контекстах, від програмного забезпечення для офісної роботи до мов програмування. Інша формальна математично еквівалентна регулярним виразам структура, скінченні автомати, використовується в схемотехніці і в деяких рішеннях задач. Контекстно-вільні граматики задають синтаксис мов програмування. Недетермінований автомат з магазинною пам'яттю — ще одна формальна структура, еквівалентна контекстно-вільним граматикам.

Різні моделі обчислень мають різні можливості виконувати різні завдання. Одним із способів вимірювання потужності обчислювальної моделі є вивчення класу формальних мов, які може генерувати модель; таким чином отримується ієрархія мов Чомскі.

Інші обмежені моделі обчислення включають:

Детермінований скінчений автомат
На сьогоднішній усі реальні обчислювальні пристрої можна змоделювати як машини зі скінченою кількістю станів, оскільки всі реальні комп'ютери працюють на скінчених ресурсах. Така машина має набір станів і набір переходів, на які впливає потік вхідних даних. Деякі стани визначені кінцевими. Вхідний потік подається в машину одним символом за раз, переходи між станами порівнюються з вхідним символом, і якщо є відповідний перехід, машина переходить в новий стан. Якщо в кінці вхідного потоку машина знаходиться в кінцевому стані, то увесь вхідний потік є таким, що приймається даною машиною.
Недетермінований скінчений автомат
Інша проста модель обчислення, хоча послідовність її виконання не визначена однозначно. Вона може бути інтерпретована як одночасне виконання декількох варіантів обчислення з використанням кінцевого числа станів. Однак можна довести, що будь-який недетермінований автомат зводиться до еквівалентного йому детермінованого.
Автомат з магазинною пам'яттю
Подібний до кінцевого автомата, за винятком того, що він має стек, якому дозволено зростати до довільного розміру. Переходи станів додатково вказують, чи слід додавати символ до стека або вилучати символ зі стека. Ця модель є більш потужною, ніж кінцевий автомат завдяки своєму нескінченному стеку (пам'яті), хоча тільки верхній елемент стека доступний в окремий момент часу.

Див. також[ред. | ред. код]

Джерела[ред. | ред. код]

  • Michael Sipser (1997). Introduction to the Theory of Computation. PWS Publishing. ISBN 0-534-94728-X. Part Two: Computability Theory, Chapters 3–6, pp. 123–222.
  • Christos Papadimitriou (1993). Computational Complexity (вид. 1st). Addison Wesley. ISBN 0-201-53082-1. Chapter 3: Computability, pp. 57–70.
  • S. Barry Cooper (2004). Computability Theory (вид. 1st). Chapman & Hall/CRC. ISBN 978-1-58488-237-4.