|
|
|
Алгоритмы для бесконечного потока данных.
|
|||
|---|---|---|---|
|
#18+
Dima TВместо CRC32 можно любой другой хэш взять (MD5 например), просто затестить какой быстрее считается.Ну глядя на алгоритмы, md5 должен быть примерно в 30 раз медленнее crc. Ну так то да, если допустима погрешность, то взять какой-нибудь хеш и хранить по биту на каждое его возможное значение - самый компактный способ хранения будет. Только размер хеша надо правильно выбрать. А то для crc32 больше четырех с небольшим миллиардов уникальных пользователей никак не получится :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2014, 12:38 |
|
||
|
Алгоритмы для бесконечного потока данных.
|
|||
|---|---|---|---|
|
#18+
Главное, не забывайте про зеленных человечков с Марса!!! Они тоже хотят, что бы их посчитали. CRC32 и придел в 4 млр. не катит Да... и не забывайте требования к оборудованию... нужно все на 128 Mb диске сделать.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2014, 15:44 |
|
||
|
Алгоритмы для бесконечного потока данных.
|
|||
|---|---|---|---|
|
#18+
Можно CRC64 взять и чтобы в 128 уложиться жать JPEG`ом раз небольшие потери разрешены ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2014, 15:52 |
|
||
|
Алгоритмы для бесконечного потока данных.
|
|||
|---|---|---|---|
|
#18+
Ребята, какие такие хэши, все хэши теряют данные, уникальность после хэша не проверить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2014, 16:08 |
|
||
|
Алгоритмы для бесконечного потока данных.
|
|||
|---|---|---|---|
|
#18+
MasterZiv, ознакомься с ТЗ eldarkaa2) достаточно примерного значения с погрешностью, не превышающей нескольких процентов Осталось провести исследование сколько процентов теряют разные хэши, чтобы уложиться в заданные пределы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2014, 16:16 |
|
||
|
Алгоритмы для бесконечного потока данных.
|
|||
|---|---|---|---|
|
#18+
Я как-то такое исследование устраивал, надо было ускорить поиск по точному совпадению строки char(100) в таблице из полумиллиона уникальных записей. Оказалось CRC32 почти тянет на уникальный ключ, повторов было очень мало. Но если всегда считать CRC от 100 символов, а если обрезать конечные пробелы - количество повторов значительно увеличиваются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2014, 16:26 |
|
||
|
Алгоритмы для бесконечного потока данных.
|
|||
|---|---|---|---|
|
#18+
Dima TMasterZiv, ознакомься с ТЗ eldarkaa2) достаточно примерного значения с погрешностью, не превышающей нескольких процентов Осталось провести исследование сколько процентов теряют разные хэши, чтобы уложиться в заданные пределы.Дело не в том, сколько теряют хэши, а в том, каково распределение входных данных. Если, например, функия хэша дает одинаковое значение (т.е. коллизию) для четного N и для нечетного N+1, а во входном потоке четных чисел на порядок больше, чем нечетных, то погрешность составит десятки-сотни процентов, а вовсе не 1/N. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2014, 16:33 |
|
||
|
Алгоритмы для бесконечного потока данных.
|
|||
|---|---|---|---|
|
#18+
Фильтр Блума частично решает проблему существования ключа в бесконечной выборке при условии конечной памяти самого фильтра. Но подсчёт (итератор) в нем невозможен. Кроме того из постановки вопроса непонятно, были ли транзакции на удаление ключей. Если нет - в большинстве случаев можно просто анализировать count(*) событий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2014, 19:01 |
|
||
|
Алгоритмы для бесконечного потока данных.
|
|||
|---|---|---|---|
|
#18+
eldarkaa, Вам нужно просто осознать, что ничего бесконечного не бывает. Потом оценить разумно объем данных которые РЕАЛЬНО нужно хранить. Уверен, что ничего суперсложного в вашей задаче не останется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2014, 01:43 |
|
||
|
Алгоритмы для бесконечного потока данных.
|
|||
|---|---|---|---|
|
#18+
Эту задачу решает вот такая штука: http://ru.wikipedia.org/wiki/Фильтр_Блума Только вам нужен Multiset, т.е. вместо битового массива нужен массив счетчиков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2014, 08:25 |
|
||
|
Алгоритмы для бесконечного потока данных.
|
|||
|---|---|---|---|
|
#18+
MasterZivТвоё видение в корне неверно. Потому что если брать это ограничение за основу, то решений у задачи нет. Правильный ответ уже был. И на пункт а, и на пункт б. Ваша задача(оба пункта) практически равносильна попытке найти сумму расходящегося ряда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2014, 03:16 |
|
||
|
Алгоритмы для бесконечного потока данных.
|
|||
|---|---|---|---|
|
#18+
Dima TMasterZiv, ознакомься с ТЗ eldarkaa2) достаточно примерного значения с погрешностью, не превышающей нескольких процентов Осталось провести исследование сколько процентов теряют разные хэши, чтобы уложиться в заданные пределы. Ну-ну, успехов .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2014, 14:09 |
|
||
|
Алгоритмы для бесконечного потока данных.
|
|||
|---|---|---|---|
|
#18+
MasterZivНу-ну, успехов .... Успехи есть, выше писал, работает в реальном проекте. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2014, 14:16 |
|
||
|
Алгоритмы для бесконечного потока данных.
|
|||
|---|---|---|---|
|
#18+
Глянул текущее состояние: почти 495 тыс. уникальных записей, совпавших CRC32 - всего 29 штук Если взять остаток деления CRC32 на 1 Мб - дублей 100 тыс. 2 мб - 54 тыс. 4 мб - 28 тыс. 8 мб - 14 тыс. 16 мб - 7 тыс. Зависимость точности от объема просматривается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2014, 14:44 |
|
||
|
|

start [/forum/topic.php?fid=16&gotonew=1&tid=1341222]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
183ms |
get topic data: |
12ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 527ms |

| 0 / 0 |
