Dmitri Pavlov - Синтаксическая математика
August 7th, 2007
10:59 pm

[Link]

Синтаксическая математика

(175 comments | Leave a comment)

Comments
 
From:[info]dmitri_pavlov@lj
Date:August 7th, 2007 - 02:00 pm
(Link)
Как насчёт challenge'а?
[User Picture]
From:[info]rus4@lj
Date:August 7th, 2007 - 02:11 pm
(Link)
Я, признаться, не понял, в чем проблема. Как при делении в столбик не определить текущую цифру неполного частного? Ну, рассмотрение начальных цифр делителя и делимого сводит количество априорных вариантов к двум (ну или к трем, но вроде к двум), дальше надо умножить делимое на меньший из двух априорных вариантов неполного частного и сравнить с делимым.
From:[info]dmitri_pavlov@lj
Date:August 7th, 2007 - 02:25 pm
(Link)
Сколько начальных цифр делимого и делителя рассматривается?
И сколько остаётся вариантов и какие они?
[User Picture]
From:[info]rus4@lj
Date:August 7th, 2007 - 02:32 pm
(Link)
Вроде по одной хватает, чтобы осталось (не более чем) три варианта. Если умножать не "с конца", а "с начала", то число вариантов быстро уменьшится до двух. Самое сложное, когда у делителя первая цифра 1. Я могу сформулировать более четко, но не вижу в этом, признаться, никакого челленджа.
From:[info]dmitri_pavlov@lj
Date:August 7th, 2007 - 02:56 pm
(Link)
Если брать одну цифру от делителя, то ошибка может достигать половины основания системы счисления. Как раз, когда у делителя первая цифра 1. А вовсе не три варианта. Скажем, для десяти имеем 5: 100/19=5, 10/1=10.

Челлендж как раз и состоит в том, чтобы сформулировать искомое правило сразу, полностью и чётко.
Имеется ввиду, что никто не держит у себя в голове чёткой процедуры деление (она, впрочем, не особо нужна).
[User Picture]
From:[info]rus4@lj
Date:August 7th, 2007 - 03:22 pm
(Link)
Действительно. Ну если по две цифры брать, то получится О(1) проверок, потому что отношение двух соседних двузнычных чисел есть 1+О(1/n) (n --- основание системы), так что относительная погрешность частного будет 1+O(1/n), поэтому абсолютная будет O(1).
From:[info]dmitri_pavlov@lj
Date:August 7th, 2007 - 03:27 pm
(Link)
Почти верно. Осталась ещё одна неточность:
иногда от делимого надо брать три цифры.
Кнут в Искусстве программирования делает очень похоже. Только он в начале
несколько раз удваивает делитель, чтобы старшая цифра была не меньше половины основания.
[User Picture]
From:[info]rus4@lj
Date:August 7th, 2007 - 03:32 pm
(Link)
Не понял, зачем и когда три цифры надо.
From:[info]dmitri_pavlov@lj
Date:August 7th, 2007 - 04:18 pm
(Link)
Когда делим 100 на 19, например.
[User Picture]
From:[info]rus4@lj
Date:August 7th, 2007 - 10:05 pm
(Link)
так вроде если делить 110 на 19, не сильно больше получается?
From:[info]dmitri_pavlov@lj
Date:August 8th, 2007 - 03:51 am
(Link)
Это правда, но проблема в том, что по сути мы все равно делим трёхзначное число на двузначное.
В противном случае мы бы делили 10 на 19 и получили бы 0.
[User Picture]
From:[info]yakov_sirotkin@lj
Date:August 7th, 2007 - 04:15 pm
(Link)
Начнём пробовать с 1.

Мы начинаем домножать делитель на пробу "слева" и при этом считаем, сколько осталось от делимого и имеем оценку, сколько у нас может добавиться от хвоста. С каждым шагом от хвоста может добавиться на порядок меньше. Если от делимого осталось больше, чем делитель + оценка добавки от хвоста, значит пробу нужно увеличить на один, если осталось меньше, чем делитель - ответ получен.

Формально проб много, но не более двух пойдут дальше двух цифр.
My Website Powered by LJ.Rossia.org