Hash tablosu
![](https://upload.wikimedia.org/wikipedia/commons/thumb/7/7d/Hash_table_3_1_1_0_1_0_0_SP.svg/315px-Hash_table_3_1_1_0_1_0_0_SP.svg.png)
Bilişim bilimlerinde komut çizelgesi (İng. hash table veya hash map - hash = doğramak), komut işlevini tanıyıcı değer olarak bilinen benzersiz anahtarı bir değerle (mesela kişi adını telefon numarasıyla) eşleyen bir veri yapısıdır. Böylece komut çizelgesi bir birleşik dizidir. Komut işlevi, ilişkin değerin arandığı anahtarı bir dizi elemanının indisine ("dilim" veya "kova") çevirir (doğramaya benzediğinden "hash" denmiştir).
İdealde komut işlevinin mümkün olan her anahtarı farklı benzersiz dilim indisine eşlemesi, gerçekte (komut anahtarları sâbit, yani tabloya oluşumundan sonra yeni öge eklenmemesi durumu dışında) enderdir. Çoğu komut çizelgesi tasarımları "çarpışmaları", yani farklı anahtarlara aynı komut değerinin bulunması durumunu normal olarak görerek bir şekilde uzlaştırır. Uygun boyutlandırılmış bir komut çizelgesinda her bakış için ortalama maliyet (gerekli komut sayısı), çizelgede depolanmış eleman sayısından bağımsızdır. Ayrıca birçok komut çizelge tasarımları, anahtar-değer çiftlerinin keyfî araya sokuluş ve çıkarışlarına (aslında sönümlenmiş[1]) sabit işlem başı maliyetle izin verir.[2][3]
Birçok durumda komut tablolarının arama ağaçları veya herhangi bir çizelge başvuru yapısından daha verimli olduğu ortaya çıkar. Bu sebeple birçok yazılım çeşidinde, özellikle birleşmeli dizinlerde, veritabanı indekslemesinde, önbelleklerde ve kümelerde kullanılır.
Komut çizelgeleri kriptografi ve veri iletiminde kullanılan komut listeleri ve komut ağaçlarıyla karıştırmamalıdır.
Komut işlevi
[değiştir | kaynağı değiştir]Komut çizelgesi algoritmasının temelinde basit bir dizin ögesidir. Bu ögeye kısaca komut çizelgesi (İng. hash table). Komut çizelgesi algoritmaları, veri ögelerinin kiplemelerinden bir indeks hesaplayıp bunu veriyi bir dizine yerleştirmeye kullanılır. Bu hesabın uygulaması komut işlevidir ve f:
indeks = f(kipleme, dizinUzunlugu)
Komut işlevi, veri kiplemesi dizininden oluşturulan indeksi hesaplar. dizinUzunlugu, dizinin büyüklüğüdür.
Birleştirici dil veya başka alçak düzeyli dillerde çoğu zaman sıradan bir komut işleviyle bir veya iki satıriçi makine komutu içeren bir indeks oluşturulur.
Kaynakça
[değiştir | kaynağı değiştir]- ^ Charles E. Leiserson, Amortized Algorithms, Table Doubling, Potential Method 7 Ağustos 2009 tarihinde Wayback Machine sitesinde arşivlendi. Lecture 13, course MIT 6.046J/18.410J Introduction to Algorithms - Fall 2005
- ^ Donald Knuth (1998). The Art of Computer Programming'. 3: Sorting and Searching (2. bas.). Addison-Wesley. ss. 513-558. ISBN 0-201-89685-0.
- ^ Cormen, Thomas H. (2001). Introduction to Algorithms. 2. MIT Press and McGraw-Hill. ss. 221-252. ISBN 978-0-262-53196-2.