This document discusses hashing and related concepts:
- Hashing involves using a hash function to map keys to table indices in an array. Collisions occur when distinct keys hash to the same index.
- Collision resolution techniques include separate chaining, which stores keys that collide in a linked list at the index, and open addressing, which probes for the next empty slot when a collision occurs.
- Good hash functions aim to distribute keys uniformly among indices and avoid collisions. Properties like using the whole key and producing random-looking results are desirable.
- Hashing has applications beyond symbol tables, including data mining text and genomes by representing documents as vectors based on hashed subsequences.