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

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

การวิเคราะห์และออกแบบขั้นตอนวิธี

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


งานนำเสนอเรื่อง: "การวิเคราะห์และออกแบบขั้นตอนวิธี"— ใบสำเนางานนำเสนอ:

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, v1 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: 53 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 การวิเคราะห์และออกแบบขั้นตอนวิธี


ดาวน์โหลด ppt การวิเคราะห์และออกแบบขั้นตอนวิธี

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


Ads by Google