Привет, друзья. Кто знает, как по-английски "циркуль"? Compass. Люблю ложных друзей переводчика! Компас тоже compass. По-итальянски compasso — циркуль, а bussola — компас. А что такое буссоль? Это разновидность компаса.
Впрочем, я хотел поговорить о построениях циркулем и линейкой. Очень популярная была тема, сейчас немного вышла из моды. Смысл в чём? В построении объектов с помощью циркуля и линейки без делений. То есть, имея возможность проводить прямые через две точки и рисовать окружности с данным центром и данным радиусом.
Многие задачи сводятся к построению какого-то отрезка по данному отрезку. Например, поделить отрезок пополам.
И часто задают вопрос: а что, если линейка с делениями? Что это дает?
На самом деле, мало что. Пусть на линейке нарисованы дюймы. Дан некоторый отрезок и надо что-то построить.
Если можно из данного отрезка построить отрезок длины 1 дюйм, то деления не дают вообще ничего — разве что сокращают немного решение. Если нельзя, то у нас просто есть ещё один отрезок! Один данный, другой в один дюйм. Приятно, но не бог весть что. Можно было нарисовать ДВА отрезка и поставить задачу что-то построить. Линейка с делениями не нужна.
Можно дать три отрезка. Или сколько хотите.
Да, если случайно так вышло, что деление линейки равно кубическому корню из 2 (в единицах длины ребра куба, который вам дан), то задача об удвоении куба решается. Но это типичный "рояль в кустах". То же самое, если на линейке деление равно пи. Тогда квадратура круга решается. Но в чём решение, если решение дано?
Есть теорема, что можно обойтись вообще без линейки, одним циркулем, если договориться, что прямая построена, если на ней указаны две точки. Можно обойтись и без циркуля, одной линейкой, если на ней есть деление (хотя бы одно) или если уже дана готовая окружность с указанным центром.
Интересно другое. Какие-то задачи решаются циркулем и линейкой, какие-то нет. У нас есть средства отличить одно от другого (можно строить отрезки, длины которых удовлетворяют линейным и квадратным уравнениям). Но что, если мы добавим инструменты? Нельзя ли тогда решить любую задачу на построение?
Тут лукаво. Например, линейка, строго говоря, имеет минимальное деление — выше речь шла о нём. Повторять минимальное деление можно без проблем, если оно дано, с помощью линейки без делений: линейка с делениями больше не нужна. Поделить пополам можно, ещё на какие-то доли... Но не на все! Нельзя сказать, "построим с помощью линейки отрезок длины пи". Если деления такого нет, то ничего вы не построите. В пределе только, а нам-то надо точно.
Давайте посмотрим шире. Пусть у нас есть инструкции по построению в виде произвольного юникодного текста. Да, подавляющее большинство текстов бессмысленно, но неважно, это оценка сверху. Таких текстов счётное множество, так как в двоичной кодировке текст — это по сути просто какое-то большое натуральное число. То есть осмысленных инструкций — подмножество натуральных чисел. Еще и много алгоритмов по-разному строят одно и то же, то есть по сути могут быть отождествлены.
Единственное, что мы требуем — чтобы описание инструментов входило в алгоритм. Можно опустить для удобства, но оно там подразумевается. Иначе можно сказать "достаньте линейку с делением х".
А чисел вещественных — континуум, то есть принципиально больше. Тут можно ограничиться числами вычислимыми, например, пределами рациональных последовательностей. Число мы вычислить с любой точностью можем (пи, е и всё в таком роде), а построить, быть может, и нет способа! Большинство чисел такого рода никаким алгоритмом нельзя построить. Вообще. Какие бы инструменты вы не выдумали. Если они описываются и изготавливаются (хотя бы мысленно), а не "даны свыше", то вот так. Можно приблизиться, а целиком построить — невозможно.
На этом фоне линейка с делениями и транспортир — мелочи.
Давайте вспомним, как доказывается несчетность континуума. Берем все десятичные дроби с нулевой целой частью и обозначим d(i) цифру номер i. Возьмем любой пересчет таких дробей, то есть номеру n соответствует какая-то дробь с цифрами d(i,n). Пересчет точно пропустит дробь, построенную так: ее цифры D(i)=9-d(i,i). В самом деле, числу n=1 соответствует дробь с цифрами d(i,1), ее первая цифра равна d(1,1), и она не совпадает с первой цифрой D(1) построенной нами дроби. И так далее: одной цифрой наша дробь отличается от всех пересчитанных и потому не может входить в пересчет. Значит, пересчитать все дроби — невозможно.
Можно пойти дальше, и назвать вычислимыми числа, которые можно хоть как-то описать текстом. Описать так, чтобы можно было это число отличить от другого. Наверное (хотя не уверен) это подразумевает возможность вычислить любую цифру этого числа по запросу.
Таких чисел тоже счетное множество, так это подмножества множества текстов (в кодировке — натуральных чисел). А всех чисел — континуум.
Получается нечто невообразимое: большинство чисел невозможно ни описать, ни представить себе, ни вычислить, ни приспособить к делу. Нам доступно ничтожное, имеющее нулевую меру, подмножество чисел. Из которых мы ещё и построить циркулем и линейкой (и другими инструментами тоже) можем лишь ничтожную долю. А числа вроде пи мы целиком даже записать не имеем возможности.
К этой мысли надо привыкнуть. Я знаю людей, у которых религиозные размышления в этой связи появляются...