Re: Решите задачу
От: killua  
Дата: 21.09.05 18:38
Оценка:
Здравствуйте, vitaly_spb, Вы писали:

_>задача: составить алгоритм поиска периода цикла.


_>пример последовательности: 5-12-9-38-144-52-9

Есть такая штука — поиск периодичности в ДНК. почти такая же задача, только вместо чисел — 20ть аминокислот.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
killua-.blogspot.com
Re[2]: Решите задачу
От: Кодт Россия  
Дата: 22.09.05 08:43
Оценка:
Здравствуйте, killua, Вы писали:

K>Есть такая штука — поиск периодичности в ДНК. почти такая же задача, только вместо чисел — 20ть аминокислот.


Это не такая же задача. Здесь мы имеем дело с рекуррентной последовательностью x[k] = f(x[k-1]), а ДНК если и рекуррентна, то неизвестно насколько глубоко: x[k] = f(x[k-1], x[k-2], .... x[k-10000]).
Соответственно, нам достаточно найти совпадение сигнатуры из единственного элемента, x[k] = x[m] ==> x[k+1] = x[m+1]..., а в ДНК размер сигнатуры ещё требуется определить.
Перекуём баги на фичи!
Re: Решите задачу
От: Ventalf Россия  
Дата: 22.09.05 10:34
Оценка:
Здравствуйте, vitaly_spb, Вы писали:

_>есть некая функция

_>x2=f(x1)
_>она генерирует (по неизвестному нам закону) следующее число некой последовательности (кстати, целочисленной)
_>соответственно x3=f(f(x1)))
_>как известно все языки программирования имеют ограниченную разрядность целых типов, соответственно эта последовательность рано или поздно замкнётся (либо по переполнению, либо по алгоритму).

_>задача: составить алгоритм поиска периода цикла.


_>пример последовательности: 5-12-9-38-144-52-9


Если функция "классическая" (без внутреннего состояния), то повтор одного числа в последовательности повлечет за собой повтор и последующих.
В этом случае храним уже получившиеся числа и итерацию, на которой они получены (например, в хэш-таблице). Если число повторяется — длина цикла=текущая итерация-итерация, когда это число уже было.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.