Graph Lecturer : Kritawan Siriboon, Boontee Kruatrachue Room no. 913

Slides:



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

รายวิชา ง40206 โครงสร้างข้อมูลและขั้นตอนวิธี
โครงสร้างข้อมูลทรีและไบนารีทรี (Tree and Binary Tree)
จำนวน สถานะ NUMBER OF STATES. ประเด็นที่ สนใจ The number of distinct states the finite state machine needs in order to recognize a language is related.
ระบบการจัดเก็บในคลังสินค้า
Stack.
ออโตมาตาจำกัด FINITE AUTOMATA
สมชาย ประสิทธิ์จูตระกูล
Linked-List (รายการโยง)
นำเสนอโดย ดร.สุธี สุดประเสริฐ
Asst.Prof. Dr.Surasak Mungsing
Asst.Prof. Dr.Surasak Mungsing
Asst.Prof. Dr.Surasak Mungsing
ให้ประหยัดการใช้หน่วยความจำ (space) ด้วยความรวดเร็ว (time)
Chapter 3 Simple Supervised learning
โครงสร้างข้อมูลทรีและไบนารีทรี (Tree and Binary Tree)
Chapter 1/1 Arrays. Introduction Data structures are classified as either linear or nonlinear Linear structures: elements form a sequence or a linear.
Linked List List is group of nodes that consists of data and link.
วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)
Shortest-Path Algorithms
Lecture9 Tree อ. วรวิทย์ วีระพันธุ์ เรียบเรียงโดย อ
สาขาวิชาเทคโนโลยี สารสนเทศ คณะเทคโนโลยีสารสนเทศ และการสื่อสาร.
กราฟเบื้องต้น.
WATTANAPONG SUTTAPAK SOFTWARE ENGINEERING, SCHOOL OF INFORMATION COMMUNICATION TECHNOLOGY, UNIVERSITY OF PHAYAO Chapter 9 Heap and Hash 1.
กราฟเบื้องต้น.
WATTANAPONG SUTTAPAK SOFTWARE ENGINEERING, SCHOOL OF INFORMATION COMMUNICATION TECHNOLOGY, UNIVERSITY OF PHAYAO Chapter 6 Graph 1.
หน่วยที่ 6 กราฟ (Graphs)
Linked List (2) Sanchai Yeewiyom School of Information & Communication Technology University of Phayao.
Trees Hierarchical Structures. Outlines Definition of trees Modeling by trees Properties of trees Applications – Binary search trees – Prefix codes –
รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 1 Stack & Queue Lecturers : Boontee Kruatrachue.
Collections. Data structures Data Structures ( โครงสร้างข้อมูล ) เกิดจากการ นำข้อมูลขั้นพื้นฐานที่แบ่งแยกไม่ได้ (atomic data type) เช่น int, char, double.
QueueQueue Lecturer : Kritawan Siriboon, Room no. 913 Text : Data Structures & Algorithm Analysis in C, C++,… Mark Allen Weiss, Addison Wesley.
Linked List ( ต่อ ) Lecturer : Kritawan Siriboon, Room no. 913 Text : Data Structures & Algorithm Analysis in C, C++,… Mark Allen Weiss, Addison Wesley.
Queue Lecturer : Kritawan Siriboon, Room no. 913
ACM ICPC Training Nattee Niparnan.
การทดสอบซอฟต์แวร์ Software Testing
บทที่ 12 กราฟ (Graph).
Linked List.
พื้นฐานการเขียนแบบทางวิศวกรรม
บทที่ 14 กลวิธีการทดสอบซอฟต์แวร์ (TESTING STRATEGIES)
INC 161 , CPE 100 Computer Programming
Linked List.
Graph Lecturer : Kritawan Siriboon, Boontee Kruatrachue Room no. 913
การวิเคราะห์และออกแบบขั้นตอนวิธี
การแสดงขั้นตอนวิธีด้วยรหัสเทียม (Pseudo-Code)
Graph Lecturer : Kritawan Siriboon, Boontee Kruatrachue Room no. 913
13 October 2007
Graph Lecturer : Kritawan Siriboon, Boontee Kruatrachue Room no. 913
ความรู้พื้นฐานการเขียนโปรแกรม
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 13: การคำนวณได้และการตัดสินใจของปัญหา ที่ยากต่อการแก้ไข.
DEADLOCKS Advanced Operating System Operating System Technology
Linked List Lecturer : Kritawan Siriboon, Room no. 913
Asst.Prof. Dr.Surasak Mungsing
Rewrite by Burin Rujjanapan Updated:
Problem Solving ขั้นตอนวิธีและการแก้ปัญหาสำหรับวิทยาการคอมพิวเตอร์
Lecture no. 1: Introduction to Computer and Programming
NETWORK GRAPH การวิเคราะห์วงจรข่ายโดยกราฟ ปิยดนัย ภาชนะพรรณ์
Linked List (ต่อ) Lecturer : Kritawan Siriboon, Room no. 913
โครงสร้างข้อมูลและขั้นตอนวิธี (Data Structures and Algorithms)
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 11: เทคนิคการออกแบบขั้นตอนวิธีตอนวิธี Greedy,
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 05: การวิเคราะห์ความซับซ้อนของ ขั้นตอนวิธีการเรียงลำดับข้อมูล.
Data Structures & Algorithms Using Python
Data Structures and Algorithms 2/2561
Data Structures & Algorithms Using Python
4.4 AVL Trees AVL (Adelson-Velskii and Landis) tree เป็น binary search tree กำกับด้วยเงื่อนไขของการสมดุล และประกันว่า depth ของ tree จะเป็น O(log n) อย่างง่ายที่สุดคือกำหนดว่า.
9. GRAPH ALGORITHMS.
การวิเคราะห์และออกแบบขั้นตอนวิธี
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 12: เทคนิคการออกแบบขั้นตอนวิธีตอนวิธี Dynamic.
Constraint Satisfaction Problem (CSP)
อัลกอริทึม (Algorithm) ???
ใบสำเนางานนำเสนอ:

Graph Lecturer : Kritawan Siriboon, Boontee Kruatrachue Room no. 913 Text : Data Structures & Algorithm Analysis in C, C++,… Mark Allen Weiss, Addison Wesley

A B C D A B C D Graph Definitions B adjacent to A A not adjacent to B (B,A) Graph G = (V, E) ประกอบด้วย set 2 sets V = { A, B, C, D } 1. V = set of vertices (nodes) A B C D E = { (A,B), (A,C) , (B,C) } 2. E = set of edges (arcs) B adjacent to A Directed graph (Digraph) (มีทิศทาง แทนด้วยลูกศรของ edge) has directions associate with edges. (A,B) ≠ (B,A) A B C D Undirected graph (ไม่มีทิศทาง) has no direction associate with edges. (A,B) B adjacent to A = (B,A) <-> A adjacent to B (A,B) = (B,A) B adjacent to A (ต่อจาก) ถ้ามี edge (A,B) є E ดังนั้นสำหรับ undirected graph B adjacent to A  A adjacent to B

loop A B C D Graph Definitions 6 5 1 2 มี 2 paths จาก A ไป D ABD path length = 2 (unweigthed) path length = 2 + 5 = 7 (weigthed) ABCD path length = 3 (unweigthed) path length = 2 + 2 + 1 = 5 (weigthed) Weighted graph has weight assigned to each edge. (graph ที่มีน้ำหนักกำกับ edge) Such weights might represent costs, lengths or capacities, etc. depending on the problem at hand. (น้ำหนัก อาจแสดงถึงสิ่งที่สนใจ เช่น ราคา ระยะทาง ความจุ เป็นต้น) Path (เส้นทางจาก node หนึ่งไป node หนึ่ง เช่นจาก W1 ไป Wn) : sequence of nodes W1, W2, W3, ..., Wn when (W1, W2), (W2, W3), . . ., (Wn-1, Wn) є E Path length = # of edges in a path (unweighted graph) (= จำนวน edges ใน path) = sum of weights of all edges in a path (weighted graph) Loop : path of length 0 from v to v ie. think that there is edge(v,v).

ABC ABCDA ABCDEDBA ABCDBA Cycle, Simple Path simple path non simple path cycle acyclic simple Path : เสมือนทางเดิน Simple path: path ซึ่ง vertices ไม่ซ้ำ เว้น vertex แรกกับ vertex สุดท้ายซ้ำได้ ไม่เดินไปที่ๆเดินไปแล้ว (ยกเว้นกลับมาที่เก่า) Cycle graph (circular graph) : มี cycle อย่างน้อย 1 cycle (มี vertices ซึ่งวนกลับมาที่เดิม เป็น closed chain) Simple Cycle : Simple path + Cycle B A Acyclic Cycle in undirected graph: edges ต้องไม่ใช่ edge เดียวกัน ie. path UVU ไม่ควรเป็น cycle เพราะ (U,V) และ (V,U) เป็น edge เดียวกัน Acyclic Graph: no cycle Directed Acyclic Graph = DAG ==> Tree

Connected VS Disconnected Undirected graph Connected มี path จากทุก vertex ไปยังทุก vertex Disconnected Directed graph Weakly Connected complete graph มี edge เชื่อมทุกคู่ของ nodes Indegree จำนวน edges ที่เข้า vertex Outdegree จำนวน edges ที่ออกจาก vertex • has indegree = 2 • has outdegree = 1

Graph Examples Airport System, Traffic Flow, ...

Graph Representations 3 6 7 5 2 1 4 Or Linked List of vertices key id name phone … 1 สุวรรณภูมิ ... 2 ดอนเมือง 3 นาริตะ 4 5 6 7

Topological Order Prog Data Struct Digital Micro Robot DataBase Topological Order : order ใน acyclic graph ซึ่ง ถ้ามี path จาก vi ถึง vj แล้ว vj จะต้องอยู่หลัง vi ใน order เช่น Prog Digital Data Struct DataBase Micro Robot Prog Data Struct Digital Micro Robot DataBase Prog Digital Data Struct Micro Robot DataBase

Depth First Traversals Depth First Traversal ถ้าพึ่ง visit V หาก V มี adjacent node ที่ยังไม่ได้ visit ให้ visit ตัวใดตัวหนึ่ง แล้ว ทำอย่างนี้กับ node ที่พึ่ง visit ไปเรื่อยๆ เมื่อ node ที่พึ่ง visit ไม่มี adjacent node ที่ยังไม่ได้ visit เหลือแล้ว จึงค่อยกลับมา visit adjacent node ของ node ก่อนหน้าที่ยังเหลืออยู่ depth first traverse จึงใช้ stack ช่วย 8 4 7 3 2 1 9 5 6 10 11 3 6 7 5 2 1 4 8 9

Depth First Traversals Depth First Traversals ไปด้านลึกก่อน : ใช้ stack ช่วย A G B E C H F D Result: A B E G F C H D หากกำหนดว่าถ้า traverse ไปได้หลาย node ต้องไป node ที่มีค่าน้อยที่สุดเสมอ เช่น ถ้าไปได้ทั้ง B E F ต้องเลือกไป B เพราะ B มีค่าน้อยที่สุด

Bredth First Traversals 3 6 7 5 2 1 4 8 9 10 11 5 6 8 3 2 1 7 9 4 Bredth First Traversal (Level Order) ถ้าพึ่ง visit V ถ้า V มี adjacent node ที่ยังไม่ได้ visit ให้ visit ทุกตัวที่ adjacent กับมัน แล้วทำขบวนการนี้ไปเรื่อยๆ กับ node ที่ถูก visit ไปตามลำดับการถูก visit ก่อนหลัง bredth first traverse จึงใช้ queue ช่วย

Bredth First Traversals Bredth First Traversals : visit ทุกตัวที่ adjacent กับ node ที่พึ่ง visit ใช้ queue ช่วย A G B E C H F D Result: A B D G E F C H หากกำหนดว่าถ้า traverse ไปได้หลาย node ต้องไป node ที่มีค่าน้อยที่สุดเสมอ เช่น ถ้าไปได้ทั้ง B E F ต้องเลือกไป B เพราะ B มีค่าน้อยที่สุด

Depth First Traversals depth_first ( void (*fp)(Vertex* ) )const // ฟังก์ชั่น ptr fp เช่น print, ... init bool visited [MAX] = false for all vertices. for all un-visited vertex v // run for disconnected graph node traverse (&v, visited, fp); // เช่น fp = &print(Vertex*); 3 6 7 5 2 1 4 8 9 visited F 1 2 3 4 5 6 7 8 9 ... traverse(Vertex *v, bool visited[ ],void(*fp)(Vertex*)) const (*fp)(v) ; // run ฟังก์ชั่น fp on v visited[*v] = true; // set v to be already visited for all un-visited w that adjacent to v traverse (&w, visited, fp); 8 4 7 3 2 1 9 5 6 10 11

Bredth First Traversals bredth_first ( void (*fp)( Vertex* ) ) const // ฟังก์ชั่น ptr fp เช่น print, ... init bool visited [MAX]; = false for all vertices. Init empty queue q; for all un-visited vertex v // run for disconnected graph node enqueue(q, v) while (not empty q) w = q.dequeue() if (!visited[w]) visited[w] = true; // set w to be already visited (*fp) (&w); for all un-visited x that adjacent w and x is not in q q.enqueue(x) 5 6 8 3 2 1 7 9 4 visited F 1 2 3 4 5 6 7 8 9 ... 3 6 7 5 2 1 4 10 11 8 9

start 10 3 2 4 8 5 6 1 Shortest Path shortest weighted path v1 to v6 : = v1,v4,v7,v6 cost = 1+4+1 = 6 shortest unweighted path v1 to v6 : = v1,v4,v6 cost = 2

Greedy Algorithm Greedy Algorithm : เลือกอันที่ดีที่สุดสำหรับ stage ปัจจุบัน (อาจไม่ได้ optimum solution) ตย. แลกเหรียญให้ได้จำนวนเหรียญน้อยที่สุด quarter 25 cents dime 10 cents suppose we have 12_cent_coin == > 12 cents nikle 5 cents penny 1 cents 15 cents : Greedy → : (optimum → 10, 5) 12, 1, 1, 1

Weighted Shortest Paths (Dijkstra’s algorithm) Greedy : for each current stage, choose the best. Data Structures : สำหรับ vertex v ใดๆ เก็บข้อมูล 3 ตัว : distance = ระยะจากจุด start ไปยัง vertex นั้นๆ known เป็นจริง เมื่อทราบระยะ distance ที่สั้นที่สุดแล้ว path = vertex ก่อนหน้ามันใน shortest path vertices ทั้งหมด : known = flase; start_vertex : distance = 0; vertices อื่นๆ : distance = ; for( ; ;) v = vertex ที่มี dist. น้อยที่สุด ที่ known ยังเป็น false if (ไม่มี v ) break; v.known = true; for each w adjacent to v ซึ่งยังไม่ถูก process if (w.dist > v.dist + weight(vw)) ปรับ w.dist เป็นค่าใหม่ซึ่งน้อยกว่า w.path = v; T F v5 v6 v4 v1 v0 v3 5 1 2 4 6 8 10 3 start v2 F  2,v0 1,v0

Weighted Shortest Paths (Dijkstra’s algorithm) distance known  v5 v6 v4 v1 v0 v3 5 1 2 4 6 8 10 3 start v2 T F Weighted Shortest Paths (Dijkstra’s algorithm) distance Greedy : for each current stage, choose the best. vertices ทั้งหมด : known = flase; start_vertex : distance = 0; vertices อื่นๆ : distance = ; for( ; ;) v = vertex ที่มี dist. น้อยที่สุด ที่ known ยังเป็น false if (ไม่มี v ) break; v.known = true; for each w adjacent to v ซึ่งยังไม่ถูก process if (w.dist > v.dist + weight(vw)) ปรับ w.dist เป็นค่าใหม่ซึ่งน้อยกว่า w.path = v; distance path (from)  v5 v6 v4 v1 v0 v3 5 1 2 4 6 8 10 3 start v2 2,v0 T F 1,v0 3, v3 v5 v6 v4 v1 v0 v3 5 1 2 4 6 8 10 3 start v2 2,v0 5, v3 9, v3 T F 1,v0 3, v3 v5 v6 v4 v1 v0 v3 5 1 2 4 6 8 10 3 start v2 2,v0 5(5<9),v3 9, v3 T F 1,v0 3(3<12), v3 v5 v6 v4 v1 v0 v3 5 1 2 4 6 8 10 3 start v2 2,v0 5, v3 9, v3 3, v3 T F 1,v0

Weighted Shortest Paths (Dijkstra’s algorithm)  v5 v6 v4 v1 v0 v3 5 1 2 4 6 8 10 3 start v2 T F  v5 v6 v4 v1 v0 v3 5 1 2 4 6 8 10 3 start v2 2,v0 T F 1,v0 Weighted Shortest Paths (Dijkstra’s algorithm) 3, v3 v5 v6 v4 v1 v0 v3 5 1 2 4 6 8 10 3 start v2 2,v0 5, v3 9, v3 T F 1,v0 3(3<12), v3 v5 v6 v4 v1 v0 v3 5 1 2 4 6 8 10 3 start v2 2,v0 5, v3 9, v3 3, v3 T F 1,v0 3, v3 v5 v6 v4 v1 v0 v3 5 1 2 4 6 8 10 3 start v2 2,v0 5(5<9),v3 9, v3 T F 1,v0 3, v3 v5 v6 v4 v1 v0 v3 5 1 2 4 6 8 10 3 start v2 2,v0 5,v3 98,v32 T F 1,v0 3, v3 v5 v6 v4 v1 v0 v3 5 1 2 4 6 8 10 3 start v2 2,v0 5,v3 86,v26 T F 1,v0 3, v3 v5 v6 v4 v1 v0 v3 5 1 2 4 6 8 10 3 start v2 2,v0 5,v3 6,v6 T 1,v0

Weighted Shortest Paths (Dijkstra’s algorithm)  v5 v6 v4 v1 v0 v3 5 1 2 4 6 8 10 3 start v2 T F  v5 v6 v4 v1 v0 v3 5 1 2 4 6 8 10 3 start v2 2,v0 T F 1,v0 Weighted Shortest Paths (Dijkstra’s algorithm) 3, v3 v5 v6 v4 v1 v0 v3 5 1 2 4 6 8 10 3 start v2 2,v0 5,v3 98,v32 T F 1,v0 3, v3 v5 v6 v4 v1 v0 v3 5 1 2 4 6 8 10 3 start v2 2,v0 5, v3 9, v3 T F 1,v0 3(3<12), v3 v5 v6 v4 v1 v0 v3 5 1 2 4 6 8 10 3 start v2 2,v0 5, v3 9, v3 3, v3 T F 1,v0 3, v3 v5 v6 v4 v1 v0 v3 5 1 2 4 6 8 10 3 start v2 2,v0 5(5<9),v3 8, v2 T F 1,v0 3, v3 v5 v6 v4 v1 v0 v3 5 1 2 4 6 8 10 3 start v2 2,v0 5,v3 86,v26 T F 1,v0 3, v3 v5 v6 v4 v1 v0 v3 5 1 2 4 6 8 10 3 start v2 2,v0 5,v3 6,v6 T 1,v0

Data Structure option adjacency matrix  v5 v6 v4 v1 v0 v3 5 1 2 4 6 8 10 3 start v2 T F 1 2 3 4 5 6 weights 1 2 3 4 5 6 10 8 name distance known path V0 1 V1 2 V2 3 V3 4 V4 5 V5 6 v6