Warning: mkdir(): No space left on device in /var/www/tgoop/post.php on line 37

Warning: file_put_contents(aCache/aDaily/post/crossjoin/--): Failed to open stream: No such file or directory in /var/www/tgoop/post.php on line 50
Cross Join - канал о разработке@crossjoin P.452
CROSSJOIN Telegram 452
Пересмотр алгоритмов хеш-таблиц: студент опроверг 40-летнюю гипотезу

В мире алгоритмов произошло знаменательное событие, которое может изменить наше понимание хеш-таблиц. Эндрю Крапивин (студент Ратгерского университета), опроверг гипотезу, которую учёные считали верной на протяжении 40 лет.

Работа хеш-таблицы основана на хеш-функции, которая преобразует ключ в числовой индекс, указывающий на место в массиве, где хранится или должно храниться значение. Проблема возникает, когда разные ключи дают одинаковый индекс — это явление называется коллизией.

Существует два основных метода решения проблемы коллизий:

- Метод цепочек (chaining) — при коллизии элементы с одинаковым хеш-значением помещаются в связный список или другую вспомогательную структуру данных. Этот метод требует дополнительной памяти для хранения указателей.
- Открытая адресация (open addressing) — использует только один массив без дополнительных структур. При коллизии алгоритм ищет другую свободную ячейку в массиве по определённой стратегии.

Открытая адресация имеет ряд преимуществ:

- Более эффективное использование памяти без накладных расходов на указатели
- Лучшая локальность данных, что улучшает производительность кэша процессора
- Отсутствие необходимости в динамическом выделении памяти
- Предсказуемые характеристики производительности

Классические стратегии поиска в открытой адресации

В хеш-таблицах с открытой адресацией используются различные стратегии для определения последовательности проверки ячеек при коллизии:

Линейное пробирование — последовательная проверка следующих ячеек (h(key) + 1, h(key) + 2, ...)
Квадратичное пробирование — проверка ячеек с квадратичным смещением (h(key) + 1², h(key) + 2², ...)
Двойное хеширование — использование второй хеш-функции для определения шага
Случайное пробирование — применение псевдослучайной последовательности для выбора следующей ячейки

Гипотеза Яо и её опровержение

В 1985 году Эндрю Яо, будущий лауреат премии Тьюринга, сформулировал гипотезу, согласно которой в хеш-таблицах с определённым набором свойств оптимальной стратегией поиска элемента или свободного места является случайное пробирование. Он также утверждал, что в наихудшем случае, когда таблица почти полностью заполнена (на 99%), для поиска последнего свободного места потребуется время, пропорциональное степени заполненности (x).

Эндрю Крапивин, работая над совершенно другим проектом, случайно создал новый тип хеш-таблицы, который не использовал случайное пробирование. Неожиданным результатом стало то, что для этой новой хеш-таблицы время, необходимое для наихудшего случая, оказалось пропорциональным не x, а (log x)² — что значительно эффективнее.

Дополнительное открытие о "нежадных" хеш-таблицах

Продолжая исследования с коллегами Мартином Фарач-Колтоном и Уильямом Кушмаулем, Крапивин сделал еще одно важное открытие, касающееся другого аспекта хеш-таблиц.

Яо в своей работе 1985 года доказал, что для так называемых "жадных" хеш-таблиц (где новый элемент всегда помещается в первую доступную ячейку) среднее время поиска не может быть лучше log x. Это было математически доказанное ограничение для данного класса хеш-таблиц.

Крапивин и его коллеги решили исследовать, действует ли это ограничение для "нежадных" хеш-таблиц — тех, в которых новый элемент может быть помещен не обязательно в первую доступную ячейку. Они обнаружили, что для определенного типа "нежадных" хеш-таблиц среднее время поиска может быть постоянным и вообще не зависеть от степени заполненности таблицы.

Значение открытия

Хотя непосредственные практические применения этих теоретических прорывов могут не проявиться немедленно, их фундаментальное значение трудно переоценить. Хеш-таблицы используются повсеместно, и улучшение их производительности, особенно при высокой заполненности, может привести к существенной оптимизации многих систем.

🫥 Cross Join
Please open Telegram to view this post
VIEW IN TELEGRAM



tgoop.com/crossjoin/452
Create:
Last Update:

Пересмотр алгоритмов хеш-таблиц: студент опроверг 40-летнюю гипотезу

В мире алгоритмов произошло знаменательное событие, которое может изменить наше понимание хеш-таблиц. Эндрю Крапивин (студент Ратгерского университета), опроверг гипотезу, которую учёные считали верной на протяжении 40 лет.

Работа хеш-таблицы основана на хеш-функции, которая преобразует ключ в числовой индекс, указывающий на место в массиве, где хранится или должно храниться значение. Проблема возникает, когда разные ключи дают одинаковый индекс — это явление называется коллизией.

Существует два основных метода решения проблемы коллизий:

- Метод цепочек (chaining) — при коллизии элементы с одинаковым хеш-значением помещаются в связный список или другую вспомогательную структуру данных. Этот метод требует дополнительной памяти для хранения указателей.
- Открытая адресация (open addressing) — использует только один массив без дополнительных структур. При коллизии алгоритм ищет другую свободную ячейку в массиве по определённой стратегии.

Открытая адресация имеет ряд преимуществ:

- Более эффективное использование памяти без накладных расходов на указатели
- Лучшая локальность данных, что улучшает производительность кэша процессора
- Отсутствие необходимости в динамическом выделении памяти
- Предсказуемые характеристики производительности

Классические стратегии поиска в открытой адресации

В хеш-таблицах с открытой адресацией используются различные стратегии для определения последовательности проверки ячеек при коллизии:

Линейное пробирование — последовательная проверка следующих ячеек (h(key) + 1, h(key) + 2, ...)
Квадратичное пробирование — проверка ячеек с квадратичным смещением (h(key) + 1², h(key) + 2², ...)
Двойное хеширование — использование второй хеш-функции для определения шага
Случайное пробирование — применение псевдослучайной последовательности для выбора следующей ячейки

Гипотеза Яо и её опровержение

В 1985 году Эндрю Яо, будущий лауреат премии Тьюринга, сформулировал гипотезу, согласно которой в хеш-таблицах с определённым набором свойств оптимальной стратегией поиска элемента или свободного места является случайное пробирование. Он также утверждал, что в наихудшем случае, когда таблица почти полностью заполнена (на 99%), для поиска последнего свободного места потребуется время, пропорциональное степени заполненности (x).

Эндрю Крапивин, работая над совершенно другим проектом, случайно создал новый тип хеш-таблицы, который не использовал случайное пробирование. Неожиданным результатом стало то, что для этой новой хеш-таблицы время, необходимое для наихудшего случая, оказалось пропорциональным не x, а (log x)² — что значительно эффективнее.

Дополнительное открытие о "нежадных" хеш-таблицах

Продолжая исследования с коллегами Мартином Фарач-Колтоном и Уильямом Кушмаулем, Крапивин сделал еще одно важное открытие, касающееся другого аспекта хеш-таблиц.

Яо в своей работе 1985 года доказал, что для так называемых "жадных" хеш-таблиц (где новый элемент всегда помещается в первую доступную ячейку) среднее время поиска не может быть лучше log x. Это было математически доказанное ограничение для данного класса хеш-таблиц.

Крапивин и его коллеги решили исследовать, действует ли это ограничение для "нежадных" хеш-таблиц — тех, в которых новый элемент может быть помещен не обязательно в первую доступную ячейку. Они обнаружили, что для определенного типа "нежадных" хеш-таблиц среднее время поиска может быть постоянным и вообще не зависеть от степени заполненности таблицы.

Значение открытия

Хотя непосредственные практические применения этих теоретических прорывов могут не проявиться немедленно, их фундаментальное значение трудно переоценить. Хеш-таблицы используются повсеместно, и улучшение их производительности, особенно при высокой заполненности, может привести к существенной оптимизации многих систем.

🫥 Cross Join

BY Cross Join - канал о разработке




Share with your friend now:
tgoop.com/crossjoin/452

View MORE
Open in Telegram


Telegram News

Date: |

The court said the defendant had also incited people to commit public nuisance, with messages calling on them to take part in rallies and demonstrations including at Hong Kong International Airport, to block roads and to paralyse the public transportation system. Various forms of protest promoted on the messaging platform included general strikes, lunchtime protests and silent sit-ins. During the meeting with TSE Minister Edson Fachin, Perekopsky also mentioned the TSE channel on the platform as one of the firm's key success stories. Launched as part of the company's commitments to tackle the spread of fake news in Brazil, the verified channel has attracted more than 184,000 members in less than a month. Other crimes that the SUCK Channel incited under Ng’s watch included using corrosive chemicals to make explosives and causing grievous bodily harm with intent. The court also found Ng responsible for calling on people to assist protesters who clashed violently with police at several universities in November 2019. How to Create a Private or Public Channel on Telegram? The creator of the channel becomes its administrator by default. If you need help managing your channel, you can add more administrators from your subscriber base. You can provide each admin with limited or full rights to manage the channel. For example, you can allow an administrator to publish and edit content while withholding the right to add new subscribers.
from us


Telegram Cross Join - канал о разработке
FROM American