300 likes | 500 Views
Shortest-Path Algorithms. BY นาย จิรวัฒน์ กรัณย์วิทยาการ ID 474487 ITE 209 Sec 01. Shortest-Path Algorithms. Shortest-Path Algorithms ใช้ directed graph ที่มี weighted Cost ของ path คือ cost ของแต่ละ edge path รวมกัน → “weighted path length”
E N D
Shortest-Path Algorithms BY นาย จิรวัฒน์ กรัณย์วิทยาการ ID 474487 ITE 209 Sec 01
Shortest-Path Algorithms • Shortest-Path Algorithms • ใช้ directed graph ที่มี weighted • Cost ของ path คือ cost ของแต่ละ edge path รวมกัน → “weighted path length” • ถ้า unweighted graph,unweighted path length = N-1 • Shortest path problem คือการหา shortest weighted path จากจุดเริ่มต้น(s)ไปยังทุกๆ node ใน graph • Path ที่มี negative cost จะหา shortest path ได้ยุ่งยาก
Shortest-Path Algorithms • 1) unweighted shortest paths • แต่ละ path จะมีค่า = 1 • Breadth-first search AND dept-first search strategy ใช้คำนวณหา shortest path
Shortest-Path Algorithms • 2) Weighted shortest-paths (Djikstra’s algorithm) • Djikstra’s algorithm ใช้หลักการคล้ายกับ breadth-first search strategy จัดเป็นจำพวก greedy algorithm • Shortest path อาจไม่ใช่เส้นทางที่สั้นที่สุด เพราะต้องดู weight ประกอบด้วยเป็นหลัก • Shortest path เป็นเส้นทางที่มีผลรวม weight น้อยที่สุด
Shortest-Path Algorithms • Graph with Negative edge costs • ตัวนี้ไม่ค่อยการใช้งานมากนัก เพราะคำนวณได้ยากมาก • Weighted มีค่าติดลบได้ ทำให้การหา shortest path ยุ่งยากมากขึ้น
Shortest-Path Algorithms • Shortest path in acyclic graph & Critical path analysis • กราฟที่เป็น Acyclic graph สามารถนำมาประยุกต์ใช้หา critical path analysis ได้โดยสามารถแสดงให้เห็นได้จาก activity node graph ดังรูป C(3) A(3) F(3) H(1) D(2) Finish Start B(2) G(2) E(1) K(4)
Shortest-Path Algorithms • แต่ละโหนดจะแทนถึง activity และเวลาที่ต้องใช้ และedge ที่เชื่อมระหว่างโหนดจะแสดงถึงลำดับว่า activity ไหนที่ต้องทำก่อนหน้าหลัง กราฟในลักษณะนี้ถูกนำไปใช้อย่างแพร่หลายในการกำหนดตารางการดำเนินงาน time schedule ของงานพวกก่อสร้าง ซึ่งมักใช้เป็นตัวช่วยตอบคำถามหลักๆว่า โครงการนี้จะใช้เวลาทำเสร็จเร็วสุดกี่วัน และช่วยตอบคำถามที่ว่า activity ไหนบ้างที่สามารถทำล่าช้ากว่ากำหนดได้และช้าได้กี่วัน โดยไม่ส่งผลให้ภาพรวมของโครงการช้าไป
Shortest-Path Algorithms • โหนดไหนมี input มากกว่า 1 จะต้องใช้ dummy node มาช่วย ซึ่งจะเห็นได้จากโหนด 6,8,11 เป็นต้น ขั้นที่ 1 D/1 5 9 3 B/1 0 0 0 H/1 A/2 E/2 G/2 K/1 0 1 2 6 6 8 8 11 11 0 C/2 I/1 0 J/2 4 7 10 F/4
Shortest-Path Algorithms • การหาเวลาที่เร็วที่สุดที่โครงการจะทำเสร็จ(earliest) สามารถหาได้จากการหา path ที่ยาวที่สุดของกราฟ โดยจะเลือกเส้นทางจากค่าที่มากที่สุดดังรูป ขั้นที่ 1 D/1 5 9 3 H/1 B/1 0 0 0 0 2 A/2 E/2 G/2 K/1 0 1 2 6 6 8 8 11 11 0 C/2 I/1 0 J/2 4 7 10 F/4
Shortest-Path Algorithms • Earliest ขั้นที่ 2 3 D/1 5 9 3 H/1 B/1 0 0 0 0 A/2 2 E/2 G/2 K/1 0 1 2 6 6 8 8 11 11 0 C/2 4 I/1 0 J/2 4 7 10 F/4
Shortest-Path Algorithms • Earliest ขั้นที่ 3 3 D/1 5 9 3 H/1 B/1 0 0 0 0 A/2 2 4 E/2 G/2 K/1 0 1 2 6 6 8 8 11 11 0 C/2 4 I/1 0 J/2 4 7 10 F/4
Shortest-Path Algorithms • Earliest ขั้นที่ 4 3 4 D/1 5 9 3 H/1 B/1 0 0 0 0 2 4 E/2 6 G/2 K/1 0 A/2 1 2 6 6 8 8 11 11 0 C/2 8 4 I/1 0 J/2 4 7 10 F/4
Shortest-Path Algorithms • Earliest ขั้นที่ 5 3 4 D/1 5 9 3 H/1 B/1 0 0 0 0 8 2 4 6 E/2 G/2 K/1 0 A/2 1 2 6 6 8 8 11 11 0 C/2 8 4 I/1 0 J/2 4 7 10 F/4
Shortest-Path Algorithms • Earliest ขั้นที่ 6 3 4 D/1 5 9 3 H/1 B/1 0 0 0 0 8 10 2 4 6 E/2 G/2 K/1 0 A/2 1 2 6 6 8 8 11 11 0 C/2 8 4 I/1 0 J/2 4 7 10 F/4
Shortest-Path Algorithms • Earliest ขั้นที่ 7 3 4 11 D/1 5 9 3 H/1 B/1 0 0 0 0 8 10 2 4 6 E/2 G/2 K/1 0 A/2 1 2 6 6 8 8 11 11 0 C/2 8 11 4 I/1 0 J/2 4 7 10 F/4
Shortest-Path Algorithms • Earliest จากรูปให้สังเกตตัวเลขที่อยู่บนวงกลม จะพบว่าเวลาที่เร็วที่สุดที่จะทำโครงการนี้ได้เสร็จคือ 14 วัน ตามเส้นทาง 1-2-4-7-8-8-10-11-11 ขั้นที่ 8 3 4 11 D/1 5 9 3 H/1 B/1 0 0 0 0 8 10 13 2 4 6 E/2 G/2 K/1 0 A/2 1 2 6 6 8 8 11 11 0 C/2 8 11 4 I/1 0 J/2 4 7 10 F/4
Shortest-Path Algorithms • Earliest จากรูปให้สังเกตตัวเลขที่อยู่บนวงกลม จะพบว่าเวลาที่เร็วที่สุดที่จะทำโครงการนี้ได้เสร็จคือ 14 วัน ตามเส้นทาง 1-2-4-7-8-8-10-11-11 ขั้นที่ 8 3 4 11 D/1 5 9 3 H/1 B/1 0 0 0 0 8 10 13 2 4 6 14 E/2 G/2 K/1 0 A/2 1 2 6 6 8 8 11 11 0 C/2 8 11 4 I/1 0 J/2 4 7 10 F/4
Shortest-Path Algorithms • สำหรับการตอบคำถามว่า activity ไหนพอที่จะล่าช้าได้บ้างโดยไม่ทำให้ทั้งโครงการล่าช้า เราจะต้องเริ่มจากการหา latest completion times ให้ได้ก่อนโดยการทำย้อนกลับจากจุด finish โดยจะเลือกเส้นทางจากค่าที่น้อยที่สุดแทนดังรูป D/1 5 9 3 H/1 B/1 0 0 0 A/2 E/2 G/2 K/1 0 1 2 6 6 8 8 11 11 13 14 0 C/2 I/1 0 J/2 4 7 10 F/4
Shortest-Path Algorithms • Latest ขั้นที่ 1 D/1 5 9 3 H/1 B/1 0 0 0 13 A/2 E/2 G/2 K/1 0 1 2 6 6 8 8 11 11 13 14 0 C/2 I/1 0 J/2 4 7 10 F/4 11
Shortest-Path Algorithms • Latest ขั้นที่ 2 D/1 5 9 3 H/1 B/1 0 0 0 13 A/2 E/2 G/2 0 K/1 1 2 6 6 8 8 11 11 10 13 14 0 C/2 I/1 0 J/2 4 7 10 F/4 11
Shortest-Path Algorithms • Latest ขั้นที่ 3 D/1 5 9 3 H/1 B/1 0 0 0 13 A/2 E/2 G/2 K/1 0 1 2 6 6 8 8 11 11 8 10 13 14 I/1 0 C/2 0 J/2 4 7 10 F/4 11
Shortest-Path Algorithms • Latest ขั้นที่ 4 D/1 5 9 3 H/1 B/1 0 0 0 8 13 A/2 E/2 G/2 K/1 0 1 2 6 6 8 8 11 11 8 10 13 8 14 I/1 0 C/2 0 J/2 4 7 10 F/4 8 11
Shortest-Path Algorithms • Latest ขั้นที่ 5 D/1 5 9 3 H/1 B/1 0 0 7 0 8 13 A/2 E/2 G/2 K/1 0 1 2 6 6 8 8 11 11 8 10 13 6 8 14 I/1 0 C/2 0 J/2 4 7 10 F/4 8 11 4
Shortest-Path Algorithms • Latest ขั้นที่ 6 D/1 5 9 3 H/1 B/1 0 0 7 0 8 13 A/2 E/2 G/2 K/1 0 1 2 6 6 8 8 11 11 8 10 13 6 8 14 I/1 0 C/2 0 J/2 4 7 10 F/4 8 11 4
Shortest-Path Algorithms • Latest ขั้นที่ 7 D/1 5 9 3 H/1 B/1 0 0 7 0 8 13 A/2 E/2 0 G/2 K/1 1 2 6 6 8 8 11 11 8 10 13 2 6 8 14 I/1 0 C/2 0 J/2 4 7 10 F/4 8 11 4
Shortest-Path Algorithms • Latest ขั้นที่ 8 D/1 5 9 3 H/1 B/1 0 0 7 0 8 13 E/2 0 G/2 K/1 A/2 1 2 6 6 8 8 11 11 8 10 13 2 6 8 14 0 I/1 0 C/2 0 J/2 4 7 10 F/4 8 11 4
Shortest-Path Algorithms • จากนั้นให้เขียนตัวเลขของทั้งที่หาได้จาก Earliest completion time และ Latest completion times เข้าด้วยกันแล้วเมื่อเอาค่า Latest completion ลบด้วยค่า Earliest completion • ก็จะได้ค่า slack time ที่ activity นั้นจะล่าช้าได้ แต่ถ้าลบแล้วได้ 0 แสดงว่า activity นั้นจะล่าช้าไม่ได้ หากไม่จะส่งผลให้ทั้งโครงการล่าช้า และเส้นทางที่มีค่า slack time=0 ตลอดเส้นทาง ก็คือ critical path นั่นเอง ดังรูป
Shortest-Path Algorithms Critical Path 3 4 11 D/1 5 9 3 H/1 B/1 0 0 7 0 8 13 0 8 10 13 2 4 6 14 G/2 K/1 E/2 0 A/2 1 2 6 6 8 8 11 11 0 8 10 13 2 6 8 14 I/1 0 C/2 8 11 4 0 J/2 4 7 10 F/4 8 11 4
Shortest-Path Algorithms • ตารางแสดงค่าแต่ละ activity