รายวิชา ง40206 โครงสร้างข้อมูลและขั้นตอนวิธี

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
ระบบเครือข่ายอินเตอร์เน็ต
Advertisements

Another one of Data Structure
โครงสร้างข้อมูลทรีและไบนารีทรี (Tree and Binary Tree)
ทฤษฎีกราฟเบื้องต้น อ.สุรัชน์ อินทสังข์ ภาควิชาหลักสูตรและการสอน
Lists Data Structure LAUKHWAN NGAMPRASIT LAUKHWAN NGAMPRASIT.
Introduction to Probability เอกสารประกอบการเรียนการสอน วิชา ความน่าจะเป็นเบื้องต้น เรื่อง ความน่าจะเป็นเบื้องต้น อ.สุวัฒน์ ศรีโยธี สาขาวิชาคณิตศาสตร์
รายวิชา ง40206 โครงสร้างข้อมูลและขั้นตอนวิธี
ต้นไม้และนิยามที่เกี่ยวข้อง
Stack.
Stack Holidays/seasonal content.
สมชาย ประสิทธิ์จูตระกูล
Data structure & Algorithms
ลักษณะการทำงานของ Stack
การแก้ปัญหาด้วยคอมพิวเตอร์
Matrix Structure In Graph Theory.
กราฟถ่วงน้ำหนัก เสนอต่อ อ.ธรรมนูญ ผุยรอด จัดทำโดย
INC 551 Artificial Intelligence
Image Processing & Computer Vision
คิวQueue Circular Queue.
Asst.Prof. Dr.Surasak Mungsing
Asst.Prof. Dr.Surasak Mungsing
Asst.Prof. Dr.Surasak Mungsing
MAT 231: คณิตศาสตร์ไม่ต่อเนื่อง (4) ความสัมพันธ์ (Relations)
MAT 231: คณิตศาสตร์ไม่ต่อเนื่อง (6) ทรี-ต้นไม้(Trees)
ให้ประหยัดการใช้หน่วยความจำ (space) ด้วยความรวดเร็ว (time)
AUTONOMOUS SYSTEMS (AS)
DATA STRUCTURE IN C กราฟ (Graph).
กราฟความสัมพันธ์ ชั้นมัธยมศึกษาปีที่ 4
โครงสร้างข้อมูลแบบคิว
คิว ลักษณะการทำงานของ Queue การดำเนินการของ Queue การตรวจสอบ Queue
ค32213 คณิตศาสตร์สำหรับคอมพิวเตอร์ 3 โรงเรียนปลวกแดงพิทยาคม
ค31212 คณิตศาสตร์สำหรับ คอมพิวเตอร์ 2
Artificial Intelligence (AI)
โครงสร้างข้อมูลทรีและไบนารีทรี (Tree and Binary Tree)
Dijkstra Shortest Path Algorithm
ลิงค์ลิสต์ (Linked List)
วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)
วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)
Classification Data mining การทำเหมืองข้อมูลแบบจำแนก
โครงสร้างข้อมูลแบบกองซ้อน (Stack)
Shortest-Path Algorithms
Chapter 04 Flowchart ผู้สอน อ.ยืนยง กันทะเนตร
School of Information Communication Technology,
Lecture9 Tree อ. วรวิทย์ วีระพันธุ์ เรียบเรียงโดย อ
โครงสร้างข้อมูล Queues
สื่อกลางการสื่อสาร สื่อกลางแบบมีสาย 2. สื่อกลางแบบไร้สาย.
รูปแบบการเชื่อมโยงเครือข่าย
การค้นในปริภูมิสถานะ
รูปร่างเครือข่ายคอมพิวเตอร์ จัดทำโดย เด็กชาย คณิศร อ้อยกลาง เลขที่ 36 ม.2/5 เสนอ อ.สายฝน เอกกันทา โรงเรียนจักรคำคณาทร จ.ลำพูน.
กราฟเบื้องต้น.
รูปร่างเครือข่ายคอมพิวเตอร์
รูปร่างของเครือข่ายคอมพิวเตอร์
stack #1 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
โครงสร้างข้อมูลแบบ สแตก (stack)
การค้นในปริภูมิสถานะ
กราฟเบื้องต้น.
ค32213 คณิตศาสตร์สำหรับคอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
รูปร่างเครือข่ายคอมพิวเตอร์ จัดทำโดย
ระบบเครือข่ายคอมพิวเตอร์
แบบ Star จะเป็นลักษณะของการต่อ เครือข่ายที่ Work station แต่ละตัวต่อรวมเข้าสู่ ศูนย์กลางสวิตซ์ เพื่อสลับตำแหน่งของเส้นทาง ของข้อมูลใด ๆ ในระบบ ดังนั้นใน.
แบบดาว เป็นลักษณะของการต่อเครือข่ายที่ Work station แต่ละตัวต่อรวมเข้าสู่ ศูนย์กลางสวิตซ์ เพื่อสลับตำแหน่งของเส้นทางของข้อมูลใด ๆ ในระบบ ดังนั้น ใน โทโปโลยี
หน่วยที่ 6 กราฟ (Graphs)
Trees Hierarchical Structures. Outlines Definition of trees Modeling by trees Properties of trees Applications – Binary search trees – Prefix codes –
Graph Lecturer : Kritawan Siriboon, Boontee Kruatrachue Room no. 913
Graph Lecturer : Kritawan Siriboon, Boontee Kruatrachue Room no. 913
Graph Lecturer : Kritawan Siriboon, Boontee Kruatrachue Room no. 913
Graph Lecturer : Kritawan Siriboon, Boontee Kruatrachue Room no. 913
Rewrite by Burin Rujjanapan Updated:
9. GRAPH ALGORITHMS.
การวิเคราะห์และออกแบบขั้นตอนวิธี
ใบสำเนางานนำเสนอ:

รายวิชา ง40206 โครงสร้างข้อมูลและขั้นตอนวิธี โรงเรียนมหิดลวิทยานุสรณ์

Graph

กราฟเป็นโครงสร้างข้อมูลชนิดหนึ่งประกอบด้วย 2 ส่วน คือ เซตของสมาชิกที่เรียกว่าบัพ (node) เซตของเส้นเชื่อม (edge) นำมาใช้แก้ปัญหาในการทำงานหลายด้าน เช่น จำลองเครือข่ายคอมพิวเตอร์เพื่อหาค่าใช้จ่ายที่น้อยที่สุดในการเดินสายสัญญาณ จำลองเส้นทางการเดินทางเพื่อหาระยะทางที่สั้นที่สุด การวางสายโทรศัพท์

วิทยาลัยดุริยางค์ฯ ตึกอินเตอร์ฯ 400 m ถ้าต้องการติดตั้งสายสัญญาณ Fiber optic เพื่อเชื่อมเครือข่ายคอมพิวเตอร์ทั้ง 5 อาคารเข้าด้วยกัน จะต้องเชื่อมต่ออย่างไรจึงจะใช้งบประมาณน้อยที่สุด และใช้งบประมาณเท่าไร (กำหนดให้สาย Fiber optic ราคาเมตรละ 100 บ.) 800 m 350 m 300 m คณะวิทยาศาสตร์ 400 m ตึกอธิการฯ 700 m 800 m สัตว์ทดลอง

A B D C E วิทยาลัยดุริยางค์ฯ ตึกอินเตอร์ฯ 400 400 m 800 m 350 m 300 m คณะวิทยาศาสตร์ 400 m ตึกอธิการฯ 700 m 800 m 400 D C 700 สัตว์ทดลอง 800 E

ไม่ระบุทิศทาง ระบุทิศทาง เชียงใหม่ อยุธยา ลำปาง ปทุมธานี กรุงเทพฯ สุราษฎร์ธานี ภูเก็ต กรุงเทพฯ ชลบุรี เพชรบุรี ปทุมธานี อยุธยา ไม่ระบุทิศทาง ระบุทิศทาง

กราฟไม่ระบุทิศทาง กราฟ G กำหนดให้ กราฟ G เป็นกราฟไม่ระบุทิศทาง B A E G D C F กราฟ G กำหนดให้ กราฟ G เป็นกราฟไม่ระบุทิศทาง ประกอบด้วย เซตของ node {A, B, C, D, E, F, G} และ เซตของ edge { (A,B), (A,D), (A,C), (C,D), (C,F), (E,G), (A,A) }

กราฟระบุทิศทาง กราฟ H กำหนดให้ กราฟ H เป็นกราฟระบุทิศทาง B A D E G C กราฟ H F กำหนดให้ กราฟ H เป็นกราฟระบุทิศทาง ประกอบด้วย เซตของ node {A, B, C, D, E, F, G} และ เซตของ edge {(A,A), (A,B), (A,C), (A,D), (C,D), (F,C), (E,G)}

ระดับขั้นของกราฟ (Degree) กราฟไม่ระบุทิศทาง b c d a f e g กราฟ G ในกราฟ G : deg(a) = 2, deg(b) = deg(c) = deg(f) = 4, deg(d) = 1, deg(e) = 3 และ deg(g) = 0

ระดับขั้นของกราฟ (Degree) กราฟไม่ระบุทิศทาง b c d a f e g กราฟ X ในกราฟ X : deg(a) = 2, deg(b) = deg(c) = 4, deg(d) = deg(f) = deg(e) = 3 และ deg(g) = 1

ระดับขั้นของกราฟ (Degree) กราฟไม่ระบุทิศทาง b c d a f e g กราฟ Y ในกราฟ Y : deg(a) = 4 deg(d) = 2 deg(g) = 1 deg(b) = 4 deg(e) = 3 deg(c) = 2 deg(f) = 4 จงหา degree ของ node แต่ละ node ในกราฟ Y

ระดับขั้นของกราฟ (Degree) กราฟระบุทิศทาง ระดับขั้นใน deg-(v) คือจำนวนของเส้นเชื่อมที่ชี้เข้าหา node v ระดับขั้นนอก deg+(v) คือจำนวนของเส้นเชื่อมที่ออกจาก node v กราฟ G a b c e d f ในกราฟ G : deg-(a) = 2 deg-(b) = 2 deg-(c) = 3 deg-(d) = 2 deg-(e) = 2 deg-(f) = 0 deg+(a) = 3 deg+(b) = 1 deg+(c) = 2 deg+(d) = 2 deg+(e) = 3 deg+(f) = 0 ดังนั้น : deg(a) = 5 deg(b) = 3 deg(c) = 5 deg(d) = 4 deg(e) = 5 deg(f) = 0

ระดับขั้นของกราฟ (Degree) กราฟระบุทิศทาง deg-(v) คือจำนวนของเส้นเชื่อมที่ชี้เข้าหา node v deg+(v) คือจำนวนของเส้นเชื่อมที่ออกจาก node v a b c e d f กราฟ G จงหาระดับขั้น (degree) ของ node แต่ละ node ในกราฟ G (หาระดับขั้นในและนอกด้วย) ในกราฟ G : deg-(a) = 3 deg-(b) = 3 deg-(c) = 1 deg-(d) = 1 deg-(e) = 0 deg-(f) = 2 deg+(a) = 2 deg+(b) = 1 deg+(c) = 1 deg+(d) = 1 deg+(e) = 3 deg+(f) = 2 ดังนั้น : deg(a) = 5 deg(b) = 4 deg(c) = 2 deg(d) = 2 deg(e) = 3 deg(f) = 4

การแทนกราฟด้วย Adjacency Matrix 6 2 3 กราฟ H 4 5 1 1 2 3 4 5 6 1 2 3 4 5 6 0 1 0 0 0 0 1 1 1 0 0 0 0 1 0 1 1 1 0 0 1 0 0 0 เมทริกซ์ประชิด A =

X Y W Z กราฟG เมทริกซ์ประชิด A = X Y Z W X Y 0 0 0 1 Z 1 0 1 1 W 0 0 0 1 1 0 1 1 1 0 0 1 0 0 1 0 เมทริกซ์ประชิด A = กำหนดให้ v1=X, v2=Y, v3=Z, v4=W

X Y W Z กราฟG A2 = A3 = เมทริกซ์ประชิด A = A4 = 0 0 1 0 1 0 1 2 0 0 1 0 1 0 1 2 0 0 1 1 1 0 0 1 X Y A2 = W Z 1 0 0 1 1 0 2 2 1 0 1 1 0 0 1 1 A3 = X Y Z W X Y Z W 0 0 0 1 1 0 1 1 1 0 0 1 0 0 1 0 เมทริกซ์ประชิด A = 0 0 1 1 2 0 2 3 1 0 1 2 1 0 1 1 A4 = กำหนดให้ v1=X, v2=Y, v3=Z, v4=W

X Y W Z กราฟG วิถีความยาว 2 จาก Y ถึง W มี 2 วิถี ดังนี้ A2 = Y-X-W Y-Z-W Y-X-W วิถีความยาว 2 จาก Y ถึง W มี 2 วิถี ดังนี้ กราฟG 0 0 1 0 1 0 1 2 0 0 1 1 1 0 0 1 X Y A2 = W Z 1 0 0 1 1 0 2 2 1 0 1 1 0 0 1 1 A3 = X Y Z W X Y Z W 0 0 0 1 1 0 1 1 1 0 0 1 0 0 1 0 เมทริกซ์ประชิด A = 0 0 1 1 2 0 2 3 1 0 1 2 1 0 1 1 A4 = กำหนดให้ v1=X, v2=Y, v3=Z, v4=W

X Y W Z กราฟG วิถีความยาว 3 จาก Z ถึง Z มี 1 วิถี ดังนี้ A2 = Z-X-W-Z มี 1 วิถี ดังนี้ 0 0 1 0 1 0 1 2 0 0 1 1 1 0 0 1 X Y A2 = W Z 1 0 0 1 1 0 2 2 1 0 1 1 0 0 1 1 A3 = X Y Z W X Y Z W 0 0 0 1 1 0 1 1 1 0 0 1 0 0 1 0 เมทริกซ์ประชิด A = 0 0 1 1 2 0 2 3 1 0 1 2 1 0 1 1 A4 = กำหนดให้ v1=X, v2=Y, v3=Z, v4=W

การแทนกราฟด้วย Adjacency List

การแทนกราฟด้วย Adjacency List

การท่องเข้าไปในกราฟ Traverse Graph Depth-First Traversal A เป็นการท่องเข้าไปในกราฟ โดยจะโปรเซสในทุกๆโหนดในแนวดิ่งตามการสืบทองของโหนดนั้นก่อน แล้วจึงค่อยเคลื่อนไปยังโหนดประชิดที่อยู่ข้างเคียงต่อไป C B D E F G H I Depth-first traversal : A – B – E – F – C – D – G – H - I

การท่องเข้าไปในกราฟ Traverse Graph 1 Depth-First Traversal 6 3 2 Depth-first traversal : A – X – H – P – E – Y – M – J - G X H Y 5 E 8 9 M J G P 7 4 A X H G P E G E G Y M G M G J G G 1 2 3 4 5 6 7 8 9 Stack contents

การท่องเข้าไปในกราฟ Traverse Graph Depth-First Traversal Push โหนดแรกลงใน stack เมื่ออยู่ในลูป จะดำเนินการ Pop stack เพื่อโปสเซสโหนดนั้น จากนั้น push โหนดประชิดทุกตัวลงใน stack ทำตามข้อ 2 จนกระทั่ง stack ว่าง

การท่องเข้าไปในกราฟ Traverse Graph Breadth-First Traversal A เป็นการท่องเข้าไปในกราฟแบบแนวกว้าง โดยจะทำการโปรเซสโหนดประชิดทุกตัวก่อนที่จะลงสู่ระดับถัดไป C B D E F G H I Breadth-first traversal : A – B – C – D – E – F – G – H - I

การท่องเข้าไปในกราฟ Traverse Graph 1 Breadth-First Traversal 4 8 2 Breadth-first traversal : A – X – G – H – P – E – M – Y - J X H Y 6 E 9 5 3 M J G P 7 A X H G P H E P E Y M J Y J 1 2 3 4 5 6 7 8 9 Queue contents

การท่องเข้าไปในกราฟ Traverse Graph Breadth-First Traversal Enqueue โหนดแรก ลงในคิว เมื่ออยู่ในลูป จะทำการ Dequeue คิวนั้นออกไปและทำการโปสเซสส่วนหน้าของคิว หลังจากที่ได้โปรเซสโหนดนั้นแล้ว ก็จะดำเนินการนำโหนดประชิดตัวถัดไปมาไว้ในคิว ทำซ้ำจนกระทั่งคิวว่าง

Shortest Path Algorithms 2 v1 v2 10 4 1 3 2 2 v3 v4 v5 8 4 5 6 1 v6 v7 The shortest weighted path from v1 to v6 has a cost of 6 and goes from v1 to v4 to v7 to v6. The shortest unweighted path between these vertices is 2.

Unweighted Shortest Path: Dijkstra’s Algorithm v1 v2 We are only interested in the number of edges contained on the path, so there are no weight on the edges. The strategy for searching a graph is known as breadth-first search. The vertices closest to the start are evaluated first, and the most distant vertices are evaluated last. v3 v4 v5 v6 v7

Unweighted Shortest Path: Assume that the starting vertex is v3 v2 v3 v5 v4 v6 v1 v7 v known dv pv V1  V2 V3 V4 V5 V6 v7 Initial configuration

Unweighted Shortest Path: v2 v3 v5 v4 v6 v1 v7 Unweighted Shortest Path: v Initial state known dv pv V1  V2 V3 V4 V5 V6 V7 Q: V3 dequeued known dv pv 1 V3  V1, V6 V1 dequeued known dv pv 1 V3 2 V1  V6, V2, V4 V6 dequeued known dv pv 1 V3 2 V1  V2, V4

Unweighted Shortest Path: v2 v3 v5 v4 v6 v1 v7 Unweighted Shortest Path: v V2 dequeued known dv pv V1 1 V3 V2 2 V4 V5 3 V6 V7  Q: V4, V5 V4 dequeued known dv pv 1 V3 2 V1 3 V2 V4 V5, V7 V5 dequeued known dv pv 1 V3 2 V1 3 V2 V4 V7 V7 dequeued known dv pv 1 V3 2 V1 3 V2 V4 empty

Unweighted Shortest Path: v2 v3 v5 v4 v6 v1 v7 v1 v2 v3 v4 v5 v6 v7

Weighted Shortest Path: Dijkstra’s Algorithm 2 v1 v2 This thirty-year-old solution is an example of a greedy algorithm. Greedy algorithms generally solve a problem in stages by doing what appears to be the best thing at each stage. 10 4 1 3 2 2 v3 v4 v5 8 4 5 6 1 v6 v7

Weighted Shortest Path: Dijkstra’s Algorithm v2 v3 v5 v4 v6 v1 v7 2 1 3 10 4 6 8 5 Weighted Shortest Path: Dijkstra’s Algorithm v known dv pv V1 V2  V3 V4 V5 V6 v7 v known dv pv V1 1 V2 2 V3  V4 V5 V6 v7 v known dv pv V1 1 V2 2 V3 3 V4 V5 V6 9 v7 5 Initial configuration After v1 is declared known After v4 is declared known

Weighted Shortest Path: Dijkstra’s Algorithm v2 v3 v5 v4 v6 v1 v7 2 1 3 10 4 6 8 5 Weighted Shortest Path: Dijkstra’s Algorithm After v5&v3 are declared known v known dv pv V1 1 V2 2 V3 3 V4 V5 V6 9 v7 5 v known dv pv V1 1 V2 2 V3 3 V4 V5 V6 8 v7 5 v known dv pv V1 1 V2 2 V3 3 V4 V5 V6 6 V7 v7 5 After v2 is declared known After v7 is declared known