Sobes.tech
Junior

რა არის ჰეშ-ცხრილის მუშაობის პრინციპი?

sobes.tech AI

პასუხი AI-სგან

ჰეშ-ცხრილი (ან ასოციაციური მასივი) ინახავს "საკლავი-მნიშვნელობის" წყვილებს. მისი მუშაობის პრინციპი დაფუძნებულია ჰეშ-ფუნქციის გამოყენებაზე, რომელიც გარდაქმნის საკლავს რიცხვობრივ ინდექსად (ჰეშად), რომელიც მიუთითებს მნიშვნელობის შენახვის ადგილას მასივში (კაფში).

საფეხურები:

  1. ჰეშის გამოთვლა: მოცემული საკლავისთვის გამოთვლილია ჰეში:
    <?php
    $key = "example";
    $hash = crc32($key); // მარტივი ჰეშ-ფუნქციის მაგალითი
    
  2. ინდექსის განსაზღვრა: ჰეში გარდაიქმნება მასივის ინდექსად, ჩვეულებრივ მასივის ზომის მოდულო ოპერაციით:
    <?php
    $arraySize = 10;
    $index = $hash % $arraySize;
    
  3. კაფში წვდომა: გამოთვლილი ინდექსით ხდება შესაბამის კაფში წვდომა მასივში:
  4. კოლიზიების გადაჭრა: რადგან სხვადასხვა საკლავი შეიძლება ჰქონდეს ერთნაირი ჰეში (კოლიზია), კაფში შეიძლება იყოს რამდენიმე "საკლავი-მნიშვნელობის" წყვილი. კოლიზიების გადაჭრის სხვადასხვა მეთოდებია:
    • საკაბელო მეთოდი (Separate Chaining): თითოეულ კაფში ინახება სია (მაგ., დაკავშირებული სია) "საკლავი-მნიშვნელობის" წყვილებისა, რომელთა ჰეშები ემთხვევა.
    • გახსნილი მისამართის მეთოდი (Open Addressing): კოლიზიის შემთხვევაში, ხდება თავისუფალი უჯრის ძებნა მასივში გარკვეული წესით (გრძივი, კვადრატული, ორჯერადი ჰეშირება).

ოპერაციები:

  • ჩამატება: გამოთვლილია საკლავის ჰეში, განსაზღვრულია ინდექსი, და "საკლავი-მნიშვნელობის" წყვილი მოთავსებულია შესაბამის კაფში. კოლიზიის დროს, ის ან ემატება სიის (საკაბელო) ან ეძებს თავისუფალ ადგილს (გახსნილი მისამართი).
  • ძებნა: გამოთვლილია საკლავის ჰეში, განსაზღვრულია ინდექსი. შესაბამის კაფში ეძებს მნიშვნელობას საკლავის მიხედვით. საკაბელო მეთოდში იწინასწარ გადის სიის ელემენტებს; გახსნილი მისამართის მეთოდში, სერიული ძიება ხორციელდება.
  • წაშლა: გამოთვლილია საკლავის ჰეში, განსაზღვრულია ინდექსი. შესაბამის კაფში იპოვის და წაშლის წყვილს საკლავის მიხედვით.

უპირატესობები:

  • სწრაფი წვდომა ელემენტებზე (საშუალოდ O(1)).
  • ეფექტიანი მეხსიერების გამოყენება.

მკაცრებები:

  • კოლიზიების რაოდენობა შეიძლება გამოიწვიოს მუშაობის გაუარესება.
  • ტაბლოს ზომა შეიძლება საჭირო გახდეს რეგულირება (განახლება - rehashing) ეფექტურობის შენარჩუნებისთვის.