Your SlideShare is downloading. ×

Graph

610

Published on

Graph

Graph

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
610
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. นิยามกราฟ • กราฟ เป็ นโครงสร้างที่นามาใช้เพื่อแสดงความสัมพันธ์ระหว่างวัตถุ โดย ํ แทนวัตถุดวยเวอร์เท็กซ์ และเชื่อมโยงความสัมพันธ์ดวยเอดจ์ ้ ้ บทที่ 7 • เขียนในรู ปของสัญลักษณ์ได้เป็ น G = (V,E) • ซึ่ง V(G) คือ เซตของเวอร์เทกซ์ที่ไม่ใช่เซ็ตว่าง และมีจานวนจํากัด ํ กราฟ (Graph) • E(G) คือ เซตของเอดจ์ ซึ่ งเขียนด้วยค่ของเวอรเทกซ คอ เซตของเอดจ ซงเขยนดวยคู องเวอร์เท็กซ์ เอดจ์ A B เวอร์เท็กซ์ เวอร์เท็กซ์ องค์ ประกอบโครงสร้ างข้ อมูลแบบกราฟ ตัวอย่ าง เวอร์ เท็กซ์ V(G) ได้ แก่ A B C D E A B เอดจ์ E(G) ได้ แก่ เส้ นที่เชื่อมโยงจาก A ไป B เส้้ นที่เี ชืื่อมโยงจาก A ไป C โ เส้ นที่เชื่อมโยงจาก A ไป D เส้ นที่เชื่อมโยงจาก A ไป E C D E เส้ นที่เชื่อมโยงจาก B ไป E V = {1, 2, 3, 4} V(G) = {A, B, C, D, E} E = {(1,2), (1,4), (2,3), (3,4)} E(G) = {(A,B), (A,C), (A,D), (A,E), (B,E)} กราฟแบบไม่ มีทิศทาง7.1.2 ชนิดของกราฟ 1) กราฟแบบไม่มีทิศทาง (Undirected Graph) จะเป็ น กราฟที่มีเส้นเชื่อมโยงระหว่างเวอร์เทกซ์ท้ง 2 ซึ่ งไม่มีทิศทางว่าจากเวอร์ ั เทกซ์ใดไปยังเวอร์เทกซ์ใด การเขียนเซตของเส้นเชื่อมโยงจะเขียนอยูใน ่ เครองหมายวงเลบ เครื่ องหมายวงเล็บ V(G) = {a, b, c, d} E(G) = {(a,b) , (b,c), (c,d), (d,b), (a,c)} หรือ E(G) = {(b,a) , (c,b), (d,c), (b,d), (c,a)} 1
  • 2. ภาพตัวอย่ างกราฟไม่ มีทิศทาง ภาพตัวอย่ างกราฟไม่ มีทิศทาง V(G) = {1, 2, 3, 4, 5} E(G) = {(1,2) , (2,4), (4,5), (5,3), (3,4), (2,3)} กราฟทีมีทศทาง (Digraph) ่ ิ กราฟแบบมีทิศทาง V(G) = {a, b, c, d} • กราฟแบบมีทศทาง = กราฟที่มีเอดจ์ เป็ นหัวลูกศร ซึ่ งแสดงทิศทาง ิ E(G) = {<a,b> , <a,c>, <b,d>, <d,c>, <c,b>} จากเวอร์ เท็กซ์ หนึ่ง ไปยังอีกเวอร์ เท็กซ์ หนึ่ง (Directed Graph) A B กรุงเทพ เวียงจันทร์ จากภาพ มีเส้นทางจากกรุ งเทพไปเวียงจันทร์ แต่ไม่มีเส้นทางจากเวียงจันทร์ ไปกรุ งเทพ ภาพตัวอย่ างกราฟแบบมีทิศทาง ภาพตัวอย่ างกราฟแบบมีทิศทาง 2
  • 3. ระดับขั้นเข้ าและระดับขั้นออก ระดับขั้นเข้า (In-degree) คือ จํานวนของเอดจ์ที่เข้าไป ยังเวอร์เทกซ์น้ น ๆ ั ระดับขั้นออก(Out-degree) คือ จํานวนของเอดจ์ที่ออกจาก เวอรเทกซนน เวอร์เทกซ์น้ น ๆ ั กราฟสมบูรณ์ • กราฟที่ทุกเวอร์เท็กซ์มีเอดจ์เชื่อมโยงไปยังเวอร์เท็กซ์ที่เหลือ ทั้งหมด A B C ในกราฟสมบูรณ์ สามารถคํานวณจํานวนเอดจ์ ได้ จาก N*(N-1)/2 3
  • 4. สู ตรหาจํานวนเอดจ์ ของกราฟไม่ มทิศทาง = (N * (N – 1)) / 2 ี สู ตรหาจํานวนเอดจ์ ของกราฟมีทศทาง ิ = N * (N –1) จากภาพที่ (ข) ซึ่ งเป็ นกราฟแบบมีทิศทาง และจํานวนเวอร์เทกซ์ที่มี กราฟแบบไม่มีทิศทาง และจํานวนเวอร์เทกซ์ท่ีมีท้ งหมด เท่ากับ 4 เวอร์เทกซ์ จึง ั ทั้งหมดเท่ากับ 4 เวอร์เทกซ์ จึงคํานวณหาจํานวนเอดจ์ได้ดงนี้ ั คํานวณหาจํานวนเอดจ์ได้ดงนี้ ั สู ตรหาจํานวนเอดจ์ของกราฟไม่มีทิศทาง = (N * (N – 1)) / 2 สูตรหาจํานวนเอดจ์ของกราฟมีทิศทาง = N * (N –1) = (4 * (4 – 1)) / 2 = 4 * ( 4 – 1) = (4 * 3 ) / 2 =4*3 = 12 / 2 = 12 เส้น = 6 เส้น กราฟทีมีนําหนัก (Weighted Graphs) ่ ้ กราฟที่มีนําหนัก ้• กราฟที่แต่ ละเอดจ์ จะมีค่าบ่งบอกถึงความหมายอย่างใดอย่างหนึ่ง เช่น ระยะทาง ความเร็ว เวลาเดินทาง ค่ าโดยสาร เป็ นต้น 101 ปทมธานี ุ สระบรี ุ 46 101 58 107 นครนายก กรุงเทพ 100 29 82 ฉะเชิงเทรา 76 ปราจีนบุรี เส้ นทาง (Path) ของกราฟ คือ ลําดับของเวอร์เทกซ์ที่ถูกเชื่อมต่อ ด้วยเอดจ์ โดยเริ่ มตั้งแต่เวอร์เทกซ์แรกไปจนถึงเวอร์เทกซ์สุดท้ายหรื อ การแทนกราฟด้ วยอะเรย์สองมิติ เวอร์เทกซ์ที่ตองการ ้ B A B C D A 0 1 1 1 A C B 1 0 0 1 C 1 0 0 1เส้ นทางจาก A ไป E D 1 1 1 0 P1 = (A, B, C, D, E) ความยาวของเส้นทางเท่ากับ 4 Dเส้ นทางจาก A ไป H P2 = (A, B, C, F, G, H)ความยาวของเส้นทางเท่ากับ 5 4
  • 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 FABECFD • 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
  • 7. วิธีการในการหา Minimum Spanning Tree ที่นิยมใช้ มี 3 วิธี ดังต่ อไปนี้ Kruskal’s Algorithm • เรียงลําดับ weight จากน้ อยไปมาก1.Kruskal’s Algorithm 3-5 = .18  Kruskal’s Algorithm ค้ นพบโดย Joseph Kruskal ในปี 1956 โดยมีหลักการ 1-7 = .21  .29 2 ดังต่ อไปนี้ 6-7 = .25  0 .51 .31 0-2 = .29  61. เลอก1 เลือก Edge ใน Graph ที่มี Weight ตําสด เปน edge เริ่มต้ น ทม ตาสุ ด เป็ น ่ เรมตน .32 7 .25 0-7 = .31  .60 .212. จากนั้นให้ เพิม Edge ที่มี Weight ตําสุ ดที่เหลืออยู่ ทีจะไม่ ทําให้ เกิด Simple Circuit ่ ่ ่ 0-1 = .32 เกิดวงจร 1 .46 .51 กับ Edge ที่เลือกไว้ แล้ ว ทําการหยุดหลังจากได้ n-1 Edge เลือกได้ n-1 edges 4.3 = .34  3 4-5 = .40 เกิดวงจร เลือก edge ที่ส้ันที่สุด .18 .34 เลือกได้ 4-7 = .46  รวม edge นี้ ถ้ าไม่ เกิดวงจร 5 .40 4 n-1 edges 0-6 = .51 4-6 = .51 0-5 = .60 2.Prim’s algorithm Prim’s algorithm• หลักการของ Prim’s Algorithm เริ่ มต้นจากเวอร์เท็กซ์ที่กาหนดแล้วํ หาเวอร์เท็กซ์ขางเคียง เรี ยงตามค่านํ้าหนักของเอดจ์ มีข้นตอนดังนี้ ้ ั - เลือก 1 จุด - เลือก edge สั้นสุ ดที่ต่อกับที่ได้เลือกไว้• 1. เลือก 1 จุด - รวม edge นี้ถาไม่เกิดวงจร ้• 2. เลืือก edge สั้ นสุ ดทีี่ต่อกับทีี่ได้เ้ ลืือกไว้้ ั ั ไ A A• 3. รวม edge นี้ถาไม่เกิดวงจร ้ 14 8 1 14 8 1 13 7 13 7 B C D B C D 6 3 6 7 3 7 E 1 F E 1 F 3 Dijkstra’s algorithm Dijkstra’s algorithm • single-source AD1 DE7 AC8• วิธีการของ Dijkstra จะทําให้ได้สิ่งที่เรี ยกว่า single-source shortest shortest path EC10 AB14 CB21 path หรื อเส้นทางที่ส้ นที่สุดจากจุดเดียว โดยใช้ priority queue ช่วยใน ั DC8 DF8 EF8 การทํางาน มีข้นตอนดังนี้ ั 14 A 1 8 AB14 AC8 AD11. เลือกจุุดเริ่ มต้น B 13 C 7 D AD1 AC8 AB14 12. ตรวจสอบค่านํ้าหนักกับจุดที่เชื่อมต่อทุกจุด นําค่านํ้าหนักเก็บใน 3 6 7 priority queue แล้วเลือกเส้นที่มีค่าตํ่าสุ ด E F DC8 DE7 DF8 1 DE7 AC8 DC8 DF8 AB14 23. เยียมจุดที่เลือกใหม่ แล้วทําซํ้า 2-3 จนกว่าจะเยียมครบทุกจุด ่ ่ A 1 ข้อกําหนด : การนําข้อมูลเก็บในคิว เป็ นไปตาม priority นันคือ ค่า่ 14 EF8 EC10 8 13 7 นํ้าหนักน้อย มี priority สูงกว่า B C D 3 AC8 DC8 DF8 EF8 EC10 AB14 3 6 7 CB21 E 1 F 4 DC8 DF8 EF8 EC10 AB14 CB21 7
  • 8. 4. จากกราฟต่อไปนี้ จงท่องไปในแนวลึก และ แนวกว้าง แบบฝึ กหัด โดยมีจุดเริ่ มต้นที่ เวอร์เทกซ์ B• 1. จากภาพต่ อไปนี้ จงแทนกราฟด้ วยอะเรย์สองมิติ B D 1 2 A E C 4 32. กราฟสมบูรณ์แบบไม่มีทิศทาง ประกอบด้วยเวอร์เทกซ์ท้ งหมด 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

×