1. Trang chủ
  2. » Tất cả

Cấu trúc dữ liệu và thuật toán dsa ch9 hash 1

58 6 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Cấu trúc dữ liệu và thuật toán dsa ch9 hash 1
Tác giả Luong The Nhan, Tran Giang Son
Trường học University of Technology, VNU-HCM
Chuyên ngành Data Structures and Algorithms
Thể loại Giáo trình
Định dạng
Số trang 58
Dung lượng 1,19 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Luong The Nhan, Tran Giang SonBasic concepts Hash functions Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random Collision resolution Open addres

Trang 1

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

9.1

Chapter 9

Hash

Data Structures and Algorithms

Luong The Nhan, Tran Giang Son Faculty of Computer Science and Engineering

University of Technology, VNU-HCM

Trang 2

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

9.2

Outcomes

• L.O.5.1 - Depict the following concepts: hashing table,

key, collision, and collision resolution.

• L.O.5.2 - Describe hashing functions using pseudocode

and give examples to show their algorithms.

• L.O.5.3 - Describe collision resolution methods using

pseudocode and give examples to show their algorithms.

• L.O.5.4 - Implement hashing tables using C/C++.

• L.O.5.5 - Analyze the complexity and develop

experiment (program) to evaluate methods supplied for

hashing tables.

• L.O.1.2 - Analyze algorithms and use Big-O notation to

characterize the computational complexity of algorithms

composed by using the following control structures:

sequence, branching, and iteration (not recursion).

Trang 3

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

Trang 4

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

9.4

Basic concepts

Trang 5

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

9.5

Basic concepts

• Sequential search: O(n)

• Binary search: O(log 2 n)

→ Requiring several key

comparisons before the

target is found.

Trang 6

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

Trang 7

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

9.7

Basic concepts

Is there a search algorithm

whose complexity is O(1) ?

YES

Trang 8

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

9.7

Basic concepts

Is there a search algorithm

whose complexity is O(1) ?

YES

Trang 9

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

9.8

Basic concepts

Hình: Each key has only one address

Trang 10

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

9.9

Basic concepts

Trang 11

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

• Ideal hashing :

• No location collision

• Compact address space

Trang 12

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

• Collision : the location of the data to be

inserted is already occupied by the synonym

Trang 13

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

• Collision : the location of the data to be

inserted is already occupied by the synonym

Trang 14

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

9.11

Basic concepts

Trang 15

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

9.12

Basic concepts

Trang 16

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

9.13

Basic concepts

Trang 17

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

9.14

Basic concepts

Trang 18

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

9.15

Hash functions

Trang 19

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

Trang 20

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

9.17

Direct Hashing

The address is the key itself:

hash(Key) = Key

Trang 21

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

9.18

Direct Hashing

• Advantage : there is no collision.

• Disadvantage : the address space (storage

size) is as large as the key space.

Trang 22

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

9.19

Modulo division

Address = Key mod listSize

• Fewer collisions if listSize is a prime

Trang 23

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

Trang 24

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

Trang 25

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

Trang 26

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

9.23

Folding

The key is divided into parts whose size

matches the address size.

Trang 27

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

9.23

Folding

The key is divided into parts whose size

matches the address size.

Trang 28

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

9.24

Rotation

• Hashing keys that are identical except for

the last character may create synonyms.

• The key is rotated before hashing.

original key rotated key

Trang 29

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

9.25

Rotation

• Used in combination with fold shift.

original key rotated key

Trang 30

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

9.26

Pseudo-random

For maximum efficiency, a and c should be

prime numbers.

Trang 31

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

Trang 32

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

9.28

Collision resolution

Trang 33

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

9.29

Collision resolution

• Except for the direct hashing, none of the

others are one-to-one mapping

→ Requiring collision resolution methods

• Each collision resolution method can be

used independently with each hash function

Trang 34

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

9.30

Collision resolution

• A rule of thumb: a hashed list should not

be allowed to become more than 75% full.

Trang 35

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

9.31

Collision resolution

• As data are added and collisions are

resolved, hashing tends to cause data to

group within the list.

→ Clustering : data are unevenly distributed

across the list.

• High degree of clustering increases the

number of probes to locate an element.

→ Minimize clustering.

Trang 36

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

9.32

Collision resolution

• Primary clustering : data become clustered

around a home address.

Trang 37

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

9.33

Collision resolution

• Secondary clustering : data become grouped

along a collision path throughout a list.

Trang 38

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

Trang 39

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

9.35

Open addressing

When a collision occurs, an

for placing the new element in.

Trang 40

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

Trang 41

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

Trang 42

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

9.38

Open Addressing

Algorithm hashInsert(ref T <array>, val k <key>)

Inserts key k into table T.

Trang 43

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

9.39

Open Addressing

Algorithm hashSearch(val T <array>, val k <key>)

Searches for key k in table T.

Trang 44

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

Trang 45

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

9.41

Linear Probing

• When a home address is occupied, go to

the next address (the current address + 1):

hp(k, i) = (h(k) + i) mod m

Trang 46

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

9.41

Linear Probing

• When a home address is occupied, go to

the next address (the current address + 1):

hp(k, i) = (h(k) + i) mod m

Trang 47

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

9.42

Linear Probing

Trang 48

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

9.43

Linear Probing

• Advantages :

• quite simple to implement

• data tend to remain near their home

address (significant for disk addresses)

• Disadvantages :

• produces primary clustering

Trang 49

Luong The Nhan, Tran Giang Son

Basic concepts Hash functions

Direct HashingModulo divisionDigit extractionMid-squareMid-squareFoldingRotationPseudo-random

Collision resolution

Open addressingLinked list resolutionBucket hashing

Ngày đăng: 25/03/2023, 07:21

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm