Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.01.2014, 02:54   #1
TokSeven
 
Регистрация: 01.06.2011
Сообщений: 3
По умолчанию Оценка вычислительной сложности элементарного алгоритма

На днях возник вопрос следующего содержания: имеем двойной цикл вида (всё на псевдокоде)
Код:
for (i = 0; i < n; ++i)
  for (j = 0; j < n; ++j)
  {
    //действия за константное время
  }
Данный алгоритм имеет сложность порядка Θ(n^2)=O(n^2).

Далее, имеем двойной цикл следующего вида
Код:
for (i = 0; i < n; ++i)
  for (j = i + 1; j < n; ++j)
  {
    //действия за константное время
  }
Вопрос: возможно ли точно определить вычислительную сложность Θ(...) данного алгоритма, и, если да, то чему она равна? Насколько мне известно, данный алгоритм также имеет O(n^2).
TokSeven вне форума Ответить с цитированием
Старый 29.01.2014, 03:08   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Насколько мне известно, данный алгоритм также имеет O(n^2).
Вполне вероятно, что это действительно так. Хотя точное исследование ИМХО будет не лишним.
Цитата:
возможно ли точно определить вычислительную сложность Θ(...) данного алгоритма, и, если да, то чему она равна?
В помощь:Понятие вычислительной сложности алгоритма, О-нотация. Эмпирические оценки эффективности алгоритмов на примере алгоритмов сортировки.
Streletz вне форума Ответить с цитированием
Старый 29.01.2014, 07:03   #3
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Угу.. Оба будут квадратами.. но 1-ый - O(C1*N^2) 2-ой - O(C2*N^2)..
где С1 > С2.. но константы не пишутся.. посему мы понимаем, что сложность они имеют N^2.. но один будет выполняться быстрее другого..
Poma][a вне форума Ответить с цитированием
Старый 29.01.2014, 11:00   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
но 1-ый - O(C1*N^2) 2-ой - O(C2*N^2)..
O(n*F(n)) где F(n)<n
O(n*ln(n))
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 29.01.2014, 11:53   #5
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

Количество итераций в зависимости от n:
2: 1
3: 1+2
4: 1+2+3
5: 1+2+3+4
6: 1+2+3+4+5
...
N: N*(N-1)/2

O(N) = N^2

Ромаха прав.

Последний раз редактировалось ds.Dante; 29.01.2014 в 11:57.
ds.Dante вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оценка времени работы алгоритма Utkin Общие вопросы по программированию, компьютерный форум 5 25.09.2013 13:11
подсчитать кол-во операций для определения сложности алгоритма Юна New Помощь студентам 3 06.04.2012 19:24
Оценка сложности алгоритмов Kristen_McBrian Паскаль, Turbo Pascal, PascalABC.NET 1 22.12.2010 02:09
задачи по вычислительной математике ai\ekcah^p Фриланс 2 20.09.2009 23:46
Оценка алгоритма Алежа Помощь студентам 7 20.01.2009 14:28