Download ppt - Searching

Transcript
Page 1: Searching

SearchingSearchingสาขาวิ�ชาคอมพิ�วิเตอร์�และเทคโนโลยี�อ. เลาขวิ�ญ งามปร์ะส�ทธิ์��

Page 2: Searching

อ�ลกอร์�ท�มการ์ค�นหาข�อม!ลอ�ลกอร์�ท�มการ์ค�นหาข�อม!ล

Linear Searching ข�อม!ลไม#ม�การ์เร์�ยีงล$าดั�บ

• Sequential Search ข�อม!ลม�การ์เร์�ยีงล$าดั�บ

• Indexed Sequential Search• Binary Search

– Array หรื�อ Linked list– Binary Search Tree

Hash Searching

Page 3: Searching

Sequential Searching

• เหมาะสำ�าหรื�บใช้�กั�บโครืงสำรื�างข้�อม�ลที่��เกั�บข้�อม�ลแบบไม�เรื�ยงล�าดั�บ

• ใช้�กั�บโครืงสำรื�างข้�อม�ลที่��ม�ปรื"มาณข้�อม�ลน้�อย• ม�กัใช้�กั�บโครืงสำรื�างข้�อม�ล array และ linked list• ม�ปรืะสำ"ที่ธิ"ภาพเป(น้ O(n)• กัรืณ�ดั�ที่��สำ)ดั (best case) เป(น้ O(1)

Page 4: Searching

Example Sequential Search• กัารืค�น้หาแบบเรื�ยงล�าดั�บ กัรืณ�ที่��พบข้�อม�ล

Key = 54

i = 0

not found

3 7 12 25 32 48 54 78

0 1 2 3 4 5 6 7

k

i = i + 1

not found

not found

not found

not found

not found

found

i = i + 1 i = i + 1 i = i + 1 i = i + 1 i = i + 1

i = 6

Comparison time(s)7

3 7 12 25 32 48

Page 5: Searching

Example Sequential Search• กัารืค�น้หาแบบเรื�ยงล�าดั�บ กัรืณ�ที่��ไม�พบข้�อม�ลที่��

ต้�องกัารืKey = 94

i = 0

not found

3 7 12 25 32 48 54 78

0 1 2 3 4 5 6 7

k

i = i + 1

not found

not found

not found

not found

not found

notfound

i = i + 1 i = i + 1 i = i + 1 i = i + 1 i = i + 1

Comparison time(s)

3 7 12 25 32 48 54

i = i + 1

notfound

8

78

NOT FOUND…!!!

Page 6: Searching

กัารืค�น้หาแบบล�าดั�บ (Sequential Search)

• ข้�อสำ�งเกัต้– ข�'นตอนวิ�ธิ์�ข�างต�นของการ์ค�นหาแบบเร์�ยีงล$าดั�บจะ

เหมาะก�บการ์ค�นหาค#าในช*ดัข�อม!ลท�+ไม#ไดั�เร์�ยีง– แต#ถ้�าข�อม!ลเร์�ยีงเร์�ยีบร์�อยีแล�วิ จะม�ข�อเส�ยีบางปร์ะการ์

ค-อ กร์ณี�ท�+ค�นหาไม#พิบ แม�วิ#าเม-+อค�น target ในช*ดั ข�อม!ลจนถ้�งต�วิท�+ม�ค#ามากกวิ#า target แล�วิ การ์ค�นหา

ยี�งไม#ยี*ต�การ์ค�น ยี�งคงวินร์อบเพิ-+อเปร์�ยีบเท�ยีบข�อม!ล จนถ้�งต�วิส*ดัท�ายีในช*ดัข�อม!ล ท$าให�เส�ยีเวิลา

Page 7: Searching

Indexed Sequential Searching

• เหมาะสำ�าหรื�บใช้�กั�บโครืงสำรื�างข้�อม�ลที่��เกั�บข้�อม�ลแบบเรื�ยงล�าดั�บ

• ใช้�งาน้ไดั�ดั�กั�บโครืงสำรื�างข้�อม�ลที่��ม�ปรื"มาณข้�อม�ลเกั�บอย��มากั

• กัารืค�น้หาข้�อม�ลโดัยวิ"ธิ�น้�, ม�กัารืที่�างาน้เช้�น้เดั�ยวิกั�บวิ"ธิ� กัารื Sequential Search แต้�ม�กัารืปรื�บปรื)งข้�,น้ต้อน้

วิ"ธิ�ให�ม�ดั�ช้น้� เพ��อที่�ากัารืค�น้หาอย�างเรื�ยงล�าดั�บกั�บช้�วิง หน้-�งๆ ข้องข้�อม�ลที่�,งหมดัเที่�าน้�,น้

Page 8: Searching

Example Index Sequential Search

Key = 101

Page 9: Searching

ข�'นตอนวิ�ธิ์�ในการ์ค�นหาข�อม!ลแบบดั�ชน�เร์�ยีงล$าดั�บ

• สำรื�างต้ารืางต้ารืางดั�ช้น้� (เป(น้อารื/เรืย/ 2 ม"ต้" ) โดัยกั�าหน้ดัช้�วิงข้องข้�อม�ลที่��ต้�องกัารื ( r ) แล�วิน้�าไปหาจำ�าน้วิน้ข้�อม�ล ( n ) แล�วิเกั�บค�าสำ�งสำ)ดั (หรื�อต้��าสำ)ดั ) และพอยน้/เต้อรื/ข้อง

แต้�ละช้�วิงไวิ�ใน้ต้ารืางดั�ช้น้�• ค�น้หาข้�อม�ล โดัยค�น้หาแบบเรื�ยงล�าดั�บใน้ต้ารืางดั�ช้น้�• เปรื�ยบเที่�ยบข้�อม�ลที่��ต้�องกัารื กั�บข้�อม�ลใน้ต้ารืางดั�ช้น้� โดัย

ต้รืวิจำสำอบวิ�าข้�อม�ลอย��ใน้ช้�วิงน้�,น้หรื�อไม� (ข้�อม�ลน้�อยกัวิ�าหรื�อเที่�ากั�บค�าดั�ช้น้�)– ถ้�าใช้� ให�ไปอ�าน้ค�าพอยน้/เต้อรื/จำากัต้ารืางดั�ช้น้� และค�น้หาข้�อม�ลโดัย

เรื"�มจำากัช้�วิงข้�อม�ลข้องข้�อม�ลน้�,น้ ๆ ใน้แบบเรื�ยงล�าดั�บ– ถ้�าไม�ใช้� แสำดังวิ�าไม�ม�ข้�อม�ล

Page 10: Searching

กัารืค�น้หาแบบที่วิ"ภาค (Binary Search)

• เป(น้กัารืค�น้หากั�บข้�อม�ลที่��ถ้�กัเรื�ยงล�าดั�บแล�วิ• ป2ญหากัรืณ�ที่��ข้�อม�ลจำ�าน้วิน้มากัจำะต้�องเสำ�ยเวิลาใน้กัารื

เรื�ยง

Page 11: Searching

กัารืค�น้หาแบบที่วิ"ภาค (Binary Search)

• ข้�,น้ต้อน้ใน้กัารืค�น้หาข้�อม�ลม�ดั�งน้�,– ก$าหนดั หร์-อร์�บข�อม!ลท�+ต�องการ์ค�นหา– แบ#งคร์�+งแฟ้0มข�อม!ลหร์-อแถ้วิล$าดั�บข�อม!ล– ท$าการ์เปร์�ยีบเท�ยีบข�อม!ลในแฟ้0มข�อม!ลหร์-อแถ้วิล$าดั�บ

ข�อม!ล โดัยีแบ#งคร์�+งลงไปเร์-+อยีๆ จนกวิ#าจะพิบหร์-อไม# สามาร์ถ้แบ#งไดั�อ�กต#อไป น�'นหมายีควิามวิ#าไม#พิบข�อม!ล

น�'นแน#นอน

Page 12: Searching

Example Binary Search

Key = 20

คร์�'งท�+ 1 เปร์�ยีบเท�ยีบค#า key = 20 ก�บข�อม!ลท�+อยี!#ก�+งกลางของ list พิบวิ#าค#า key ม�ค#ามากกวิ#าค#าก�+งกลางของข�อม!ล ดั�งน�'นไปค�นหาข�อม!ลต#อในส#วินท�+ 2

2 4 5 9 12 20 27

0 1 2 3 4 5 6

2 4 5 9 12 20 27

0 1 2 3 4 5 6

low upper

mid = (low+upper)/2 = (0+6)/2 = 3

9

ข้�อม�ลสำ�วิน้ที่�� 1 ข้�อม�ลสำ�วิน้ที่�� 2

Page 13: Searching

คร์�'งท�+ 2 เปร์�ยีบเท�ยีบค#า key = 20 ก�บข�อม!ลท�+อยี!#ก�+งกลางของข�อม!ลส#วินท�+ 2low upper

mid = (low+upper)/2 = (4+6)/2 = 5

2 4 5 9 12 20 27

0 1 2 3 4 5 6

ข้�อม�ลสำ�วิน้ที่�� 1 ข้�อม�ลสำ�วิน้ที่�� 2

20

FOUND…!!

ค#า key = 20 ท�+ต�องการ์ค�นหาม�ค#าตร์งก�บข�อม!ลท�+อยี!#ก�+งกลางของข�อม!ลส#วินท�+ 2 หมายีควิามวิ#าพิบข�อม!ลท�+ต�องการ์

Example Binary Search

Page 14: Searching

Key = 7

2 4 5 9 12 20 27

0 1 2 3 4 5 6

2 4 5 9 12 20 27

0 1 2 3 4 5 6

low high

mid = (low+high)/2 = (0+6)/2 = 3

9

ข้�อม�ลสำ�วิน้ที่�� 1 ข้�อม�ลสำ�วิน้ที่�� 2

คร์�'งท�+ 1 เปร์�ยีบเท�ยีบค#า key = 20 ก�บข�อม!ลท�+อยี!#ก�+งกลางของ list พิบวิ#าค#า key ม�ค#าน�อยีกวิ#าค#าก�+งกลางของข�อม!ล ดั�งน�'นไปค�นหาข�อม!ลต#อในส#วินท�+ 1

Example Binary Search

Page 15: Searching

ครื�,งที่�� 2 เปรื�ยบเที่�ยบค�า key = 7 กั�บข้�อม�ลที่��อย��กั-�งกัลางข้องข้�อม�ลสำ�วิน้ที่�� 1 พบวิ�าค�า Key ม�ค�ามากักัวิ�าค�ากั-�งกัลางข้องข้�อม�ลสำ�วิน้ที่�� 1น้�, ดั�งน้�,น้ไปค�น้หาต้�อที่��ข้�อม�ลสำ�วิน้ที่�� 2 ที่��แบ�งครื-�งจำากัข้�อม�ลสำ�วิน้ที่�� 1 น้�,

low high

mid = (low+high)/2 = (0+2)/2 = 1

2 4 5 9 12 20 27

0 1 2 3 4 5 6

ข้�อม�ลสำ�วิน้ที่�� 1 ข้�อม�ลสำ�วิน้ที่�� 2

4

Example Binary Search

Page 16: Searching

ครื�,งที่�� 3 เปรื�ยบเที่�ยบค�า key = 7 กั�บข้�อม�ลที่��อย��กั-�งกัลางข้องข้�อม�ล

2 4 5 9 12 20 27

0 1 2 3 4 5 6

ข้�อม�ลสำ�วิน้ที่�� 1 ข้�อม�ลสำ�วิน้ที่�� 2

เปรื�ยบเที่�ยบค�า 5 กั�บค�า 7 เน้��องจำากั key = 7 ไม�เที่�ากั�บ 5 แต้�ม�ค�ามากักัวิ�าจำ-งต้�องค�น้หน้ต้�อไป แต้�ปรืากัฏวิ�าไม�ม�ค�ารืะหวิ�าง 5 กั�บ 7 อ�กัแล�วิเพรืาะฉะน้�,น้สำรื)ปไดั�วิ�า ไม�พบข้�อม�ล 7 ใน้ข้�อม�ลช้)ดัน้�,

NOT FOUND…!!

Example Binary Search

Page 17: Searching

ปรืะสำ"ที่ธิ"ภาพข้องกัารืค�น้หาแบบ Binary Search

• กัรืะบวิน้กัารืที่�างาน้แบบ Binary Search จำะพบวิ�าเม��อม�กัารืเปรื�ยบเที่�ยบแต้�ละครื�,งจำะม�กัารืต้�ดัข้�อม�ลใน้ต้ารืางออกัไปไดั�ที่�ละครื-�งหน้-�งเสำมอ ดั�งน้�,น้ถ้�าเรื"�มต้�น้ม�จำ�าน้วิน้ข้�อม�ล n ต้�วิ– จ$านวินข�อม!ลท�+น$ามาเพิ-+อค�นหาค#าท�+ต�องการ์หล�งการ์

เปร์�ยีบเท�ยีบแต#ละคร์�'งจะเป3นดั�งน�'ครื�,งที่�� 2 = n/2 (หรื�อ n/21)ครื�,งที่�� 3 = n/4 (หรื�อ n/22)ครื�,งที่�� 4 = n/8 (หรื�อ n/23)

Page 18: Searching

ปรืะสำ"ที่ธิ"ภาพข้องกัารืค�น้หาแบบ Binary Search

• ดั�งน้�,น้ ถ้�าให� k เป(น้จำ�าน้วิน้ครื�,งที่��มากัที่��สำ)ดัที่��ใช้�ใน้กัารืเปรื�ยบเที่�ยบจำะไดั�วิ�า

n/2k < 1หรื�อ n < 2k จำะไดั� log2 n < k

• จำ�าน้วิน้กัารืเปรื�ยบเที่�ยบข้อง Binary Search ค�อ O(log2 n )

Page 19: Searching

Binary Search Algorithmfound = false low = 0hi = size-1 while (low <= hi) and (not found)

mid = (low+hi) / 2if key = k[mid] then

found = true round=round+1

else if key < k(mid) then

hi = mid – 1round = round +1

elselow = mid + 1round =round +1

if found then index = mid

else index = -1

end

Page 20: Searching

Hash Searching

• เป(น้วิ"ธิ�กัารืค�น้หาข้�อม�ลที่��ใช้�กัารืแปลงค�ย/ (Key) ให�เป(น้ต้�าแหน้�ง (Address) ที่��อย��ใน้พ�,น้ที่��เกั�บข้�อม�ล โดัยใช้�เที่คน้"คกัารืสำรื�างต้ารืางมาเพ��อเกั�บค�ย/ดั�งกัล�าวิ

• กัารืแปลงค�ย/ให�เป(น้แอดัเดัรืสำ ค�อ กัารืแปลงข้�อม�ลให�ไปอย��ใน้ต้ารืางแอดัเดัรืสำที่��เต้รื�ยมไวิ�ซึ่-�งต้ารืางน้�,เรื�ยกัวิ�า ต้ารืางแฮช้ (Hash Table)

• กัารืแปลงค�าน้�,ต้�องอาศั�ยฟั2งช้�น้ H(k) เป(น้ต้�วิช้�วิยใน้กัารืหาแอดัเดัรืสำข้องค�าค�ย/ k (ค�า H(k) ค�อ แอดัเดัรืสำข้องค�ย/ K น้�,น้เอง)

Page 21: Searching

Hash function

• hash function อย�างง�ายhash(key) = key MOD TableSize

• TableSize ควิรืเป(น้ต้�วิเลข้จำ�าเพาะ (prime number)

• กัารืไดั�ผลล�พธิ/เหม�อน้กั�น้จำากัค�าค�ย/ที่��แต้กัต้�างกั�น้เรื�ยกัวิ�า Collision

• กัารืแกั�ป2ญหา Collision ที่�าโดัยกัารืเกั�บค�าค�ย/ใน้ Hash

table แบบ– Separate Chaining– Open Addressing

Page 22: Searching

Separate chaining

Key={0, 81, 64, 25, 36, 49, 4, 1, 9, 16}

H(x) = x MOD 10

Page 23: Searching

Open addressing with Linear Probing

• Key {89, 18, 49, 58, 69}• Hash function: hash(x)=x MOD 10• Collision resolution strategy: f(i)=i

Page 24: Searching

Open addressing with Quadratic Probing

• Key {89, 18, 49, 58, 69}• Hash function: hash(x)=x MOD 10• Collision resolution strategy: f(i)=i2

Page 25: Searching

Open addressing with Double Hashing

• Key {89, 18, 49, 58, 69}• Hash functions: hash(x)=x MOD 10

hash2(x)=7-(x MOD 7)• Collision resolution strategy: f(i)=i*hash2(x)

Page 26: Searching

Theorem

ถ้�าใช�การ์แก�ป4ญหา Collision แบบ Quadratic

probing และ table size เป3นเลข prime แล�วิ ข�อม!ลใหม#จะม�ท�+ลงในตาร์างเสมอหากวิ#า table อยี#างน�อยีคร์�+งหน�+งของตาร์างยี�งวิ#าง

If quadratic probing is used, and the table size is prime, then a new element can always be inserted if the table is at least half empty.

Page 27: Searching

Rehashing

Open addressing hash tablewith linear probingwith input 13, 15, 6, 24

Open addressing hash table

with linear probing

after 23 is inserted

Open addressing hash table

after rehashing