Почему мы динамически изменяем размер таблицы хеш-дисков только на основе коэффициента загрузки? Возможны ли какие-либо возможные последствия, если мы хотим увеличить размер таблицы геометрически всякий раз, когда столкновение обнаруживается в стратегии хэширования с равномерным распределением.динамическая настройка структуры данных
ответ
Коэффициент нагрузки представляет собой примерно вероятность столкновения, предполагая, что функция хеширования хороша, поэтому две идеи находятся далеко друг от друга.
Коэффициент загрузки используется, потому что его легко вычислить, и это не является статистически шумным, какие фактические столкновения есть.
Дополнительной причиной является стоимость перемещения всех элементов в таблице. Необходимо проверить пустое ведро, поэтому скобка на коэффициенте нагрузки также является скобкой при наихудших возможностях перечисления всех сохраненных элементов.
Естественный шум при столкновениях является проблемой при использовании их для регулировки размера стола. Мы никогда не захотим следовать именно той политике, которую вы предлагаете. Даже с коэффициентом загрузки 25% мы бы геммерически увеличивали (скажем, по коэффициенту G> 1) таблицу на каждой вставке с вероятностью 1/4, затем снова с вероятностью 1/(4G) и т. Д. И как бы мы решили когда сжимать стол? Конечно, не каждый раз, когда нет столкновения!
Таким образом, на самом деле нам пришлось бы подсчитывать столкновение против вставки в «окне» и настраивать, когда отношение превышает высокие и низкие пороговые значения. Окно должно быть достаточно большим, чтобы отфильтровывать шум с хорошей вероятностью. Это потребует хранения и вычисления накладных расходов для поддержания. Это, вероятно, не стоит, по крайней мере, для небольших таблиц, используемых большую часть времени.
Тем не менее, в таких настройках, как базы данных, где большие таблицы и существует множество операций, фактическая статистика используется для оптимизации производительности. Я не уверен, что размер таблицы хэшей включен в эту оптимизацию в реальном программном обеспечении, но это возможно. Наиболее вероятная причина, по которой я могу себе представить, - это нежелание принимать крошечный риск того, что хэш-функция потерпит неудачу.
- 1. Настройка структуры базы данных
- 2. Динамическая настройка ReportViewer
- 3. Динамическая память внутри структуры
- 4. Динамическая структура внутри структуры
- 5. Динамическая настройка PasswordStrengthRegularExpression
- 6. Проверяется динамическая настройка RadioButton
- 7. Динамическая настройка CSS
- 8. Динамическая настройка Yii-макета
- 9. Динамическая настройка контекста Ember view
- 10. Динамическая настройка ширины ячейки таблицы
- 11. Динамическая настройка информации о культуре
- 12. Динамическая настройка form_tag submit destination
- 13. Настройка структуры данных для запросов в Firebase
- 14. Визуализация данных - D3 - Настройка локальной файловой структуры
- 15. VB.net перебор Структуры и настройка типов данных
- 16. C++ динамическая структура данных
- 17. Динамическая настройка настроек решателя MILP?
- 18. Динамическая настройка разрешения на роль
- 19. Динамическая настройка конечной точки WCF
- 20. Динамическая настройка SENDER_ID в GCM
- 21. Динамическая настройка клиента Apache Http
- 22. Динамическая настройка localRepository в Maven
- 23. динамическая настройка размера нескольких DIVs
- 24. Динамическая настройка диапазона spinbox tkinter
- 25. Динамическая настройка и получение объекта
- 26. Динамическая длина переменной внутри структуры C
- 27. Настройка структуры таблицы
- 28. Настройка структуры модуля Perl
- 29. Настройка структуры массива
- 30. Настройка указателя структуры
Нам не нужно учитывать столкновений. мы предполагаем, что у нас есть единая хеширующая функция, и при первом столкновении мы увеличиваем размер таблицы вдвое. я думаю, что эта стратегия никоим образом не эффективнее стратегии, основанной на коэффициенте нагрузки. – Tinni
таким образом, он больше не будет статистически шумным. – Tinni