Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 23, 2013 02:07:47

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

Кейса нет..... какая альтернатива

py.user.next
поиск во множестве - O(1)
O(1) - это все-таки когда нет зависимости от n. В нашем случае она все же есть и равна примерно O(log(n)).



Офлайн

#2 Окт. 23, 2013 18:44:15

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9873
Репутация: +  853  -
Профиль   Отправить e-mail  

Кейса нет..... какая альтернатива

Isem
В нашем случае она все же есть и равна примерно O(log(n)).
чего ?



Офлайн

#3 Окт. 23, 2013 23:41:33

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Кейса нет..... какая альтернатива

Isem
py.user.next
давайте разовьем эту тему, матчасть в студию! :-)



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#4 Окт. 24, 2013 02:01:13

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

Кейса нет..... какая альтернатива

py.user.next
чего ?
Это что, удивление от незнания, выраженное в родительном падеже?



Офлайн

#5 Окт. 24, 2013 05:15:22

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9873
Репутация: +  853  -
Профиль   Отправить e-mail  

Кейса нет..... какая альтернатива

Isem
Это что, удивление от незнания, выраженное в родительном падеже?
это вопрос, где ты там logn нашёл ? у множества поиск занимает O(1) при любом количестве элементов



Офлайн

#6 Окт. 24, 2013 07:47:20

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

Кейса нет..... какая альтернатива

py.user.next
это вопрос, где ты там logn нашёл ? у множества поиск занимает O(1) при любом количестве элементов

Это обращение к элементу массива занимает O(1), то есть не зависит от количества элементов, а поиск элемента в сортированной коллекции занимает O(log(n)) времени. Это очевидно для бинарного поиска. Количество сравнений, которое нужно сделать, равно log2(n) и мы заменяем логарифм по основанию 2 на натуральный логарифм, так как константный множитель не играет роли. И не важно, что в питоне используется хэш функция, она лишь влияет на коэффициент при логарифме, который мы игнорируем.



Офлайн

#7 Окт. 24, 2013 13:35:59

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9873
Репутация: +  853  -
Профиль   Отправить e-mail  

Кейса нет..... какая альтернатива

Isem
Это обращение к элементу массива занимает O(1)
к элементу вектора

Isem
а поиск элемента в сортированной коллекции занимает O(log(n)) времени
множество - динамическая структура данных, общая для всех языков
словарь в питоне - нагруженное множество
и поиск в них занимает всегда одно и то же время, даже если там 1000000 элементов
(реализуется через хеш-таблицу)



Офлайн

#8 Окт. 24, 2013 13:59:49

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Кейса нет..... какая альтернатива

Не спорьте, девочки, читайте первоисточник :)



Офлайн

#9 Окт. 24, 2013 15:57:22

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

Кейса нет..... какая альтернатива

py.user.next
и поиск в них занимает всегда одно и то же время, даже если там 1000000 элементов
(реализуется через хеш-таблицу)
Я внятно выразился, что хэш функция влияет лишь на коэффициент при логарифме. Для большой области значений хэш функции (например, 65536), и при n < 65536 скорость алгоритма поиска в множестве равна O( log(n)/log(65536) ),что при n < 65536 дает O(1). При n -> бесконечность, что по ссылке
Lexander
Не спорьте, девочки, читайте первоисточник :)
английским по-белому написано, что в худшем случае - это O(n), что гораздо хуже, чем O( log(n) ). Но как правило (читаем второе предложение с начала) “However, it is generally safe to assume that they are not slower by more than a factor of O(log n).”
Если у вас до сих пор крадутся сомнения, кто вам мешает создать множество из четных чисел размером несколько миллионов элементов и потренироваться в поиске случайного элемента с замером времени?

py.user.next
Isem
Это обращение к элементу массива занимает O(1)
py.user.next
к элементу вектора
Что вы тут подчеркнули, имеющее отношение к сути вопроса?



Офлайн

#10 Окт. 26, 2013 00:09:37

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9873
Репутация: +  853  -
Профиль   Отправить e-mail  

Кейса нет..... какая альтернатива

Isem
Что вы тут подчеркнули, имеющее отношение к сути вопроса?
ты не отличаешь множество в питоне от множества как структуры данных
в питоне множество - это одна из реализаций множества, её могут и через n сделать
то же самое насчёт массива: массив - это реализация вектора как структуры данных
кстати, список представляет из себя динамический вектор, кортеж - вектор, словарь - нагруженное множество

Isem
что при n < 65536 дает O(1)
при любом количестве она должна давать O(1), потому что перебор элементов не требуется
представь, что ты множество записал в вектор, какова будет скорость поиска ?
там и написано, что скорость равна O(1), просто у них в реализации она может не равняться O(1), потому что реализация такая

так что никакого log n



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version