Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.83/48: Рейтинг темы: голосов - 48, средняя оценка - 4.83
0 / 0 / 1
Регистрация: 09.01.2013
Сообщений: 41
1

Определение временной сложности алгоритма (О символика)

20.10.2013, 23:10. Показов 9269. Ответов 30
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Procedure R(n, x : integer); 
Var i, j :integer;
begin
  S:=0; 
  For i:=1 to 2*n do
    if a[i] > х then
           For j:=1 to n*n do
             s:=s+A[j];
end;
{основная прога}
Var t, u : integer;
begin 
{1}  for q:=1 to 10 do begin R(5, q)
{2}   for t:=1 to 20 do R(2*t, q); 
  end;
End;
Сама процедура у меня получилась имеет O=n^3, (вложенный цикл{2} равен 2n^3 и верхний{1} равен n^3) и в итоги алгоритм О=2n^6=n^6.
Подскажите правильно ли так определять верхнюю оценку?
Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.10.2013, 23:10
Ответы с готовыми решениями:

О символика (определение временной сложности алгоритма)
S:=0; For i:=1 to n*2 do begin s:=s+A; For j:=1 to n - 2 do begin s:=s+A; For k:=1 to n-3 do...

Определение сложности алгоритма / Pascal
Доброго времени суток. Есть такой код: type mas = array of integer; procedure InsertSort(var...

Анализ сложности алгоритмов. О-символика
Помогите разобраться. Нашел функцию f(n) алгоритма, допустим, 5n2+3n+4. Как найти О большое знаю,...

Определение временной сложности рекурсивного алгоритма
Добрый день, подскажите, пожалуйста, как определять временную сложность у алгоритма такого вида, и...

30
Модератор
Эксперт функциональных языков программирования
3051 / 2193 / 459
Регистрация: 26.03.2015
Сообщений: 8,469
14.05.2017, 23:29 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от arts1 Посмотреть сообщение
1. Есть два односвязных списка с N и M элементами. Надо найти сложность нахождение такого двусвязного списка, где есть только те элементы N, которые присущы в M? Вроде O(M*N), но двусвязность кажется это усложняет?
O(M logM + N logN)
0
138 / 7 / 1
Регистрация: 31.03.2015
Сообщений: 395
15.05.2017, 01:16 22
Обьяснить можете касательно такой "сложной сложности". Почему там дважды logK - сортировки там не надо. И насколько помню такого варианта не было? А если б надо было создать односвязный результирующий список? О(M*N).
0
Модератор
Эксперт функциональных языков программирования
3051 / 2193 / 459
Регистрация: 26.03.2015
Сообщений: 8,469
15.05.2017, 15:43 23
Цитата Сообщение от arts1 Посмотреть сообщение
Обьяснить можете касательно такой "сложной сложности". Почему там дважды logK - сортировки там не надо.
Если нужно слить два списка, то быстрее будет их сначала отсортировать.

з.ы. Теоретически, задачу можно сделать за O(N + M), если тупо пройтись по спискам, добавляя их элементы в HashTable... но нужна хорошая Hash функция, чтобы добавление работало за О(1)... то есть, некая зависимость от типа данных.
0
138 / 7 / 1
Регистрация: 31.03.2015
Сообщений: 395
17.05.2017, 00:46 24
Да не надо так складно -- если для создание односвязного списка сложность O(N*logN+M*logM),
то для придание ему двусвязности, согласно этому коду https://www.quora.com/How-do-y... ist-in-C++, надо лиш лишний проход в количестве M (длина конечного списка может быть иной)-->O(N*logN+M*logM+M)?
0
Модератор
Эксперт функциональных языков программирования
3051 / 2193 / 459
Регистрация: 26.03.2015
Сообщений: 8,469
17.05.2017, 16:44 25
Цитата Сообщение от arts1 Посмотреть сообщение
O(N*logN+M*logM+M)?
так как M*logM >= M, это можно упростить до O(N*logN+M*logM)
0
138 / 7 / 1
Регистрация: 31.03.2015
Сообщений: 395
17.05.2017, 20:33 26
Ну если M*logM ---> M , то тогда вообще формулу можно упростить к O(M+N+M), что наверное неправильно.
0
Модератор
Эксперт функциональных языков программирования
3051 / 2193 / 459
Регистрация: 26.03.2015
Сообщений: 8,469
17.05.2017, 21:16 27
Цитата Сообщение от arts1 Посмотреть сообщение
Ну если M*logM ---> M
Не "M*logM ---> M", а "M*logM больше или равно M"

Добавлено через 1 минуту
Аналогично O(x2 + x) = O(x2)
0
138 / 7 / 1
Регистрация: 31.03.2015
Сообщений: 395
17.05.2017, 23:09 28
Да я понял. Через минуту-две спохватился что написал, а что вами имелось ввиду.

Добавлено через 5 минут
Думаю самый простой вопрос на тему. Сложность нахождение студента в студенческом журнале -- logN, если учесть что список уже отсортирован по алфавиту? И применим бинарный поиск.
0
Модератор
Эксперт функциональных языков программирования
3051 / 2193 / 459
Регистрация: 26.03.2015
Сообщений: 8,469
18.05.2017, 00:44 29
Цитата Сообщение от arts1 Посмотреть сообщение
Сложность нахождение студента в студенческом журнале -- logN, если учесть что список уже отсортирован по алфавиту?
Да, если есть доступ по индексу за O(1).
0
138 / 7 / 1
Регистрация: 31.03.2015
Сообщений: 395
27.09.2017, 14:04 30
Тут здесь еще таких два примера появилось, которые у меня представляются со сложностью O(1): первое задание это получение следующего элемента односвязного списка (очереди), и вставка М значений в hash-table? Хотя в первом случае очевидно что значение доступа в общем случае O(n).
0
Модератор
Эксперт функциональных языков программирования
3051 / 2193 / 459
Регистрация: 26.03.2015
Сообщений: 8,469
27.09.2017, 18:49 31
Следующий элемент: O(1).
Вставка М значений в hash-table: O(М).
0
27.09.2017, 18:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.09.2017, 18:49
Помогаю со студенческими работами здесь

Определение сложности алгоритма
Составить блок-схему, составить программу и определить её сложность. Записать алгоритм сортировки...

Определение сложности алгоритма
Дана прямоугольная таблица А. Составить алгоритм,который определял бы номер строк таблицы,...

Оценка временной эффективности алгоритма сортировки Шелла
Разработать программу оценки временной эффективности алгоритма, провести исследование зависимости...

Определение тренда по временной выборке
Привет всем. Необходимо из временной выборки определить тренд изменения велечины. Кто-нибудь писал...

Временной порядок сложности "пузырька"
Сложность алгоритма: O \left({n}^{2} \right) вопрос что это значит? и что за переменные O и n ?

Оценка сложности алгоритма
1.for( i = 1 ; i < n ; i++){ }.. 2.for( i = 1 ; i <=n ; i++){ }.. 3. .for( i = 1 ; i <n-1...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru