Sobes.tech
Junior

Bir karma tablo hangi bileşenlerden oluşur?

sobes.tech yapay zeka

AI'dan gelen yanıt

Bir karma tablo iki ana bileşenden oluşur:

  1. Dizi (veya liste) hücreleri (kova): Bu, ana depolama yapısıdır. Her hücre bir veya daha fazla veri öğesi (anahtar-değer çiftleri) içerebilir.

  2. Karma fonksiyonu: Giriş anahtarını sayısal bir indekse dönüştüren algoritma, bu indeks kullanılarak ilgili veri öğesinin saklanacağı veya bulunacağı hücre belirlenir.

Ayrıca, çakışmaları çözmek için (farklı anahtarların aynı indekse hashlenmesi durumu), şu mekanizmalar kullanılır:

  • Zincirleme yöntemi: Her hücrede, bu indekse hashlenmiş öğelerin bir listesi (örneğin, bağlı liste) saklanır.
  • Açık adresleme yöntemi: Çakışma durumunda, algoritma belirli bir strateji izleyerek (doğrusal tarama, kuadratik tarama, çift karma) bir sonraki boş hücreyi arar.
# Basit bir karma fonksiyonu örneği
def simple_hash(anahtar, dizi_boyutu):
    # Anahtarı sayıya dönüştürme
    if isinstance(anahtar, str):
        hash_değeri = sum(ord(karakter) for karakter in anahtar)
    elif isinstance(anahtar, int):
        hash_değeri = anahtar
    else:
        raise TypeError("Desteklenmeyen anahtar tipi")

    # Dizinin boyutuna göre indeksi döndür
    return hash_değeri % dizi_boyutu

# Zincirleme yöntemi için dizi bileşeni örneği
class HashTable:
    def __init__(self, boyut):
        self.boyut = boyut
        self.array = [[] for _ in range(self.boyut)] # Liste listeleri (zincirler)

    def ekle(self, anahtar, değer):
        indeks = simple_hash(anahtar, self.boyut)
        self.array[indeks].append((anahtar, değer)) # Anahtar-değer çiftini listeye ekle

    def ara(self, anahtar):
        indeks = simple_hash(anahtar, self.boyut)
        for k, v in self.array[indeks]:
            if k == anahtar:
                return v
        return None # Anahtar bulunamadı