Здравствуйте, дети! Скажите, кто знает, что такое натуральные числа? Все! Ой как хорошо. А, скажите, кто может объяснить? Ты, Васенька? Ну давай. Гм, гм, "положительные целые числа", нет, не пойдёт. Тебе придётся объяснить, что такое "целые числа", а это сложнее. Ещё у кого есть версии? Количество яблок? Мне кажется, вы не понимаете, зачем нужно объяснять.
Натуральные числа это некоторые математические объекты, чтобы делать о них какие-то утверждения, вводить на них операции (сложение, умножение), нам нужно какое-то формальное определение. Иначе операция сложения останется такой же неформальной, на уровне "было две кучки яблок, сложили их в одну". И доказывать теоремы, в которых используется сложение, станет невозможно, это печально.
Да-да, вы совершенно верно вспомнили, что точки и прямые это неопределимые понятия. Но у нас есть аксиомы, задающие свойства, на которые можно опираться в доказательствах. Например, "через любые две точки на плоскости можно провести прямую и притом только одну". И
т.п. Вот чего-нибудь такого хотелось бы.
Натуральные числа
О том, что такое натуральные числа нам всем рассказал
Джузеппе Пеано (говорят, ударение на "а", ПеАно), книжка вышла в 1889 году. С тех пор его объяснение широко известно как
аксиомы Пеано или "арифметика Пеано". В исходном варианте это выглядело так:
- 0 есть натуральное число
- Следующее за натуральным числом есть натуральное число
- 0 не следует ни за каким натуральным числом
- Всякое натуральное число следует только за одним натуральным числом
- Аксиома полной индукции.
Как верно заметил
sanchos_f, формулировка четвёртой аксиомы не совсем точна. Подразумевается не "только за одним", а "не более чем за одним". Была ли неточность в оригинале или вкралась где-то по пути следования от Пеано до этого поста я не знаю.
Кроме того, по идее, ещё должно быть сказано, что всё остальное натуральным числом не является, возможно, это подразумевается.
Индукция нам сейчас не понадобится, а остальное должно быть очевидно. Начинать можно с 0, а можно с 1, работают оба варианта. Сам Пеано начинал с 0, в СССР/России почему-то прижилась 1, но пусть будет 0, отдадим дань уважения языку С Пеано.
В виде формул [озвученных на русском из-за убогости средств ввода] первые четыре аксиомы формулируются так:
- 0 принадлежит N
- Существует функция S : N --> N (из N в N), сопоставляющая натуральному числу следующее натуральное число. S определена для любого натурального числа.
- Не существует такого x, принадлежащего N, что S(x) = 0
- Если x != y, то S(x) != S(y).
Первые две аксиомы указывают способ порождения N, третья и четвёртая аксиомы исключают циклы и гарантируют, что последовательные числа выстраиваются в аккуратный рядочек.
Итак, натуральные числа это: 0, S(0), S(S(0)), ... S(S( .. S(0) ..)), ...
Чтобы им не было одиноко, введём на них операцию "+". Она разбивается на два случая, в зависимости от значения второго аргумента:
- x + 0 ::= x
Значок "::=" означает "равно по определению" - Пусть y != 0; тогда существует натуральное z: S(z) = y (не будем это доказывать)
x + y = x + S(z) ::= S(x + z)
Ну, действительно:
S(S(0)) + S(S(0)) = (по второму правилу)
= S[ S(S(0)) + S(0) ] = (преобразуем внутреннюю сумму, по второму правилу)
= S[ S{ S(S(0)) + 0 } ] = (преобразуем внутреннюю сумму, по первому правилу)
= S(S(S(S(0))))
Дважды два -- четыре. Всё верно!
Изображения
Что же такое тогда: "0", "1", "2", ... "41", "42", "43", ...?
А это изображения (термин мой я придумал термин! я придумал термин!, введён просто для ясности, надо же как-то назвать).
Чтобы сделать жизнь интереснее, вот ещё несколько: "сорок два", "XLII", "2A", "52", "forty-two", "101010". Это разные способы записи одного и того же числа, они дают разные изображения.
Отвлекаясь от темы...
Нереальная жесть про римские числа :)
Что такое изображение натурального числа: строка символов, которой можно однозначно сопоставить натуральное число. Т.е. мы, имея изображение, и зная, какого оно типа, можем построить натуральное число, которое оно изображает.
a) Проще всего с римскими числами. Для этого нам нужно "запомнить" несколько натуральных чисел, соответствующих I, V, X, L, C, D, M. Ну, понятно:
nI = S(0)
nV = S(S(S(S(S(0)))))
nX = S(..S(0)..)
...
nM = S(...............S(0)...............)
А теперь:
"XLII" --> nL - nX + nI + nI
Для этого помимо сложения нужно вычитание, оно вводится аналогично сложению.
б) Посмотрим десятичные.
n0 = 0
n1 = S(0)
n2 = S(S(0))
n3 = S(S(S(0)))
...
n10 = S(...S(0)...)
"42" --> n10 * n4 + n2
Тут нам понадобится оператор умножения, он тоже вводится несложно, по тому же принципу. Шестнадцатеричные, восьмеричные, двоичные -- все позиционные аналогично десятичным.
Операции над изображениями
Что такое сложение в столбик? Это алгоритм, получающий на вход две строки символов и выдающий на выход одну строку. Алгоритм работает в терминах изображений, символов, он ничего не знает об "истинных натуральных числах".
Но в чём его суть: если есть числа n1 и n2, и изображающие их строки s1 и s2, то (s1 + s2) является изображением (n1 + n2). Это называется изоморфизм (если мне не изменяет память). Аналогично для других операторов.
Если это условие выполняется, то алгоритм сложения "правильный". Для разных видов изображений такие алгоритмы будут иметь разную сложность, с этой точки зрения изображения могут быть более или менее удобными для тех или иных применений.
Например, умножать римские числа ужасно. А русские числительные сложно даже складывать: надо сначала конвертировать в десятичные, потом складывать и конвертировать обратно.
Могут быть какие-то параметры для предпочтений: по используемым символам, по быстродействию... Что важно: это всё -- строки и алгоритмы над строками. Они все равнозначны и являются числами примерно в одинаковой степени.
Немного глубже всё немного хитрее. Функция S произвольна, она может принимать и возвращать в том числе и строки символов. Любые. Может -- десятичные числа. И это будет корректная функция и корректные числа. Вопрос в том, чтобы не останавливаться на одном варианте, и не приписывать числам свойства строк. Например, признак деления на 3 -- типичное свойство представления. Он не работает ни с шестнадцатеричными, ни с двоичными числами, не определён для русских числительных. А вот коммутативность сложения -- свойство общее.
Примерно так могла бы начинаться моя сегодняшняя лекция, если бы половину я не забыл, половину бы не сократил, не заменил бы 0 на 1... Ну и начало, которое курсивом, конечно, откуда-то из детского сада :) Никаких "детей" и "ой как хорошо" :) И даже фамилию "Пеано" вспомнили и как правильно произносится сказали. Дальше, правда, не вспомнили, ну должен же и я что-то рассказать. А вообще мне очень понравилось. Интересно, как студентам.