ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
1
การวิเคราะห์และออกแบบขั้นตอนวิธี
CSE 221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 09: การประยุกต์ใช้กราฟกับปัญหา Shortest Path อาจารย์ผู้สอน: ดร. สุรศักดิ์ มังสิงห์ URL: Office Hour: 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
2
CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
Sparse Graphs In a sparse graph the number of edges is significantly less than |V| squared. 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
3
Dense Graphs In a dense graph most of the vertices are connected by edges. 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
4
Adjacency List Representation
In order to run algorithms on graphs we can use one of two representations of them. The first is an adjacency list. Here each vertex has an entry in an array that contains a linked list to the adjacent vertices. 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
5
Adjacency-Matrix Representation
Another method of storing the information about the graph is called an adjacency-matrix. Here a V by V matrix is formed with entries 0 or 1. 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
6
CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
Directed Graphs A directed graph the edge (u,v) is distinct from the edge (v,u). Here is an example: 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
7
Matrix Representation
10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
8
CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
Weighted Graphs A weighted graph has a real value associated with each edge as in this graph: 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
9
Matrix Representation
10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
10
Single Source Shortest Path
กำหนด (un)weighted, directed graph G = {V, E} มาให้ซึ่งแต่ละ edge มีค่า cost (หรือ weight) เป็นจำนวนบวก Problem: จงหาค่ารวมของ cost ของเส้นทางทีสั้นที่สุดจาก vertex ต้นทางไปยัง vertex ปลายทางอื่นๆ ความยาวของเส้นทางคือคารวมของ cost ของedge ต่างๆบนเส้นทางนั้น ทำไมไม่กำหนดเส้นทางใดเส้นทางหนึ่งไปยังจุดหมายปลายทาง? Application: G คือแผนที่เส้นทางบินของสายการบินซึ่งจะต้องหาเส้นทางบินจากเมืองที่กำหนดให้ไปยังอีกเมืองอื่นๆโดยใช้เวลาเดินทางน้อยที่สุด 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
11
CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
Dijkstra’s Algorithm รักษา set S ของ vertices ซึ่งรู้ค่าของเส้นทางที่สั้นทีสุดจากต้นทางแล้ว ตอนเริ่มต้น S มีเพียง vertex ต้นทาง เท่านั้น ในแต่ละ step, เราเพิ่ม vertex w ที่เหลือซึ่งมีเส้นทางจาก vertex ต้นทางสั้นทีสุดเข้าไปใน S สมมติว่าทุก edge มี cost เป็นบวก เราสามารถหาเส้นทางที่สั้นที่สุดจากต้นทางไปยัง vertex อื่นโดยผ่านเส้นทางใน S (special path) เท่านั้นได้เสมอ ในทุกๆ step เราใช้ array บันทึกค่าระยะทางที่สั้นที่สุดของ special path ไปยังแต่ละ vertex เสร็จสิ้นการคำนวณเมื่อใน S ครอบคลุมทุก vertex (all paths are special) 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
12
CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
Algorithm Directed graph G={V, E} V={1, 2, …, n}, Vertex 1 is the source Cost-adjacency matrix A[0:n][0:n] Array D[1:n]; at each step D[i] contains the length of the current shortest special path to vertex i Initially D[i] = A[s][i] Array P[1:n] of vertices, such that P[v] contains the vertex immediately before v in the shortest path Initially P[v]=1, v1 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
13
CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
Explanations How do we compute D[v]? At each step: D[v] := min(D[v], D[w]+A[w][v]) How do we update P? After computing D[v], if D[w]+A[w][v]< D[v] then P[v] :=w 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
14
CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
Dijkstra: Example G 1 10 100 30 2 5 10 50 60 3 4 20 Shortest path from 1 to 5? In reverse direction: 53 4 1 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
15
CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
An Example inf inf a 7 d 5 2 2 inf 4 5 b f 1 s 3 inf 1 7 4 e c 4 inf inf 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
16
CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
inf a 7 d 5 2 2 5 4 5 b f 1 s 3 inf 1 7 4 e c 4 inf 4 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
17
CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
9 a 7 d 2 5 2 4 4 5 b f 1 s 3 inf 1 7 4 e c 4 inf 4 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
18
CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
8 a 7 d 2 5 2 4 4 5 b f 1 s 3 inf 1 7 4 e c 4 7 4 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
19
CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
8 a 7 d 2 5 2 4 4 5 b f 1 s 3 inf 1 7 4 e c 4 7 4 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
20
CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
8 a 7 d 2 5 2 4 4 5 b f 1 s 3 14 1 7 4 e c 4 7 4 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
21
CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
8 a 7 d 2 5 2 4 4 5 b f 1 s 3 13 1 7 4 e c 4 7 4 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
22
CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
8 a 7 d 2 5 2 4 4 5 b f 1 s 3 13 1 7 4 e c 4 7 4 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
23
CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
Shortest Path Tree The unique simple path from s to v in the tree is a shortest path from s to v. 2 8 a d 2 5 2 4 4 b f s 3 13 4 e c 7 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี 4
24
CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
for each v ÎV, k [v ] ¬ infinity; n[v] ¬ (v,v); k[ source ] ¬ 0; Build a heap for all values in the array k. S¬ {}, T ¬ {}. Repeat Find the vertex v with minimum value in heap using extract_min. Insert v into S. Insert n[v] into T For each u such that (v,u)Î E, if k[v] plus the weight of (v,u) is less than k[u], then reduce k[u] to k[v] + weight_of ( (v,u) ), and n[u] ¬ (v , u). end of for-loop Until | B | == | V |. 4 23 ∞ 23 3 6 14 s 1 1 8 ∞ 10 9 13 2 ∞ 2 5 ∞ 12 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
25
CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
for each v ÎV, k [v ] ¬ infinity; n[v] ¬ (v,v); k[ source ] ¬ 0; Build a heap for all values in the array k. S¬ {}, T ¬ {}. Repeat Find the vertex v with minimum value in heap using extract_min. Insert v into S. Insert n[v] into T For each u such that (v,u)Î E, if k[v] plus the weight of (v,u) is less than k[u], then reduce k[u] to k[v] + weight_of ( (v,u) ), and n[u] ¬ (v , u). end of for-loop Until | B | == | V |. 4 23 ∞ 23 3 6 14 s 1 1 8 ∞ 10 9 13 2 ∞ 2 5 ∞ 12 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
26
CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
for each v ÎV, k [v ] ¬ infinity; n[v] ¬ (v,v); k[ source ] ¬ 0; Build a heap for all values in the array k. S¬ {}, T ¬ {}. Repeat Find the vertex v with minimum value in heap using extract_min. Insert v into S. Insert n[v] into T For each u such that (v,u)Î E, if k[v] plus the weight of (v,u) is less than k[u], then reduce k[u] to k[v] + weight_of ( (v,u) ), and n[u] ¬ (v , u). end of for-loop Until | B | == | V |. 4 23 ∞ 23 3 6 14 s 1 1 8 9 10 9 13 2 ∞ 2 5 14 12 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
27
CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
for each v ÎV, k [v ] ¬ infinity; n[v] ¬ (v,v); k[ source ] ¬ 0; Build a heap for all values in the array k. S¬ {}, T ¬ {}. Repeat Find the vertex v with minimum value in heap using extract_min. Insert v into S. Insert n[v] into T For each u such that (v,u)Î E, if k[v] plus the weight of (v,u) is less than k[u], then reduce k[u] to k[v] + weight_of ( (v,u) ), and n[u] ¬ (v , u). end of for-loop Until | B | == | V |. 4 23 ∞ 23 3 6 14 s 1 1 8 9 10 9 13 2 ∞ 2 5 14 12 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
28
CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
for each v ÎV, k [v ] ¬ infinity; n[v] ¬ (v,v); k[ source ] ¬ 0; Build a heap for all values in the array k. S¬ {}, T ¬ {}. Repeat Find the vertex v with minimum value in heap using extract_min. Insert v into S. Insert n[v] into T For each u such that (v,u)Î E, if k[v] plus the weight of (v,u) is less than k[u], then reduce k[u] to k[v] + weight_of ( (v,u) ), and n[u] ¬ (v , u). end of for-loop Until | B | == | V |. 4 23 ∞ 23 3 6 14 s 1 1 8 9 10 9 13 2 ∞ 2 5 7 12 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
29
CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
for each v ÎV, k [v ] ¬ infinity; n[v] ¬ (v,v); k[ source ] ¬ 0; Build a heap for all values in the array k. S¬ {}, T ¬ {}. Repeat Find the vertex v with minimum value in heap using extract_min. Insert v into S. Insert n[v] into T For each u such that (v,u)Î E, if k[v] plus the weight of (v,u) is less than k[u], then reduce k[u] to k[v] + weight_of ( (v,u) ), and n[u] ¬ (v , u). end of for-loop Until | B | == | V |. 4 23 ∞ 23 3 6 14 s 1 1 8 9 10 9 13 2 ∞ 2 5 7 12 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
30
CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
for each v ÎV, k [v ] ¬ infinity; n[v] ¬ (v,v); k[ source ] ¬ 0; Build a heap for all values in the array k. S¬ {}, T ¬ {}. Repeat Find the vertex v with minimum value in heap using extract_min. Insert v into S. Insert n[v] into T For each u such that (v,u)Î E, if k[v] plus the weight of (v,u) is less than k[u], then reduce k[u] to k[v] + weight_of ( (v,u) ), and n[u] ¬ (v , u). end of for-loop Until | B | == | V |. 4 23 ∞ 23 3 6 14 s 1 1 8 9 10 9 13 2 ∞ 2 5 7 12 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
31
CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
for each v ÎV, k [v ] ¬ infinity; n[v] ¬ (v,v); k[ source ] ¬ 0; Build a heap for all values in the array k. S¬ {}, T ¬ {}. Repeat Find the vertex v with minimum value in heap using extract_min. Insert v into S. Insert n[v] into T For each u such that (v,u)Î E, if k[v] plus the weight of (v,u) is less than k[u], then reduce k[u] to k[v] + weight_of ( (v,u) ), and n[u] ¬ (v , u). end of for-loop Until | B | == | V |. 4 23 15 23 3 6 14 s 1 1 8 9 10 9 13 2 18 2 5 7 12 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
32
CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
for each v ÎV, k [v ] ¬ infinity; n[v] ¬ (v,v); k[ source ] ¬ 0; Build a heap for all values in the array k. S¬ {}, T ¬ {}. Repeat Find the vertex v with minimum value in heap using extract_min. Insert v into S. Insert n[v] into T For each u such that (v,u)Î E, if k[v] plus the weight of (v,u) is less than k[u], then reduce k[u] to k[v] + weight_of ( (v,u) ), and n[u] ¬ (v , u). end of for-loop Until | B | == | V |. 4 23 15 23 3 6 14 s 1 1 8 9 10 9 13 2 18 2 5 7 12 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
33
CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
for each v ÎV, k [v ] ¬ infinity; n[v] ¬ (v,v); k[ source ] ¬ 0; Build a heap for all values in the array k. S¬ {}, T ¬ {}. Repeat Find the vertex v with minimum value in heap using extract_min. Insert v into S. Insert n[v] into T For each u such that (v,u)Î E, if k[v] plus the weight of (v,u) is less than k[u], then reduce k[u] to k[v] + weight_of ( (v,u) ), and n[u] ¬ (v , u). end of for-loop Until | B | == | V |. 4 23 15 23 3 6 14 s 1 1 8 9 10 9 13 2 18 2 5 7 12 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
34
CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
for each v ÎV, k [v ] ¬ infinity; n[v] ¬ (v,v); k[ source ] ¬ 0; Build a heap for all values in the array k. S¬ {}, T ¬ {}. Repeat Find the vertex v with minimum value in heap using extract_min. Insert v into S. Insert n[v] into T For each u such that (v,u)Î E, if k[v] plus the weight of (v,u) is less than k[u], then reduce k[u] to k[v] + weight_of ( (v,u) ), and n[u] ¬ (v , u). end of for-loop Until | B | == | V |. 4 23 15 23 3 6 14 s 1 1 8 9 10 9 13 2 18 2 5 7 12 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
35
CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
for each v ÎV, k [v ] ¬ infinity; n[v] ¬ (v,v); k[ source ] ¬ 0; Build a heap for all values in the array k. S¬ {}, T ¬ {}. Repeat Find the vertex v with minimum value in heap using extract_min. Insert v into S. Insert n[v] into T For each u such that (v,u)Î E, if k[v] plus the weight of (v,u) is less than k[u], then reduce k[u] to k[v] + weight_of ( (v,u) ), and n[u] ¬ (v , u). end of for-loop Until | B | == | V |. 4 21 15 23 3 6 14 s 1 1 8 9 10 9 13 2 18 2 5 7 12 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
36
CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
for each v ÎV, k [v ] ¬ infinity; n[v] ¬ (v,v); k[ source ] ¬ 0; Build a heap for all values in the array k. S¬ {}, T ¬ {}. Repeat Find the vertex v with minimum value in heap using extract_min. Insert v into S. Insert n[v] into T For each u such that (v,u)Î E, if k[v] plus the weight of (v,u) is less than k[u], then reduce k[u] to k[v] + weight_of ( (v,u) ), and n[u] ¬ (v , u). end of for-loop Until | B | == | V |. 4 21 15 23 3 6 14 s 1 1 8 9 10 9 13 2 18 2 5 7 12 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
37
CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
Minimum Spanning Tree 1 4 2 5 6 10 3 7 8 v1 v2 v3 v4 v5 v6 v7 Prim’s Algorithm (1) (2) 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
38
CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
Minimum Spanning Tree 1 4 2 5 6 10 3 7 8 v1 v2 v3 v4 v5 v6 v7 Prim’s Algorithm (3) (4) 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
39
CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
Minimum Spanning Tree 1 4 2 5 6 10 3 7 8 v1 v2 v3 v4 v5 v6 v7 Prim’s Algorithm (5) 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
40
CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
4 2 5 6 10 3 7 8 v1 v2 v3 v4 v5 v6 v7 Prim’s Algorithm (1) (2) (3) (4) (5) (6) 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
41
CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
Kruskal’s Algorithm 1 4 2 5 6 10 3 7 8 v1 v2 v3 v4 v5 v6 v7 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
42
CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
4 2 5 6 10 3 7 8 v1 v2 v3 v4 v5 v6 v7 Kruskal’s Algorithm (2) (3) (1) (4) (6) (5) 10/19/2019 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.