Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Академическое подраздел информатики
Academic subfield of computer science
В теоретической информатике и математике теория вычислений — это область, изучающая, какие задачи могут быть решены на модели вычисления с помощью алгоритма, насколько эффективно они могут быть решены или в какой степени (например, приближенные решения в сравнении с точными). Эта область делится на три основных направления: теория автоматов и формальных языков, теория вычислимости и теория вычислительной сложности, объединенные вопросом: "Каковы фундаментальные возможности и ограничения компьютеров?". Для проведения строгого исследования вычислений, ученые-компьютерщики работают с математической абстракцией компьютеров, называемой моделью вычисления. Существует несколько моделей, но наиболее часто изучаемой является машина Тьюринга. Ученые-компьютерщики изучают машину Тьюринга, поскольку её легко формализовать, анализировать и использовать для доказательства теорем, а также потому, что она представляет собой то, что многие считают наиболее мощной возможной "разумной" моделью вычисления (см. тезис Черча — Тьюринга). Может показаться, что потенциально бесконечная емкость памяти — это нереализуемый атрибут, но любая разрешимая задача, решаемая машиной Тьюринга, всегда потребует лишь конечного объема памяти. Следовательно, в принципе, любую задачу, которую можно решить (разрешить) с помощью машины Тьюринга, можно решить на компьютере с конечным объемом памяти.
In theoretical computer science and mathematics, the theory of computation is the branch that deals with what problems can be solved on a model of computation, using an algorithm, how efficiently they can be solved or to what degree (e. g., approximate solutions versus precise ones). The field is divided into three major branches: automata theory and formal languages, computability theory, and computational complexity theory, which are linked by the question: "What are the fundamental capabilities and limitations of computers?". In order to perform a rigorous study of computation, computer scientists work with a mathematical abstraction of computers called a model of computation. There are several models in use, but the most commonly examined is the Turing machine. Computer scientists study the Turing machine because it is simple to formulate, can be analyzed and used to prove results, and because it represents what many consider the most powerful possible "reasonable" model of computation (see Church–Turing thesis). It might seem that the potentially infinite memory capacity is an unrealizable attribute, but any decidable problem solved by a Turing machine will always require only a finite amount of memory. So in principle, any problem that can be solved (decided) by a Turing machine can be solved by a computer that has a finite amount of memory.
История
Теорию вычислений можно рассматривать как создание моделей различного рода в области компьютерных наук. Поэтому в ней используются математика и логика. В прошлом веке она выделилась в самостоятельную научную дисциплину, отделившись от математики. К числу пионеров теории вычислений относятся Рамон Лулль, Алонзо Черч, Курт Гёдель, Алан Тьюринг, Стивен Клини, Рожа Петер, Джон фон Нейман и Клод Шеннон.
The theory of computation can be considered the creation of models of all kinds in the field of computer science. Therefore, mathematics and logic are used. In the last century, it became an independent academic discipline and was separated from mathematics. Some pioneers of the theory of computation were Ramon Llull, Alonzo Church, Kurt Gödel, Alan Turing, Stephen Kleene, Rózsa Péter, John von Neumann and Claude Shannon.
Теория формального языка
Теория языков — это раздел математики, посвященный описанию языков как набора операций над алфавитом. Она тесно связана с теорией автоматов, поскольку автоматы используются для порождения и распознавания формальных языков. Существует несколько классов формальных языков, каждый из которых допускает более сложную спецификацию, чем предыдущий, например, иерархия Хомского, и каждому из которых соответствует класс автоматов, способных его распознать. Поскольку автоматы используются в качестве моделей вычислений, формальные языки являются предпочтительным способом спецификации для любой задачи, требующей вычисления.
Language theory is a branch of mathematics concerned with describing languages as a set of operations over an alphabet. It is closely linked with automata theory, as automata are used to generate and recognize formal languages. There are several classes of formal languages, each allowing more complex language specification than the one before it, i. e. Chomsky hierarchy, and each corresponding to a class of automata which recognizes it. Because automata are used as models for computation, formal languages are the preferred mode of specification for any problem that must be computed.
Теория вычислимости
Теория вычислимости в основном занимается вопросом о том, насколько проблема разрешима на компьютере. Утверждение о том, что проблема останова не может быть решена машиной Тьюринга, является одним из важнейших результатов в теории вычислимости, поскольку представляет собой пример конкретной задачи, которую легко сформулировать, но невозможно решить с помощью машины Тьюринга. Значительная часть теории вычислимости строится на основе результата, полученного для проблемы останова. Другим важным шагом в теории вычислимости стала теорема Райса, которая утверждает, что для всех нетривиальных свойств частичных функций невозможно определить, вычисляет ли машина Тьюринга частичную функцию, обладающую этим свойством. Теория вычислимости тесно связана с областью математической логики, называемой теорией рекурсии, которая снимает ограничение на изучение только моделей вычислений, сводимых к модели Тьюринга. Многие математики и теоретики вычислений, изучающие теорию рекурсии, называют её теорией вычислимости.
Computability theory deals primarily with the question of the extent to which a problem is solvable on a computer. The statement that the halting problem cannot be solved by a Turing machine is one of the most important results in computability theory, as it is an example of a concrete problem that is both easy to formulate and impossible to solve using a Turing machine. Much of computability theory builds on the halting problem result. Another important step in computability theory was Rice's theorem, which states that for all non trivial properties of partial functions, it is undecidable whether a Turing machine computes a partial function with that property. Computability theory is closely related to the branch of mathematical logic called recursion theory, which removes the restriction of studying only models of computation which are reducible to the Turing model. Many mathematicians and computational theorists who study recursion theory will refer to it as computability theory.
Теория вычислительной сложности
Теория сложности рассматривает не только возможность решения проблемы на компьютере, но и эффективность этого решения. Рассматриваются два основных аспекта: временная сложность и пространственная сложность, которые отражают соответственно количество шагов, необходимых для выполнения вычислений, и объем памяти, требуемый для этих вычислений. Чтобы проанализировать, сколько времени и памяти требует данный алгоритм, специалисты по компьютерным наукам выражают время или память, необходимые для решения проблемы, как функцию от размера входных данных. Например, поиск конкретного числа в длинном списке становится сложнее по мере увеличения размера списка. Если в списке n чисел, и список не отсортирован и не проиндексирован, то для поиска нужного числа может потребоваться проверка каждого элемента. Таким образом, для решения этой проблемы компьютеру необходимо выполнить количество шагов, которое линейно зависит от размера проблемы. Чтобы упростить анализ, специалисты по компьютерным наукам используют нотацию «Большое О», которая позволяет сравнивать функции, игнорируя особенности аппаратного обеспечения и учитывая только асимптотическое поведение при больших размерах задач. В нашем предыдущем примере можно сказать, что для решения проблемы требуется шагов. Вероятно, самая важная нерешенная проблема в информатике – вопрос о том, можно ли эффективно решить широкий класс задач, обозначаемый NP. Это обсуждается подробнее в разделе «Классы сложности P и NP», а проблема «P против NP» является одной из семи задач тысячелетия, сформулированных Институтом математики Клэя в 2000 году. Официальное описание проблемы было дано лауреатом премии Тьюринга Стивеном Куком.
Complexity theory considers not only whether a problem can be solved at all on a computer, but also how efficiently the problem can be solved. Two major aspects are considered: time complexity and space complexity, which are respectively how many steps it takes to perform a computation, and how much memory is required to perform that computation. In order to analyze how much time and space a given algorithm requires, computer scientists express the time or space required to solve the problem as a function of the size of the input problem. For example, finding a particular number in a long list of numbers becomes harder as the list of numbers grows larger. If we say there are n numbers in the list, then if the list is not sorted or indexed in any way we may have to look at every number in order to find the number we're seeking. We thus say that in order to solve this problem, the computer needs to perform a number of steps that grow linearly in the size of the problem. To simplify this problem, computer scientists have adopted Big O notation, which allows functions to be compared in a way that ensures that particular aspects of a machine's construction do not need to be considered, but rather only the asymptotic behavior as problems become large. So in our previous example, we might say that the problem requires steps to solve. Perhaps the most important open problem in all of computer science is the question of whether a certain broad class of problems denoted NP can be solved efficiently. This is discussed further at Complexity classes P and NP, and P versus NP problem is one of the seven Millennium Prize Problems stated by the Clay Mathematics Institute in 2000. The Official Problem Description was given by Turing Award winner Stephen Cook.