Грокаем а Иллюстрированное пособие для программистов и любопытствующих



Download 3,16 Mb.
bet35/79
Sana19.02.2022
Hajmi3,16 Mb.
#457977
1   ...   31   32   33   34   35   36   37   38   ...   79
Bog'liq
Грокаем алгоритмы ( PDFDrive )

СРЕДНИК ХУДШИЙ СЛУЧАЙ СЛУЧАЙ

поиск

0(1)

0<П)

ЬСТАбКА

Оо>

о>

УДАЛЕ­
НИЕ

СК»

О)

БЫСТР0ДЕЙСТ5ИЕ
ХЕШ-ТАБЛИЦ





В среднем хеш-таблицы выполняют любые операции за время 0(1). Время 0(1) называется постоянным. Ранее примеры постоянного времени вам еще
н
ОСЮ
ЛИНЕЙНОЕ ВРЕМЯ (ПРОСТОЙ ПОИСК)

е встречались. Оно не означает, что операции выполняются мгновенно; просто время остается постоянным независимо от размера хеш-таблицы. Например, вы знаете, что простой поиск выполняется за линейное время.
Б
Q(Lo
ЛОГАРИФМИЧЕСКОЕ ВРЕМЯ (БИНАРНЫЙ ПОИСК)

инарный поиск работает быстрее — за логарифмическое время:
Поиск данных в хеш-таблице выполняется за постоянное время.
О СО
ПОСТОЯННОЕ ВРЕМЯ
(ХЕШ-ТАБЛИЦЫ)

Видите горизонтальную линию? Она означает, что при любом размере хеш-таблицы 1 элемент или 1 миллиард элементов выборка данных займет одинаковое время. На самом деле вы уже сталкивались с постоян­ным временем: получение элемента из массива выполняется за постоянное
время. От размера массива оно не зависит. В среднем случае хеш-таблицы работают действительно быстро.
В худшем случае все операции с хеш-таблицей выполняются за время 0(п) (линейное время), а это очень медленно. Сравним хеш-таблицы с массива­ми и списками.

поиск

Of-1)

Ск»>

Oci)

о>

ЪСТАВКА

OU)

<5
о

0о>

ОСЮ

УДАЛЕ­
НИЕ

Осо

О")

Ск>р

Осо


ХЕШ- ХЕШ-


ТАБЛИЦЫ ТАБЛИЦЫ СВЯ-
(СРЕД.НИЙ (ХУДШИЙ MAC- ЗАННЫЕ СЛУЧАЙ) СЛУЧАЙ) СИВЫ СПИСКИ

Взгляните на средний случай для хеш-таблиц. При поиске хеш-таблицы не уступают в скорости массивам (получение значения по индексу). А при вставке и удалении они так же быстры, как и связанные списки. Получается, что они взяли лучшее от обеих структур! Но в худшем случае хеш-таблицы медленно выполняют все эти операции, поэтому очень важно избегать худшего случая быстродействия при работе с хеш-таблицами. А для этого следует избегать коллизий. Для предотвращения коллизий необходимы:



  • низкий коэффициент заполнения;

  • х
    — — ~ — — ~ — — —
    ! ПРИМЕЧАНИЕ I
    1
    Материал следующего раздела не является обязательным. Речь пойдет о том, [
    ! как реализовать хеш-таблицу, но вам никогда не придется делать это само- i
    ! стоятельно. Какой бы язык программирования вы ни выбрали, в нем найдет- 1
    I ся готовая реализация хеш-таблиц. Вы можете воспользоваться встроенной ,
    1 реализацией хеш-таблицы, не сомневаясь в том, что она имеет хорошую эф- 1
    ! фективность. А в следующем разделе мы заглянем во внутреннее устройство ,
    i хеш-таблиц. 1

    орошая хеш-функция.

Коэффициент заполнения
К
КОЛИЧЕСТВО ЭЛЕМЕНТОВ
В ХЕШ-ТАБЛИЦЕ



ОБЩЕЕ КОЛИЧЕСТВО
ЭЛЕМЕНТОВ


оэффициент заполнения хеш-таблицы вычисляет­ся по простой формуле.
Х
ЗАНЯТЫЕ ЭЛЕМЕНТЫ
4 V
КОЭФФИЦИЕНТ ЗАПОЛНЕНИЯ - У5

еш-таблицы используют массив для хранения данных, поэтому для вы­числения коэффициента заполнения можно подсчитать количество за­полненных элементов в массиве. Например, в следующей хеш-таблице коэффициент заполнения равен 2/5, или 0,4.
С


кажите, каков коэффициент заполнения этой таблицы?
КОЭФФИЦИЕНТ
ЗАПОЛНЕНИЯ
Если вы ответили «*/3» — все правильно. По коэффициенту заполнения можно оценить количество пустых ячеек в хеш-таблице.
Предположим, в хеш-таблице нужно сохранить цены 100 товаров и хеш- таблица состоит из 100 элементов. В лучшем случае каждому товару будет выделен отдельный элемент.
Ц
ЦЕНА ж МОЛОКА ^





и *м. д....

ЕНА АПЕЛЬ­СИНОВ

Коэффициент заполнения этой хеш-таблицы равен 1. А если хеш-таблица состоит всего из 50 элементов? Тогда ее коэффициент заполнения будет равен 2. Выделить под каждый товар отдельный элемент ни при каких условиях не удастся, потому что элементов попросту не хватит! Коэффи­циент заполнения больше 1 означает, что количество товаров превышает количество элементов в массиве.
С ростом коэффициента заполнения в хеш-таблицу приходится добавлять новые элементы, то есть изменять ее размер. Представим, что эта хеш- таблица приближается к заполнению.
[4ТзТГ
КОЭФФИЦИЕНТ
ЗАПОЛНЕНИЯ - V,

Х
еш-таблицу необходимо расширить. Расширение начинается с создания нового массива большего размера. Обычно в таком случае создается массив вдвое большего размера.
Т
4


3

еперь все эти элементы необходимо заново вставить в новую хеш-таблицу функцией
hash:

Download 3,16 Mb.

Do'stlaringiz bilan baham:
1   ...   31   32   33   34   35   36   37   38   ...   79




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish