Sobes.tech
Junior

Hash cədvəlinin işləmə prinsipi nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Hash cədvəli (və ya assosiativ massiv) "açar-dəyər" cütlüklərini saxlayır. İş prinsipi hash funksiyasından istifadə etməyə əsaslanır, bu funksiya açarı ədədi indeksə (hash) çevirir və bu indeks dəyərin saxlanma yerini (sepet) göstərir.

Addımlar:

  1. Hash hesablanması: Verilən açar üçün hash hesablanır.
    <?php
    $key = "example";
    $hash = crc32($key); // Sadə hash funksiyası nümunəsi
    
  2. İndeksin müəyyənləşdirilməsi: Hash adətən massiv ölçüsünün modulu ilə çevrilir.
    <?php
    $arraySize = 10;
    $index = $hash % $arraySize;
    
  3. Sepeyə giriş: Hesablanmış indeks istifadə edilərək massivdə müvafiq sepəyə giriş.
  4. Kolliziya həlli: Fərqli açarlar eyni hash-ə malik ola bilər (kolliziya), bu halda sepet bir neçə "açar-dəyər" cütlüyü saxlaya bilər. Kolliziya həlli üçün müxtəlif metodlar istifadə olunur:
    • Zəncir (separate chaining): Hər sepətdə, hash-ləri uyğun olan "açar-dəyər" cütlüklərinin siyahısı saxlanılır.
    • Açıq ünvanlama (open addressing): Kolliziya baş verdikdə, müəyyən bir qayda ilə boş hüceyrə axtarılır (xətti, kvadrat, cüt hash).

Əməliyyatlar:

  • Yerləşdirmə: Açarın hash-i hesablanır, indeks müəyyən edilir və "açar-dəyər" cütlüyü müvafiq sepəyə yerləşdirilir. Kolliziya baş verərsə, siyahıya əlavə olunur və ya boş yer axtarılır.
  • Axtarış: Açarın hash-i hesablanır, indeks müəyyən edilir. Müvafiq sepədə, açar vasitəsilə dəyər axtarılır. Zəncir metodunda siyahı elementləri yoxlanır; açıq ünvanlamada isə ardıcıl axtarış edilir.
  • Silinmə: Açarın hash-i hesablanır, indeks müəyyən edilir. Müvafiq sepədə, açar vasitəsilə cütlük tapılır və silinir.

Üstünlüklər:

  • Elementlərə sürətli giriş (orta hesabla O(1)).
  • Yaddaşın səmərəli istifadəsi.

Çatışmazlıqlar:

  • Çox sayda kolliziya performansı pisləşdirə bilər.
  • Cədvəlin ölçüsü tənzimlənməlidir (rehashing) və səmərəliliyi qorumaq üçün dəyişdirilə bilər.