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

Версія від 20:56, 24 квітня 2019, створена ThePaulRa (обговорення | внесок) (Створено шляхом перекладу сторінки «Computability»)
(різн.) ← Попередня версія | Поточна версія (різн.) | Новіша версія → (різн.)

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

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

Задачі

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

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

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

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

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

Формальні моделі обчислень

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

Лямбда-числення
Обчислення складається з початкового лямбда-виразу (або двох, якщо ви хочете відокремити функцію та його вхідні дані) та кінцева послідовність лямбда термів, кожен з яких виведен з попереднього терму застосуванням бета-редукції.
Комбінаторна логіка
Концепція, що має багато спільного з лямбда-численням, але яка має важливі відмінності (наприклад, комбінатор фіксованої точки Y має нормальну форму в комбінаторній логіці, але не в лямбда-численні). Комбінаторна логіка розвивалася маючи великі амбіції: отримати розуміння природи парадоксів, зробити основи математики економічнішими (концептуально), усунути поняття змінної (таким чином, уточнивши її роль в математиці).
μ-рекурсивні функції
Обчислення складається з μ-рекурсивної функції, точніше, її визначаючої послідовності, будь-якого вхідного значення і послідовності рекурсивних функцій, що з'являються в визначеній послідовності з входами і виходами. Таким чином, якщо в визначальній послідовності рекурсивної функції 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′′[en]
Як і машини Тьюрінга, P′′ використовує нескінченну стрічку символів (без довільного доступу) і досить мінімалістичний набір інструкцій. Але ці інструкції дуже різні, таким чином, на відміну від машин Тьюрінга, P′′не потрібно підтримувати окремий стан, тому що вся функціональність, пзалежнапвід ам'яті, може бути забезпечена тоднієюслиш трічкою. Замість того, щоб переписувати поточний символ, вона може виконати для нього опреацію модульної суми з одиницею. P′′ має також пару інструкцій циклів, та для перевірки на порожній символ. Незважаючи на свій мінімалістичний характер, ця машина стала батьківською формальною мовою для мови програмування під назвою Brainfuck.

Див. також