Transcript Document

MAT 231: คณิตศาสตร์ ไม่ ต่อเนื่อง
(5)
กราฟ (Graphs)
ดร.ธนา สุ ขวารี
ดร.สุ รศักดิ์ มังสิ งห์
SPU, Computer Science Dept.
1
วัตถุประสงค์
• เพื่อศึกษาหลักการเบื้องต้นเกี่ยวกับกราฟ (graphs)
• ประยุกต์ความสัมพันธ์ของข้อมูลในรู ปกราฟสาหรับ
กระบวนการทางคอมพิวเตอร์
2
กราฟคืออะไร?
• ไม่ใช่กราฟในความหมายทางคณิ ตศาสตร์ที่เกิดจากการ Plot จุดลงบน
แกน x,y
• กราฟในวิชาคณิ ตศาสตร์ไม่ต่อเนื่องจะหมายถึงโครงสร้างความสัมพันธ์
ซึ่งประกอบด้วย จุด(หรื อจุดยอด) และเส้นเชื่อมโยงระหว่างจุดหรื อจุด
ยอด เพื่ออธิบายความสัมพันธ์ของสิ่ งที่เราสนใจ
http://th.wikipedia.org/wiki/กราฟ_(คณิ ตศาสตร์ )
3
การประยุกต์ ของกราฟ
• เพื่อแสดงความสัมพันธ์ของสิ่ งที่เราสนใจ.
• เครื อข่าย(คอมพิวเตอร์ ธุรกิจ) การจัดการตาราง
(scheduling) การจัดการระบบงาน(flow
optimization) การออกแบบวงจร.
4
กราฟอย่ างง่ าย (Simple Graphs)
• กราฟอย่ างง่ าย คือ G=(V,E) ซึ่งประกอบด้วย
– เซตของจุดยอด(vertices) หรื อจุดยอด(nodes) แทนด้ วยสั ญญลักณ์ V
– เซตของเส้นเชื่อมโยงระหว่างจุดยอดหรื อ เรี ยกอีกอย่างว่า ด้าน(edges) หรื อ
ด้าน แทนด้ วยสั ญญลักณ์ E ซึ่ งแทนด้วยคู่ลาดับ u,v  V
Visual Representation
of a Simple Graph
5
มัลติกราฟ(Multi-graphs)
• มัลติกราฟ คือ กราฟอย่างง่าย ซึ่งอย่างน้อยจะต้องมีดา้ นมากกว่า
Parallel
หนึ่งด้าน เชื่อมระหว่างจุดยอดคู่เดียวกันบนกราฟ.
edges
• G=(V, E, f )
f:E{{u,v}|u,vV  uv}.
• ตัวอย่ าง เช่ น ถ้าให้จุดยอดแทนเมืองและให้ถนนแทนด้าน ในความ
เป็ นจริ งก็อาจมีถนนเชื่อมเมืองได้มากกว่าหนึ่ง เส้นทาง.
6
กราฟเทียม(Pseudo-graphs)
• กราฟเทียม หมายถึง มัลติกราฟที่มีจุดยอดหนึ่งจุดยอดใดที่ยอมให้มี ด้านเข้าและ
ออกไปยังตัวเอง. (R may be reflexive.)
• G=(V, E, f ) เมื่อ
f:E{{u,v}|u,vV}. eE เรี ยกว่า ลูบ(loop) ถ้ า
f(e)={u,u}={u}.
7
กราฟระบุทศิ ทาง(Directed Graphs)
• กราฟระบุทิศทาง(directed graph) หรื อ digraph
ซึ่งจะสอดคล้องกับความสัมพันธ์แบบทวิภาค (binary
relations).
• กราฟระบุทิศทาง(V,E) ประกอบด้วย จุดยอด V และความสัมพันธ์
ทวิภาค E บน V โดยมีการระบุทิศทางความสัมพันธ์ ว่าเป็ น
ความสัมพันธ์ จากจุดยอดใดไปยังจุดยอดใด.
• ตัวอย่ างเช่ น: V = เซตของคน,
E={(x,y) | x loves y}
8
มัลติกราฟระบุทศิ ทาง(Directed Multi-graphs)
• มัลติกราฟระบุทิศทาง คือกราฟระบุทิศทาง ซึ่งอย่างน้อยจะต้องมี
ด้านมากกว่าหนึ่งด้าน ระหว่างจุดยอดคู่หนึ่งบนกราฟ
• G=(V, E, f ) ประกอบด้วยเซตของ V และ E ที่
f:EVV.
• ตัวอย่ าง เช่ นให้ V=web pages และ
E=hyperlinks โดย WWW เป็ น
directed multigraph...
9
คาศัพท์ ที่เกีย่ วข้ องกราฟ(terminology)
• Adjacent, connects, endpoints, degree,
initial, terminal, in-degree, out-degree,
complete, cycles, wheels, n-cubes,
bipartite, sub-graph, union.
http://oneweb.utc.edu/~Christopher-Mawata/petersen/lesson12b.htm
10
ประชิด (Adjacency)
ให้ G เป็ น กราฟไม่ระบุทิศทาง(undirected graph) ซึ่งมี ด้าน
E, eE เขียนด้วยคู่ลาดับจุดยอด {u,v} แล้วจะกล่าวว่า:
u, v เป็ น adjacent / neighbors / connected.
• ด้าน e เป็ นด้านตกกระทบ(incident) กับ จุดยอด u และv.
• ด้าน e จะเชื่อมต่อ(connect) ระหว่าง u และ v. e B
1
e4
• จุดยอด u และ v ต่างก็เป็ นจุดปลายของ ด้าน e. A
e5
e2
C
e3
e6
E
e7
G1
D
11
ดีกรีของจุดยอด(Degree of a Vertex)
• เมื่อG เป็ นกราฟไม่ระบุทิศทาง,และ vV.
• ดีกรี ของ vใดๆ เขียนด้วย deg(v) หมายถึงจานวนของด้านตก
กระทบ(incident edges) ยกเว้นกรณี self-loops นับเพียง
สองครั้ง
• จุดยอดที่มีดีกรี 0 เรี ยกว่า isolated.
• จุดยอดที่มีดีกรี 1 เรี ยกว่า pendant.
12
Handshaking Theorem
• ให้ G เป็ นกราฟไม่ระบุทิศทาง (simple, multi-, or
pseudo-) แล้ว
 deg( v )  2 E
vV
How many vertices are there in a graph with 30 edges and degree
4 in each vertices?
13
Directed Adjacency Graph
• ให้ G เป็ น กราฟระบุทิศทาง เมื่อ u, v เป็ นโหนดใดๆบน G เราจะ
กล่าวว่า:
– u is adjacent to v, v is adjacent from u
– e comes from u, e goes to v.
– e connects u to v, e goes from u to v
– the initial vertex of e is u
– the terminal vertex of e is v
e
u
v
14
Directed Degree
• ให้ G เป็ น กราฟระบุทิศทาง เมื่อ v เป็ นจุดยอดใดๆบน G เราจะ
กล่าวว่า:
– in-degree ของv, deg(v), คือจานวน ด้าน ที่พงุ่ เข้าสู่ v.
– out-degree ของv, deg(v), คือจานวน ด้าน ที่พงุ่ ออกจาก v.
– ดีกรี ของ v เท่ากับ deg(v)  deg(v) + deg(v).
B
e1
e5
A
e6
G2
E
e4
e2
C
e7
e3
D
15
Directed Handshaking Theorem
• ให้ G เป็ น กราฟระบุทิศทางแล้ว ได้วา่ :
 deg
vV

(v ) 
 deg
vV

(v ) 
1
deg( v ) 

2
E
vV
16
Special Graph Structures
กราฟอย่ างง่ ายทีม่ ีลกั ษณะพิเศษบางรูปแบบ :
•
•
•
•
•
•
Complet graphs Kn
Cycles Cn
Wheels Wn
n-Cubes Qn
Bipartite graphs
Complete bipartite graphs Km,n
17
กราฟสมบูรณ์ (Completed Graphs)
• กราฟแบบ Complet graph ที่มีจุดยอด n จุดซึ่งแทนได้ดว้ ย
สัญลักษณ์ Kn คือ กราฟที่ประกอบด้วยด้านเพียง 1 ด้านระหว่างจุด
ยอดแต่ละคู่ที่แตกต่างกัน
u,vV: uv{u,v}E.
K1
K2
จานวน ด้ านใน Kn เท่ ากับ
K4
K3
n 1
i
i 1
n ( n  1)
2
K5
K6
edges.
18
Cycles
• G เป็ นกราฟอย่างง่าย แล้ว G จะเป็ น cycle Cn ภายใต้ n3
ถ้ าเซตของจุดยอด V={v1,v2,… ,vn} แล้ว
E={{v1,v2},{v2,v3},…,{vn1,vn},{vn,v1}}.
C3
C4
C5
C6
C7
C8
How many edges are there in Cn?
19
Wheels
• G เป็ นกราฟอย่างง่าย แล้ว G จะเป็ น wheel Wn, ภายใต้ n3, ถ้า
กราฟ G เป็ น Cn และสามารถหา จุดยอด vhub ที่สามารถเชื่อมโยงทุก
จุดยอดใน Cn เข้าด้วยกัน
{{vhub,v1}, {vhub,v2},…,{vhub,vn}}.
W3
W4
W5
W6
W7
How many edges are there in Wn?
W8
20
n-cubes (hyper-cubes)
• G เป็ นกราฟอย่างง่าย, nN แล้ว G เป็ นhypercube Qn ถ้า สามารถสร้าง
กราฟชุดที่ 2 Qn-1 โดยที่แต่ละจุดยอดถูกเชื่อมต่อเข้าด้วยกันในทุก
ตาแหน่งที่สอดคล้องกัน เช่น Q0 คือ hypercube ประกอบด้วยจุดยอด 1
จุดยอด.
Q0
Q1
Q2
Q3
Q4
Number of vertices: 2n. Number of edges:Exercise to try!
21
n-cubes (hyper-cubes)
กราฟแบบ n-Cubes ซึ่งแทนได้ด้วยสัญลักษณ์ Qn เป็นกราฟ
ที่มีจานวนจุด เป็น 2n โดย n แทนค่าความยาวของบิต
เช่นถ้ากราฟมี 2 จุด แสดงว่า กราฟแบบ n-Cubes มีด้าน
เพียง 1 ด้าน และมีความยาวเพียง 1 บิต ดังกราฟ Q1และ nCubes มีด้าน4ด้านจะมีความยาวบิตเป็น 2 เช่น Q2 และ nCubes มีด้าน 4 จะมีความยาวบิตเป็น 3 เช่น Q3.
22
กราฟสองส่ วน(Bipartite Graphs)
• G=(V,E) เป็ น bipartite (two-part) ก็ต่อเมื่อ
V = V1∩V2 เมื่อ V1V2= และeE: v1V1,v2V2: e={v1,v2}.
• bipartite คือกราฟที่มีสมบัติวา่ สามารถแบ่งเซตของจุดยอดออกเป็ น 2 เซ็ตย่อย
โดยที่เซ็ตย่อยทั้งสองนั้นจะมีเส้นที่เชื่อมระหว่างจุดยอด แต่ตอ้ งไม่มีเส้นเชื่อมจุดยอด
ภายในเซ็ตย่อย เดียวกัน
This definition can easily be adapted for the
case of multigraphs and directed graphs as well.
V1
V2
Can represent with
zero-one matrices.
23
กราฟสองส่ วนสมบูรณ์
(Complete Bipartite Graphs)
• เมื่อ m,nN, Km,n เป็ น complete bipartite graph
ถ้าให้ |V1| = m และ |V2| = n,
แล้ว E = {{v1,v2}|v1V1  v2V2}.
– ถ้ ามี m จุดยอดในกราฟทางซ้าย
และ n จุดยอดในกราฟทางขวา
แล้วทุกจุดยอดในกราฟทางซ้าย
จะมีเส้นเชื่อมต่อกับทุกจุดยอดกับ
กราฟทางขวา.
K4,3
24
ตัวอย่ าง กราฟสองส่ วนสมบูรณ์
25
ตัวอย่ าง : กราฟสองส่ วน
กราฟ G เป็นกราฟสองส่วนหรือไม่ ?
ตอบ G เป็น กราฟสองส่วน เพราะสามารถแบ่งเซตของจุด
ยอดเป็นสองเซต คือ V1 = {a, d, e, f} และ V2 = {b, c, g} โดยที่
แต่ละจุดภายในเซต V1 ไม่มีเส้นเชือ
่ มกัน และแต่ละจุด
ภายในเซต V2 ก็ไม่มีเส้นเชือ
่ มเช่นเดียวกัน
26
ตัวอย่ าง : กราฟสองส่ วน
กราฟ Gและ H เป็นกราฟสองส่วนหรือไม่ ?
27
เฉลย : กราฟสองส่ วน
• วิธีทา กราฟ G เป็ นกราฟสองส่ วน เพราะสามารถแบ่งเซตของจุดเป็ น
สองเซต คือ
• V1 = {a, b, d} และ V2 ={c, e, f, g}
• โดยที่แต่ละจุดยอดในเซต V1 ไม่มีเส้นเชื่อม และแต่ละจุดยอดในเซต
V2 ก็ไม่มีเส้นเชื่อมเช่นเดียวกัน (กราฟ G เป็ นกราฟสองส่ วน
• ไม่จาเป็ นว่าทุกๆ จุดในเซต {a, b, d}ต้องอยูต่ ิดกับทุกๆจุดในเซต {c, e, f,
g}
• ตัวอย่างเช่น b และ g ไม่ได้อยูต่ ิดกัน)
28
เฉลย : กราฟสองส่ วน
• กราฟ H ไม่ใช่กราฟสองส่ วน เพราะเซตของจุดยอดไม่สามารถแบ่งได้
เป็ น 2 เซตย่อยได้ โดยที่แต่ละเซตย่อย 2 เซตย่อยนั้น จุดใดๆในเซตย่อย
นั้นไม่มีเส้นเชื่อมกัน
• ดังนั้นจะไม่สามารถติดต่อจุดสองจุดจาก เซตย่อยเดียวกัน (ผูเ้ รี ยนควร
พิสูจน์โดยพิจารณาจากจุด a, b, f)
29
กราฟย่ อย (Subgraphs)
• Subgraph ของกราฟ G=(V,E) คือกราฟ H=(W,F) เมื่อ
WV และ FE.
G
H
30
ประยุกต์ ของ Subgraph
• บางครั้งเราต้องการเพียงบางส่ วนของกราฟเพื่อใช้ในการแก้ปัญหา เช่น
เราต้องการเพียงบางส่ วนของศูนย์คอมพิวเตอร์ขนาดใหญ่ในกรุ งเทพฯ
เชียงใหม่ ขอนแก่นและสงขลา เราสามารถเพิกเฉยกับคอมพิวเตอร์ใน
ศูนย์คอมพิวเตอร์ที่อื่นๆ และสายโทรศัพท์ท้ งั หมดที่ไม่เชื่อมกับศูนย์
คอมพิวเตอร์ท้ งั 4 แห่ง ในกราฟสาหรับระบบขนาดใหญ่ เราสามารถ
กาจัดสิ่ งที่เหมือนกันที่เราสนใจของศูนย์คอมพิวเตอร์ท้งั 4 แห่งที่
เหมือนกันได้และสามารถกาจัดเส้นทางทั้งหมดได้เมื่อเส้นถูกจากัดออก
จากกราฟ กราฟที่ได้ออกมาจะเรี ยกว่ากราฟย่อยที่ได้จากกราฟเดิม
31
Graph Unions
• G1G2 เป็ น graph union ของกราฟอย่างง่าย
G1=(V1, E1) และ G2=(V2,E2) โดยที่ (V1V2, E1E2).
32
รู ปแทนของกราฟ และไอโซมอฟิ คซ์
(Graph Representations & Isomorphism)
• Graph representations:
– Adjacency lists.
– Adjacency matrices.
– Incidence matrices.
• Graph isomorphism:
– กราฟสองกราฟจะ isomorphic ก็ต่อเมื่อ กราฟทั้งสองเป็ นกราฟ
เดียวกัน.
33
Adjacency Lists
• จัดเก็บอยูใ่ นรู ปตาราง โดยแต่ละแถว จะเก็บจุดยอดที่ถูกเชือ่ มโยงกับจุด
ยอดที่สนใจ เช่น จุดยอด a มีจุดยอดเชื่อมโยงกับ b และ จุดยอด c.
b
a
c
d
e
f
A d ja cen t
V ertex V ertices
a
b, c
b
a , c, e, f
c
a, b, f
d
e
b
f
c, b
34
เมตริกซ์ ประชิด
(Adjacency Matrices)
• ให้ A เป็ นเมตริ กซ์ และaij เป็ นสมาชิกแถวที่ i , คอลัมภ์ที่ j แล้ว A
จะเรี ยกว่าเมตริ กซ์ประชิด (Adjacency Matrices) ถ้ า
aij =
1 เมื่อ มีเส้นเชื่อมโยงระหว่างจุดยอด i และ จุดยอด j
0 เมื่อไม่มีเส้นเชื่อมโยงระหว่างจุดยอด i และ จุดยอด j
a b c d e f
b
a
c
d
e
f
a
b
c
d
e
f
0
1
1
0
0
0
1
0
1
0
1
1
1
1
0
0
0
1
0
0
0
0
0
0
0
1
0
0
0
0
0
1
1
0
0
0
35
เมตริกซ์ กระทบ
(Incidence matrices)
• ให้ G เป็ นกราฟอย่างง่าย โดยที่ v1,v2,v3,….,vn และ
e1,e2,e3,…,em เป็ นจุดยอดและ ด้านต่างๆของกราฟ G เขียนอยูใ่ นรู ป
เมตริ กซ์ประชิด M (ขนาด n * m)มีสมาชิกเป็ น mij ถ้า mij = 1 เมื่อด้าน
ej ตกกระทบบนจุด vi และ ถ้า mij = 0 แสดงว่าไม่มีดา้ น ej ตกกระทบบน
จุด vi
M=
v1
v2
v3
v4
e1
e2
e3
e4
e5
1
0
1
0
0
0
1
0
1
1
0
0
0
0
1
1
0
1
0
1
จากเมตริกซ์ M กราฟประชิดมีรูปร่างอย่างไร ?
36
เฉลย : เมตริกซ์ กระทบ
e2
e1
v3
e1
e4
v1
v4
e3
v2
v1
v2
v3
v4
1
0
1
0
e2 e3
0
0
1
0
1
1
0
0
e4 e5
0
0
1
1
0
1
0
1
e5
37
เมตริกซ์ กระทบ
Test: จากกราฟ G ที่กาหนดให้จงหา เมตริ กซ์ประชิด และ เมตริ กซ์
กระทบ
e1
v2
G: v1
e2
e5
e4
v4
v3
Ans
v1
v2
v3
v4
v1
v2 v3
v4 v5
0
1
1
0
1
0
1
1
0
1
1
0
1
1
0
1
0
0
0
0
e3
e1
v1
v2
v3
v4
1
1
0
0
e2 e3
0
1
0
1
0
0
1
1
e4 e5
1
0
1
0
0
1
1
0
38
กราฟถอดแบบ(Graph Isomorphism)
นิยาม ให้ G1=(V1, E1) และ G2=(V2, E2) เป็ นกราฟอย่างง่าย และให้
f:V1V2 ในแบบสมนัยกันระหว่างเซตจองจุดยอดของกราฟ G1และ
กราฟG2 ซึ่งถ้า e1 กับ e2 เป็ นด้านประชิดของ G1 แล้วได้วา่ f(e1) กับ
f(e2) จะเป็ นด้านประชิดของ G2 แล้วจะกล่าวได้วา่ กราฟ G1 มี
isomorphic กับกราฟ G2 หรื ออาจกล่าวได้วา่ กราฟทั้งสองต่างเป็ นกราฟ
ถอดแบบกัน.
e1
v2
H: e4 v3 e5
G: v1
v2
e5
e4
e2
v4
v3
v1
e1
e3
e2
e3
v4
39
กราฟถอดแบบ(Graph Isomorphism)
กราฟ G1 และ G2 เป็นกราฟถอดแบบกันก็ต่อเมื่อ การ
เรียงลาดับของจุดและด้าน ทาให้เมตริกซ์ประชิดและ
เมตริกซ์ตกกระทบของกราฟสองชุดนี้ เหมือนกัน
โดยตรวจสอบว่า
1. มีด้านเท่ากันหรือไม่?
2. มีจุดเท่ากันหรือไม่?
3. มี degrees ของแต่ละจุดเมื่อเปรียบเทียบระหว่างกราฟ 2 รูป
เท่ากันหรือไม่ ?
4. เมตริกซ์ประชิดระหว่างกราฟ 2 รูปเท่ากันหรือไม่ ?(โดย
การเทียบระหว่างจุดที่สมนัยกัน)
40
ตัวอย่ าง Isomorphism
• G1 จะ ไอโซโมฟิ คซ์ กับกราฟ G2 ถ้าสามารถแสดงได้วา่ ด้าน ระหว่าง
จุดยอดบนกราฟเหมือนกัน.
a
b
d
c
G1
#vertices =5
---------------#deg(3)
{a, b, c, e}
e #deg=2
{d}
#vertices=5
--------------#deg(4)
#deg(3)
#deg=2
G2
41
ตัวอย่ าง Isomorphism
• G3 จะ ไอโซโมฟิ คซ์ กับกราฟ G4 ถ้าสามารถแสดงได้วา่ มีดา้ น
ระหว่างจุดยอดบนกราฟเหมือนกัน.
2
b
1
a
d
c
5
e
G3
3
f
6
4
G4
42
ตัวอย่ าง Isomorphism
• Test กราฟ G5 เป็ น isomorphic กับ กราฟ G6หรื อไม่?
G5
A
1
B
F
G
3
G6
4
E
D
C
2
5
6
7
ANS: A - 7, B - 4, C - 3, D - 6, E - 5, F - 2, G - 1
43
Quiz -V
ให้ เลือกทดสอบอย่ างน้ อย 1 ข้ อ
1.กาหนดกราฟแบบระบุทิศทางมาให้ ให้แสดงการแทนกราฟด้วย
adjacency matrices และ incidence matrices
2.ให้กราฟแบบไม่ระบุทิศทางมาให้สองกราฟ ให้แสดงว่ากราฟทั้งสอง
เป็ นกราฟถอดแบบกัน
(15 นาที)
44
45
การเชื่อมโยงบนกราฟ (Connectivity)
• (กราฟไม่ ระบุทศิ ทาง) ความยาวของเส้นทาง (path) จากจุดยอด u ไปยัง
จุดยอด v มีค่า n คือลาดับของด้านประชิด จากจุดยอด u ไปยังจุดยอด v.
• และเส้นทางจะเป็ น circuit ถ้า u=v.
• (กราฟระบุทศิ ทาง) : ความยาวของเส้นทาง (path) จากจุดยอด u ไปยังจุด
ยอด v มีค่า n คือลาดับของด้านประชิด จากจุดยอด u ไปยังจุดยอด v โดย
พิจารณาตามทิศทางของการประชิดระหว่างจุดยอด
46
ความเชื่อมโยงบนกราฟ(Connectedness)
• connected graph หมายถึงกราฟที่ทุกจุดยอดบนกราฟมีเส้นทาง
ที่สามารถเชื่อมโยงไปยังจุดยอดหนึ่งจุดยอดใดบนกราฟ.
• ให้ A เป็ นเมตริ กซ์ประชิด บนกราฟ G เส้นทางมีความยาวขนาด k
จาก vi ไป vj จะเท่ากับ (Ak)i,j.
• cut vertex or cut edge คือจุดยอดหรื อด้านที่เมื่อโดนลบหรื อ
ตัดออกไปแล้วจะทาให้เกิดการแบ่งกราฟออกเป็ นสองส่ วน.
47
Euler & Hamilton Paths
• Euler circuit ในกราฟ G คือวงจรอย่างง่ายที่ประกอบด้วย
ด้ านทุกด้ านใน G.
• Euler path ในกราฟ G คือเส้นทางอย่างง่ายที่ประกอบด้วย
ด้ านทุกด้ านใน G.
• Hamilton circuit คือวงจรที่จุดยอดทุกจุดในกราฟ G จะ
ถูกเดินผ่านเพียงครั้งเดียว.
• A Hamilton path คือเส้นทางเดินที่จุดยอดทุกจุดในกราฟ
G จะถูกเดินผ่านเพียงครั้งเดียว.
48
ตัวอย่ าง: Euler circuit
A
B
A
G
B
C
F
C
D
H
E
D
49
ตัวอย่ าง: Euler path
?
50
โจทย์ คาถาม
• กราฟแบบไม่ระบุทิศทางในรู ปข้างล่างนี้ กราฟใดมีวงจรออย
เลอร์ กราฟใดไม่มีวงจรออยเลอร์ และกราฟใดมีเส้นทางเดิน
แบบออยเลอร์ บ้าง?
51
ตัวอย่ าง: Hamilton circuit & Hamilton path
52
โจทย์ คาถาม
• กราฟแบบไม่มีทิศทางในรู ปข้างล่างนี้ กราฟใดมีวงจรแฮมมิลตัน
กราฟใดไม่มีวงจรออยเลอร์ และกราฟใดมีเส้นทางเดินแบบแฮมมิล
ตัน บ้าง?
53
ปัญหาการข้ ามสะพาน Königsberg
• จะมีวิธีการเดินข้ามสะพานทั้งเจ็ดแบบไม่ซ้ ากัน โดยมีจุดเริ่ มต้นและจุด
สุ ดท้ายเป็ นจุดเดียวกันได้หรื อไม่?
A
D
B
C
The original problem
Equivalent multigraph
54
Euler Circuit & Euler Path Theorems
• ทฤษฎี: มัลติกราฟของกราฟเชื่อมต่อจะมีวงจรออยเลอร์
(euler circuit ) ถ้าทุกจุดยอดต่างก็มีจานวนดีกรี เป็ น
จานวนคู.่
• ทฤษฎี: มัลติกราฟของกราฟเชื่อมต่อจะมีเส้นทางออยเลอร์
(euler path) ถ้าหาได้วา่ มีจุดยอดสองจุดที่มีดีกรี เป็ น
จานวนคี่.
55
ปัญหาระยะทางสั้ นทีส่ ุ ด
(Shortest-Path Problems)
• Single Source Shortest Path by Dijkstra’s algorithm
G7
A
2
3
B
5
D
1
C
4
F
3
2
E
2
1
6
G
ต้องการหาระยะทางสั้นทีส
่ ุดทีจ
่ ะเดินทาง จากจุด
เริ่มต้น(source) ไปยังจุดอื่นใน G จะทาอย่างไร ?
56
ปัญหาระยะทางสั้ นทีส่ ุ ด
(Shortest-Path Problems)
• Single Source Short Path by Dijkstra’s algorithm
ABCDEFG
G7
A
2
3
B
5
D
1
C
4
F
3
2
E
2
1
6
G
A
B
C
D
E
F
G
0325000
3000200
2000040
5000312
0203006
0041001
0002610
ต้องการหาระยะทางสั้นที่สุดที่จะเดินทาง
จากจุด เริ่มต้น(source) ไปยังจุดอื่นใน G จะทา
57
G7
A
2
3
5
D
1
C
4
F
No.
0
B
3
E
2
1
Source
{A}
2
Dijkstra’s algorithm
6
G
Distance from A
min
weight
-
B
C
D
E
F
G
3
2
5



1
2
3
4
5
6
58
G7
A
2
3
5
D
1
C
4
F
No.
B
3
2
E
2
1
Source
Dijkstra’s algorithm
6
G
Distance from A
min
weight
B
C
D
E
F
G
0
{A}
-
3
2
5



1
{A,C}
C
3
2
5

6

2
3
4
5
6
59
G7
A
2
3
5
D
1
C
4
F
No.
B
3
2
E
2
1
Source
Dijkstra’s algorithm
6
G
Distance from A
min
weight
B
C
D
E
F
G
0
{A}
-
3
2
5



1
{A,C}
C
3
2
5

6

2
{A,C,B}
B
3
2
5
5
6

3
4
5
6
60
G7
A
2
3
5
D
1
C
4
F
No.
B
3
2
E
2
1
Source
Dijkstra’s algorithm
6
G
Distance from A
min
weight
B
C
D
E
F
G
0
{A}
-
3
2
5



1
{A,C}
C
3
2
5

6

2
{A,C,B}
B
3
2
5
5
6

3
{A,C,B,D}
D
3
2
5
5
6
7
4
5
6
61
G7
A
2
3
5
D
1
C
4
F
No.
B
3
2
E
2
1
Source
Dijkstra’s algorithm
6
G
Distance from A
min
weight
B
C
D
E
F
G
0
{A}
-
3
2
5



1
{A,C}
C
3
2
5

6

2
{A,C,B}
B
3
2
5
5
6

3
{A,C,B,D}
D
3
2
5
5
6
7
4
{A,C,B,D,E}
E
3
2
5
5
6
7
5
6
62
G7
3
A
2
5
D
1
C
4
F
No.
B
3
2
E
2
1
Source
Dijkstra’s algorithm
6
G
Distance from A
min
weight
B
C
D
E
F
G
0
{A}
-
3
2
5



1
{A,C}
C
3
2
5

6

2
{A,C,B}
B
3
2
5
5
6

3
{A,C,B,D}
D
3
2
5
5
6
7
4
{A,C,B,D,E}
E
3
2
5
5
6
7
5
{A,C,B,D,E,F}
F
3
2
5
5
6
7
6
63
G7
3
A
2
5
D
1
C
4
F
No.
B
2
3
E
2
6
G
1
Source
Dijkstra’s algorithm
Distance from A
min
weight
-
B
C
D
E
F
G
3
2
5


6

6
0
{A}
1
{A,C}
C
3
2
5
2
{A,C,B}
B
3
2
5

5
3
{A,C,B,D}
D
3
2
5
5
6

7
4
{A,C,B,D,E}
E
3
2
5
5
6
7
5
{A,C,B,D,E,F}
F
3
2
5
5
6
7
6
{A,C,B,D,E,F,G}
G
3
2
5
5
6
7

Solution Paths : A -> B; A ->C; A ->D; A -> B -> E; A ->C -> F; A ->D -> G
64
G7
3
A
2
5
D
1
C
4
F
No.
B
2
3
E
2
6
G
1
Source
Dijkstra’s algorithm
Distance from A
min
weight
-
B
C
D
E
F
G
3
2
5



0
{A}
1
{A,C}
C
3
2
5

6

2
{A,C,B}
B
3
2
5
5
6

3
{A,C,B,D}
D
3
2
5
5
6
7
4
{A,C,B,D,E}
E
3
2
5
5
6
7
5
{A,C,B,D,E,F}
F
3
2
5
5
6
7
6
{A,C,B,D,E,F,G}
G
3
2
5
5
6
7
65