@ru_python

Страница 979 из 9768
Aldar
13.06.2016
23:10:33
для любого натурального числа пусть моя хэш функция это число и возвращает

отличная хэш функция

идеальная

Google
Andrei
13.06.2016
23:11:03
Потому что Card(Im(id)) = +inf

Aldar
13.06.2016
23:11:10
идеально равномерная

андрей, вот смотри, я беру элемент из массива

Andrei
13.06.2016
23:11:53
А хеш-функция по определению card(Im(hash)) = M , где M\in N

Aldar
13.06.2016
23:11:59
само значение элемента и будет хэш функцией

потом что я с этим делаю?

Andrei
13.06.2016
23:12:21
Повторюсь в третий раз.

Andrey
13.06.2016
23:12:26
А хеш-функция по определению card(Im(hash)) = M , где M\in N
Это определение возникло из-за того, что память не бесконечно. Но у нас совершенно другие условия.

Andrei
13.06.2016
23:12:29
Это не хеш-функция.

Нет, это определение вообще никак не затрагивает память.

Andrey
13.06.2016
23:12:51
Ок. У нас новая структура данных - суперхештаблица, где ключом является суперхешфункция.

Aldar
13.06.2016
23:12:52
потом я беру остаток от деления этого числа на длину массива

и это будет мой индекс, в массиве

Google
Aldar
13.06.2016
23:13:14
массиве списков

Andrey
13.06.2016
23:13:26
Andrei
13.06.2016
23:13:55
Потому что операция обращения к ячейке бесконечной длины это количество бит в числе, то есть его логарифм -__-

Либо ты сейчас мне хочешь рассказать про вычисления даже не на машине Тьюринга.

числа в массиве

100 200 300 400 500 ....

Andrei
13.06.2016
23:15:25
Все будут давать одно и то же число в хеше.

Andrey
13.06.2016
23:15:37
массиве списков
Вот здесь у тебя может оказаться, что все числа будут иметь один хеш.

Andrei
13.06.2016
23:16:13
Вот над этим не задумывался. А почему так?
Ну потому что весь Computer Science живёт в такой модели вычислений-__-

Плоская память, все дела.

Надо ж понимать откуда все эти асимптотики берутся. Что в основе лежит.

Andrey
13.06.2016
23:16:57
Ну потому что весь Computer Science живёт в такой модели вычислений-__-
А, ты имел ввиду то, что на прочтение числа тратится логарифм?

Andrei
13.06.2016
23:17:10
Да хотя бы на чтение, да.

Там же не сказано, что это uint32_t числа, правильно?

Andrey
13.06.2016
23:17:41
Да хотя бы на чтение, да.
А почему на переход логарифм?

Andrei
13.06.2016
23:18:09
Ну потому что переход состоит из чтения.

Потом выставления нужных битов на мультиплексоре.

Google
Aldar
13.06.2016
23:18:31
Все будут давать одно и то же число в хеше.
ну и что, мы речь вели о сложности вставки в хэш, откуда она линейная тут?

Andrei
13.06.2016
23:18:49
Оттуда, что у тебя все числа имеют одинаковый хеш.

Aldar
13.06.2016
23:19:07
это значит они пойдут в одинаковый список

но сложность вставки будет константа

Andrey
13.06.2016
23:19:31
это значит они пойдут в одинаковый список
И ты возвращаешься к исходной задаче)

Andrei
13.06.2016
23:19:35
Нет.

У тебя надо пройтись в конец этого списка.

Andrey
13.06.2016
23:20:00
Andrei
13.06.2016
23:20:10
Господи, тогда поиск в списке будет линеен.

Aldar
13.06.2016
23:20:32
да, но мы говорили про сложность вставки, а она константа

Andrey
13.06.2016
23:20:41
Господи, тогда поиск в списке будет линеен.
Я знаю. Выше об этом я и написал.

Aldar
13.06.2016
23:20:47
я же говорил что тут дело в разрешении коллизий

Andrei
13.06.2016
23:20:48
Нет, просто ты опиши подробно алгоритм вставки.

Aldar
13.06.2016
23:21:08
если бы я разрешал коллизии поиском свободного места в соседнем элементе

то тогда действительно сложность вставки была бы линейная

Andrey
13.06.2016
23:21:59
Нет, просто ты опиши подробно алгоритм вставки.
В каждой ячейке таблицы храним структуру из 2 элементов - указатель на голову списка и указатель на конец списка.

А после идёт линейная вставка.

Andrei
13.06.2016
23:22:31
В случае со списком вставка линейная, потмоу что тебе надо пройтись по списку.

Aldar
13.06.2016
23:23:06
у меня массив списков

Andrey
13.06.2016
23:23:15
В случае со списком вставка линейная, потмоу что тебе надо пройтись по списку.
Зачем проходить, если можно хранить указатель на конец списка?

Google
Aldar
13.06.2016
23:23:24
std::vector<std::list<int»

Andrei
13.06.2016
23:23:31
Для того чтобы не вставлять элемент повторно.

Aldar
13.06.2016
23:23:36
тут не надо проходить по списку

Andrei
13.06.2016
23:23:47
Потому что в хеш-таблице хранится только одна копия. Опять же по определению.

Aldar
13.06.2016
23:23:52
речь не идёт об исходной задаче

Andrey
13.06.2016
23:23:59
Aldar
13.06.2016
23:24:13
речь идёт о вставке в хэш

Andrey
13.06.2016
23:24:28
Ладно, этот спор уже смысла не имеет. Решение - сортировка каким-нибудь устойчивым алгоритмом и линейный проход.

Admin
ERROR: S client not available

Aldar
13.06.2016
23:24:57
сортировка heapsort

Andrei
13.06.2016
23:25:07
Хотя опять же не всё так просто.

Andrey
13.06.2016
23:25:19
Ну да, фигню написал.

Andrei
13.06.2016
23:25:30
Если там числа нефиксирвоанной длины, то операция сравнения занимает уже не константу.

Aldar
13.06.2016
23:25:48
там инт)

Andrei
13.06.2016
23:26:20
А хотя нет, константу, если аккуратно вероятности посчитать.

Andrey
13.06.2016
23:26:20
Если там числа нефиксирвоанной длины, то операция сравнения занимает уже не константу.
К сожалению нам придётся ограничить как-то эти числа сверху.

Andrei
13.06.2016
23:26:29
В задаче ограничений не было.

Ты сам хотел бесконечную память и бесконечные числа.

Google
Aldar
13.06.2016
23:27:00
не надо усложнять

Andrei
13.06.2016
23:27:00
там инт)
Алдар, в этом случае там вообще всегда константа.

На все алгоритмы.

Aldar
13.06.2016
23:27:18
ты начал про вставку

Andrei
13.06.2016
23:27:20
Потому что ограничееное число значений и вообще число состояний ограниченное.

Вставка.

Давай.

Aldar
13.06.2016
23:27:36
я поэтому ответил

Andrei
13.06.2016
23:27:39
Какая хеш-функция.

Aldar
13.06.2016
23:27:44
и начал дискутировать)

Andrey
13.06.2016
23:27:59
Ну, если так, то сравнение чисел идёт за log(lenbin(n))

Andrei
13.06.2016
23:28:02
Алдар.

Andrey
13.06.2016
23:28:08
Быстрее врятли можно.

Andrei
13.06.2016
23:28:14
Нет. Просто за log(n)

Aldar
13.06.2016
23:28:23
да, потому что их надо хотя бы прочитать

Andrei
13.06.2016
23:28:27
log(n) это и есть число бит.

Aldar
13.06.2016
23:28:28
числа надо прочитать

Andrey
13.06.2016
23:28:29
Aldar
13.06.2016
23:28:36
это уже O(n)

Andrei
13.06.2016
23:28:42
Просто побитово.

Алдар, допустим у тебя ограниченные числа.

Твой алгоритм всё равно работает за квадрат.

Страница 979 из 9768