ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
1
บทที่ 10 การค้นหาข้อมูล (Searching)
2
10.1 บทนำ ข้อมูลข่าวสารที่เก็บอยู่ในคอมพิวเตอร์ หลังจากการประมวลผลแล้ว ผู้ใช้ย่อมต้องนำข้อมูลข่าวสารเหล่านั้นออกมาใช้ ซึ่งขั้นตอนในการนำข้อมูลออกจากคอมพิวเตอร์จะเร็วขึ้นหรือช้า ขึ้นอยู่กับอัลกอริทึมที่ใช้ และอัลกอริทึมที่ใช้ก็ขึ้นอยู่กับลักษณะการจัดเก็บข้อมูลนั้น
3
10.2 ประเภทของการค้นหาข้อมูล
เมื่อมีการจัดเก็บข้อมูลในโครงสร้างข้อมูลประเภทต่าง ๆ แล้ว ผู้ใช้สามารถค้นหาข้อมูลได้โดยใช้อัลกอริทึมในการค้าหาข้อมูลประเภทต่าง ๆ ดังนี้ คือ การค้นหาข้อมูลแบบเรียงลำดับ (Sequential Search) การค้นหาข้อมูลแบบไบนารี (Binary Search) การค้นหาข้อมูลแบบโดยการใช้แฮชชิ่ง (Hashing)
4
10.2 ประเภทของการค้นหาข้อมูล
การค้นหาข้อมูลแบบเรียงลำดับ (Sequential Search) หลักการในการค้นหาข้อมูลแบบเรียงลำดับ มีดังนี้ 1. กำหนดข้อมูลที่ต้องการค้นหา 2. เริ่มต้นค้นหาข้อมูลในตำแหน่งแรกสุด 3. ทำการเปรียบเทียบค่าข้อมูลที่ต้องการค้นหากับค้าข้อมูลในตำแหน่งนั้น ๆ - ถ้าค่าทั้งสองตรงกัน แสดงว่าค้นพบข้อมูลที่ต้องการ และจบการทำงานในส่วนของการค้นหา
5
10.2 ประเภทของการค้นหาข้อมูล
การค้นหาข้อมูลแบบเรียงลำดับ (Sequential Search) - ถ้าค่าทั้งสองตรงกัน แสดงว่าค้นพบข้อมูลที่ต้องการ และจบการทำงานในส่วนของการค้นหา - ทำการเปรียบเทียบในข้อ 3 จนพบข้อมูลที่ต้องการ - ถ้าเปรียบเทียบไปจนถึงข้อมูลตัวสุดท้ายแล้วยังไม่พบข้อมูลที่ต้องการ ให้จบการทำงานในส่วนของการค้นหา แสดงว่าไม่มีข้อมูลที่ต้องการ
6
10.2 ประเภทของการค้นหาข้อมูล
ตัวอย่างที่ 10.1 กำหนดข้อมูลที่จัดเก็บไว้ดังนี้ ให้แสดงขั้นตอนการค้นหา ITEM = 92 โดยวิธีการค้นหาข้อมูลแบบเรียงลำดับ วิธีทำ 1. เปรียบเทียบ ITEM = 92 กับข้อมูลในตำแหน่งที่ 1 คือ 85 ซึ่งข้อมูลไม่ตรงกัน จึงเลื่อนข้อมูลไปอีกหนึ่งตำแหน่ง 2. เปรียบเทียบ ITEM = 92 กับข้อมูลในตำแหน่งที่ 2 คือ 65 ซึ่งข้อมูลไม่ตรงกัน จึงเลื่อนข้อมูลไปอีกหนึ่งตำแหน่ง
7
10.2 ประเภทของการค้นหาข้อมูล
ตัวอย่างที่ 10.1 กำหนดข้อมูลที่จัดเก็บไว้ดังนี้ วิธีทำ 3 เปรียบเทียบ ITEM = 92 กับข้อมูลในตำแหน่งที่ 3 คือ 67 ซึ่งข้อมูลไม่ตรงกัน จึงเลื่อนข้อมูลไปอีกหนึ่งตำแหน่ง 4. เปรียบเทียบ ITEM = 92 กับข้อมูลในตำแหน่งที่ 4 คือ 92 ซึ่งข้อมูลตรงกัน ดังนั้นผลลัพธ์ที่ได้ คือ ITEM = 92 อยู่ตำแหน่งที่ 4
8
10.2 ประเภทของการค้นหาข้อมูล
การค้นหาข้อมูลแบบไบนารี (Binary Search) การค้นพบข้อมูลแบบไบนารี จะใช้ได้กับข้อมูลที่เรียงลำดับแล้วเท่านั้น วิธีการค้นหาทำได้ดังนี้ คือ กำหนดข้อมูลที่ต้องการหา 1. แบ่งข้อมูลออกเป็น 2 กลุ่ม 2. เปรียบเทียบข้อมูลที่ต้องการค้นหากับข้อมูลที่อยู่ตำแหน่งกึ่งกลาง หากไม่เท่ากันแสดงว่ายังไม่พบ 3. ถ้าข้อมูลที่ต้องการค้นหามากกว่าข้อมูลในตำแหน่งกึ่งกลาง ให้ค้นหาต่อไปในครึ่งหลัง
9
10.2 ประเภทของการค้นหาข้อมูล
การค้นหาข้อมูลแบบไบนารี (Binary Search) 4. ถ้าข้อมูลที่ต้องการค้นหาน้อยกว่าข้อมูลในตำแหน่งกึ่งกลาง ให้ค้นหาต่อไปในครึ่งแรก 5. ทำเช่นนี้ไปเรื่อย ๆ จนค้นพบ หรือจนกว่าแบ่งครึ่งข้อมูลไม่ได้แล้ว แสดงว่าไม่มีข้อมูลที่ต้องการ
10
10.2 ประเภทของการค้นหาข้อมูล
ตัวอย่างที่ 10.2 กำหนดข้อมูลที่จัดเก็บไว้ดังนี้ ให้แสดงขั้นตอนการค้นหา ITEM = 20 โดยวิธีการค้นหาข้อมูลแบบไบนารี วิธีทำ 1. เปรียบเทียบ 20 กับข้อมูลที่อยู่ในตำแหน่งกึ่งกลาง คือ เนื่องจาก 20 > 12 ดังนั้นจึงค้นหาต่อในครึ่งหลัง 3. เปรียบเทียบ 20 กับข้อมูลที่อยู่ตำแหน่งกึงกลางของครึ่งหลัง คือ แสดงว่าค้นพบข้อมูลที่ต้องการ
11
10.2 ประเภทของการค้นหาข้อมูล
การค้นหาข้อมูลแบบโดยการใช้แฮชชิ่ง (Hashing) เป็นวิธีการจัดเก็บและค้นหาข้อมูลอีกอย่างหนึ่ง โดยนำค่าของข้อมูลที่ต้องการจัดเก็บมาทำการแปลงให้เป็นตำแหน่ง (Address) ที่จัดเก็บข้อมูล ซึ่งมีลักษณะเป็นฟังก์ชันที่กำหนดไว้ และเรียกฟังก์ชันนี้ว่า Hashing Function แบ่งออกเป็น ดังนี้ คือ 1. วิธีอาศัยการหาร โดยฟังก์ชันโมดูโล ในรูปแบบ K Mod N ซึ่งหมายถึงค่าของเศษที่ได้จากการหาร K ด้วย N
12
10.2 ประเภทของการค้นหาข้อมูล
การค้นหาข้อมูลแบบโดยการใช้แฮชชิ่ง (Hashing) K Mod N ดังนั้นฟังก์ชัน H(K) สามารถกำหนดได้ ดังนี้ H(K) = K Mod N + L0 โดยที่ N หมายถึง ขนาดตาราง L0 หมายถึง ค่าเริ่มต้นของตำแหน่งที่ต้องการ
13
10.2 ประเภทของการค้นหาข้อมูล
ตัวอย่างที่ 10.3 จงคำนวณตำแหน่งของข้อมูลที่กำหนดให้ จากฟังก์ชัน H(K) = K Mod ข้อมูลที่กำหนดให้ คือ วิธีทำ H(25) = 5 H(16) = 3 H(27) = 7 H(31) = 4
14
10.2 ประเภทของการค้นหาข้อมูล
ข้อมูลที่กำหนดให้ คือ วิธีทำ H(18) = 5 H(40) = 6 H(37) = 3
15
10.2 ประเภทของการค้นหาข้อมูล
2. แบบ Mid Square เป็นเทคนิคการคำนวณตำแหน่งของข้อมูล โดยให้ยกกำลัง 2 ของข้อมูล จากนั้นให้ใช้บิตที่อยู่ตรงกลางจำนวน t บิต มาใช้ ถ้าตารางที่สร้างมีขนาด 2t ช่อง ตัวอย่างที่ 10.4 จงคำนวณตำแหน่งของชุดข้อมูล กำหนดตารางที่ใช้เก็บตำแหน่งมี 16 ช่อง คือ ตำแหน่ง 0-15 วิธีทำ เนื่องจากขนาดของตาราง คือ 16 ช่อง = 24 ดังนั้น ค่าของคีย์ต้องใช้จำนวน 4 บิต
16
10.2 ประเภทของการค้นหาข้อมูล
K K2 ไบนารีของ K2 หลังจากที่ค่า K2 ของคีย์แต่ละตัวแล้ว เราจะเลือก 4 บิตจากค่าในรูปไบนารีของ K2 ซึ่ง 4 บิต ที่เลือกจะเป็น 4 บิต ใดก็ได้อยู่ในดุลพินิจของเราเอง ส่วนใหญ่จะเลือก 4 บิต ที่มีลักษณะต่างกันให้มากที่สุด 31 961 1 42 1761 51 2601 14 196 12 144 3 9 7 49 17 289
17
10.2 ประเภทของการค้นหาข้อมูล
กรณีนี้ ถ้าเลือกบิตที่ 3, 4, 5, 6 นับจากทางขวา จะได้ K(31) = K(42) 1 9 K(51 8 K(14) K(12) 4 K(3) 2 K(7) 12 K(17)
18
10.2 ประเภทของการค้นหาข้อมูล
3. แบบพับ (Folding) ในกรณีที่คีย์มีขนดใหญ่ประกอบด้วยตัวเลขหลายหลักและจำนวนช่องในตารางเล็กมากกว่า เราสามารถคำนวณตำแหน่งที่อยู่ของแต่ละคีย์โดยการพับ ตัวอย่างที่ 10.5 ถ้าข้อมูลประกอบด้วยตัวเลข 8 หลัก และตำแหน่งของข้อมูลมีค่า ซึ่งประกอบด้วยตัวเลข 3 หลัก วิธีทำ - เลือกหลักของข้อมูล 3 หลัก ในที่นี้เลือกหลักที่ 3, 4, 5 1 2 3 4 5 6 7 8
19
10.2 ประเภทของการค้นหาข้อมูล
- ทำการพับข้อมูลหลักที่เหลือคือหลักที่ 1, 6, 7, 8 ไปยังหลักที่ 3, 4, 5 ดังนี้ พับหลักที่ 2 ไปยังหลักที่ 3 พับหลักที่ 1 ไปยังหลักที่ 4 พับหลักที่ 6 ไปยังหลักที่ 5 พับหลักที่ 7 ไปยังหลักที่ 4 พับหลักที่ 8 ไปยังหลักที่ 3 - เมื่อพับแล้วให้นำตัวเลขในตำแหน่งเดียวกันมาบวกกัน 1 2 3 4 5 6 7 8
20
10.2 ประเภทของการค้นหาข้อมูล
ตัวอย่างที่ 10.6 จงคำนวณตำแหน่งของข้อมูล โดยวิธีพับ ซึ่งกำหนดตำแหน่งของข้อมูลประกอบด้วย ตัวเลข 3 หลัก วิธีทำ - ข้อมูลที่กำหนด คือ - หลักข้อมูลที่เลือกคือ 4, 5, 6 และทำการพับข้อมูล 1 2 3 4 5 6 7 8 2 3 1 7 8 3
21
10.2 ประเภทของการค้นหาข้อมูล
- นำตัวเลขในตำแหน่งเดียวกันมาบวกกัน ตำแหน่งที่ = 1 ดังนั้นตำแหน่งของข้อมูล = 103 1 2 3 4 5 6 7 8 2 3 1 7 8 3
22
10.2 ประเภทของการค้นหาข้อมูล
4. Digital Analysis วิธีนี้ใช้ค่าของตำแหน่งข้อมูลเพียงบางส่วนเท่านั้น ดังนั้นจะต้องมีวิธีการในการพิจารณาตำแหน่งใดควรใช้ ซึ่งการเรียกค่าตำแหน่งหนึ่งตำแหน่งใดในหลาย ๆ ตำแหน่ง มีหลักการดังนี้คือ เลือกตำแหน่งที่มีการกระจายสม่ำเสมอ ซึ่งสามารถนำตำแหน่งที่เลือกไปใส่ใน Hashing Function แบบอื่น ๆ ได้ ตัวอย่างที่ 10.7 จงวิเคราะห์ตัวเลขต่อไปนี้ โดยให้เลือก 2 ตำแหน่งที่เหมาะสมเพื่อใช้เป็นค่าของตำแหน่งข้อมูล
23
10.2 ประเภทของการค้นหาข้อมูล
วิธีทำ 1. นำข้อมูลที่กำหนดให้มาสร้างตาราง โดยแยกเป็นแต่ละตำแหน่ง ดังนี้ 1 2 3 4 8 6 5 9
24
2. สร้างตารางเพื่อทำการวิเคราะห์ตัวเลขในแต่ละตำแหน่ง
1 2 3 4 5 6 7 8 9
25
10.2 ประเภทของการค้นหาข้อมูล
จากการวิเคราะห์ตัวเลข จะเห็นว่า ตำแหน่ง 2, 4 มีการกระจายตัวเลขที่สม่ำเสมอกว่าตำแหน่งอื่น ดังนั้นจึงเลือกตำแหน่ง 2, 4 เพื่อกำหนดค่าของตำแหน่งข้อมูล ดังนื้ คือ H (2328) = 38 H (4123) = 13 H (2645) = 65 H (8326) = 36 H (2529) = 59 H (2648) = 68
26
10.3 เทคนิคการแก้ปัญหาการชนกันของตำแหน่งของข้อมูล
ในการจัดเก็บและค้นหาข้อมูลโดยการใช้แอชชิง เป็นค่าของตำแหน่งที่ใช้ในการจัดเก็บข้อมูลนั้นโดยวิธีต่าง ๆ ซึ่งค่าของตำแหน่งที่ได้จึงมีโอกาสชนกัน คือ ข้อมูลต่างกันเมื่อนำมาแปลงหาค่าของตำแหน่งจะได้ค่าเดียวกัน ดังนั้นจึงต้องมีวิธีแก้ปัญหา ดังนี้ คือ
27
10.3 เทคนิคการแก้ปัญหาการชนกันของตำแหน่งของข้อมูล
วิธี Chaining เป็นวิธีที่ใช้ Pointer ของ Linked List เพื่อชี้ตำแหน่งถัดไป แบ่งออกเป็น 2 วิธี คือ 1. วิธี Chaining แบบที่แต่ละ Chain มีขนาดเท่ากัน หมายถึง ตารางที่ใช้เก็บตำแหน่งของข้อมูล ถูกออกแบบเป็นส่วน ๆ แต่ละส่วนที่เรียกว่า Bucket จำนวน n ส่วน แต่ละส่วนมีขนาด m ช่อง มีลักษณะเป็น Array ขนาด n x m ดังนี้
28
10.3 เทคนิคการแก้ปัญหาการชนกันของตำแหน่งของข้อมูล
1. วิธี Chaining แบบที่แต่ละ Chain มีขนาดเท่ากัน กรณีที่ข้อมูล 2 ตัว นำมาแปลงได้ตำแหน่งเดียวกัน ให้ใช้ตำแหน่งถัดไปในส่วนนั้น ๆ ถ้าส่วนใดค่าของตำแหน่งถูกใช้หมด ให้นำค่าข้อมูลนั้นไปเก็บไว้ในส่วน Overflow ส่วนที่ 1 M ช่อง ส่วนที่ 2 M ช่อง ส่วนที่ 1 M ช่อง ส่วน Overflow
29
ตัวอย่างที่ 10.8 กำหนดชุดข้อมูล ให้แปลงค่าข้อมูลให้เป็นค่าของตำแหน่ง โดยใช้ Hashing Function H(K) = K Mod โดยให้หลีกเลี่ยงการชนกันโดยใช้ Chaining แบ่งตารางออกเป็น 5 ส่วน แต่ละส่วนมี 4 ช่อง วิธีทำ ข้อมูล ตำแหน่ง 15 ตำแหน่ง = 1 5 51 ตำแหน่ง = 2 6 82 ตำแหน่ง = 3 42 2 82 2 42 ตำแหน่ง = 4 14 ตำแหน่ง = 5
30
10.3 เทคนิคการแก้ปัญหาการชนกันของตำแหน่งของข้อมูล
2. วิธี Chaining แบบที่แต่ละ Chain มีขนาดไม่เท่ากัน ขึ้นอยู่กับจำนวนข้อมูลที่ตกอยู่ใน Chain นั้น ๆ วิธีนี้อาศัย Linked List จำนวน n โหนด แต่ละโหนดใช้สำหรับค่าของตำแหน่ง 1 ค่า ซึ่งแต่ละโหนดประกอบด้วย 2 ส่วน คือ - ส่วนที่เก็บค่าข้อมูล - ส่วนที่เก็บ Pointer
31
ตัวอย่างที่ 10.9 กำหนดชุดข้อมูล ให้แปลงค่าข้อมูลให้เป็นค่าของตำแหน่ง โดยใช้ Hashing Function H(K) = K Mod โดยให้หลีกเลี่ยงการชนกันโดยใช้ Chaining ที่มีขนาดไม่เท่ากัน วิธีทำ ข้อมูล ตำแหน่ง 1 42 49 14 2 15 3 2 4 X 5 X 6 82 5 7 X
32
10.3 เทคนิคการแก้ปัญหาการชนกันของตำแหน่งของข้อมูล
วิธี Rehashing วิธีนี้เป็นวิธีที่ง่ายที่สุด โดยการคำนวณค่าของตำแหน่งใหม่ โดยการบวกค่าคงที่ค่าหนึ่งเข้ากับ Hashing Function ที่เกิดการชนกัน
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.