|
Алгоритм Евклида. Как вычислить число итераций?
| ☑ |
0
megabax
15.08.15
✎
19:28
|
Добрый день. Подскажите, пожалуйста, решение вот такой задачи.
Даны два числа, m и n. Надой найти их наибольший общий делитель. Ищется он по алгоритму Евклида:
1. Делим m на n, получаем остаток r.
2. Если r=0 то n - искомое значение и мы прекращаем алгоритм.
3. Присваиваем m=n, n=r.
4. Переход к шагу 1.
Нужно определить среднее число итераций, если известно m и n. Подскажите, пожалуйста, решение с доказательствами?
|
|
1
jsmith82
15.08.15
✎
19:29
|
Что такое среднее число итераций
|
|
2
ДенисЧ
15.08.15
✎
19:31
|
Тут формулы есть
Максимум О(n*m)
|
|
3
jsmith82
15.08.15
✎
19:33
|
А что такое О
|
|
4
jsmith82
15.08.15
✎
19:34
|
Время работы алгоритма оценивается теоремой Ламе, которая устанавливает удивительную связь алгоритма Евклида и последовательности Фибоначчи:
Если a > b >= 1 и b < F(n) для некоторого n, то алгоритм Евклида выполнит не более n-2 рекурсивных вызовов
|
|
5
rphosts
15.08.15
✎
19:38
|
(3) читается как "О большое",....
|
|
6
jsmith82
15.08.15
✎
19:39
|
Тот факт, что число шагов, затрачиваемых алгоритмом Евклида, растет логарифмически, связан с числами Фибоначчи:
Теорема (Ламэ, 1845 г.). Пусть n О N , и пусть a > b > 0 такие, что алгоритму Евклида для обработки а и b необходимо выполнить точно n шагов (делений с остатком), причем а - наименьшее с таким свойством. Тогда а = F n +2 , b = F n +1 , где F k - k- ое число Фибоначчи.
Доказательство можно посмотреть, например, здесь:
С помощью этой теоремы можно оценить порядок роста алгоритма Евклида. Пусть a будет меньшим из двух аргументов процедуры. Если процесс завершается за k шагов, тогда должно выполняться a>=Fib(k), т.е. приблизительно равно f^5/sqrt(5) - золотое сечение. Следовательно, число шагов k растет как логарифм a(по основанию f)!
|
|
7
jsmith82
15.08.15
✎
19:40
|
(5) спс
|
|
8
ДенисЧ
15.08.15
✎
20:02
|
(3) фшколу!
|
|
9
rphosts
15.08.15
✎
20:12
|
(8) не уверен, мне первый раз про О и о разъяснили на матане в универе.
|
|
10
ДенисЧ
15.08.15
✎
20:13
|
(9) Хорошо. Фвысшуюшколу.
|
|
11
rphosts
15.08.15
✎
20:20
|
(10) тогда уж в высшую техническую школу... на филфаках матанов не преподают.
|
|
12
ДенисЧ
15.08.15
✎
20:25
|
(11) Ты отстал от жизни. Лет на 80.
Но в матане сложность алгоритмов точно не дают
|
|
13
jsmith82
15.08.15
✎
20:35
|
я где-то проходил сложность алгоритмов, но где не помню
из башки выветрилось
|
|
14
ДенисЧ
15.08.15
✎
20:42
|
(13) Может, в метро?
|
|
15
jsmith82
15.08.15
✎
21:22
|
(14) Как смешно
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший