82
ทฤษฎีกราฟ
ในเชิงคณิตศาสตร นิยาม “กราฟ” ดังนี้
บทนิยาม กราฟ G ประกอบดวย เซตจํากัด 2 เซต คือ
1. เซตที่ไมเปนเซตวางของจุดยอด (Vertex) แทนดวยสัญลักษณ V(G)
2. เซตของเสนเชื่อม (Edge) ที่เชื่อมระหวางจุดยอด แทนดวยสัญลักษณ E(G)
ขอสังเกต V(G) ≠ ∅ แต E(G) อาจเปนเซตวางได
ตัวอยางที่ 1 กําหนดกราฟ G ดังรูป
จากกราฟ G ที่กําหนดให จะไดวา
V(G) = {A, B, C, D}
E(G) = {e1, e2, e3, e4}
เสนเชื่อม e ของกราฟ เกิดกับ (Incident) จุดยอด v ถาจุดยอด v เปนจุดปลายจุดหนึ่งของ
เสนเชื่อม
บทนิยาม จุดยอด u และจุดยอด v ของกราฟ เปนจุดยอดประชิด (Adjacent Vertices) ก็
ตอเมื่อ มีเสนเชื่อมระหวางจุดทั้งสอง และเราเรียกจุดยอด u และ v วา จุดปลาย (End Point) ของ
เสนเชื่อมนั้น
ตัวอยางที่ 2 จากกราฟของตัวอยางที่ 1 จะเห็นวา
จุดยอด A และจุดยอด B เปนจุดยอดประชิด
จุดยอด A และจุดยอด C เปนจุดยอดประชิด
จุดยอด B และจุดยอด C เปนจุดยอดประชิด
จุดยอด C และจุดยอด D เปนจุดยอดประชิด
แต จุดยอด A และจุดยอด D ไมเปนจุดยอดประชิด
83
จุดยอด B และจุดยอด D ไมเปนจุดยอดประชิด
หมายเหตุ
1. ในการเขียนแผนภาพของกราฟนั้น จะกําหนดตําแหนงของจุดยอด ณ ตําแหนงใดก็ได และจะ
ลากเสนเชื่อมของกราฟเปนเสนตรงหรือเสนโคงมีความยาวเปนเทาใดก็ได โดยที่เสนที่ลากจะไม
ตัดกับตัวมันเอง และไมลากผานจุดยอดที่ไมใชจุดยอดของเสนนั้น เชน กราฟตอไปนี้ ถือวาเปน
กราฟเดียวกัน
2. เสนเชื่อมสองเสนของกราฟ อาจลากตัดกันก็ได โดยที่จุดตัดของเสนทั้งสองไมถือวาเปนจุดยอด
ของกราฟ เชน กราฟ
สามารถเขียนใหมโดยไมมีเสนเชื่อมตัดกันไดดังนี้
กําหนดกราฟ ดังรูป
84
จากกราฟจะเห็นวา e1 และ e2 เปนเสนเชื่อมระหวางจุดยอดคูเดียวกัน คือ จุดยอด a และ จุด
ยอด c
เสนเชื่อม e5 เปนเสนเชื่อมที่เชื่อมจุดยอด b เพียงจุดเดียว
บทนิยาม เสนเชื่อมตั้งแต 2 เสนที่เชื่อมระหวางจุดยอดคูเดียวกัน เรียกวา เสนเชื่อมขนาน
(Parallel Edges)
เสนเชื่อมที่เชื่อมจุดยอดเพียงจุดเดียว เรียกวา วงวน (Loop)
จากรูปขางตนจะเห็นวา e1 และ e2 เปนเสนเชื่อมขนาน เสนเชื่อม e5 เปนวงวน
ในกรณีที่กราฟไมมีเสนเชื่อมขนาน สามารถใชสัญลักษณ AB เพื่อแทนเสนเชื่อมระหวางจุดยอด
A และ B ได เชน กราฟในตัวอยางที่ 1 สามารถเขียนเซตของเสนเชื่อม E(G) ไดใหมเปน
E(G) = {AB, BC, AC, CD}
บทนิยาม เราเรียกกราฟที่ไมมีเสนเชื่อมขนาน และไมมีวงวน วา กราฟเชิงเดียว (Simple Graph)
ตัวอยางที่ 3 พิจารณากราฟ
จะเห็นวา กราฟ G1 เปนกราฟที่มีวงวน กราฟ G2 เปนกราฟที่มีเสนเชื่อมขนาน และกราฟ G3 เปน
กราฟที่มีวงวนและเสนเชื่อมขนาน ดังนั้นกราฟ G1 G2 และ G3 ไมเปนกราฟเชิงเดียว
85
กราฟเดียวกันและกราฟถอดแบบกัน
เราไดทราบแลววาในการเขียนกราฟ G จะกําหนดตําแหนงของจุดยอด ณ ตําแหนงใดก็ได จึง
ทําใหกราฟเดียวกันนั้นมีรูปที่แตกตางกันได
บทนิยาม เรากลาววา กราฟ G และกราฟ H เปนกราฟเดียวกัน(Identical) ก็ตอเมื่อ V(G) = V(H)
และ E(G) = E(H)
ตัวอยางที่ 4 พิจารณากราฟ G และกราฟ H ดังรูป
G H
จะเห็นวา
V(G) = {A, B, C, D} = V(H)
E(G) = {AC, BC, BD} = E(H)
ดังนั้น เราจะกลาววา กราฟ G และกราฟ H เปนกราฟเดียวกัน
บทนิยาม เรากลาววา กราฟ G และกราฟ H เปนกราฟถอดแบบกัน (Isomorphic) ก็ตอเมื่อ มี
ฟงกชัน φ ซึ่งเปนฟงกชัน หนึ่งตอหนึ่งจาก V(G) ไปทั่วถึง V(H)
โดยที่ uv ∈E(G) ก็ตอเมื่อ ∈φφ )v()u( E(H) สําหรับทุกๆจุดยอด u และจุดยอด v ใน G
86
ตัวอยางที่ 5 พิจารณากราฟ
จะเห็นวา กราฟ H และกราฟ G กําหนดชื่อใหจุดยอดแตกตางกัน ถึงแมวารูปกราฟทั้งสองนี้จะดู
เหมือนกันก็ตาม แตกราฟ G และ กราฟ H เปนกราฟถอดแบบกัน ทั้งนี้มีฟงกชัน φ ซึ่งนิยามวา φ(ui)
= vi โดยที่ i = 1, 2, 3, 4, 5 เปนฟงกชันหนึ่งตอหนึ่งจาก V(H) ไปทั่วถึง V(G) โดยที่ uiuj ∈E(H) ก็
ตอเมื่อ vivj ∈E(G)
ดีกรีของจุดยอด
พิจารณากราฟตอไปนี้
จุดยอด จํานวนครั้งทั้งหมดที่เสนเชื่อมเกิดกับจุดยอด
a 2
b 4
c 4
d 2
จะเห็นวา เสนเชื่อมที่เกิดกับจุดยอด a ไดแก เสนเชื่อม ab และ ac ดังนั้น จํานวนครั้งทั้งหมดที่
เสนเชื่อมเกิดกับจุดยอด a คือ 2 สําหรับจุดยอด b มีเสนเชื่อมที่เกิดกับจุดยอด b ไดแก เสนเชื่อม ba,
bc และ bb เปนวงวน เกิดกับจุดยอด b กรณีที่มีเสนเชื่อมเปนวงวนจะกําหนดใหนับจํานวนเสนเชื่อมที่
87
เกิดกับจุดยอดนั้นเพิ่มขึ้น โดยใหนับเสนเชื่อมที่เปนวงวน 1 วง วงวนเปน 2 ดังนั้นจํานวนครั้งทั้งหมดที่
เสนเชื่อมเกิดกับจุดยอด b จึงเปน 4
บทนิยาม ดีกรี (Degree) ของจุดยอด v ในกราฟ คือ จํานวนครั้งทั้งหมดที่เสนเชื่อมเกิดกับจุด
ยอด v
ตอไปจะเรียกจํานวนครั้งทั้งหมดที่เสนเชื่อมเกิดกับจุดยอดวา ดีกรี
ใชสัญลักษณ deg v แทนดีกรีของจุดยอด v
ตัวอยางที่ 6 กําหนดกราฟ ดังรูป
จากรูปจะไดวา deg a = 2
deg b = 1
deg c = 3
deg d = 4
ตัวอยางที่ 7 กําหนดกราฟ ดังรูป
88
จากรูปจะไดวา deg a = 2
deg b = 5
deg c = 5
deg d = 4
สังเกตวา deg a + deg b + deg c + deg d = 16 และกราฟมีจํานวนเสนเชื่อมทั้งหมด 8 เสน
ความสัมพันธระหวางผลรวมของดีกรีของจุดยอดทุกจุดในกราฟกับจํานวนเสนเชื่อมของกราฟ
เปนไปตามทฤษฎีบทตอไปนี้
ทฤษฎีบท
ให u1, u2, u3, …, u )G(V
เปนจุดยอดทั้งหมดในกราฟ G จะไดวา
)G(E2udeg
)G(v
1i
i =∑=
นั่นคือ ผลรวมของดีกรีของจุดยอดทุดจุดในกราฟเทากับสองเทาของจํานวนเสนเชื่อมในกราฟ
พิสูจน
เนื่องจากเสนเชื่อมแตละเสนในกราฟเกิดกับจุดยอดเปนจํานวน 2 ครั้ง ดังนั้นเสนเชื่อมแตละเสน
จะถูกนับ 2 ครั้งในผลรวมของดีกรีของจุดยอดทุกจุด
นั่นคือ ผลรวมของดีกรีของจุดยอดทุกจุดในกราฟเทากับสองเทาของจํานวนเสนเชื่อมในกราฟ
ขอสังเกต
ผลรวมของดีกรีของจุดยอดทุกจุดในกราฟเปนจํานวนคูเสมอ
ตัวอยางที่ 8 จงหาจํานวนเสนเชื่อมของกราฟที่มีผลรวมของดีกรีของจุดยอดทุกจุดในกราฟเทากับ 22
วิธีทํา สมมติวา กราฟมีเสนเชื่อม n เสน
จากทฤษฎีบท 1 ผลรวมของดีกรีของจุดยอดทุดจุดในกราฟเทากับสองเทาของจํานวน
เสนเชื่อมในกราฟ
ดังนั้น 22 = 2n
นั่นคือ n = 11
สรุปไดวา กราฟมีเสนเชื่อม 11 เสน
ตัวอยางที่ 9 จงหาจํานวนจุดยอดของกราฟที่มีเสนเชื่อม 15 เสน และมีจุดยอด 3 จุด ที่มีดีกรี 4 สวน
จุดยอดที่เหลือมีดีกรี 3
วิธีทํา ให n เปนจํานวนจุดยอดที่มีดีกรี 3
89
ผลรวมของดีกรีของจุดยอดทุกจุดในกราฟ คือ (3)(4) + 3n
จากทฤษฎีบท 1 ผลรวมของดีกรีของจุดยอดทุดจุดในกราฟเทากับสองเทาของจํานวน
เสนเชื่อมในกราฟ
ดังนั้น (3)(4) + 3n = 2(15)
เพราะฉะนั้น n = 6
ดังนั้น จํานวนจุดยอดทั้งหมดของกราฟ คือ 3 + 6 = 9 จุด
ตัวอยางที่ 10 จงพิจารณาวาเปนไปไดหรือไมวา จะมีกราฟที่มีจุดยอด 4 จุด และดีกรีของจุดยอด คือ
1, 1, 2 และ 3 ตามลําดับ
วิธีทํา สมมติวา มีดีกรีที่มีจุดยอด 4 จุด และดีกรีของจุดยอดเทากับ 1, 1, 2 และ 3
ดังนั้น ผลรวมของดีกรีของจุดยอดทุกจุด คือ 1 + 1 + 2 + 3 = 7
ซึ่งเปนจํานวนคี่ ขัดแยงกับทฤษฎีบท 1
ดังนั้นเปนไปไมไดที่จะมีกราฟดังกลาว
บทนิยาม
จุดยอดที่มีดีกรีเปนจํานวนคู เรียกวา จุดยอดคู (Even Vertex)
จุดยอดที่มีดีกรีเปนจํานวนคี่ เรียกวา จุดยอดคี่ (Odd Vertex)
ตัวอยางที่ 11 กําหนดกราฟ ดังรูป
จากรูปจะไดวา deg a = 2
deg b = 3
deg c = 0
deg d = 3
deg e = 2
ดังนั้น จุดยอด a, c และ e เปนจุดยอดคู
จุดยอด b และ d เปนจุดยอดคี่
90
ทฤษฎีบท 2 ทุกกราฟจะมีจุดยอดคี่เปนจํานวนคู
พิสูจน ให G เปนกราฟ
ถา G ไมมีจุดยอดคี่ นั่นคือ G มีจํานวนจุดยอดคี่เปนศูนย จึงไดวา
G มีจํานวนจุดยอดคี่เปนจํานวนคู
ตอไปสมมติวา กราฟ G มีจุดยอดคี่ k จุด คือ v1, v2, v3, …, vk
และมีจุดยอดคู n จุด คือ u1, u2, u3, …, un จากทฤษฎีบท 1 จะไดวา
(deg v1 + deg v2 + … + deg vk) + (deg u1 + deg u2 + … + deg un) = 2q
เมื่อ q คือ จํานวนเสนเชื่อมของ G
ดังนั้น deg v1 + deg v2 + … + deg vk = 2q - (deg u1 + deg u2 + … + deg un)
เนื่องจาก deg u1 + deg u2 + … + deg un ตางก็เปนจํานวนคู
ดังนั้น 2q - (deg u1 + deg u2 + … + deg un) เปนจํานวนคู
นั่นคือ deg v1 + deg v2 + … + deg vk เปนจํานวนคู
แตเนื่องจาก deg v1 + deg v2 + … + deg vk เปนจํานวนคี่
เพราะฉะนั้น k จะตองเปนจํานวนคู จึงจะทําให deg v1 + deg v2 + … + deg vk
เปนจํานวนคู สรุปไดวา กราฟ G มีจุดยอดคี่เปนจํานวนคู
จากตัวอยางที่ 10 เราใหเหตุผลโดยอาศัยทฤษฎีบท 2 ดังนี้
สมมติวา มีกราฟที่มีจุดยอด 4 จุด และดีกรีของจุดยอด คือ 1, 1, 2 และ 3
จะไดวา กราฟมีจุดยอดคี่เปนจํานวน 3 จุด ซึ่งขัดแยงกับทฤษฎีบท 2 สรุปไดวา ไมมีกราฟที่มี
สมบัติดังกลาว
ตัวอยางที่ 12 ถาในหองประชุมแหงหนึ่งมีผูเขารวมประชุมทั้งหมด 23 คน เปนไปไดหรือไม
วา ผูเขารวมประชุมแตละคนจับมือทักทายผูเขารวมประชุมคนอื่นเพียง 7 คนเทานั้น
วิธีทํา แปลงปญหาดังกลาวเปนกราฟ โดยใหจุดยอดแทนผูเขารวมประชุม และเสนเชื่อมแทน
การจับมือทักทายของผูเขารวมประชุม
จะไดวา กราฟนี้มีจุดยอด 23 จุด และจุดยอดแตละจุดมีดีกรี 7
นั่นคือ กราฟมีจุดยอดคี่เปนจํานวน 23 จุด ซึ่งเปนจํานวนคี่ ขัดแยง
กับทฤษฎีบท 2 ดังนั้น เปนไปไมไดที่ผูเขารวมประชุมแตละคนจับมือกับคนอื่นเพียง
7 คนเทานั้น
91
แนวเดินและกราฟเชื่อมโยง
สมมติวา แผนผังของเมืองหนึ่งแทนดวยกราฟดังรูป โดยใหจุดยอดแทนอําเภอ และเสนเชื่อมแทน
ถนนที่เชื่อมระหวางอําเภอสองอําเภอ
ในการเดินทางจากอําเภอ A ไปยังอําเภอ D มีเสนทางการเดินทางหลายเสนทาง
เสนทางตางๆ จะแทนดัวยลําดับของจุดยอดและเสนเชื่อม ดังนี้
เสนทาง A, e1, E, e5, D
บทนิยาม ให u และ v เปนจุดยอดของกราฟ
แนวเดิน u - v (u - v walk) คือ ลําดับจํากัดของจุดยอดและเสนเชื่อมสลับกัน
u = u0, e1, u1, e2, u2, …, un-1, en, un = v
โดยเริ่มตนที่จุดยอด u และสิ้นสุดที่จุดยอด v และแตละเสนเชื่อม ei จะเกิดกับ
จุดยอด ui-1 และ ui เมื่อ i ∈ {1, 2, …, n}
บทนิยาม
รอยเดิน (trail) คือ แนวเดินในกราฟที่เสนเชื่อมทั้งหมดแตกตางกัน
วิถี(Path) คือ แนวเดินในกราฟที่จุดยอดทั้งหมดแตกตางกัน
วงจร(Circuit) คือ แนวเดินที่เสนเชื่อมทั้งหมดแตกตางกัน โดยมีจุดเริ่มตนและจุดสุดทาย
เปนจุดยอดเดียวกัน
วัฏจักร(Cycle) คือวงจรที่ไมมีจุดยอดซ้ํากัน ยกเวนจุดเริ่มตนและจุดสุดทาย
บทนิยาม กราฟ G เปนกราฟเชื่อมโยง(connected graph) ถาจุดยอด 2 จุดใดๆ ใน G เชื่อไดดวยวิถี
92
สื่อการสอน ใช PowerPoint นําเสนอ
93
94
กราฟถวงน้ําหนัก (weight)
บทนิยาม
คาน้ําหนัก(weight) ของเสนเชื่อม e ในกราฟ คือ จํานวนที่ไมเปนลบที่กําหนดไวบนเสนเชื่อม e
กราฟถวงน้ําหนัก(weight graph) คือ กราฟที่เสนเชื่อมทุกเสนมีคาน้ําหนัก
ตัวอยาง กราฟตอไปนี้เปนถวงน้ําหนัก
2
5 1
3
4
2
ตัวอยาง กราฟตอไปนี้เปนกราฟถวงน้ําหนัก ซึ่งจําลองจากแผนที่เมืองในประเทศไทย
โดยใหจุดยอดแทนเมือง เสนเชื่อมแทนถนน และคาน้ําหนักเสนเชื่อมแทนระยะทางระหวาง
เมืองสองเมือง
A
DB
F
E
C
2
5
1
2
3
6
3 2
จะหาเสนทางจากเมือง A ไปยังเมือง E ทั้งหมดที่ไมผานเมืองซ้ํากัน
เสนทางที่ 1 A, B, D, E ระยะทางยาว 2 + 1 + 3 = 4 กิโลเมตร
เสนทางที่ 2 A, B, D, F, E ระยะทางยาว 2 + 1 + 2 + 2 = 7 กิโลเมตร
เสนทางที่ 3 A, B, D, C, F, E ระยะทางยาว 2 + 1 + 3 + 6 + 2 = 14 กิโลเมตร
เสนทางที่ 4 A, C, F, E ระยะทางยาว 5 + 6 + 2 = 13 กิโลเมตร
เสนทางที่ 5 A, C, F, D, E ระยะทางยาว 5 + 6 + 2 + 3 = 16 กิโลเมตร
95
เสนทางที่ 6 A, C, D, E ระยะทางยาว 5 + 3 + 3 = 11 กิโลเมตร
เสนทางที่ 7 A, C, D, F, E ระยะทางยาว 5 + 3 + 2 + 2 = 12 กิโลเมตร
จะเห็นวาเสนทางที่ 1 A, B, D, E ระยะทางยาว 4 กิโลเมตรเปนระยะทางที่สั้นที่สุด
บทนิยาม
วิถีที่สั้นที่สุด จากจุด A ถึงจุดยอด Z ในกราฟถวงน้ําหนัก คือวิถี A - Z ที่ผลรวมของคา
น้ําหนักของเสนเชื่อมทุกเสนในวิถี A-Z นอยที่สุด
ฉะนั้นในตัวอยางขางตน จะเห็นวา วิถี A, B, D, E เปนวิถีที่สั้นที่สุด
สําหรับกราฟถวงนําหนักที่มีจุดยอดและเสนเชื่อมเปนจํานวนมาก การหาวิถี A - Z ที่สั้นที่สุด
โดยการคนหาวิถี A - Z ทั้งหมดแลวเลือกวิถีที่ผลรวมของคาน้ําหนักนอยที่สุด ทําไดไมสะดวกและ
เสียเวลา ในการหาวิถี A - Z ที่สั้นที่สุด มีขั้นตอนวิธีที่ใชหาวิถีที่สั้นที่สุด เชน ขั้นตอนวิธีของ Dijkstra
96
ขั้นตอนวิธีของไดคสตรา (Dijkstra’s Algorithm)
เมื่อ G เปนกราฟไมขาดตอนที่มีน้ําหนัก นั่นคือ G เปนกราฟที่จุดทุกจุดมีวิถีอยางนอยหนึ่งวิถีเชื่อม
ถึงกัน และแตละเสน e ใน G ถูกกําหนดดวยจํานวนจริงที่ไมเปนลบ และ u0 เปนจุดที่กําหนดใหเปน
จุดเริ่มตน
w(uv) หมายถึงความยาวของเสน uv
S หมายถึง complement ของ เซต Sให i = 0, S0 = {u0},
และ L(v) = ∞
สําหรับทุก ๆ จุด v ≠ u0
กําหนดคาจุด v ดวย (L(v) , -)
yes
no
yes
no
|V(G) | = 1 ?
หาคา
iSv∈
min {L(v)}
จุดใดที่ทําใหเกิดคานอยที่สุด ใหเรียกจุดนั้นวา ui+1
กําหนดให Si+1 = Si U {ui+1}
แทนคา i ดวย i + 1
i = V(G)- 1 ?
Finish
สําหรับแตละจุด v iS∈
ให L(v) = min{ L(v) , L(ui)+w(uiv) }
กําหนดคา v ใหมเปน (L(v),ui)
ถาคา L(v) ที่ไดเปนคาใหม
97
ในที่นี้เราจะศึกษา ขั้นตอนวิธีของ Dijkstra พรอมแสดงตัวอยาง
จงหาวิถี A - H ที่สั้นที่สุดของกราฟตอไปนี้
A
EB
D H
C
F
G
2
2
1
4
4
5
1
6
2
3
3
7
98
99
100
จากกราฟขางตน เราไดวา
วิถี A-H ที่สั้นที่สุดคือ A, B, E, H
วิถี A-D ที่สั้นที่สุดคือ A, C, D
วิถี A-G ที่สั้นที่สุดคือ A, C, G
วิถี A-F ที่สั้นที่สุดคือ A, B, F
หมายเหตุ จากขั้นตอนวิธีของ Dijkstra ขางตนเราจะไดวิถีที่สั้นที่สุดจาก A ไปยังจุดยอดใดๆ
เทานั้น ถาเราจะหาวิถีที่สั้นที่สุดจากจุดยอดที่ไมใชจุด A จะตองเริ่มขั้นตอนวิธีของ Dijkstra
ใหม
กิจกรรมการเรียนรู
1. ครูนําเขาสูบทเรียนโดยการใหนักเรียนพิจารณาลักษณะของกราฟถวงน้ําหนัก แลวพิจารณา
วิถีที่สั้นที่สุด
2. แจงจุดประสงคการเรียนรูประจําเรื่องใหนักเรียนทราบ
3. ครูใชเทคนิคการสอนแบบบรรยาย
4. ใชสื่อการสอนดวย PowerPoint เพื่อใหนักเรียนไดเขาใจทางเดินตางๆ มากยิ่งขึ้น
101
สื่อการสอน ใช PowerPoint นําเสนอ
102
103
กราฟออยเลอร
ปญหาสะพานเคอนิกสเบิรก มีอยูวา ณ เมืองเคอนิกสเบิรกมีเกาะกลางแมน้ําพรีเกล (Pregel)
จํานวน 2 เกาะ และมีสะพานที่เชื่อมระหวางเกาะและเมืองดังรูปตอไปนี้
ชาวเมืองเคอนิกสเบิรกพยายามหาวิธีเดินขามสะพานใหครบทุกสะพาน โดยที่ขามสะพานแต
ละสะพานเพียงครั้งเดียวและกลับมาที่จุดยอดเริ่มตน
เลออนฮารด ออยเลอรไดแปลงปญหานี้ใหอยูในรูปกราฟ โดยใหอาณาบริเวณ A, B, C, D
แทนดวยจุดยอดของกราฟ และสะพานแตละพานแทนดวยเสนเชื่อมของกราฟ
104
A
C
B
D
ปญหาสะพานเคอนิกสเบอรก เมื่อจําลองอยูในรูปกราฟจะได
จากกราฟ สามารถแปลงไดเปนปญหาการลากผานเสนเชื่อมของกราฟดังรูปขางตน
จนครบทุกเสนโดยไมตองยกปากกาและผานเสนแตละเสนเพียงครั้งเดียว โดยที่จุดเริ่มตนและจุดสิ้นสุด
เปนจุดเดียวกัน
บทนิยาม
วงจรออยเลอร(Euler trail) คือ รอยเดินซึ่งผานจุดยอดทุกจุดและเสนเชื่อมทุกเสนของกราฟ
ทฤษฎีบทตอไปนี้ ใหเงื่อนไขวา กราฟที่กําหนดใหเปนกราฟออยเลอรเมื่อไร
ทฤษฎีบท ให G เปนกราฟเชื่อมโยง จะไดวา
G เปนกราฟออยเลอร ก็ตอเมื่อ จุดยอดทุกจุดของ G มีดีกรีเปนจํานวนคู
กราฟที่มีวงจรออยเลอร เรียกวา กราฟออยเลอร (Eulerian graph)
105
ตัวอยาง กราฟตอไปนี้เปนกราฟออยเลอร
บทนิยาม รอยเดินออยเลอร(Euler circuit) คือ วงจรที่ผานจุดยอดทุกจุดและเสนเชื่อมทุกเสนของ
กราฟ
ทฤษฎีบทตอไปนี้ ใหเงื่อนไขวา กราฟที่กําหนดใหมีรอยเดินออยเลอรเมื่อไร
ทฤษฎีบท ให G เปนกราฟเชื่อมโยง จะไดวา
G เปนกราฟที่มีรอยเดินออยเลอร ก็ตอเมื่อ G มีจุดยอดที่เปนดีกรีเปนจํานวนคี่ไมเกิน 2
จุด ยิ่งไปกวานั้นจุดยอดที่เปนจํานวนคี่เหลานั้นจะเปนจุดเริ่มตนและจุดปลายของรอยเดิน
ออยเลอร
ปญหาหนี่งที่ดูคลายกับปญหาวงจรออยเลอร คือปญหาการหาวิถีในกราฟที่ไมใชจุดยอดซ้ํากัน
ยกเวนจุดเริ่มตนและจุดสิ้นสุดตองเปนจุดเดียวกัน ซึ่งก็คือ วัฎจักรและวัฎจักรนี้ผานครบทุกจุดยอดใน
กราฟนี้ จะเรียกวัฎจักรนี้วา วัฎจักรแฮมิลตัน
ถา G มีวัฎจักรแฮมิลตัน จะเรียก G วาเปนกราฟแฮมิลตัน(Hamiltonian graph)
106
สื่อการสอน ใช PowerPoint นําเสนอ
ตนไม
ตอไปเราจะศึกษากราฟที่มีลักษณะพิเศษชนิดหนึ่ง เรียกวา ตนไม ซึ่งมีบทบาทสําคัญใน
การศึกษาทฤษฎีกราฟ และในการประยุกตทางดานตางๆ เชน โครงสรางขอมูลในวิชาคอมพิวเตอร
การศึกษาโครงสรางทางเคมีของสารประกอบไฮโดรคารบอน หรือในการออกแบบวงจรไฟฟาและ
อิเล็กทรอนิกส
บทนิยาม ตนไม (tree) คือ กราฟเชื่อมโยงที่ไมมีวัฏจักร
107
ดัวอยาง พิจารณากราฟตอไปนี้
(A)
(D)(C)
(B)
จะเห็นวา กราฟในรูป (A) และ (B) เปนตนไม
กราฟในรูป (C) ไมเปนตนไม เพราะมีวัฏจักรปรากฏอยู
กราฟในรูป (D) ไมเปนตนไม เพราะไมใชกราฟเชื่อมโยง
ลักษณะเฉพาะของตนไม
ทฤษฎีบทตอไปนี้เปนทฤษฎีบทที่บงบอกลักษณะเฉพาะ(characterization) ของตนไม
ทฤษฎีบท
1. ให T เปนกราฟที่ไมมีวงวน กราฟ T เปนตนไม ก็ตอเมื่อ จุดยอด 2 จุดใดๆ ใน T
เชื่อมโยงกันไดดวยวิถีเพียงวิถีเดียว
2. ให T เปนกราฟที่มีจํานวนจุดยอดเปน n จุด กราฟ T เปนตนไม ก็ตอเมื่อ กราฟ T ไม
มีวัฏจักร และมีเสนเชื่อม n – 1 เสน
3. ให T เปนกราฟที่มีจํานวนจุดยอดเปน n จุด กราฟ T เปนตนไม ก็ตอเมื่อ กราฟ T เปน
กราฟเชื่อมโยงและมีเสนเชื่อม n – 1 เสน
4. ถา T เปนตนไมที่มีจํานวนจุดยอดอยางนอย 2 จุด แลว กราฟ T จะมีดีกรี 1 อยางนอย 2
จุด
ตนไมแผทั่ว (spanning tree)
กอนที่จะศึกษาตนไมแผทั่ว เราจะเริ่มตนศึกษากราฟยอยกอน
บทนิยาม กราฟยอย (subgraph) ของกราฟ G คือกราฟที่ประกอบดวยจุดยอดและเสนเชื่อมใน G
กลาวคือ กราฟ H เปนกราฟยอยของกราฟ G ถา V(G) V(H) และ E(H) E(G)⊂ ⊂
108
ตัวอยาง กําหนดกราฟ G และกราฟ H ดังรูป
G :
A
B C
D A
B C
D
H :
V(G) = { A, B, C, D } V(H) = { A, B, C, D }
E(G) = {AB, BC, CD, DA, BD} E(H) = {AB, BC, DA, BD}
จะไดวา กราฟ H เปนกราฟยอยของกราฟ G
พิจารณาวากราฟใด เปนกราฟยอยของกราฟ G
A
B
C
D
A
B
C
D
A
B
C
D
A
B
C
D
A
B
C
D
A
B
C A
B
C
D
G
G1 G2 G3
G4 G5 G6
D
D
กราฟ G2 และ G6 ไมเปนกราฟยอยของ G
พิจารณากราฟยอยของกราฟ G จะเห็นวากราฟ G1 , G3 และ G5 เปนกราฟยอยของ G และเปน
ตนไมดวย
บทนิยาม ตนไมแผทั่ว (spanning tree) คือตนไมซึ่งเปนกราฟยอยของกราฟเชื่อมโยง G ที่บรรจุจุดยอด
ทุกจุดยอด
109
การประยุกตของทฤษฎีกราฟที่เกี่ยวของกับตนไม
สมมติวาเราตองการสรางถนนเชื่อมตอระหวางเมืองตางๆ โดยที่ทราบคาใชจายในการกอสรางถนน
ที่เชื่อมเมือง 2 เมืองใดๆ ปญหาที่เกิดขึ้นคือ เราควรสรางถนนเชื่อมระหวางเมืองใดบาง เพื่อใหเมือง 2
เมืองใดๆ สามารถติดตอกันไดทางรถยนต และเสียคาใชจายในการกอสรางนอยที่สุด จากปญหาดังกลาว
เราอาจสรางกราฟที่มีน้ําหนักที่สมนัยกับปญหานี้ได โดยใหเมืองแตละเมืองแทนดวยจุดยอด ถนนแทน
ดวยเสนเชื่อม และคาใชจายในการกอสรางถนนแทนคาน้ําหนักของเสนเชื่อม คําตอบของปญหานี้คือ การ
หาสับกราฟแผทั่วที่เปนกราฟเชื่อมโยงและมีคาน้ําหนักนอยที่สุด ขั้นตอนวิธีในการหากราฟแผทั่วที่เปน
กราฟเชื่อมโยงและมีคาน้ําหนักนอยที่สุดมีอยูดวยกันหลายวิธี แตในที่นี้เราจะกลาว 2 วิธีเทานั้น คือ วิธีของ
ครูสกาวล (Kruskal) และขั้นตอนวิธีของพริม (Prim) ในบรรดาขั้นตอนวิธีเหลานี้ ขั้นตอนวิธีของครู
สกาวล จัดวาเปนขั้นตอนวิธีที่มีชื่อเสียงมากที่สุด
ขั้นตอนวิธีของครูสกาวล (Kruskal’s algorithm)
แนวคิดของขั้นตอนวิธีของครูสกาวล คือการเลือกเสนที่มีน้ําหนักนอยที่สุดจากกราฟเชื่อมโยงถวง
น้ําหนัก ติดตอกันไปเพื่อสรางกราฟเชื่อมถวงน้ําหนัก และการเลือกเสนดังกลาวตองไมกอใหเกิดวัฎจักร
การเลือกนี้จะสิ้นสุดลงเมื่อไดตนไมแผทั่ว
ตัวอยาง จงหากราฟแผทั่วที่เปนกราฟเชื่อมโยงและมีคาน้ําหนักนอยที่สุดของกราฟที่กําหนดใหโดยใช
ขั้นตอนวิธีของครูสกาวล
วิธีทํา เราจะใชเสนหนาบงถึงเสนของกราฟแผทั่วที่เปนกราฟเชื่อมโยงและมีคาน้ําหนักนอยที่สุด
110
เราจะเห็นวาคาน้ําหนักของแผทั่วที่เปนกราฟเชื่อมโยงมีคาเทากับ 8
หมายเหตุ กราฟแผทั่วที่เปนกราฟเชื่อมโยงและมีคาน้ําหนักนอยที่สุดของแตละกราฟอาจมีไดมากกวา 1
แบบ
111
ขั้นตอนวิธีของพริม(Prim’s algorithm)
แนวคิดขั้นตอนของพริม คือการแทนตนไม T ที่มีอยูในการเชื่อมโยงที่มีน้ําหนักดวยตนไมอัน
ใหมที่เกิดจากการเพิ่มเสนที่มีน้ําหนักนอยที่สุดลงไปใน T โดยที่เสนๆ นี้เปนเสนเชื่อมจุดที่อยูใน T กับจุดที่
ไมอยูใน T
ตัวอยาง จงหากราฟแผทั่วที่เปนกราฟเชื่อมโยงและมีคาน้ําหนักนอยที่สุดของกราฟที่กําหนดให โดยใช
ขั้นตอนวิธีของพริม
วิธีทํา เราจะใชเสนหนาบงถึงเสนของกราฟแผทั่วที่เปนกราฟเชื่อมโยงและมีคาน้ําหนักนอยที่สุด
112
เราจะเห็นวาคาน้ําหนักของแผทั่วที่เปนกราฟเชื่อมโยงมีคาเทากับ 8
กิจกรรมการเรียนรู
1. ครูนําเขาสูบทเรียนโดยการใหนักเรียนนักเรียนพิจารณากราฟที่มีลักษณะพิเศษชนิดหนึ่ง
เรียกวา ตนไม แลวนําไปสูเนื้อหาของตนไม
2. แจงจุดประสงคการเรียนรูประจําเรื่องใหนักเรียนทราบ
3. ครูใชเทคนิคการสอนแบบบรรยาย
4. ใชสื่อการสอนดวย PowerPoint
สื่อการสอน ใช PowerPoint นําเสนอ
113

ทฤษฎีกราฟเบื้องต้น/Graph

  • 1.
    82 ทฤษฎีกราฟ ในเชิงคณิตศาสตร นิยาม “กราฟ”ดังนี้ บทนิยาม กราฟ G ประกอบดวย เซตจํากัด 2 เซต คือ 1. เซตที่ไมเปนเซตวางของจุดยอด (Vertex) แทนดวยสัญลักษณ V(G) 2. เซตของเสนเชื่อม (Edge) ที่เชื่อมระหวางจุดยอด แทนดวยสัญลักษณ E(G) ขอสังเกต V(G) ≠ ∅ แต E(G) อาจเปนเซตวางได ตัวอยางที่ 1 กําหนดกราฟ G ดังรูป จากกราฟ G ที่กําหนดให จะไดวา V(G) = {A, B, C, D} E(G) = {e1, e2, e3, e4} เสนเชื่อม e ของกราฟ เกิดกับ (Incident) จุดยอด v ถาจุดยอด v เปนจุดปลายจุดหนึ่งของ เสนเชื่อม บทนิยาม จุดยอด u และจุดยอด v ของกราฟ เปนจุดยอดประชิด (Adjacent Vertices) ก็ ตอเมื่อ มีเสนเชื่อมระหวางจุดทั้งสอง และเราเรียกจุดยอด u และ v วา จุดปลาย (End Point) ของ เสนเชื่อมนั้น ตัวอยางที่ 2 จากกราฟของตัวอยางที่ 1 จะเห็นวา จุดยอด A และจุดยอด B เปนจุดยอดประชิด จุดยอด A และจุดยอด C เปนจุดยอดประชิด จุดยอด B และจุดยอด C เปนจุดยอดประชิด จุดยอด C และจุดยอด D เปนจุดยอดประชิด แต จุดยอด A และจุดยอด D ไมเปนจุดยอดประชิด
  • 2.
    83 จุดยอด B และจุดยอดD ไมเปนจุดยอดประชิด หมายเหตุ 1. ในการเขียนแผนภาพของกราฟนั้น จะกําหนดตําแหนงของจุดยอด ณ ตําแหนงใดก็ได และจะ ลากเสนเชื่อมของกราฟเปนเสนตรงหรือเสนโคงมีความยาวเปนเทาใดก็ได โดยที่เสนที่ลากจะไม ตัดกับตัวมันเอง และไมลากผานจุดยอดที่ไมใชจุดยอดของเสนนั้น เชน กราฟตอไปนี้ ถือวาเปน กราฟเดียวกัน 2. เสนเชื่อมสองเสนของกราฟ อาจลากตัดกันก็ได โดยที่จุดตัดของเสนทั้งสองไมถือวาเปนจุดยอด ของกราฟ เชน กราฟ สามารถเขียนใหมโดยไมมีเสนเชื่อมตัดกันไดดังนี้ กําหนดกราฟ ดังรูป
  • 3.
    84 จากกราฟจะเห็นวา e1 และe2 เปนเสนเชื่อมระหวางจุดยอดคูเดียวกัน คือ จุดยอด a และ จุด ยอด c เสนเชื่อม e5 เปนเสนเชื่อมที่เชื่อมจุดยอด b เพียงจุดเดียว บทนิยาม เสนเชื่อมตั้งแต 2 เสนที่เชื่อมระหวางจุดยอดคูเดียวกัน เรียกวา เสนเชื่อมขนาน (Parallel Edges) เสนเชื่อมที่เชื่อมจุดยอดเพียงจุดเดียว เรียกวา วงวน (Loop) จากรูปขางตนจะเห็นวา e1 และ e2 เปนเสนเชื่อมขนาน เสนเชื่อม e5 เปนวงวน ในกรณีที่กราฟไมมีเสนเชื่อมขนาน สามารถใชสัญลักษณ AB เพื่อแทนเสนเชื่อมระหวางจุดยอด A และ B ได เชน กราฟในตัวอยางที่ 1 สามารถเขียนเซตของเสนเชื่อม E(G) ไดใหมเปน E(G) = {AB, BC, AC, CD} บทนิยาม เราเรียกกราฟที่ไมมีเสนเชื่อมขนาน และไมมีวงวน วา กราฟเชิงเดียว (Simple Graph) ตัวอยางที่ 3 พิจารณากราฟ จะเห็นวา กราฟ G1 เปนกราฟที่มีวงวน กราฟ G2 เปนกราฟที่มีเสนเชื่อมขนาน และกราฟ G3 เปน กราฟที่มีวงวนและเสนเชื่อมขนาน ดังนั้นกราฟ G1 G2 และ G3 ไมเปนกราฟเชิงเดียว
  • 4.
    85 กราฟเดียวกันและกราฟถอดแบบกัน เราไดทราบแลววาในการเขียนกราฟ G จะกําหนดตําแหนงของจุดยอดณ ตําแหนงใดก็ได จึง ทําใหกราฟเดียวกันนั้นมีรูปที่แตกตางกันได บทนิยาม เรากลาววา กราฟ G และกราฟ H เปนกราฟเดียวกัน(Identical) ก็ตอเมื่อ V(G) = V(H) และ E(G) = E(H) ตัวอยางที่ 4 พิจารณากราฟ G และกราฟ H ดังรูป G H จะเห็นวา V(G) = {A, B, C, D} = V(H) E(G) = {AC, BC, BD} = E(H) ดังนั้น เราจะกลาววา กราฟ G และกราฟ H เปนกราฟเดียวกัน บทนิยาม เรากลาววา กราฟ G และกราฟ H เปนกราฟถอดแบบกัน (Isomorphic) ก็ตอเมื่อ มี ฟงกชัน φ ซึ่งเปนฟงกชัน หนึ่งตอหนึ่งจาก V(G) ไปทั่วถึง V(H) โดยที่ uv ∈E(G) ก็ตอเมื่อ ∈φφ )v()u( E(H) สําหรับทุกๆจุดยอด u และจุดยอด v ใน G
  • 5.
    86 ตัวอยางที่ 5 พิจารณากราฟ จะเห็นวากราฟ H และกราฟ G กําหนดชื่อใหจุดยอดแตกตางกัน ถึงแมวารูปกราฟทั้งสองนี้จะดู เหมือนกันก็ตาม แตกราฟ G และ กราฟ H เปนกราฟถอดแบบกัน ทั้งนี้มีฟงกชัน φ ซึ่งนิยามวา φ(ui) = vi โดยที่ i = 1, 2, 3, 4, 5 เปนฟงกชันหนึ่งตอหนึ่งจาก V(H) ไปทั่วถึง V(G) โดยที่ uiuj ∈E(H) ก็ ตอเมื่อ vivj ∈E(G) ดีกรีของจุดยอด พิจารณากราฟตอไปนี้ จุดยอด จํานวนครั้งทั้งหมดที่เสนเชื่อมเกิดกับจุดยอด a 2 b 4 c 4 d 2 จะเห็นวา เสนเชื่อมที่เกิดกับจุดยอด a ไดแก เสนเชื่อม ab และ ac ดังนั้น จํานวนครั้งทั้งหมดที่ เสนเชื่อมเกิดกับจุดยอด a คือ 2 สําหรับจุดยอด b มีเสนเชื่อมที่เกิดกับจุดยอด b ไดแก เสนเชื่อม ba, bc และ bb เปนวงวน เกิดกับจุดยอด b กรณีที่มีเสนเชื่อมเปนวงวนจะกําหนดใหนับจํานวนเสนเชื่อมที่
  • 6.
    87 เกิดกับจุดยอดนั้นเพิ่มขึ้น โดยใหนับเสนเชื่อมที่เปนวงวน 1วง วงวนเปน 2 ดังนั้นจํานวนครั้งทั้งหมดที่ เสนเชื่อมเกิดกับจุดยอด b จึงเปน 4 บทนิยาม ดีกรี (Degree) ของจุดยอด v ในกราฟ คือ จํานวนครั้งทั้งหมดที่เสนเชื่อมเกิดกับจุด ยอด v ตอไปจะเรียกจํานวนครั้งทั้งหมดที่เสนเชื่อมเกิดกับจุดยอดวา ดีกรี ใชสัญลักษณ deg v แทนดีกรีของจุดยอด v ตัวอยางที่ 6 กําหนดกราฟ ดังรูป จากรูปจะไดวา deg a = 2 deg b = 1 deg c = 3 deg d = 4 ตัวอยางที่ 7 กําหนดกราฟ ดังรูป
  • 7.
    88 จากรูปจะไดวา deg a= 2 deg b = 5 deg c = 5 deg d = 4 สังเกตวา deg a + deg b + deg c + deg d = 16 และกราฟมีจํานวนเสนเชื่อมทั้งหมด 8 เสน ความสัมพันธระหวางผลรวมของดีกรีของจุดยอดทุกจุดในกราฟกับจํานวนเสนเชื่อมของกราฟ เปนไปตามทฤษฎีบทตอไปนี้ ทฤษฎีบท ให u1, u2, u3, …, u )G(V เปนจุดยอดทั้งหมดในกราฟ G จะไดวา )G(E2udeg )G(v 1i i =∑= นั่นคือ ผลรวมของดีกรีของจุดยอดทุดจุดในกราฟเทากับสองเทาของจํานวนเสนเชื่อมในกราฟ พิสูจน เนื่องจากเสนเชื่อมแตละเสนในกราฟเกิดกับจุดยอดเปนจํานวน 2 ครั้ง ดังนั้นเสนเชื่อมแตละเสน จะถูกนับ 2 ครั้งในผลรวมของดีกรีของจุดยอดทุกจุด นั่นคือ ผลรวมของดีกรีของจุดยอดทุกจุดในกราฟเทากับสองเทาของจํานวนเสนเชื่อมในกราฟ ขอสังเกต ผลรวมของดีกรีของจุดยอดทุกจุดในกราฟเปนจํานวนคูเสมอ ตัวอยางที่ 8 จงหาจํานวนเสนเชื่อมของกราฟที่มีผลรวมของดีกรีของจุดยอดทุกจุดในกราฟเทากับ 22 วิธีทํา สมมติวา กราฟมีเสนเชื่อม n เสน จากทฤษฎีบท 1 ผลรวมของดีกรีของจุดยอดทุดจุดในกราฟเทากับสองเทาของจํานวน เสนเชื่อมในกราฟ ดังนั้น 22 = 2n นั่นคือ n = 11 สรุปไดวา กราฟมีเสนเชื่อม 11 เสน ตัวอยางที่ 9 จงหาจํานวนจุดยอดของกราฟที่มีเสนเชื่อม 15 เสน และมีจุดยอด 3 จุด ที่มีดีกรี 4 สวน จุดยอดที่เหลือมีดีกรี 3 วิธีทํา ให n เปนจํานวนจุดยอดที่มีดีกรี 3
  • 8.
    89 ผลรวมของดีกรีของจุดยอดทุกจุดในกราฟ คือ (3)(4)+ 3n จากทฤษฎีบท 1 ผลรวมของดีกรีของจุดยอดทุดจุดในกราฟเทากับสองเทาของจํานวน เสนเชื่อมในกราฟ ดังนั้น (3)(4) + 3n = 2(15) เพราะฉะนั้น n = 6 ดังนั้น จํานวนจุดยอดทั้งหมดของกราฟ คือ 3 + 6 = 9 จุด ตัวอยางที่ 10 จงพิจารณาวาเปนไปไดหรือไมวา จะมีกราฟที่มีจุดยอด 4 จุด และดีกรีของจุดยอด คือ 1, 1, 2 และ 3 ตามลําดับ วิธีทํา สมมติวา มีดีกรีที่มีจุดยอด 4 จุด และดีกรีของจุดยอดเทากับ 1, 1, 2 และ 3 ดังนั้น ผลรวมของดีกรีของจุดยอดทุกจุด คือ 1 + 1 + 2 + 3 = 7 ซึ่งเปนจํานวนคี่ ขัดแยงกับทฤษฎีบท 1 ดังนั้นเปนไปไมไดที่จะมีกราฟดังกลาว บทนิยาม จุดยอดที่มีดีกรีเปนจํานวนคู เรียกวา จุดยอดคู (Even Vertex) จุดยอดที่มีดีกรีเปนจํานวนคี่ เรียกวา จุดยอดคี่ (Odd Vertex) ตัวอยางที่ 11 กําหนดกราฟ ดังรูป จากรูปจะไดวา deg a = 2 deg b = 3 deg c = 0 deg d = 3 deg e = 2 ดังนั้น จุดยอด a, c และ e เปนจุดยอดคู จุดยอด b และ d เปนจุดยอดคี่
  • 9.
    90 ทฤษฎีบท 2 ทุกกราฟจะมีจุดยอดคี่เปนจํานวนคู พิสูจนให G เปนกราฟ ถา G ไมมีจุดยอดคี่ นั่นคือ G มีจํานวนจุดยอดคี่เปนศูนย จึงไดวา G มีจํานวนจุดยอดคี่เปนจํานวนคู ตอไปสมมติวา กราฟ G มีจุดยอดคี่ k จุด คือ v1, v2, v3, …, vk และมีจุดยอดคู n จุด คือ u1, u2, u3, …, un จากทฤษฎีบท 1 จะไดวา (deg v1 + deg v2 + … + deg vk) + (deg u1 + deg u2 + … + deg un) = 2q เมื่อ q คือ จํานวนเสนเชื่อมของ G ดังนั้น deg v1 + deg v2 + … + deg vk = 2q - (deg u1 + deg u2 + … + deg un) เนื่องจาก deg u1 + deg u2 + … + deg un ตางก็เปนจํานวนคู ดังนั้น 2q - (deg u1 + deg u2 + … + deg un) เปนจํานวนคู นั่นคือ deg v1 + deg v2 + … + deg vk เปนจํานวนคู แตเนื่องจาก deg v1 + deg v2 + … + deg vk เปนจํานวนคี่ เพราะฉะนั้น k จะตองเปนจํานวนคู จึงจะทําให deg v1 + deg v2 + … + deg vk เปนจํานวนคู สรุปไดวา กราฟ G มีจุดยอดคี่เปนจํานวนคู จากตัวอยางที่ 10 เราใหเหตุผลโดยอาศัยทฤษฎีบท 2 ดังนี้ สมมติวา มีกราฟที่มีจุดยอด 4 จุด และดีกรีของจุดยอด คือ 1, 1, 2 และ 3 จะไดวา กราฟมีจุดยอดคี่เปนจํานวน 3 จุด ซึ่งขัดแยงกับทฤษฎีบท 2 สรุปไดวา ไมมีกราฟที่มี สมบัติดังกลาว ตัวอยางที่ 12 ถาในหองประชุมแหงหนึ่งมีผูเขารวมประชุมทั้งหมด 23 คน เปนไปไดหรือไม วา ผูเขารวมประชุมแตละคนจับมือทักทายผูเขารวมประชุมคนอื่นเพียง 7 คนเทานั้น วิธีทํา แปลงปญหาดังกลาวเปนกราฟ โดยใหจุดยอดแทนผูเขารวมประชุม และเสนเชื่อมแทน การจับมือทักทายของผูเขารวมประชุม จะไดวา กราฟนี้มีจุดยอด 23 จุด และจุดยอดแตละจุดมีดีกรี 7 นั่นคือ กราฟมีจุดยอดคี่เปนจํานวน 23 จุด ซึ่งเปนจํานวนคี่ ขัดแยง กับทฤษฎีบท 2 ดังนั้น เปนไปไมไดที่ผูเขารวมประชุมแตละคนจับมือกับคนอื่นเพียง 7 คนเทานั้น
  • 10.
    91 แนวเดินและกราฟเชื่อมโยง สมมติวา แผนผังของเมืองหนึ่งแทนดวยกราฟดังรูป โดยใหจุดยอดแทนอําเภอและเสนเชื่อมแทน ถนนที่เชื่อมระหวางอําเภอสองอําเภอ ในการเดินทางจากอําเภอ A ไปยังอําเภอ D มีเสนทางการเดินทางหลายเสนทาง เสนทางตางๆ จะแทนดัวยลําดับของจุดยอดและเสนเชื่อม ดังนี้ เสนทาง A, e1, E, e5, D บทนิยาม ให u และ v เปนจุดยอดของกราฟ แนวเดิน u - v (u - v walk) คือ ลําดับจํากัดของจุดยอดและเสนเชื่อมสลับกัน u = u0, e1, u1, e2, u2, …, un-1, en, un = v โดยเริ่มตนที่จุดยอด u และสิ้นสุดที่จุดยอด v และแตละเสนเชื่อม ei จะเกิดกับ จุดยอด ui-1 และ ui เมื่อ i ∈ {1, 2, …, n} บทนิยาม รอยเดิน (trail) คือ แนวเดินในกราฟที่เสนเชื่อมทั้งหมดแตกตางกัน วิถี(Path) คือ แนวเดินในกราฟที่จุดยอดทั้งหมดแตกตางกัน วงจร(Circuit) คือ แนวเดินที่เสนเชื่อมทั้งหมดแตกตางกัน โดยมีจุดเริ่มตนและจุดสุดทาย เปนจุดยอดเดียวกัน วัฏจักร(Cycle) คือวงจรที่ไมมีจุดยอดซ้ํากัน ยกเวนจุดเริ่มตนและจุดสุดทาย บทนิยาม กราฟ G เปนกราฟเชื่อมโยง(connected graph) ถาจุดยอด 2 จุดใดๆ ใน G เชื่อไดดวยวิถี
  • 11.
  • 12.
  • 13.
    94 กราฟถวงน้ําหนัก (weight) บทนิยาม คาน้ําหนัก(weight) ของเสนเชื่อมe ในกราฟ คือ จํานวนที่ไมเปนลบที่กําหนดไวบนเสนเชื่อม e กราฟถวงน้ําหนัก(weight graph) คือ กราฟที่เสนเชื่อมทุกเสนมีคาน้ําหนัก ตัวอยาง กราฟตอไปนี้เปนถวงน้ําหนัก 2 5 1 3 4 2 ตัวอยาง กราฟตอไปนี้เปนกราฟถวงน้ําหนัก ซึ่งจําลองจากแผนที่เมืองในประเทศไทย โดยใหจุดยอดแทนเมือง เสนเชื่อมแทนถนน และคาน้ําหนักเสนเชื่อมแทนระยะทางระหวาง เมืองสองเมือง A DB F E C 2 5 1 2 3 6 3 2 จะหาเสนทางจากเมือง A ไปยังเมือง E ทั้งหมดที่ไมผานเมืองซ้ํากัน เสนทางที่ 1 A, B, D, E ระยะทางยาว 2 + 1 + 3 = 4 กิโลเมตร เสนทางที่ 2 A, B, D, F, E ระยะทางยาว 2 + 1 + 2 + 2 = 7 กิโลเมตร เสนทางที่ 3 A, B, D, C, F, E ระยะทางยาว 2 + 1 + 3 + 6 + 2 = 14 กิโลเมตร เสนทางที่ 4 A, C, F, E ระยะทางยาว 5 + 6 + 2 = 13 กิโลเมตร เสนทางที่ 5 A, C, F, D, E ระยะทางยาว 5 + 6 + 2 + 3 = 16 กิโลเมตร
  • 14.
    95 เสนทางที่ 6 A,C, D, E ระยะทางยาว 5 + 3 + 3 = 11 กิโลเมตร เสนทางที่ 7 A, C, D, F, E ระยะทางยาว 5 + 3 + 2 + 2 = 12 กิโลเมตร จะเห็นวาเสนทางที่ 1 A, B, D, E ระยะทางยาว 4 กิโลเมตรเปนระยะทางที่สั้นที่สุด บทนิยาม วิถีที่สั้นที่สุด จากจุด A ถึงจุดยอด Z ในกราฟถวงน้ําหนัก คือวิถี A - Z ที่ผลรวมของคา น้ําหนักของเสนเชื่อมทุกเสนในวิถี A-Z นอยที่สุด ฉะนั้นในตัวอยางขางตน จะเห็นวา วิถี A, B, D, E เปนวิถีที่สั้นที่สุด สําหรับกราฟถวงนําหนักที่มีจุดยอดและเสนเชื่อมเปนจํานวนมาก การหาวิถี A - Z ที่สั้นที่สุด โดยการคนหาวิถี A - Z ทั้งหมดแลวเลือกวิถีที่ผลรวมของคาน้ําหนักนอยที่สุด ทําไดไมสะดวกและ เสียเวลา ในการหาวิถี A - Z ที่สั้นที่สุด มีขั้นตอนวิธีที่ใชหาวิถีที่สั้นที่สุด เชน ขั้นตอนวิธีของ Dijkstra
  • 15.
    96 ขั้นตอนวิธีของไดคสตรา (Dijkstra’s Algorithm) เมื่อG เปนกราฟไมขาดตอนที่มีน้ําหนัก นั่นคือ G เปนกราฟที่จุดทุกจุดมีวิถีอยางนอยหนึ่งวิถีเชื่อม ถึงกัน และแตละเสน e ใน G ถูกกําหนดดวยจํานวนจริงที่ไมเปนลบ และ u0 เปนจุดที่กําหนดใหเปน จุดเริ่มตน w(uv) หมายถึงความยาวของเสน uv S หมายถึง complement ของ เซต Sให i = 0, S0 = {u0}, และ L(v) = ∞ สําหรับทุก ๆ จุด v ≠ u0 กําหนดคาจุด v ดวย (L(v) , -) yes no yes no |V(G) | = 1 ? หาคา iSv∈ min {L(v)} จุดใดที่ทําใหเกิดคานอยที่สุด ใหเรียกจุดนั้นวา ui+1 กําหนดให Si+1 = Si U {ui+1} แทนคา i ดวย i + 1 i = V(G)- 1 ? Finish สําหรับแตละจุด v iS∈ ให L(v) = min{ L(v) , L(ui)+w(uiv) } กําหนดคา v ใหมเปน (L(v),ui) ถาคา L(v) ที่ไดเปนคาใหม
  • 16.
    97 ในที่นี้เราจะศึกษา ขั้นตอนวิธีของ Dijkstraพรอมแสดงตัวอยาง จงหาวิถี A - H ที่สั้นที่สุดของกราฟตอไปนี้ A EB D H C F G 2 2 1 4 4 5 1 6 2 3 3 7
  • 17.
  • 18.
  • 19.
    100 จากกราฟขางตน เราไดวา วิถี A-Hที่สั้นที่สุดคือ A, B, E, H วิถี A-D ที่สั้นที่สุดคือ A, C, D วิถี A-G ที่สั้นที่สุดคือ A, C, G วิถี A-F ที่สั้นที่สุดคือ A, B, F หมายเหตุ จากขั้นตอนวิธีของ Dijkstra ขางตนเราจะไดวิถีที่สั้นที่สุดจาก A ไปยังจุดยอดใดๆ เทานั้น ถาเราจะหาวิถีที่สั้นที่สุดจากจุดยอดที่ไมใชจุด A จะตองเริ่มขั้นตอนวิธีของ Dijkstra ใหม กิจกรรมการเรียนรู 1. ครูนําเขาสูบทเรียนโดยการใหนักเรียนพิจารณาลักษณะของกราฟถวงน้ําหนัก แลวพิจารณา วิถีที่สั้นที่สุด 2. แจงจุดประสงคการเรียนรูประจําเรื่องใหนักเรียนทราบ 3. ครูใชเทคนิคการสอนแบบบรรยาย 4. ใชสื่อการสอนดวย PowerPoint เพื่อใหนักเรียนไดเขาใจทางเดินตางๆ มากยิ่งขึ้น
  • 20.
  • 21.
  • 22.
    103 กราฟออยเลอร ปญหาสะพานเคอนิกสเบิรก มีอยูวา ณเมืองเคอนิกสเบิรกมีเกาะกลางแมน้ําพรีเกล (Pregel) จํานวน 2 เกาะ และมีสะพานที่เชื่อมระหวางเกาะและเมืองดังรูปตอไปนี้ ชาวเมืองเคอนิกสเบิรกพยายามหาวิธีเดินขามสะพานใหครบทุกสะพาน โดยที่ขามสะพานแต ละสะพานเพียงครั้งเดียวและกลับมาที่จุดยอดเริ่มตน เลออนฮารด ออยเลอรไดแปลงปญหานี้ใหอยูในรูปกราฟ โดยใหอาณาบริเวณ A, B, C, D แทนดวยจุดยอดของกราฟ และสะพานแตละพานแทนดวยเสนเชื่อมของกราฟ
  • 23.
    104 A C B D ปญหาสะพานเคอนิกสเบอรก เมื่อจําลองอยูในรูปกราฟจะได จากกราฟ สามารถแปลงไดเปนปญหาการลากผานเสนเชื่อมของกราฟดังรูปขางตน จนครบทุกเสนโดยไมตองยกปากกาและผานเสนแตละเสนเพียงครั้งเดียวโดยที่จุดเริ่มตนและจุดสิ้นสุด เปนจุดเดียวกัน บทนิยาม วงจรออยเลอร(Euler trail) คือ รอยเดินซึ่งผานจุดยอดทุกจุดและเสนเชื่อมทุกเสนของกราฟ ทฤษฎีบทตอไปนี้ ใหเงื่อนไขวา กราฟที่กําหนดใหเปนกราฟออยเลอรเมื่อไร ทฤษฎีบท ให G เปนกราฟเชื่อมโยง จะไดวา G เปนกราฟออยเลอร ก็ตอเมื่อ จุดยอดทุกจุดของ G มีดีกรีเปนจํานวนคู กราฟที่มีวงจรออยเลอร เรียกวา กราฟออยเลอร (Eulerian graph)
  • 24.
    105 ตัวอยาง กราฟตอไปนี้เปนกราฟออยเลอร บทนิยาม รอยเดินออยเลอร(Eulercircuit) คือ วงจรที่ผานจุดยอดทุกจุดและเสนเชื่อมทุกเสนของ กราฟ ทฤษฎีบทตอไปนี้ ใหเงื่อนไขวา กราฟที่กําหนดใหมีรอยเดินออยเลอรเมื่อไร ทฤษฎีบท ให G เปนกราฟเชื่อมโยง จะไดวา G เปนกราฟที่มีรอยเดินออยเลอร ก็ตอเมื่อ G มีจุดยอดที่เปนดีกรีเปนจํานวนคี่ไมเกิน 2 จุด ยิ่งไปกวานั้นจุดยอดที่เปนจํานวนคี่เหลานั้นจะเปนจุดเริ่มตนและจุดปลายของรอยเดิน ออยเลอร ปญหาหนี่งที่ดูคลายกับปญหาวงจรออยเลอร คือปญหาการหาวิถีในกราฟที่ไมใชจุดยอดซ้ํากัน ยกเวนจุดเริ่มตนและจุดสิ้นสุดตองเปนจุดเดียวกัน ซึ่งก็คือ วัฎจักรและวัฎจักรนี้ผานครบทุกจุดยอดใน กราฟนี้ จะเรียกวัฎจักรนี้วา วัฎจักรแฮมิลตัน ถา G มีวัฎจักรแฮมิลตัน จะเรียก G วาเปนกราฟแฮมิลตัน(Hamiltonian graph)
  • 25.
    106 สื่อการสอน ใช PowerPointนําเสนอ ตนไม ตอไปเราจะศึกษากราฟที่มีลักษณะพิเศษชนิดหนึ่ง เรียกวา ตนไม ซึ่งมีบทบาทสําคัญใน การศึกษาทฤษฎีกราฟ และในการประยุกตทางดานตางๆ เชน โครงสรางขอมูลในวิชาคอมพิวเตอร การศึกษาโครงสรางทางเคมีของสารประกอบไฮโดรคารบอน หรือในการออกแบบวงจรไฟฟาและ อิเล็กทรอนิกส บทนิยาม ตนไม (tree) คือ กราฟเชื่อมโยงที่ไมมีวัฏจักร
  • 26.
    107 ดัวอยาง พิจารณากราฟตอไปนี้ (A) (D)(C) (B) จะเห็นวา กราฟในรูป(A) และ (B) เปนตนไม กราฟในรูป (C) ไมเปนตนไม เพราะมีวัฏจักรปรากฏอยู กราฟในรูป (D) ไมเปนตนไม เพราะไมใชกราฟเชื่อมโยง ลักษณะเฉพาะของตนไม ทฤษฎีบทตอไปนี้เปนทฤษฎีบทที่บงบอกลักษณะเฉพาะ(characterization) ของตนไม ทฤษฎีบท 1. ให T เปนกราฟที่ไมมีวงวน กราฟ T เปนตนไม ก็ตอเมื่อ จุดยอด 2 จุดใดๆ ใน T เชื่อมโยงกันไดดวยวิถีเพียงวิถีเดียว 2. ให T เปนกราฟที่มีจํานวนจุดยอดเปน n จุด กราฟ T เปนตนไม ก็ตอเมื่อ กราฟ T ไม มีวัฏจักร และมีเสนเชื่อม n – 1 เสน 3. ให T เปนกราฟที่มีจํานวนจุดยอดเปน n จุด กราฟ T เปนตนไม ก็ตอเมื่อ กราฟ T เปน กราฟเชื่อมโยงและมีเสนเชื่อม n – 1 เสน 4. ถา T เปนตนไมที่มีจํานวนจุดยอดอยางนอย 2 จุด แลว กราฟ T จะมีดีกรี 1 อยางนอย 2 จุด ตนไมแผทั่ว (spanning tree) กอนที่จะศึกษาตนไมแผทั่ว เราจะเริ่มตนศึกษากราฟยอยกอน บทนิยาม กราฟยอย (subgraph) ของกราฟ G คือกราฟที่ประกอบดวยจุดยอดและเสนเชื่อมใน G กลาวคือ กราฟ H เปนกราฟยอยของกราฟ G ถา V(G) V(H) และ E(H) E(G)⊂ ⊂
  • 27.
    108 ตัวอยาง กําหนดกราฟ Gและกราฟ H ดังรูป G : A B C D A B C D H : V(G) = { A, B, C, D } V(H) = { A, B, C, D } E(G) = {AB, BC, CD, DA, BD} E(H) = {AB, BC, DA, BD} จะไดวา กราฟ H เปนกราฟยอยของกราฟ G พิจารณาวากราฟใด เปนกราฟยอยของกราฟ G A B C D A B C D A B C D A B C D A B C D A B C A B C D G G1 G2 G3 G4 G5 G6 D D กราฟ G2 และ G6 ไมเปนกราฟยอยของ G พิจารณากราฟยอยของกราฟ G จะเห็นวากราฟ G1 , G3 และ G5 เปนกราฟยอยของ G และเปน ตนไมดวย บทนิยาม ตนไมแผทั่ว (spanning tree) คือตนไมซึ่งเปนกราฟยอยของกราฟเชื่อมโยง G ที่บรรจุจุดยอด ทุกจุดยอด
  • 28.
    109 การประยุกตของทฤษฎีกราฟที่เกี่ยวของกับตนไม สมมติวาเราตองการสรางถนนเชื่อมตอระหวางเมืองตางๆ โดยที่ทราบคาใชจายในการกอสรางถนน ที่เชื่อมเมือง 2เมืองใดๆ ปญหาที่เกิดขึ้นคือ เราควรสรางถนนเชื่อมระหวางเมืองใดบาง เพื่อใหเมือง 2 เมืองใดๆ สามารถติดตอกันไดทางรถยนต และเสียคาใชจายในการกอสรางนอยที่สุด จากปญหาดังกลาว เราอาจสรางกราฟที่มีน้ําหนักที่สมนัยกับปญหานี้ได โดยใหเมืองแตละเมืองแทนดวยจุดยอด ถนนแทน ดวยเสนเชื่อม และคาใชจายในการกอสรางถนนแทนคาน้ําหนักของเสนเชื่อม คําตอบของปญหานี้คือ การ หาสับกราฟแผทั่วที่เปนกราฟเชื่อมโยงและมีคาน้ําหนักนอยที่สุด ขั้นตอนวิธีในการหากราฟแผทั่วที่เปน กราฟเชื่อมโยงและมีคาน้ําหนักนอยที่สุดมีอยูดวยกันหลายวิธี แตในที่นี้เราจะกลาว 2 วิธีเทานั้น คือ วิธีของ ครูสกาวล (Kruskal) และขั้นตอนวิธีของพริม (Prim) ในบรรดาขั้นตอนวิธีเหลานี้ ขั้นตอนวิธีของครู สกาวล จัดวาเปนขั้นตอนวิธีที่มีชื่อเสียงมากที่สุด ขั้นตอนวิธีของครูสกาวล (Kruskal’s algorithm) แนวคิดของขั้นตอนวิธีของครูสกาวล คือการเลือกเสนที่มีน้ําหนักนอยที่สุดจากกราฟเชื่อมโยงถวง น้ําหนัก ติดตอกันไปเพื่อสรางกราฟเชื่อมถวงน้ําหนัก และการเลือกเสนดังกลาวตองไมกอใหเกิดวัฎจักร การเลือกนี้จะสิ้นสุดลงเมื่อไดตนไมแผทั่ว ตัวอยาง จงหากราฟแผทั่วที่เปนกราฟเชื่อมโยงและมีคาน้ําหนักนอยที่สุดของกราฟที่กําหนดใหโดยใช ขั้นตอนวิธีของครูสกาวล วิธีทํา เราจะใชเสนหนาบงถึงเสนของกราฟแผทั่วที่เปนกราฟเชื่อมโยงและมีคาน้ําหนักนอยที่สุด
  • 29.
  • 30.
    111 ขั้นตอนวิธีของพริม(Prim’s algorithm) แนวคิดขั้นตอนของพริม คือการแทนตนไมT ที่มีอยูในการเชื่อมโยงที่มีน้ําหนักดวยตนไมอัน ใหมที่เกิดจากการเพิ่มเสนที่มีน้ําหนักนอยที่สุดลงไปใน T โดยที่เสนๆ นี้เปนเสนเชื่อมจุดที่อยูใน T กับจุดที่ ไมอยูใน T ตัวอยาง จงหากราฟแผทั่วที่เปนกราฟเชื่อมโยงและมีคาน้ําหนักนอยที่สุดของกราฟที่กําหนดให โดยใช ขั้นตอนวิธีของพริม วิธีทํา เราจะใชเสนหนาบงถึงเสนของกราฟแผทั่วที่เปนกราฟเชื่อมโยงและมีคาน้ําหนักนอยที่สุด
  • 31.
    112 เราจะเห็นวาคาน้ําหนักของแผทั่วที่เปนกราฟเชื่อมโยงมีคาเทากับ 8 กิจกรรมการเรียนรู 1. ครูนําเขาสูบทเรียนโดยการใหนักเรียนนักเรียนพิจารณากราฟที่มีลักษณะพิเศษชนิดหนึ่ง เรียกวาตนไม แลวนําไปสูเนื้อหาของตนไม 2. แจงจุดประสงคการเรียนรูประจําเรื่องใหนักเรียนทราบ 3. ครูใชเทคนิคการสอนแบบบรรยาย 4. ใชสื่อการสอนดวย PowerPoint สื่อการสอน ใช PowerPoint นําเสนอ
  • 32.