chapter 6 โครงสร้างข้อมูลแบบกราฟ (graph ... ·...
TRANSCRIPT
2
• เปนโครงสรางทไมเปนแบบรายการเชงเสน (Non-linear) • กราฟเปนโครงสรางขอมลประเภทหนงทแสดง
ความสมพนธระหวาง vertex และ edge กราฟจะประกอบดวยกลมของ vertex ซงแสดงในกราฟดวยสญลกษณรปวงกลม และ กลมของ edge (เสนเชอมระหวาง vertex) ใชแสดงถงความสมพนธระหวาง vertex หากม vertex ตงแต 2 vertex ขนไปมความสมพนธกน ใชสญลกษณเสนตรงซงอาจมหวลกศร หรอไมมกได
• กราฟ คอ เซตของจด (points) และเซตของเสน (lines) ซงเสนจะเปนตวเชอมโยงจากจดหนงไปยงอกจดหนง โดยเรยกจดเหลานวาโหนดของกราฟ (nodes of graph) และเรยกเสนวาดาน (edges)
• Directed edge (ขอบมทศทาง)
• เขยนดวยคอนดบ (μ,ν)
• เชน a flight
• Undirected edge (ขอบไมมทศทาง)
• เขยนดวยคทไมเปนอนดบ (μ,ν)
• เชน a flight route
• Directed graph (กราฟระบทศทาง)
• ทกขอบในกราฟเปน ขอบระบทศทาง
• เชน route network
• Undirected graph (กราฟไมระบทศทาง)
• ทกขอบในกราฟเปน ขอบไมระบทศทาง
• เชน flight network
ORD PVD
ORD PVD
FlightAA126
849miles
4
EXAMPLE
the set of vertices V = {0,1,2,3,4}
the set of edges E = {01, 12, 23, 34, 04, 14, 13}
5
• ในบางครงการเชอมตอระหวางโหนดสองโหนดใดๆ อาจมดานเชอมตอไดหลายๆ ดาน ซงตางกท าใหเกดการเชอมโยงตอระหวางโหนดสองโหนด
• ส าหรบบางโหนดอาจจะไมมการเชอมโยงใด ๆ เกดขน และบางดานกเชอมกบโหนดเดม ซงจะเรยกดานทเกดขนในลกษณะนวาลป (loops)
LOO
P
6
ก าหนดให VG คอ เซตของโหนดในกราฟ G
EG คอ เซตของดานในกราฟ G
สามารถเขยนแทนความหมายของกราฟไดดงน
VG = { a, b, c, d }
EG = { 1, 2, 3, 4, 5, 6, 7, 8 }
Applications
• เสนทางการคมนาคม Transportation networks• Highway network• Flight network
7
Applications• เครอขายคอมพวเตอร Computer networks
• Local area network• Internet• Web
8
◎
• End vertices (จดยอดปลาย) (or endpoints) of an edge• U and V are the endpoints of a
• Edges incident (ตกกระทบ) on a vertex• a, d, and b are incident on V
• Adjacent (ประชด) vertices• U and V are adjacent
• Degree (ดกร) of a vertex• X has degree 5
• Parallel edges (ดานขนาน)• h and i are parallel edges
• Self-loop (ลป)• j is a self-loop
9
◎
• Path (ทางเดน)• ล าดบของจดยอดและขอบ• เรมทจดยอด และจบทจดยอด
• Simple path (ทางเดนอยางงาย)• ทางเดนทมจดยอดและขอบแตกตางกน
◎ ตวอยาง
◎ P1=(V,b,X,h,Z) เปนทางเดนอยางงาย
◎ P2=(U,c,W,e,X,g,Y,f,W,d,V) เปนทางเดนแตไมใชทางเดนอยางงาย
10
◎
• Cycle (วงจร)• ทางเดนทมจดเรมและจดปลายเดยวกน• Simple cycle (วงจรอยางงาย)• วงจรทมจดยอดและขอบแตกตางกน
◎ ตวอยาง
◎ C1=(V,b,X,g,Y,f,W,c,U,a,V) เปนวงจรอยางงาย
◎ C2=(U,c,W,e,X,g,Y,f,W,d,V,a,U) เปนวงจรแตไมเปน
◎ วงจรอยางงาย
11
กราฟจะเรยกวา กราฟอยางงาย (Simple Graph) ถามคณลกษณะ
ตอไปน
◎ 1. กราฟตองไมมลป (Loops)
◎ 2. โหนดแตละคจะตองมดานไมเกน 1 ดาน
12กราฟอยางงาย (Simple Graph)
13
◎ แบงออกเปน 2 ประเภท ไดแก
◎ 1. กราฟไมมทศทาง (Undirected Graphs)
◎ 2. กราฟมทศทาง (Directed Graphs)
ประเภทของกราฟ
● คอ กราฟทมดาน (Edges) ของกราฟจะไมมลกศรแสดง
ทศทางความ สมพนธทเกดขน (มองความสมพนธไดทง
สองดาน)
14
กราฟไมมทศทาง (Undirected Graphs)
กราฟไมมทศทาง (Undirected Graphs)
15
กราฟมทศทาง (Directed Graphs)
● คอ กราฟทมดาน (Edges) ของกราฟมลกศรแสดงทศทาง
ความสมพนธทเกดขน
กราฟมทศทาง (Directed Graphs)
16
การแทนโครงสรางขอมลกราฟ
คอ การแทนความสมพนธทเกดขนจากรปกราฟดวยรปทสามารถประมวลผลดวยคอมพวเตอร ซงแบงออกเปน 2 วธไดแก
1. การแทนดวย Adjacency Matrix
2. การแทนดวย Node Directory
17
• เมตรกซประชด เปนวธการแทนกราฟโดยจดเกบขอมลดวย
โครงสรางแบบ Matrix
• Implement โดยใชโครงสราง Array 2 มต
• การเกบขอมลใน Adjacency Matrix ม 2 แบบคอ
1.กรณ Unweighted Graph ใหก าหนดคาทเกบดงน
ถาม edge (v,w) ให A[v,w] = 19
ถาไมม edge (v,w) ให A[v,w] = 09
2. กรณ Weighted Graph ใหก าหนดคาทเกบดงน
ถาม edge (v,w) ให A[v,w] = weight
ถาไมม edge (v,w) ให A[v,w] = 09
18
การแทน Undirected Graphs ดวย Adjacency Matrix
19
การแทน Directed Graphs ดวย Adjacency Matrix
20
การแทนโครงสรางขอมลกราฟดวย Linked List
การแทนดวย Linked List จะเกบขอมลเฉพาะโหนดทมความสมพนธกน (โหนดทไมเปนศนย) เทานน ซงท าใหประหยดเนอทไดมากกวาการแทนกราฟดวยอารเรย
การแทนกราฟดวย Linked List แบงออกเปน 2รปแบบ ไดแก1. การแทนดวย Node Directory ประกอบดวย 2 สวน คอ- Node Directory- Edge Information2. การแทนกราฟแสดงดวยวธ Multi-List
21
การแทนโครงสรางขอมลกราฟดวย Linked List
• ลสตประชด เปนวธการแทนกราฟโดยจดเกบขอมลดวย
โครงสรางแบบ Singly Linked List
• ประกอบดวยลสตของจดยอด และลสตของขอบ
• การเกบขอมลใน Adjacency list ม 2 แบบ คอ
1.กรณ Unweighted Graph ใหก าหนดคาทเกบ ดงน
• ถาม edge (v,w) ให Pointer ของ v ชไปยง w
• ถาไมม edge (v,w) ให Pointer ของ v ชไปยง Null
2. กรณ Weighted Graph ใหก าหนดคาทเกบ ดงน
• ถาม weight บน edge (v,w) ให Pointer ของ v ชไปยง
w และเกบขอมล weight ดวย
22
การแทนดวยLinked List
23
การแทนดวย Node Directory
การแทน Undirected Graphs ดวยวธ Node Directory
24
การแทนดวย Node Directory
การแทน Directed Graphs ดวยวธ Node Directory
25
การแทนดวย Multi List
เมอ
Vi หมายถง โหนด i
Vj หมายถง โหนด j
NEXTi หมายถง พอยนเตอรทชไปยงโหนดทอยถด
จากโหนด Vi ทท าใหเกดดาน
NEXTj หมายถง พอยนเตอรทชไปยงโหนดทอยถด
จากโหนด Vj ทท าใหเกดดาน
26
การแทนดวย Multi List
แสดงเซตของดานดวย Multi List
27
กราฟทม Weighted Edges
คอ กราฟทมการก ากบขอมลอยบนดานของกราฟ
โดยขอมลดงกลาวนนอาจจะหมายถงระยะทาง จ านวนวน
หรอจ านวนเงน เปนตน ทงนขนอยกบความสมพนธของ
กราฟนนทแทนความหมายของสงใด เชน ตวอยางแผนท
แสดงระยะทางจากระหวางเมองตาง ๆ
28
ตวอยางกราฟทม Weighted Edges แสดงระยะทางระหวางเมองตาง ๆ
29
• การแทรกเวอรเทกซ (Insert Vertex)
• การลบเวอรเทกซ (Delete Vertex)
• การเพมเอดจ (Add Edge)
• การลบเอดจ (Delete Edge)
• การคนหาเวอรเทกซ (Find Vertex)
• การทองเขาไปในกราฟ (Traverse Graph)
30
การแทรกเวอรเทกซ (Insert Vertex)
31
การลบเวอรเทกซ (Delete Vertex)
32
การเพมเอดจ (Add Edge)
33
การลบเอดจ (Add Edge)
34
การคนหาเวอรเทกซ (Find Vertex)
35
การทองเขาไปในกราฟ (Traverse Graph)
• การทองเขาไปใน กราฟแบบแนวลก (Depth-First
Search : DFS)
• การทองเขาไปใน กราฟแบบแนวกวาง (Breadth-First
Search :BFS)
• การทองเขาไปใน กราฟแบบล าดบความส าคญ
(Priority First Search :PFS)
36
การทองเขาไปในกราฟ (Traverse Graph)
• การทองเขาไปในกราฟแบบแนวลก (Depth-First Search) เปนลกษณะการทองเขาไปยงโหนดเรมตน แลวใหโหนดใกลเคยงเปนโหนดเรมตน เขาเยยมโหนดท าตอไปจนกระทงไมมโหนดใกลเคยงจงยอนกลบมายงโหนดกอนหนา และเขาเยยมโหนดอกดานดวยรปแบบเดยวกนจนครบ เทยบไดกบการทองเขาไปในทรแบบพรออเดอร
1.Push vertex2.Pop vertex และประมวลผล3.Push adjacent ทงหมดของ Vertex ในขอ 24.ท าซ าขอ2-3จนกวาจะครบทก Vertex และ Stack วาง
37
การทองเขาไปในกราฟ (Traverse Graph)
• การทองเขาไปในกราฟแบบแนวลก (Depth-First Search)
38
การทองเขาไปในกราฟ (Traverse Graph)
• การทองเขาไปในกราฟแบบแนวกวาง (Breath-First Search)
เปนการทองเขาไปในกราฟโดยเขาเยยมโหนดตวแรกและด าเนนการ หากมโหนดใกลเคยงจะด าเนนการกบโหนดทอยดานซายกอน1.Enqueue vertex2.Dequeue vertex และประมวลผล3.Enqueue adjacent ทงหมดของ Vertex ในขอ 24.ท าซ าขอ 2-3 จนกวาจะครบทก Vertex และ Queue วาง
39
การทองเขาไปในกราฟ (Traverse Graph)
• การทองเขาไปในกราฟแบบแนวกวาง (Breath-First Search)
40
การทองเขาไปในกราฟ (Traverse Graph)
• การทองเขาไปในกราฟแบบแนวล าดบความส าคญ (Priority-First Search)
มรปแบบของการทองเขาไปเยยม (Visit) โหนดตางๆ ดวยรปแบบของควทม
ล าดบความส าคญ (Priority Queues) แทนทโครงสรางสแตกหรอควแบบทวไป คอ การเพมควเขามาโดยพจารณาและด าเนนการในล าดบทส าคญกอน
41
กราฟประกอบดวย• โหนดเวอรเทกซ (Vertex) • เซตของเสนเชอมระหวางเวอรเทกซหรอเอดจ (Edge) • เสนเชอมระหวางเวอรเทกซทงแบบมทศทาง (Directed edge) • กราฟเสนเชอมไมมทศทางแนนอน เรยกวา กราฟแบบไมมทศทาง
(Undirected edge) • โครงสรางกราฟมทงเสนเชอมแบบมทศทาง และเสนเชอมแบบไมม
ทศทาง เรยกวา กราฟผสม (Mixed Graph) • ถามเสนเชอมเชอมระหวางโหนด 2 โหนดใดๆ มากกวา 1 การส ารวจ
ตามแนวกวาง (Breadth-first) การส ารวจตามแนวลก (Depth-first) และ การส ารวจตามล าดบ (Priority-first)
42
โอภาส เอยมสรวงศโครงสรางขอมล (Data Structures) เพอการออกแบบโปรแกรมคอมพวเตอร.—กรงเทพฯ: ซเอดยเคชน, 2549.
Q & A
43