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

Slides:



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

รายวิชา ง40206 โครงสร้างข้อมูลและขั้นตอนวิธี
Linked-List (รายการโยง)
Asst.Prof. Dr.Surasak Mungsing
Linked List List is group of nodes that consists of data and link.
วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)
Shortest-Path Algorithms
หน่วยการเรียนรู้ที่ 2 หลักการแก้ปัญหาด้วยคอมพิวเตอร์
การเขียนโปรแกรมภาษาปาสคาล โดยใช้โครงสร้างหลักทั้ง 3 โครงสร้าง
DATA STRUCTURE AND ALGORITHM Linked List.
หน่วยที่ 6 กราฟ (Graphs)
การใช้งาน Microsoft Excel
1.
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 –
หลักการโปรแกรม 1 Lecture 8: การทำซ้ำ (while, do-while)
รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 1 Stack & Queue Lecturers : Boontee Kruatrachue.
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 Sanchai Yeewiyom School of Information & Communication Technology University of Phayao.
คำสั่งควบคุมการทำงาน
Queue Lecturer : Kritawan Siriboon, Room no. 913
ACM ICPC Training Nattee Niparnan.
เกม คณิตคิดเร็ว.
Burin Rujjanapan Updated:
stack #2 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
รายการ(List) [2] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
รายการ(List) [1] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
บทที่ 12 กราฟ (Graph).
การใช้หม้อแปลงไฟฟ้า อย่างมีประสิทธิภาพ.
โครงสร้างข้อมูลและอัลกอริทึมเบื้องต้น
บทที่ 3 การวิเคราะห์ Analysis.
Graph Lecturer : Kritawan Siriboon, Boontee Kruatrachue Room no. 913
ACCOUNTING FOR INVENTORY
Trees (2) University of Phayao Sanchai Yeewiyom
Graph Lecturer : Kritawan Siriboon, Boontee Kruatrachue Room no. 913
รายการ(List) [3] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
Graph Lecturer : Kritawan Siriboon, Boontee Kruatrachue Room no. 913
STACK สแตก(stack) เป็นโครงสร้างข้อมูลแบบเชิงเส้น ที่มีการใส่ข้อมูลเข้า และนำข้อมูลออกเพียงด้านเดียว ดังนั้น ข้อมูลที่เข้าไปอยู่ใน stack ก่อนจะออกจาก stack.
การบัญชีต้นทุนช่วง (Process Costing).
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 13: การคำนวณได้และการตัดสินใจของปัญหา ที่ยากต่อการแก้ไข.
QUEUE คิวจะมีโครงสร้างแบบเชิงเส้นเหมือน stack แต่แตกต่างตรงที่ queue มีตัวชี้ 2 ตัวคือ หัว(Head) และหาง(Tail) โดยการใส่ข้อมูลเข้าและนำข้อมูลออก จะมีลักษณะ.
บทที่ 7 การเขียนโปรแกรม แบบวนรอบทำซ้ำ (Loop)
บทที่ 4 การอินทิเกรต (Integration)
Linked List Lecturer : Kritawan Siriboon, Room no. 913
B92 Protocol Alice สุ่ม string a string a (data bits)
Asst.Prof. Dr.Surasak Mungsing
Rewrite by Burin Rujjanapan Updated:
สาระการเรียนรู้ ความหมายของอัลกอริทึม วิธีการเขียนผังงานที่ดี
ชุดที่ 1 ไป เมนูรอง.
ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์และเทคโนโลยีสารสนเทศ
ขั้นตอนการออกแบบ ผังงาน (Flow Chart)
การเขียนโปรแกรมแบบวนซ้ำ: คำสั่ง while คำสั่ง do….while
Linked List (ต่อ) Lecturer : Kritawan Siriboon, Room no. 913
State Table ตารางสถานะ ปรับปรุง 18 เมษายน 2562
2. ประโยคเงื่อนไข ข้อความที่ประกอบด้วย 2 ข้อความที่เชื่อมต่อกันด้วย ถ้า... แล้ว... เรียกข้อความในลักษณะเช่นนี้ว่า ประโยคเงื่อนไข - เรียกข้อความที่ตามหลัง.
บทที่7 ทฤษฎีกราฟเบื้องต้น
การสร้างแบบสอบถาม และ การกำหนดเงื่อนไข.
บทที่ 2 ทฤษฎีบทพีทาโกรัส.
Data Structures and Algorithms 2/2561
Data Structures and Algorithms 2/2561
Data Structures & Algorithms Using Python
การเปลี่ยนแปลงประมาณการทางบัญชี และข้อผิดพลาด
9. GRAPH ALGORITHMS.
2 โครงสร้างข้อมูลแบบสแตก (STACK).
3 โครงสร้างข้อมูลแบบคิว (QUEUE).
Array: One Dimension Programming I 9.
Decision: Single and Double Selection (if and if-else statement)
การวิเคราะห์และออกแบบขั้นตอนวิธี
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 12: เทคนิคการออกแบบขั้นตอนวิธีตอนวิธี Dynamic.
ใบสำเนางานนำเสนอ:

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

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