งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

Asst.Prof. Dr.Surasak Mungsing

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "Asst.Prof. Dr.Surasak Mungsing"— ใบสำเนางานนำเสนอ:

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


ดาวน์โหลด ppt Asst.Prof. Dr.Surasak Mungsing

งานนำเสนอที่คล้ายกัน


Ads by Google