
Andrey
13.06.2016
23:10:13

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

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
массиве списков

Andrei
13.06.2016
23:13:20

Andrey
13.06.2016
23:13:26

Andrei
13.06.2016
23:13:55
Потому что операция обращения к ячейке бесконечной длины это количество бит в числе, то есть его логарифм -__-
Либо ты сейчас мне хочешь рассказать про вычисления даже не на машине Тьюринга.
числа в массиве
100 200 300 400 500 ....

Andrey
13.06.2016
23:15:21

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

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

Andrei
13.06.2016
23:16:13
Плоская память, все дела.
Надо ж понимать откуда все эти асимптотики берутся. Что в основе лежит.

Andrey
13.06.2016
23:16:57

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
А после идёт линейная вставка.

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
Ладно, этот спор уже смысла не имеет. Решение - сортировка каким-нибудь устойчивым алгоритмом и линейный проход.

Andrei
13.06.2016
23:24:49
Просто nlogn-ым

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
Просто побитово.
Алдар, допустим у тебя ограниченные числа.
Твой алгоритм всё равно работает за квадрат.