SlideShare une entreprise Scribd logo
1  sur  45
Télécharger pour lire hors ligne
บทที่ 7
กราฟ (Graph)
นิยามกราฟ
• กราฟ เป็ นโครงสร้างที่นามาใช้เพื่อแสดงความสัมพันธ์ระหว่างวัตถุ โดย
                          ํ
  แทนวัตถด้วยเวอร์เท็กซ์ และเชื่อมโยงความสัมพันธ์ดวยเอดจ์
           ุ                                           ้
• เขียนในรู ปของสัญลักษณ์ได้เป็ น G = (V,E)
• ซึ่ง V(G) คือ เซตของเวอร์เทกซ์ท่ีไม่ใช่เซ็ตว่าง และมีจานวนจํากัด
                                                         ํ
• E(G) คือ เซตของเอดจ ซึ่ งเขียนด้วยค่ของเวอรเทกซ
        คอ เซตของเอดจ์ ซงเขยนดวยคู องเวอร์เท็กซ์
                           เอดจ์
               A                              B
             เวอร์เท็กซ์                 เวอร์เท็กซ์
องค์ ประกอบโครงสร้ างข้ อมููลแบบกราฟ




V = {1, 2, 3, 4}
    {
E = {(1,2), (1,4), (2,3), (3,4)}
ตวอยาง
                ตัวอย่ าง

                 เวอร์ เท็กซ์ 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(G) = {A, B, C, D, E}
                 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)}
        {(b ) ( b) (d ) (b d) ( )}
ภาพตวอยางกราฟไมมทศทาง
ภาพตัวอย่ างกราฟไม่ มทศทาง
                     ี ิ




       V(G) = {1 2 3 4 5}
              {1, 2, 3, 4,
       E(G) = {(1,2) , (2,4), (4,5), (5,3), (3,4), (2,3)}
ภาพตัวอย่ างกราฟไม่ มทศทาง
                     ี ิ
กราฟทมทศทาง
               กราฟทีมทศทาง (Digraph)
                     ่ ี ิ
 •        กราฟแบบมีทศทาง = กราฟที่มีเอดจ์์ เป็ นหัวลูกศร ซึ่ ึ งแสดงทิศทาง
                          ิ
     จากเวอร์ เท็กซ์ หนึ่ง ไปยังอีกเวอร์ เท็กซ์ หนึ่ง (Directed Graph)

                        A                      B



                      กรุุงเทพ              เวียงจันทร์

จากภาพ มีเส้นทางจากกรุ งเทพไปเวียงจันทร์ แต่ไม่มีเส้นทางจากเวียงจันทร์
ไปกรุ งเทพ
กราฟแบบมีทศทาง
                       ิ
V(G) = {a, b, c, d}
E(G) = {<a,b> , <a,c>, <b,d>, <d,c>, <c,b>}
ภาพตัวอย่ างกราฟแบบมีทศทาง
                      ิ
ภาพตัวอย่ างกราฟแบบมีทศทาง
                      ิ
ระดับขั้นเข้ าและระดับขั้นออก
              ั ้ ั ้ (In-degree) ื ํ
         ระดบขนเข้า (In degree) คอ จานวนของเอดจทเข้าไป
                                                ์ ี่ ้
     ยังเวอร์เทกซ์น้ น ๆ
                     ั
        ระดับขั้นออก(Out-degree) คือ จํานวนของเอดจ์ที่ออกจาก
     เวอรเทกซนน
     เวอร์เทกซ์น้ น ๆ
                   ั
กราฟสมบูรณ
                                กราฟสมบรณ์
•        กราฟที่ทุกเวอร์์เท็กซ์์มีเอดจ์เ์ ชื่ือมโยงไปยังเวอร์์เท็กซ์์ที่เหลืือ
                            ็                      ไ             ็
    ทั้งหมด
                                      A



                             B                  C


     ในกราฟสมบูรณ์ สามารถคํานวณจํานวนเอดจ์ ได้ จาก N*(N-1)/2
สู ตรหาจานวนเอดจของกราฟไมมทศทาง
     สตรหาจํานวนเอดจ์ ของกราฟไม่ มทศทาง = (N * (N – 1)) / 2
                                  ี ิ

กราฟแบบไม่มีทิศทาง และจํานวนเวอร์เทกซ์ท่ีมีท้ งหมด เท่ากับ 4 เวอร์เทกซ์ จึง
                                              ั
คํานวณหาจํานวนเอดจ์ได้ดงนี้
                        ั
     สู ตรหาจํานวนเอดจ์ของกราฟไม่มีทิศทาง = (N * (N – 1)) / 2
                                            = (4 * (4 – 1)) / 2
                                          = (4 * 3 ) / 2
                                          = 12 / 2
                                          = 6 เส้น
สูตรหาจํํานวนเอดจ์์ ของกราฟมีทศทาง
                                  ฟ ี ิ         = N * (N –1)
จากภาพที่ (ข) ซึ่ งเป็ นกราฟแบบมีทิศทาง และจํานวนเวอร์เทกซ์ที่มี
ทั้งหมดเท่ากับ 4 เวอร์เทกซ์ จึงคํานวณหาจํานวนเอดจ์ได้ดงนี้
                                                         ั
              ํ            ์
     สู ตรหาจานวนเอดจของกราฟมทศทางฟ ี ิ         = N * (N –1)     1)
                                                = 4 * ( 4 – 1)
                                               =4*3
                                               = 12 เส้้น
กราฟทมนาหนก
               กราฟทีมนําหนัก (Weighted Graphs)
                     ่ ี ้
•         กราฟที่แต่่ ละเอดจ์์ จะมีค่าบ่งบอกถึึงความหมายอย่างใดอย่างหนึ่ ึง
    เช่น ระยะทาง ความเร็ว เวลาเดินทาง ค่ าโดยสาร เป็ นต้น
                                              101
                     ปทมธานี
                       ุ                                                สระบรี
                                                                            ุ
          46                            101
                                                              58
                               107                  นครนายก
    กรุงเทพ
                                            100                    29
               82
                               ฉะเชงเทรา
                               ฉะเชิงเทรา         76           ปราจนบุร
                                                               ปราจีนบรี
กราฟทมนาหนก
กราฟทีมนําหนัก
      ่ ี ้
เส้ นทาง (Path) ของกราฟ คือ ลําดับของเวอร์เทกซ์ที่ถูกเชื่อมต่อ
  ดวยเอดจ โดยเริ่ มตั้งแต่เวอร์เทกซ์แรกไปจนถึงเวอร์เทกซ์สดทายหรอ
  ด้วยเอดจ์ โดยเรมตงแตเวอรเทกซแรกไปจนถงเวอรเทกซสุ ดท้ายหรื อ
  เวอร์เทกซ์ที่ตองการ
                ้




เส้ นทางจาก A ไป E
      P1 = (A, B, C, D, E) ความยาวของเส้นทางเท่ากับ 4
เสนทางจาก
เส้ นทางจาก A ไป H
      P2 = (A, B, C, F, G, H)ความยาวของเส้นทางเท่ากับ 5
การแทนกราฟดวยอะเรยสองมต
    การแทนกราฟด้ วยอะเรย์ สองมิติ

     B
                          A   B   C     D
                      A
                          0   1     1   1
A             C       B
                          1   0     0   1
                      C   1   0     0   1
     D                    1   1     1   0
                      D
การแทนทีกราฟ
        ่
การแทนทกราฟ
การแทนทีกราฟ
        ่
การแทนทกราฟ
การแทนทีกราฟ
        ่
การทองไปในกราฟ
           การท่ องไปในกราฟ (Graph traversal)
•         การท่่ องไปในกราฟ (graph traversal) คืือ กระบวนการเข้าไป
                   ไ ใ                                                 ้ไ
    เยือนโหนดในกราฟ โดยมีหลักในการทํางานคือ แต่ละโหนดจะถูก
    เยือนเพียงครั้งเดียว สําหรับการท่องไปในทรี เพื่อเยือนแต่ละโหนดนั้น
    จะมเสนทางเดยว แตในกราฟระหวางโหนดอาจจะมหลายเสนทาง
    จะมีเส้นทางเดียว แต่ในกราฟระหว่างโหนดอาจจะมีหลายเส้นทาง
    ดังนั้นเพือปองกันการท่ องไปในเส้ นทางทีซํ้าเดิมจึงจําเป็ นต้ องทํา
              ่ ้                           ่
    เครื่องหมายมาร์ คบิตบริเวณทีได้ เยือนเสร็จเรียบร้ อยแล้วเพื่อไม่ให้เข้า
    เครองหมายมารคบตบรเวณทไดเยอนเสรจเรยบรอยแลวเพอไมใหเขา
                                 ่
    ไปเยือนอีก สําหรับเทคนิคการท่องไปในกราฟมี 2 แบบดังนี้
สํ าหรับเทคนิคการท่ องไปในกราฟมี 2 แบบดังนี้
• การท่ องแบบกว้ าง (Breadth first traversal) วิธีน้ ีทาโดยเลือกโหนด
                                                         ํ
                                                    ั
  ที่เป็ นจุดเริ่ มต้น ต่อมาให้เยือนโหนดอื่นที่ใกล้กนกับโหนดเริ่ มต้นทีละ
  ระดับ จนกระทังเยือนหมดทุุกโหนดในกราฟ ตัวอย่างแสดงเส้นทาง
                      ่
  การท่องแบบกว้างทีละโหนดตามลําดับ
            A                   การท่่ องไปแนวกว้้ าง A B C D E F
                                         ไป


B                        C                D


            E                    F
การท่่ องไปในกราฟแนวกว้้ าง
         ไปใ ฟ
      การทองไปแนวกวาง
      การท่ องไปแนวกว้ าง = A   G   B H   E   C F   D
การท่ องแบบลึก (Depth first traversal)
• การทํางานคล้ายกับการท่องทีละระดับของทรี โดยกําหนดเริ่มต้ นที่
  โหนดแรกและเยอนโหนดถดไปตามแนววถนนจนกระทงนาไปสู
  โหนดแรกและเยือนโหนดถัดไปตามแนววิถน้ันจนกระทังนําไปส่ ปลาย
                                                  ี             ่
  วิถน้ัน จากนั้น ย้อนกลับ (backtrack) ตามแนววิถีเดิมนั้น จนกระทัง
     ี                                                                     ่
  สามารถดําเนิินการต่่อเนื่ืองเข้าสู่ แนววิถีอื่น ๆ เพืื่อเยือนโหนดอื่ืน ๆ
                                 ้         ิ                 ื โ
  ต่อไปจนครบทุกโหนด
                                       A

                          B                       C                D
                                                      8




                                     E                    F
ABECFD
การทองไปในกราฟแนวลก
การท่ องไปในกราฟแนวลึก
การทองไปแนวลก
การท่ องไปแนวลึก = A B C D E F G H
•      Spanning Tree คือต้นไม้ที่ประกอบด้วยโหนดทุกโหนดของ
      กราฟ โดยแต่ ละคู่ของโหนดจะต้ องมีเส้ นเชืื่อมเพียงเส้ นเดียว นันคืือไ มี
                                                                     ่ ไม่
      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 หมายถึงเวทจ์กราฟและเป็ นสแปนนิ่งทรี ที่มีค่านํ้าหนักรวมกัน
      แล้วมีค่าน้อยที่สุด
          .29          2                              .29          2
 0                     .51
                                              0                    .51
            .31                                         .31
                                    6                                           6
          .32          7      .25
                               25                     .32          7      .25
                                                                           25
                 .21                                         .21
.60                                         .60
           1                        .51                1                        .51
                             .46                                         .46

           3                                           3
                       .34                                         .34
          .18                                         .18

                .40                                         .40
      5                        4                  5                        4
Minimum spanning tree
• Representation

          .29         2                            0 1       2 3 4 5 6 7
 0                       .51                 0     * .32   .29 * * .60 .51 .31
                .31
                                       6     1   .32 *      * * * * * .21
          .32         7          .25

.60
                  .21
                                             2   .29 *       * * * * * *
          1                            .51
                                             3     * *       * * .34 .18 * *
                               .46
                                             4     * *       * .34 * .40 .51 .46
          3                                  5
                        .34
                                                 .60 *       * .18 .40 * * *
          .18

                .40
                                             6   .51 *
                                                  51         * * .51 * * .25
                                                                    51        25
      5                         4            7   .31 .21     * * .46 * .25 *
วิธีการในการหา Minimum Spanning Tree ทีนิยมใช้
                                            ่
                    มี 3 วิธี ดังต่ อไปนี้
1.Kruskal’s Algorithm
    Kruskal s
    Kruskal’s Algorithm ค้ นพบโดย Joseph Kruskal ในปี 1956 โดยมีหลักการ
                                  คนพบโดย                      ในป        โดยมหลกการ
    ดังต่ อไปนี้
1. เลอก
1 เลือก Edge ใน Graph ทีมี Weight ตําสด เปน edge เริ่มต้ น
                                ทม่           ตาสุ ด เป็ น
                                               ่              เรมตน
2. จากนั้นให้ เพิม Edge ทีมี Weight ตําสุ ดทีเ่ หลืออยู่ ทีจะไม่ ทาให้ เกิด Simple Circuit
                 ่            ่             ่               ่        ํ
    กับ Edge ทีเี่ ลือกไว้้ แล้้ ว ทําการหยุดหลังจากได้้ n-1 Edge เลือกได้้ n-1 edges
      ั              ื ไ             ํ             ั ไ                  ื ไ
                       เลือก edge ทีส้ั นทีสุด
                                        ่ ่
                                                               เลอกได
                                                               เลือกได้
                       รวม edge นี้ ถ้ าไม่ เกิดวงจร           n-1 edges
Kruskal’s Algorithm
• เรยงลาดบ weight จากนอยไปมาก
    ี ํ ั ih          ้ ไป
3-5 = .18 
1-7 = .21 
1 7 21                       .29
                              29       2
6-7 = .25                0               .51
                                 .31

0-2 = .29                                        6
                             .32       7 .25
0-7 = .31              .60
                                    .21


0-1 = .32 เกิดวงจร            1                   .51
                                              .46

4.3 = .34                    3
4-5 = .40 เกิดวงจร                      .34
                             .18

4-7 = .46 
4 7 46
                            5 .40  40
                                                4
0-6 = .51
4-6 = .51
0-5 = .60
2.Prim s
              2 Prim’s algorithm
•     หลักการของ Prim’s Algorithm เริ่ มต้นจากเวอร์์เท็กซ์์ที่กาหนดแล้ว
                                                                     ็ ํ
  หาเวอร์เท็กซ์ขางเคียง เรี ยงตามค่านํ้าหนักของเอดจ์ มีข้นตอนดังนี้
                ้                                                 ั
•              1. เลือก 1 จุด
•              2. เลืือก edge สั้ นสุ ดทีี่ต่อกับทีี่ได้เ้ ลืือกไว้้
                                  ั             ั               ไ
•              3. รวม edge นี้ถาไม่เกิดวงจร
                          g ้
Prim s
                     Prim’s algorithm

- เลือก 1 จุด
- เลืือก edge สั้ ันสุ ดทีี่ต่อกับที่ีได้เ้ ลืือกไว้้
                                 ั               ไ
- รวม edge นี้ถาไม่เกิดวงจร
                   ้

                 A                                                A
                             1                              14                1
         14          8                                                8
            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
•                                                          ่
           วิธีการของ Dijkstra จะทําใ ได้สิ่ งทีี่เรีี ยกว่า single-source shortest
             ิ                       ํ ให้้ ้
     path หรื อเส้นทางที่ส้ นที่สุดจากจุดเดียว โดยใช้ priority queue ช่วยใน
                                ั
     การทํางาน มีีข้ นตอนดังนี้ ี
                       ั
1.   เลือกจุุดเริ่ มต้น
2.   ตรวจสอบค่านํ้าหนักกับจุดที่เชื่อมต่อทุกจุด นําค่านํ้าหนักเก็บใน
     priority queue แล้วเลือกเส้นที่มีค่าตํ่าสด
                         แลวเลอกเสนทมคาตาสุ ด
3.   เยียมจุดที่เลือกใหม่ แล้วทําซํ้า 2-3 จนกว่าจะเยียมครบทุกจุด
         ่                                                   ่
                              ้    ็
     ข้อกําหนด : การนําข้อมูลเก็บในคิว เป็็ นไปตาม priority นันคืือ ค่า
       ้                                           ไ                    ่
     นํ้าหนักน้อย มี priority สู งกว่า
Dijkstra s
Dijkstra’s algorithm
• single-source                                AD1    DE7   AC8
  shortest path
                                               DC8 DF8 EF8        EC10 AB14 CB21
               A
      14                       1
                   8                                     AB14 AC8 AD1
          13               7
 B             C                   D                     AD1   AC8  AB14       1
               3           6           7
                                               DC8 DE7  DF8
               E                       F       DE7    AC8 DC8           AB14       2
                               1
                                                                  DF8
           A
     14                    1
                   8                           EF8 EC10
      13               7
B          C                       D       3   AC8    DC8 DF8     EF8   EC10 AB14
           3           6           7           CB21
           E               1       F       4   DC8 DF8 EF8        EC10 AB14 CB21
แบบฝกหด
                             แบบฝึ กหัด
• 1 จากภาพต่่ อไปนีี้ จงแทนกราฟด้้ วยอะเรย์์ สองมิติ
  1.           ไป             ฟ                   ิ

         1                      2


          4                    3

2. กราฟสมบูรณ์แบบไม่มีทิศทาง ประกอบด้วยเวอร์เทกซ์ท้ งหมด 7 เวอร์เทกซ์
                                                    ั
จงคํานวณว่ากราฟนี้ จะมีก่ีเอดจ์
3. กราฟสมบูรณ์แบบมีทิศทาง ประกอบด้วยเวอร์เทกซ์ท้ งหมด 8 เวอร์เทกซ์
                                                 ั
จงคํานวณว่ากราฟนี้ จะมีก่ีเอดจ์
4. จากกราฟต่อไปนี้ จงท่องไปในแนวลึก และ แนวกว้าง
           โดยมีจุดเริ่ มต้นที่ เวอร์เทกซ์ B
5. จากภาพต่อไปนี้ จงหาระยะทางโดยใช้วธีการของ Dijkstra
                                       ิ
                     โดยเริ่ มที่จุด B
                         2
                 A               B        4
                                               C
                     6           10
                                      7

             E           3
                                 D
                                          12
         5                   2

                         1
             F                   G

Contenu connexe

Tendances

กิตติกรรมประกาศ (เสร็จ)
กิตติกรรมประกาศ (เสร็จ)กิตติกรรมประกาศ (เสร็จ)
กิตติกรรมประกาศ (เสร็จ)Annop Phetchakhong
 
ตัวอย่างโจทย์พื้นที่ผิวปริซึม
ตัวอย่างโจทย์พื้นที่ผิวปริซึมตัวอย่างโจทย์พื้นที่ผิวปริซึม
ตัวอย่างโจทย์พื้นที่ผิวปริซึมทับทิม เจริญตา
 
ใบงาน4 ค่าสัมบูรณ์
ใบงาน4 ค่าสัมบูรณ์ใบงาน4 ค่าสัมบูรณ์
ใบงาน4 ค่าสัมบูรณ์kanjana2536
 
การเขียนแผ่นคลี่กรวยเยื้องศูนย์
การเขียนแผ่นคลี่กรวยเยื้องศูนย์การเขียนแผ่นคลี่กรวยเยื้องศูนย์
การเขียนแผ่นคลี่กรวยเยื้องศูนย์Narasak Sripakdee
 
powerpointอุปกรณ์เครือข่ายคอมพิวเตอร์
powerpointอุปกรณ์เครือข่ายคอมพิวเตอร์powerpointอุปกรณ์เครือข่ายคอมพิวเตอร์
powerpointอุปกรณ์เครือข่ายคอมพิวเตอร์Weina Fomedajs
 
3 กิตติกรรมประกาศ
3 กิตติกรรมประกาศ3 กิตติกรรมประกาศ
3 กิตติกรรมประกาศkasetpcc
 
แบบรายงานคุรุชนคนคุณธรรม เครดิตโดยครูโสภิญญา
แบบรายงานคุรุชนคนคุณธรรม เครดิตโดยครูโสภิญญาแบบรายงานคุรุชนคนคุณธรรม เครดิตโดยครูโสภิญญา
แบบรายงานคุรุชนคนคุณธรรม เครดิตโดยครูโสภิญญาSophinyaDara
 
ค่ากลางของข้อมูลม.6
ค่ากลางของข้อมูลม.6ค่ากลางของข้อมูลม.6
ค่ากลางของข้อมูลม.6KruGift Girlz
 
ชุดที่ 8 การแก้โจทย์ปัญหาเกี่ยวกับสัดส่วน
ชุดที่ 8 การแก้โจทย์ปัญหาเกี่ยวกับสัดส่วนชุดที่ 8 การแก้โจทย์ปัญหาเกี่ยวกับสัดส่วน
ชุดที่ 8 การแก้โจทย์ปัญหาเกี่ยวกับสัดส่วนพิทักษ์ ทวี
 
การแจกแจงความถี่
การแจกแจงความถี่การแจกแจงความถี่
การแจกแจงความถี่krookay2012
 
เรื่อง ขนมจีบ
 เรื่อง  ขนมจีบ เรื่อง  ขนมจีบ
เรื่อง ขนมจีบTook Kata
 
รวมสูตรพื้นที่และปริมาตร
รวมสูตรพื้นที่และปริมาตรรวมสูตรพื้นที่และปริมาตร
รวมสูตรพื้นที่และปริมาตรguest48c0b10
 
แผน 2คณิตศาสตร์เพิ่มเติม3
แผน 2คณิตศาสตร์เพิ่มเติม3แผน 2คณิตศาสตร์เพิ่มเติม3
แผน 2คณิตศาสตร์เพิ่มเติม3srkschool
 
การคูณและการหาร
การคูณและการหารการคูณและการหาร
การคูณและการหารtheandewxx
 
กิตติกรรมประกาศ
กิตติกรรมประกาศกิตติกรรมประกาศ
กิตติกรรมประกาศJutarat Bussadee
 

Tendances (20)

กิตติกรรมประกาศ (เสร็จ)
กิตติกรรมประกาศ (เสร็จ)กิตติกรรมประกาศ (เสร็จ)
กิตติกรรมประกาศ (เสร็จ)
 
โครงสร้างการเขียนโปรแกรมภาษาไพธอน
โครงสร้างการเขียนโปรแกรมภาษาไพธอนโครงสร้างการเขียนโปรแกรมภาษาไพธอน
โครงสร้างการเขียนโปรแกรมภาษาไพธอน
 
ตัวอย่างโจทย์พื้นที่ผิวปริซึม
ตัวอย่างโจทย์พื้นที่ผิวปริซึมตัวอย่างโจทย์พื้นที่ผิวปริซึม
ตัวอย่างโจทย์พื้นที่ผิวปริซึม
 
ใบงาน4 ค่าสัมบูรณ์
ใบงาน4 ค่าสัมบูรณ์ใบงาน4 ค่าสัมบูรณ์
ใบงาน4 ค่าสัมบูรณ์
 
การเขียนแผ่นคลี่กรวยเยื้องศูนย์
การเขียนแผ่นคลี่กรวยเยื้องศูนย์การเขียนแผ่นคลี่กรวยเยื้องศูนย์
การเขียนแผ่นคลี่กรวยเยื้องศูนย์
 
powerpointอุปกรณ์เครือข่ายคอมพิวเตอร์
powerpointอุปกรณ์เครือข่ายคอมพิวเตอร์powerpointอุปกรณ์เครือข่ายคอมพิวเตอร์
powerpointอุปกรณ์เครือข่ายคอมพิวเตอร์
 
3 กิตติกรรมประกาศ
3 กิตติกรรมประกาศ3 กิตติกรรมประกาศ
3 กิตติกรรมประกาศ
 
Moo
MooMoo
Moo
 
แบบรายงานคุรุชนคนคุณธรรม เครดิตโดยครูโสภิญญา
แบบรายงานคุรุชนคนคุณธรรม เครดิตโดยครูโสภิญญาแบบรายงานคุรุชนคนคุณธรรม เครดิตโดยครูโสภิญญา
แบบรายงานคุรุชนคนคุณธรรม เครดิตโดยครูโสภิญญา
 
ค่ากลางของข้อมูลม.6
ค่ากลางของข้อมูลม.6ค่ากลางของข้อมูลม.6
ค่ากลางของข้อมูลม.6
 
ชุดที่ 8 การแก้โจทย์ปัญหาเกี่ยวกับสัดส่วน
ชุดที่ 8 การแก้โจทย์ปัญหาเกี่ยวกับสัดส่วนชุดที่ 8 การแก้โจทย์ปัญหาเกี่ยวกับสัดส่วน
ชุดที่ 8 การแก้โจทย์ปัญหาเกี่ยวกับสัดส่วน
 
3หลักสูตรคณิตเพิ่มเติมม.ต้น
3หลักสูตรคณิตเพิ่มเติมม.ต้น3หลักสูตรคณิตเพิ่มเติมม.ต้น
3หลักสูตรคณิตเพิ่มเติมม.ต้น
 
การแจกแจงความถี่
การแจกแจงความถี่การแจกแจงความถี่
การแจกแจงความถี่
 
305
305305
305
 
เรื่อง ขนมจีบ
 เรื่อง  ขนมจีบ เรื่อง  ขนมจีบ
เรื่อง ขนมจีบ
 
รวมสูตรพื้นที่และปริมาตร
รวมสูตรพื้นที่และปริมาตรรวมสูตรพื้นที่และปริมาตร
รวมสูตรพื้นที่และปริมาตร
 
แผน 2คณิตศาสตร์เพิ่มเติม3
แผน 2คณิตศาสตร์เพิ่มเติม3แผน 2คณิตศาสตร์เพิ่มเติม3
แผน 2คณิตศาสตร์เพิ่มเติม3
 
การคูณและการหาร
การคูณและการหารการคูณและการหาร
การคูณและการหาร
 
การหาค่ากลางทั้ง3แบบ
การหาค่ากลางทั้ง3แบบการหาค่ากลางทั้ง3แบบ
การหาค่ากลางทั้ง3แบบ
 
กิตติกรรมประกาศ
กิตติกรรมประกาศกิตติกรรมประกาศ
กิตติกรรมประกาศ
 

Similaire à Graph (20)

Graph
GraphGraph
Graph
 
Graph theory
Graph theoryGraph theory
Graph theory
 
Graph
GraphGraph
Graph
 
Graph
GraphGraph
Graph
 
ทฤษฎีกราฟ
ทฤษฎีกราฟทฤษฎีกราฟ
ทฤษฎีกราฟ
 
Graph shortest
Graph shortestGraph shortest
Graph shortest
 
Graph1
Graph1Graph1
Graph1
 
Graph
GraphGraph
Graph
 
Graph
GraphGraph
Graph
 
Graph
GraphGraph
Graph
 
Graph
GraphGraph
Graph
 
Graph
GraphGraph
Graph
 
ทฤษฎีกราฟเบื้องต้น/Graph
ทฤษฎีกราฟเบื้องต้น/Graphทฤษฎีกราฟเบื้องต้น/Graph
ทฤษฎีกราฟเบื้องต้น/Graph
 
สรุปสาระสำคัญทฤษฎีกราฟเบื้องต้น
สรุปสาระสำคัญทฤษฎีกราฟเบื้องต้นสรุปสาระสำคัญทฤษฎีกราฟเบื้องต้น
สรุปสาระสำคัญทฤษฎีกราฟเบื้องต้น
 
ทฤษฎีกราฟเบื้องต้น
ทฤษฎีกราฟเบื้องต้นทฤษฎีกราฟเบื้องต้น
ทฤษฎีกราฟเบื้องต้น
 
ทฤษฎีกราฟเบื้องต้น
ทฤษฎีกราฟเบื้องต้นทฤษฎีกราฟเบื้องต้น
ทฤษฎีกราฟเบื้องต้น
 
2
22
2
 
2
22
2
 
31202 final532
31202 final53231202 final532
31202 final532
 
Graphs
GraphsGraphs
Graphs
 

Plus de suebloei

Plus de suebloei (7)

Sorting
SortingSorting
Sorting
 
Sorting
SortingSorting
Sorting
 
Nsc2012
Nsc2012Nsc2012
Nsc2012
 
Mark test
Mark testMark test
Mark test
 
Tree
TreeTree
Tree
 
Stack
StackStack
Stack
 
Check box
Check boxCheck box
Check box
 

Graph

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