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:
-
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.
-
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ı