2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


В этом разделе нельзя создавать новые темы.

Если Вы хотите задать новый вопрос, то не дописывайте его в существующую тему, а создайте новую в корневом разделе "Помогите решить/разобраться (М)".

Если Вы зададите новый вопрос в существующей теме, то в случае нарушения оформления или других правил форума Ваше сообщение и все ответы на него могут быть удалены без предупреждения.

Не ищите на этом форуме халяву, правила запрещают участникам публиковать готовые решения стандартных учебных задач. Автор вопроса обязан привести свои попытки решения и указать конкретные затруднения.

Обязательно просмотрите тему Правила данного раздела, иначе Ваша тема может быть удалена или перемещена в Карантин, а Вы так и не узнаете, почему.



Начать новую тему Ответить на тему На страницу Пред.  1, 2
 
 Re: Рекурсия
Сообщение03.11.2009, 19:28 
Заморожен
Аватара пользователя


18/12/07
8774
Новосибирск
Maslov в сообщении #258009 писал(а):
Хорошо.
Кстати, особых сомнений в том, что рекурсия может быть сведена к итерации, не было. Были сомнения в существовании доказательства того, что любой рекурсивный алгоритм может быть сведен к более эффективному итеративному.

Хотелось бы более подробно раскрыть, что здесь понимается под большей эффективностью. Одно дело, если итерационный алгоритм требует на порядок меньше операций (или даже рекурсивный алгоритм требует $f(n)$ операций, итерационный $g(n)$ операций и $g(n)/f(n) \to 0$ при $n \to \infty$). А другое дело, если итерационный алгоритм даёт выигрыш в конкретное число операций, не зависящее от $n$ (или даже растущее с ростом $n$, но гораздо медленнее, чем общее число операций). В последнем случае выигрыш несущественен.

В конце-концов, если итерационный алгоритм будет всего лишь заниматься эмуляцией рекурсии... Что это принципиально изменит?

 Профиль  
                  
 
 Re: Рекурсия
Сообщение03.11.2009, 20:08 
Заслуженный участник


09/08/09
3438
С.Петербург
Профессор Снэйп в сообщении #258011 писал(а):
Хотелось бы более подробно раскрыть, что здесь понимается под большей эффективностью.
Так получилось, что в этой теме продолжается обсуждение, начатое здесь.

 Профиль  
                  
 
 Re: Рекурсия
Сообщение04.11.2009, 05:54 
Заморожен
Аватара пользователя


18/12/07
8774
Новосибирск
Maslov в сообщении #258027 писал(а):
Профессор Снэйп в сообщении #258011 писал(а):
Хотелось бы более подробно раскрыть, что здесь понимается под большей эффективностью.
Так получилось, что в этой теме продолжается обсуждение, начатое здесь.

Там это тоже не раскрывается. Просто идёт речь про какую-то абстрактную "большую эффективность" и всё.

 Профиль  
                  
 
 Re: Рекурсия
Сообщение04.11.2009, 17:12 
Заслуженный участник


09/08/09
3438
С.Петербург
Профессор Снэйп в сообщении #258130 писал(а):
Там это тоже не раскрывается. Просто идёт речь про какую-то абстрактную "большую эффективность" и всё.
В той теме было одно замечание Бодигрим'а на тему ассимптотической сложности:
Бодигрим в сообщении #255532 писал(а):
То есть ясно, что я могу записать любой рекурсивный алгоритм без, формально говоря, рекурсии, если явно сделаю стек. При этом, возможно, будет некоторая экономия накладных расходов, но асимптотики это не изменит.

Насколько я понял, когда e2e4 писал о большей эффективности итеративных алгоритмов, он имел в виду какие-то локальные улучшения. Но это лучше у него спросить.

 Профиль  
                  
 
 Re: Рекурсия
Сообщение04.11.2009, 17:47 
Заморожен
Аватара пользователя


18/12/07
8774
Новосибирск
Если эмулировать стек, то это будет не выигрыш, а проигрыш по времени. А с точки зрения теории так вообще не важно, что там у нас: стек или эмуляция стека :)

Я в той теме уже задачку кинул, кину и сюда. Для функции Аккермана программа на Паскале (другими языками не владею, простите) выглядит так (тип natural --- это тип для произвольного натурального числа, натуральный ряд начинаем с нуля :) ):

Код:
function A(z,x,y: natural): natural;
begin
if z = 0 then A := x + y else
  if y = 0 then A := sign(z-1) else
    A := A(z-1,x,A(z,x,y-1))
end;

Коротко и предельно ясно! А теперь попробуйте написать вычисление функции $A$ без рекурсивного вызова :) У меня несколько лет назад один студент на курсе это сделал, так я до сих пор нахожусь под впечатлением от его подвига :)

 Профиль  
                  
 
 Re: Рекурсия
Сообщение06.11.2009, 17:49 
Аватара пользователя


31/08/09
46
По теме:
Посмотрите Рекурсивный анализ Гудстейна, там много примеров.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу Пред.  1, 2

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group