Asst.Prof. Dr.Surasak Mungsing

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
Another one of Data Structure
Advertisements

รายวิชา ง40206 โครงสร้างข้อมูลและขั้นตอนวิธี
Course Orientation Data Structure and Algorithms ( )
Lists Data Structure LAUKHWAN NGAMPRASIT LAUKHWAN NGAMPRASIT.
สาขาวิชาคอมพิวเตอร์และเทคโนโลยี อ.เลาขวัญ งามประสิทธิ์
ตารางแฮช Hash Table.
รายวิชา ง40206 โครงสร้างข้อมูลและขั้นตอนวิธี
Hashing Function มีหลายฟังก์ชั่น การเลือกใช้ขึ้นอยู่กับความเหมาะสมของข้อมูล ตัวอย่างของฟังก์ชั่นแฮชมีดังนี้ 1. Mod คือการนำค่าคีย์มา mod ด้วยค่า n ใด.
Chapter 1 โครงสร้างข้อมูลและอัลกอริธึมส์
Data Structures and Algorithms
Stack.
การเรียงลำดับและการค้นหาแบบง่าย
AVL Tree.
สมชาย ประสิทธิ์จูตระกูล
Data structure & Algorithms
การแก้ปัญหาด้วยคอมพิวเตอร์
Graph’s algorithm นำเสนอโดย นายปองสิทธิ์ โพธิคุณ ม.6/7 เลขที่ 17
CSC201 Analysis and Design of Algorithms P and NP Problems
Asst.Prof. Dr.Surasak Mungsing
Asst.Prof. Dr.Surasak Mungsing
CSC201 Analysis and Design of Algorithms Greedy, Divide and Conquer
Asst.Prof. Dr.Surasak Mungsing
MAT 231: คณิตศาสตร์ไม่ต่อเนื่อง (6) ทรี-ต้นไม้(Trees)
ให้ประหยัดการใช้หน่วยความจำ (space) ด้วยความรวดเร็ว (time)
วิทยาการคอมพิวเตอร์ 1 เรื่องคัดเฉพาะทาง
โครงสร้างข้อมูลแบบคิว
การเลือกรองเท้าและ การปรับรองเท้า ให้เหมาะสม สำหรับผู้ป่วยเบาหวาน
List ADTs By Pantharee S..
Artificial Intelligence (AI)
บทที่ 3 การทำงานกับฟอร์ม (Form)
ลิงค์ลิสต์ (Linked List)
วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)
วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)
หลักการแก้ปัญหา
Shortest-Path Algorithms
School of Information Communication Technology,
adversarial Search Techniques
การวิเคราะห์เชิงพื้นที่
แบบฝึกหัด จงหาคำตอบที่ดีที่สุด หรือหาค่ากำไรสูงสุด จาก
โครงสร้างข้อมูล Queues
Mathematical Model of Physical Systems. Mechanical, electrical, thermal, hydraulic, economic, biological, etc, systems, may be characterized by differential.
การค้นในปริภูมิสถานะ
กราฟเบื้องต้น.
บทที่ 6 พจนานุกรมข้อมูล และ คำอธิบายกระบวนการ
บทที่ 6 การจัดการโครงการ Project Management ญาลดา พรประเสริฐ.
การจัดเรียงข้อมูล (sorting)
stack #1 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
การค้นในปริภูมิสถานะ
กราฟเบื้องต้น.
ค32213 คณิตศาสตร์สำหรับคอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
Week 13 Basic Algorithm 2 (Searching)
การแก้ไขปัญหา วิชา เทคโนโลยีและสารสนเทศ
Trees Hierarchical Structures. Outlines Definition of trees Modeling by trees Properties of trees Applications – Binary search trees – Prefix codes –
ACM ICPC Training Nattee Niparnan.
Lecturers : Boontee Kruatrachue. Room no. 913 Kritawan Siriboon
Lecturers : Boontee Kruatrachue. Room no. 913 Kritawan Siriboon
Lecturers : Boontee Kruatrachue. Room no. 913 Kritawan Siriboon
การวิเคราะห์และออกแบบขั้นตอนวิธี
Graph Lecturer : Kritawan Siriboon, Boontee Kruatrachue Room no. 913
Graph Lecturer : Kritawan Siriboon, Boontee Kruatrachue Room no. 913
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 13: การคำนวณได้และการตัดสินใจของปัญหา ที่ยากต่อการแก้ไข.
Asst.Prof. Dr.Surasak Mungsing
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 04: การวิเคราะห์หาความซับซ้อนด้านเวลา ในรูป.
บทที่ 10 การค้นหาข้อมูล (Searching)
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 11: เทคนิคการออกแบบขั้นตอนวิธีตอนวิธี Greedy,
Hashing Sanchai Yeewiyom
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 05: การวิเคราะห์ความซับซ้อนของ ขั้นตอนวิธีการเรียงลำดับข้อมูล.
การวิเคราะห์และออกแบบขั้นตอนวิธี
การวิเคราะห์และออกแบบขั้นตอนวิธี
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 12: เทคนิคการออกแบบขั้นตอนวิธีตอนวิธี Dynamic.
ใบสำเนางานนำเสนอ:

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 E-mail: Surasak.mu@spu.ac.th Apr-17

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

Breadth-First Search CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี 4/4/2017

Breadth-First Search Example ถ้าให้โหนดแทนเมืองต่างๆ กราฟก็เหมือนถนนที่เชื่อมเมืองซึ่งสามารถที่พาไปยังเมืองต่างๆได้ 4/4/2017

Breadth-First Search Example จากเมือง Chicago, สามารถท่องไปยังเมืองต่างๆได้โดยวิธี breadth-first search ได้ดังนี้ เริ่มด้วยการเดินทางไปยังเมืองที่อยู่ใกล้ที่สุดก่อน ได้แก่เมือง Saint Louis, Milwaulkee, Detroit และ Indianapolis 4/4/2017

Breadth-First Search Example จากนั้น ก็เดินทางต่อไปยังเมืองที่ใกล้ที่สุดของเมืองต่างๆที่ยังไม่ได้ จากเมือง Milwaulkee ไปยังเมือง Minneapolis และเมือง Omaha 4/4/2017

Breadth-First Search Example จากเมือง St. Louis ไปเมือง Kansas City, Tulsa, Nashville และ Lexington 4/4/2017

Breadth-First Search Example จากเมือง Indianapolis ไปเมือง Cincinnati และเมือง Columbus 4/4/2017

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

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)

4/4/2017

Depth-First Search 4/4/2017

Depth-First Search ลองนึกภาพคนเดินหาทางออกจากเขาวงกต เขาจะเดินไปข้างหน้าเรื่อยๆ จนกระทั่งถึงทางตันหรือพบเส้นทางที่เคยเดินผ่านมาก่อน จากนั้นจะเลี้ยวไปทางแยกที่ยังไม่เคยไปมาก่อนเพื่อเดินหน้าค้นหาทางออกจากเขาวงกตต่อไป สำหรับกราฟแผนที่เมือง Chicago เหตุการณ์จะเป็นดังนี้ 4/4/2017

Depth-First Search จากเมือง Chicago ไปยังเมือง Milwaukee 4/4/2017

Depth-First Search จากเมือง Milwaukee ไปยังเมือง Minneapolis 4/4/2017

Depth-First Search จากเมือง Minneapolis ไปยังเมือง Omaha 4/4/2017

Depth-First Search จากเมือง Omaha ไปยังเมือง Kansas City 4/4/2017

Depth-First Search จากเมือง Kansas City ไปยังเมือง St. Louis 4/4/2017

Depth-First Search จากเมือง St. Louis ไปยังเมือง Tulsa 4/4/2017

Depth-First Search จากเมือง St. Louis ไปยังเมือง Nashville 4/4/2017

Depth-First Search จากเมือง Nashville ไปยังเมือง Lexington 4/4/2017

Depth-First Search จากเมือง Lexington ไปยังเมือง Cincinnati Cincinnati 4/4/2017

Depth-First Search จากเมือง Cincinnati ไปยังเมือง Columbus 4/4/2017

Depth-First Search จากเมือง Columbus ไปยังเมือง Detroit Detroit 4/4/2017

Depth-First Search จากเมือง Columbus ไปยังเมือง Indianapolis 4/4/2017

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

Depth-First Search Properties Time complexity เหมือนกับของ BFS. คุณสมบัติที่เกี่ยวกับการหาเส้นทาง การหาการเชื่อมต่อกันขององค์ประกอบและ spanning tree ของ BFS และ DFS เหมือนกัน มีหลายปัญหาที่วิธีของ BFS ดีกว่า DFS และก็มีหลายปัญหาที่วิธีของ DFS ดีกว่า BFS

Breadth-first search VS Depth-first search trees 4/4/2017

Breadth-first search VS Depth-first search trees 4/4/2017

4/4/2017

Hashing 4/4/2017

แนวคิดของเทคนิค Hashing แต่ละค่าคีย์จะ map ไปยังตัวเลขที่มีค่าระหว่าง 0 ถึง TableSize -1 และเก็บอยู่ในตำแหน่งที่เหมาะสม การ map ค่าคีย์ทำโดย hash function ซึ่งในทางทฤษฎีจะเป็นฟังก์ชันง่ายๆซึ่งสามารถให้ผลลัพทธ์ที่แตกต่างกันสำหรับค่าคีย์หนึ่งๆ มีประเด็นที่จะต้องพิจารณาคือการเลือก hash function และการแก้ปัญหาเมื่อค่าคีย์ 2 ค่าประมวลผลโดย hash function แล้วได้ผลลัพทธ์เดียวกัน 4/4/2017

Hash function hash function อย่างง่าย hash(key) = key MOD TableSize TableSize ควรเป็นตัวเลขจำเพาะ (prime number) การได้ผลลัพธ์เหมือนกันจากค่าคีย์ที่แตกต่างกันเรียกว่า Collision การแก้ปัญหา Collision ทำโดยการเก็บค่าคีย์ใน Hash table แบบ Separate Chaining Open Addressing 4/4/2017

Separate chaining Key={0, 81, 64, 25, 36, 49, 4, 1, 9, 16} H(x) = x % 10 4/4/2017

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

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

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

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

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

เทคนิคการออกแบบขั้นตอนวิธีตอนวิธี Greedy, Divide and Conquer Next Lecture: เทคนิคการออกแบบขั้นตอนวิธีตอนวิธี Greedy, Divide and Conquer 4-Apr-17