ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
1
Asst.Prof. Dr.Surasak Mungsing E-mail: Surasak.mu@spu.ac.th
CSC201 Anaysis and Design of Algorithmss Analysis of Searching Algorithms Asst.Prof. Dr.Surasak Mungsing Apr-17
2
Graph Search Methods ปัญหากราฟจำนวนมากแก้โดยวิธีการค้นหา (Many graph problems solved using a search method) การหาเส้นทางจากโหนดหนึ่งไปยังอีกโหนดหนึ่ง (Path from one vertex to another) กราฟเชื่อมต่อกันหรือไม่ (Is the graph connected?) การหาต้นไม้แผ่ของกราฟ (Find a spanning tree) Etc. วิธีการค้นหาที่รู้จักกันทั่วไป (Commonly used search methods): Breadth-first search. Depth-first search. Apr-17
3
Breadth-First Search CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี 4/4/2017
4
Breadth-First Search Example
ถ้าให้โหนดแทนเมืองต่างๆ กราฟก็เหมือนถนนที่เชื่อมเมืองซึ่งสามารถที่พาไปยังเมืองต่างๆได้ 4/4/2017
5
Breadth-First Search Example
จากเมือง Chicago, สามารถท่องไปยังเมืองต่างๆได้โดยวิธี breadth-first search ได้ดังนี้ เริ่มด้วยการเดินทางไปยังเมืองที่อยู่ใกล้ที่สุดก่อน ได้แก่เมือง Saint Louis, Milwaulkee, Detroit และ Indianapolis 4/4/2017
6
Breadth-First Search Example
จากนั้น ก็เดินทางต่อไปยังเมืองที่ใกล้ที่สุดของเมืองต่างๆที่ยังไม่ได้ จากเมือง Milwaulkee ไปยังเมือง Minneapolis และเมือง Omaha 4/4/2017
7
Breadth-First Search Example
จากเมือง St. Louis ไปเมือง Kansas City, Tulsa, Nashville และ Lexington 4/4/2017
8
Breadth-First Search Example
จากเมือง Indianapolis ไปเมือง Cincinnati และเมือง Columbus 4/4/2017
9
Data structures for BFS algorithm
1. สร้าง array ของโหนดจากกราฟ G. แต่ละโหนดจะกำหนด สี(color), ระยะทาง(distance) และโหนดก่อนหน้า(predecessor): - color: (White, Grey, Black). White: ถ้ายังไม่เคยตรวจสอบมาก่อน ดังนั้นในกาเริ่มต้นทุกโหนดเป็นสี WHITE Grey: ถ้าถูกตรวจแล้วแต่โหนดประชิดของโหนดนี้ยังไม่ถูกตรวจ Black: ถ้าโหนดถูกตรวจสอบแล้วและโหนดประชิดก็ถูกตรวจแล้วด้วย - distance: จำนวน edges ที่จะต้องเดินทางนับจากจุดเริ่มต้น มีค่าเป็น INFINITY เมื่อเริ่มต้น - predecessor: โหนดก่อนหน้าก่อนที่จะถึงโหนดนี้ 2. สร้างคิว Q ของโหนดสี GREY ทั้งหมด (โหนดที่ไปถึงแล้วแต่ยังไม่ได้ไปต่อ) 3. ให้การแทนข้อมูลกราฟ G เป็นแบบ adjacency list 4/4/2017
10
Time Complexity Each visited vertex is put on (and so removed from) the queue exactly once. When a vertex is removed from the queue, we examine its adjacent vertices. O(n) if adjacency matrix used O(vertex degree) if adjacency lists used Total time O(mn), where m is number of edges in the component that is searched (adjacency matrix) O(n + sum of component vertex degrees) (adj. lists) = O(n + number of edges in component)
11
4/4/2017
12
Depth-First Search 4/4/2017
13
Depth-First Search ลองนึกภาพคนเดินหาทางออกจากเขาวงกต เขาจะเดินไปข้างหน้าเรื่อยๆ จนกระทั่งถึงทางตันหรือพบเส้นทางที่เคยเดินผ่านมาก่อน จากนั้นจะเลี้ยวไปทางแยกที่ยังไม่เคยไปมาก่อนเพื่อเดินหน้าค้นหาทางออกจากเขาวงกตต่อไป สำหรับกราฟแผนที่เมือง Chicago เหตุการณ์จะเป็นดังนี้ 4/4/2017
14
Depth-First Search จากเมือง Chicago ไปยังเมือง Milwaukee 4/4/2017
15
Depth-First Search จากเมือง Milwaukee ไปยังเมือง Minneapolis 4/4/2017
16
Depth-First Search จากเมือง Minneapolis ไปยังเมือง Omaha 4/4/2017
17
Depth-First Search จากเมือง Omaha ไปยังเมือง Kansas City 4/4/2017
18
Depth-First Search จากเมือง Kansas City ไปยังเมือง St. Louis 4/4/2017
19
Depth-First Search จากเมือง St. Louis ไปยังเมือง Tulsa 4/4/2017
20
Depth-First Search จากเมือง St. Louis ไปยังเมือง Nashville 4/4/2017
21
Depth-First Search จากเมือง Nashville ไปยังเมือง Lexington 4/4/2017
22
Depth-First Search จากเมือง Lexington ไปยังเมือง Cincinnati Cincinnati
4/4/2017
23
Depth-First Search จากเมือง Cincinnati ไปยังเมือง Columbus 4/4/2017
24
Depth-First Search จากเมือง Columbus ไปยังเมือง Detroit Detroit
4/4/2017
25
Depth-First Search จากเมือง Columbus ไปยังเมือง Indianapolis 4/4/2017
26
Data structures for DFS algorithm
1. สร้าง array ของโหนดจากกราฟ G. แต่ละโหนดจะกำหนด color, predecessor, start_time และ end_time: - color: (White, Grey, Black). White: ถ้ายังไม่เคยตรวจสอบมาก่อน ดังนั้นในกาเริ่มต้นทุกโหนดเป็นสี WHITE Grey: ถ้าถูกตรวจแล้วแต่โหนดประชิดของโหนดนี้ยังไม่ถูกตรวจ Black: ถ้าโหนดถูกตรวจสอบแล้วและโหนดประชิดก็ถูกตรวจแล้วด้วย - start_time: เวลาในขั้นตอนวิธีเมื่อโหนดถูกมาเยือนเป็นครั้งแรก - end_time: เวลาในขั้นตอนวิธีเมื่อโหนดประชิดถูกตรวจสอบแล้ว (เมื่อโหนดนี้เป็น black) - predecessor: โหนดก่อนหน้าก่อนที่จะถึงโหนดนี้เป็นครั้งแรก 2. ให้การแทนข้อมูลกราฟ G เป็นแบบ adjacency list 4/4/2017
27
Depth-First Search Properties
Time complexity เหมือนกับของ BFS. คุณสมบัติที่เกี่ยวกับการหาเส้นทาง การหาการเชื่อมต่อกันขององค์ประกอบและ spanning tree ของ BFS และ DFS เหมือนกัน มีหลายปัญหาที่วิธีของ BFS ดีกว่า DFS และก็มีหลายปัญหาที่วิธีของ DFS ดีกว่า BFS
28
Breadth-first search VS Depth-first search trees
4/4/2017
29
Breadth-first search VS Depth-first search trees
4/4/2017
30
4/4/2017
31
Hashing 4/4/2017
32
แนวคิดของเทคนิค Hashing
แต่ละค่าคีย์จะ map ไปยังตัวเลขที่มีค่าระหว่าง 0 ถึง TableSize -1 และเก็บอยู่ในตำแหน่งที่เหมาะสม การ map ค่าคีย์ทำโดย hash function ซึ่งในทางทฤษฎีจะเป็นฟังก์ชันง่ายๆซึ่งสามารถให้ผลลัพทธ์ที่แตกต่างกันสำหรับค่าคีย์หนึ่งๆ มีประเด็นที่จะต้องพิจารณาคือการเลือก hash function และการแก้ปัญหาเมื่อค่าคีย์ 2 ค่าประมวลผลโดย hash function แล้วได้ผลลัพทธ์เดียวกัน 4/4/2017
33
Hash function hash function อย่างง่าย hash(key) = key MOD TableSize
TableSize ควรเป็นตัวเลขจำเพาะ (prime number) การได้ผลลัพธ์เหมือนกันจากค่าคีย์ที่แตกต่างกันเรียกว่า Collision การแก้ปัญหา Collision ทำโดยการเก็บค่าคีย์ใน Hash table แบบ Separate Chaining Open Addressing 4/4/2017
34
Separate chaining Key={0, 81, 64, 25, 36, 49, 4, 1, 9, 16}
H(x) = x % 10 4/4/2017
35
Open addressing with Linear Probing
Key {89, 18, 49, 58, 69} Hash function: hash(x)=x MOD 10 Collision resolution strategy: f(i)=i 4/4/2017
36
Open addressing with Quadratic Probing
Key {89, 18, 49, 58, 69} Hash function: hash(x)=x MOD 10 Collision resolution strategy: f(i)=i2 4/4/2017
37
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) 4/4/2017
38
Theorem ถ้าใช้การแก้ปัญหา Collision แบบ Quadratic probing และ table size เป็นเลข 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. 4/4/2017
39
Rehashing Open addressing hash table Open addressing hash table
with linear probing with input 13, 15, 6, 24 Open addressing hash table with linear probing after 23 is inserted Open addressing hash table after rehashing 4/4/2017
40
เทคนิคการออกแบบขั้นตอนวิธีตอนวิธี Greedy, Divide and Conquer
Next Lecture: เทคนิคการออกแบบขั้นตอนวิธีตอนวิธี Greedy, Divide and Conquer 4-Apr-17
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.