Если хеш-функция предназначена для доступа к хеш-таблице, то нет никакой разницы с точки зрения сложности между совершенными и обычными хеш-функциями, поскольку обе они также могут создавать коллизии в таблице.Причина в том, что индекс, связанный с элементом в хеш-таблице, является остатком от деления хеша на длину таблицы (обычно простое число).Вот почему два элемента, которые хешируют к разным значениям, столкнутся, если их остаток по модулю (упомянутого) простого числа одинаков для них обоих.Это означает, что временная сложность доступа к таблице в обоих случаях составляет O(1)
.
Обратите также внимание, что вычисление хеша обычно зависит от размера входных данных.Например, если элементы, которые должны быть хешированы, являются строками, хорошие хэши учитывают все их символы.Поэтому, чтобы сложность оставалась O(1)
, необходимо ограничить размер (или длину) входов.Опять же, это относится как к идеальным, так и к обычным хэшам.