Интересная мысль. Рассмотрим алгоритм решения квадратного уравнения с заданными коэффициентами (
![$a, b, c$ $a, b, c$](https://dxdy-01.korotkov.co.uk/f/c/7/5/c7511ce56cd9c8457f7a29917f39df8d82.png)
):
![$x_{1,2} = \dfrac {-b \pm \sqrt {b^2 - 4 a c}} {2 a}$ $x_{1,2} = \dfrac {-b \pm \sqrt {b^2 - 4 a c}} {2 a}$](https://dxdy-04.korotkov.co.uk/f/3/5/5/355471b57722f6f58bef2a58bc72de9f82.png)
Что, по-вашему мнению, является "входом" этого алгоритма?
![$<a, b, c >$ $<a, b, c >$](https://dxdy-01.korotkov.co.uk/f/0/7/4/074c5c078ddfcb32111e5b3864b86c8e82.png)
или
![$<a, b, c, 1, 2, 4>$ $<a, b, c, 1, 2, 4>$](https://dxdy-02.korotkov.co.uk/f/1/8/b/18b9048f3450c224ff94f8c9e5218e4c82.png)
?
Второе, ибо константы 1, 2, 4 равнозначно "вводятся" (в коде программы).
Надо сказать, я в первый раз сталкиваюсь с такой широкой трактовкой понятия "входа" алгоритма. В частности, тот же Кнут в книге "Искусство программирования для ЭВМ. Т.1 Основные алгоритмы." пишет буквально следующее:
Цитата:
3)
Ввод. Алгоритм имеет некоторое (быть может, равное нулю) число входных данных, т. е. величин, заданных ему до начала работы. Эти данные берутся из некоторого конкретного множества объектов. В алгоритме Е [алгоритм Евклида], например, две входные величины, а именно
![$m$ $m$](https://dxdy-01.korotkov.co.uk/f/0/e/5/0e51a2dede42189d77627c4d742822c382.png)
и
![$n$ $n$](https://dxdy-02.korotkov.co.uk/f/5/5/a/55a049b8f161ae7cfeb0197d75aff96782.png)
, выбираемые из множества
натуральных чисел.
Т. е. Кнут почему-то не включает число 0 (используемое при проверке окончания работы) во входные данные :)
При вычислении числа
![$\pi$ $\pi$](https://dxdy-04.korotkov.co.uk/f/f/3/0/f30fdded685c83b0e7b446aa9c9aa12082.png)
с точностью до
![$n$ $n$](https://dxdy-02.korotkov.co.uk/f/5/5/a/55a049b8f161ae7cfeb0197d75aff96782.png)
знаков после запятой, разве число
![$n$ $n$](https://dxdy-02.korotkov.co.uk/f/5/5/a/55a049b8f161ae7cfeb0197d75aff96782.png)
не подходит под определение:
При вычислении числа
![$\pi$ $\pi$](https://dxdy-04.korotkov.co.uk/f/f/3/0/f30fdded685c83b0e7b446aa9c9aa12082.png)
с точностью до
![$n$ $n$](https://dxdy-02.korotkov.co.uk/f/5/5/a/55a049b8f161ae7cfeb0197d75aff96782.png)
знаков число
![$n$ $n$](https://dxdy-02.korotkov.co.uk/f/5/5/a/55a049b8f161ae7cfeb0197d75aff96782.png)
, конечно, является входом. А при вычислении числа
![$\pi$ $\pi$](https://dxdy-04.korotkov.co.uk/f/f/3/0/f30fdded685c83b0e7b446aa9c9aa12082.png)
с точностью до 10 знаков, 10 входом не является, ибо такой алгоритм вполне имеет право не уметь вычислять
![$\pi$ $\pi$](https://dxdy-04.korotkov.co.uk/f/f/3/0/f30fdded685c83b0e7b446aa9c9aa12082.png)
ни с точностью 9 знаков, ни с точностью 11 знаков.
Речь же не о том, что никакому алгоритму не требуются входные данные, а о том, что
существуют алгоритмы, которым входные данные не требуются.
Не нравится пример с
![$\pi$ $\pi$](https://dxdy-04.korotkov.co.uk/f/f/3/0/f30fdded685c83b0e7b446aa9c9aa12082.png)
, давайте рассмотрим поиск первого
полусовершенного числа, являющегося, одновременно, точным квадратом. Ну какие входы у такого алгоритма?