1 / 13

Appendix E-A Hashing

Modified. Appendix E-A Hashing. Chapter Scope. Concept of hashing Hashing functions Collision handling Open addressing Buckets Chaining Deletions Performance. What is hashing?.

morag
Télécharger la présentation

Appendix E-A Hashing

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Modified Appendix E-A Hashing

  2. Chapter Scope • Concept of hashing • Hashing functions • Collision handling • Open addressing • Buckets • Chaining • Deletions • Performance Java Software Structures, 4th Edition, Lewis/Chase

  3. What is hashing? • Hashing is a scheme for storing and retrieving information by (key) value. Sometimes used to implement associative memory. • A hash function is used to map a value to a location; The value (and associated info) may be stored at that location or at least accessed via that location. • Very efficient for storing and retrieving • Used extensively in computing – software and hardware. Java Software Structures, 4th Edition, Lewis/Chase

  4. Collisions • Ideally, the value being mapped would be stored at the mapped location in the location space, and this could be true for a perfect hashing function. • However, in most situations, multiple values will/may map to the same location (collisions) • So we have to have to have a strategy to handle collisions. • There are several popular collision handling strategies. Java Software Structures, 4th Edition, Lewis/Chase

  5. Hash function • A hash function is a mapping from a value space to a location space. • The value space is any domain of values. Strings, ints, phone numbers, student IDs, … • The location space is normally a sequence of integers from 0 to N-1, where N is the size of the location space. The location space resembles a 1-dimentional array (like computer memory). Location space Value space

  6. Characteristics of a good hash function • It should cover the entire location space • It should distribute the key values fairly evenly into the location space • Generally, 2 values that are “close together” in the value space should not be close together in the location space. Aside: Cryptographic hashing Java Software Structures, 4th Edition, Lewis/Chase

  7. Division (remainder) hash function • Probably most commonly used method, either by itself or combined with another method. • If the location space is of size N, divide the value (somehow represented as an integer) by N and take the remainder as the result. • Choosing N to be a prime number improves the likelihood of the mapping distributing the values fairly evenly. Java Software Structures, 4th Edition, Lewis/Chase

  8. Representing a value as an integer • We know that all information stored in computer storage is a string of bits. • Any string of bits can be interpreted as a binary integer. • So how to we make that interpretation? • Modern languages try to prevent us from changing out interpretation of a string of bits – strong typing. Java Software Structures, 4th Edition, Lewis/Chase

  9. Char to int Java does give us a loophole for character data System.out.println( (int) "ABC".charAt(0)); displays 65 The data type char is an “integral” type, and can be automatically converted to an int or long. Int I = ‘B’; // sets I to 66; Java Software Structures, 4th Edition, Lewis/Chase

  10. Also, can use bitwise and bit shift ops. • ~, &, |, ^, <<, >>, >>> inti = 'B'; System.out.println( i); //displays 66 System.out.println( (int) "ABC".charAt(0)); //displays 65 System.out.println( 'A' & 'B' ); //displays 64 System.out.println( 'A' | 'B' ); //displays 67 System.out.println( 'A' ^ 'B' ); //displays 3 System.out.println( ~'A' ); //displays -66 System.out.println( 'A' << 2 ); //displays 260 System.out.println( 'A' >>> 1 ); //displays 32 Java Software Structures, 4th Edition, Lewis/Chase

  11. Folding • Divide the value into parts and then combine them. • Example: value is 234-56-9876 234 965 + 876 --------------- 2075 % N Java Software Structures, 4th Edition, Lewis/Chase

  12. Other hash functions • Mid square -- Square the value, as a number, and take a portion out of the middle of that product. • Extraction involves using only a part of an element’s value or key to compute the location at which to store the element • Length dependent – use a portion of the value, then combine with the length of the value. Java Software Structures, 4th Edition, Lewis/Chase

  13. Hashing Functions - Digit Analysis • In the digit analysis method, the index is formed by extracting, and then manipulating specific digits from the key • For example, if our key is 1234567, we might select the digits in positions 2 through 4 yielding 234 • The manipulation can then take many forms • Reversing the digits (432) • Performing a circular shift to the right (423) • Performing a circular shift to the left (342) • Swapping each pair of digits (324) • Alternately, these manipulations could be done on the bits Java Software Structures, 4th Edition, Lewis/Chase

More Related