5. การแทนที่กราฟ
การแทนที่กราฟ
การแทนที่กราฟ การท่ องไปในกราฟ (Graph traversal)
• การท่ องไปในกราฟ (graph traversal) คือ กระบวนการเข้าไป
เยือนโหนดในกราฟ โดยมีหลักในการทํางานคือ แต่ละโหนดจะถูก
เยือนเพียงครั้งเดียว สําหรับการท่องไปในทรี เพื่อเยือนแต่ละโหนดนั้น
จะมเสนทางเดยว แตในกราฟระหวางโหนดอาจจะมหลายเสนทาง
จะมีเส้นทางเดียว แต่ในกราฟระหว่างโหนดอาจจะมีหลายเส้นทาง
ดังนั้นเพือป้ องกันการท่ องไปในเส้ นทางทีซํ้าเดิมจึงจําเป็ นต้ องทํา
่ ่
เครื่องหมายมาร์ คบิตบริเวณทีได้ เยือนเสร็จเรียบร้ อยแล้วเพื่อไม่ให้เข้า
่
ไปเยือนอีก สําหรับเทคนิคการท่องไปในกราฟมี 2 แบบดังนี้
สํ าหรับเทคนิคการท่ องไปในกราฟมี 2 แบบดังนี้
การท่ องไปในกราฟแนวกว้ าง
• การท่ องแบบกว้าง (Breadth first traversal) วิธีน้ ีทาโดยเลือกโหนด
ํ การท่ องไปแนวกว้าง = A G B H E C F D
ั
ที่เป็ นจุดเริ่ มต้น ต่อมาให้เยือนโหนดอื่นที่ใกล้กนกับโหนดเริ่ มต้นทีละ
ระดับ จนกระทังเยือนหมดทุกโหนดในกราฟ ตัวอย่างแสดงเส้นทาง
่
การท่องแบบกว้างทีละโหนดตามลําดับ
A การท่่ องไปแนวกว้้าง A B C D E F
ไป
B C D
E F
5
6. การท่ องแบบลึก (Depth first traversal) การท่ องไปในกราฟแนวลึก
• การทํางานคล้ายกับการท่องทีละระดับของทรี โดยกําหนดเริ่มต้ นที่
โหนดแรกและเยือนโหนดถัดไปตามแนววิถีน้ันจนกระทังนําไปสู่ ปลาย
่
วิถีน้ัน จากนั้น ย้อนกลับ (backtrack) ตามแนววิถีเดิมนั้น จนกระทัง ่
สามารถดําเนินการต่อเนื่องเข้าสู่แนววิถีอื่น ๆ เพื่อเยือนโหนดอื่น ๆ
ต่อไปจนครบทุกโหนด
A
B C D
8
E F
ABECFD
• Spanning Tree คือต้นไม้ที่ประกอบด้วยโหนดทุกโหนดของ
การท่ องไปแนวลึก = A B C D E F G H กราฟ โดยแต่ ละคู่ของโหนดจะต้ องมีเส้ นเชื่อมเพียงเส้ นเดียว นันคือไม่ มี
่
loop หรือ cycle
• สมมติสถานการณ์ให้กราฟแสดงเส้นทางการบินระหว่าง 7 เมือง แต่ดวย ้
เหตุผลทางธุรกิจทําให้ตองปิ ดเส้นทางการบินไปให้มากที่สุดแต่ยงคง
้ ั
สามารถเชื่อมต่อถึงกันได้หมด
a b a b a b
1. ห้ามมี 2 เส้น
c d c d c d
2. ห้ามตัดเส้นออก
e e f e f 3. ห้ามมี cycle
f
g g g
Minimum spanning tree
MST หมายถึงเวทจ์กราฟและเป็ นสแปนนิ่งทรี ที่มีค่านํ้าหนักรวมกัน Minimum spanning tree
แล้วมีค่าน้อยที่สุด
• Representation
.29 2 .29 2
0 0 .29 2 0 1 2 3 4 5 6 7
.51 .51
.31 .31 0 .51 0 * .32 .29 * * .60 .51 .31
6 6 .31
6 1 .32 * * * * * * .21
.32 7 .25
25 .32 7 .25
25 .32 7 .25
.21 .21 .60
.21
2 .29 * * * * * * *
.60 .60 1 .51
3 * * * * .34 .18 * *
1 .51 1 .51 .46
.46 .46
4 * * * .34 * .40 .51 .46
3 5
.34
.60 * * .18 .40 * * *
.18
3 3 .40
6 .51 * * * .51 * * .25
5 4 7 .31 .21 * * .46 * .25 *
.34 .34
.18 .18
.40 .40
5 4 5 4
6
8. 4. จากกราฟต่อไปนี้ จงท่องไปในแนวลึก และ แนวกว้าง
แบบฝึ กหัด
โดยมีจุดเริ่ มต้นที่ เวอร์เทกซ์ B
• 1. จากภาพต่ อไปนี้ จงแทนกราฟด้ วยอะเรย์สองมิติ
B D
1 2
A
E
C
4 3
2. กราฟสมบูรณ์แบบไม่มีทิศทาง ประกอบด้วยเวอร์เทกซ์ท้ งหมด 7 เวอร์เทกซ์
ั G
F
จงคํานวณว่ากราฟนี้จะมีกี่เอดจ์
3. กราฟสมบูรณ์แบบมีทิศทาง ประกอบด้วยเวอร์เทกซ์ท้ งหมด 8 เวอร์เทกซ์
ั
จงคํานวณว่ากราฟนี้จะมีกี่เอดจ์
5. จากภาพต่อไปนี้ จงหาระยะทางโดยใช้วิธีการของ Dijkstra
โดยเริ่ มที่จุด B
2
A B 4
C
6 10
7
E 3
D
12
5 2
1
F G
8