Имя: Пароль:
IT
 
Алгоритм Евклида. Как вычислить число итераций?
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
https://ru.wikipedia.org/wiki/Алгоритм_Евклида
Тут формулы есть
Максимум О(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) читается как "О большое",.... https://ru.wikipedia.org/wiki/«O»_большое_и_«o»_малое
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-  ое число Фибоначчи.
Доказательство можно посмотреть, например, здесь: http://virlib.eunnet.net/books/numbers/text/10.html
С помощью этой теоремы можно оценить порядок роста алгоритма Евклида. Пусть 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) Как смешно
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший