SlideShare une entreprise Scribd logo
1  sur  8
Télécharger pour lire hors ligne
นิยามกราฟ
                                                                              • กราฟ เป็ นโครงสร้างที่นามาใช้เพื่อแสดงความสัมพันธ์ระหว่างวัตถุ โดย
                                                                                                         ํ
                                                                                แทนวัตถุดวยเวอร์เท็กซ์ และเชื่อมโยงความสัมพันธ์ดวยเอดจ์
                                                                                           ้                                         ้
                     บทที่ 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
ภาพตัวอย่ างกราฟไม่ มีทิศทาง                                                            ภาพตัวอย่ างกราฟไม่ มีทิศทาง




           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
ระดับขั้นเข้ าและระดับขั้นออก
         ระดับขั้นเข้า (In-degree) คือ จํานวนของเอดจ์ที่เข้าไป
     ยังเวอร์เทกซ์น้ น ๆ
                     ั
        ระดับขั้นออก(Out-degree) คือ จํานวนของเอดจ์ที่ออกจาก
     เวอรเทกซนน
     เวอร์เทกซ์น้ น ๆ
                  ั




                                                                                              กราฟสมบูรณ์
                                                                 •        กราฟที่ทุกเวอร์เท็กซ์มีเอดจ์เชื่อมโยงไปยังเวอร์เท็กซ์ที่เหลือ
                                                                     ทั้งหมด
                                                                                                    A



                                                                                           B                C


                                                                     ในกราฟสมบูรณ์ สามารถคํานวณจํานวนเอดจ์ ได้ จาก N*(N-1)/2




                                                                                                                                          3
สู ตรหาจํานวนเอดจ์ ของกราฟไม่ มทิศทาง = (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
การแทนที่กราฟ
                     การแทนที่กราฟ




                          การแทนที่กราฟ                                                การท่ องไปในกราฟ (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
การท่ องแบบลึก (Depth first traversal)                                                                                      การท่ องไปในกราฟแนวลึก
 • การทํางานคล้ายกับการท่องทีละระดับของทรี โดยกําหนดเริ่มต้ นที่
   โหนดแรกและเยือนโหนดถัดไปตามแนววิถีน้ันจนกระทังนําไปสู่ ปลาย
                                                            ่
   วิถีน้ัน จากนั้น ย้อนกลับ (backtrack) ตามแนววิถีเดิมนั้น จนกระทัง  ่
   สามารถดําเนินการต่อเนื่องเข้าสู่แนววิถีอื่น ๆ เพื่อเยือนโหนดอื่น ๆ
   ต่อไปจนครบทุกโหนด
                                    A

                                    B           C                              D
                                                        8




                                          E                      F
ABECFD




                                                                                                •      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
วิธีการในการหา 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                                             6
1. เลอก
1 เลือก Edge ใน Graph ที่มี Weight ตําสด เปน edge เริ่มต้ น
                           ทม               ตาสุ ด เป็ น
                                             ่               เรมตน                                                                                        .32       7 .25
                                                                                                                        0-7 = .31                   .60
                                                                                                                                                                 .21

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

2. กราฟสมบูรณ์แบบไม่มีทิศทาง ประกอบด้วยเวอร์เทกซ์ท้ งหมด 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

Contenu connexe

Plus de Noppakhun Suebloei

ระบบลงทะเบียนชุมชุม
ระบบลงทะเบียนชุมชุมระบบลงทะเบียนชุมชุม
ระบบลงทะเบียนชุมชุมNoppakhun Suebloei
 
สื่อการสอน คอมพิวเตอร์เบื้องต้น
สื่อการสอน คอมพิวเตอร์เบื้องต้นสื่อการสอน คอมพิวเตอร์เบื้องต้น
สื่อการสอน คอมพิวเตอร์เบื้องต้นNoppakhun Suebloei
 
การวิเคราะห์องค์ความรู้
การวิเคราะห์องค์ความรู้การวิเคราะห์องค์ความรู้
การวิเคราะห์องค์ความรู้Noppakhun Suebloei
 
รายงานโปรแกรมสื่อบทเรียนสำหรับระบบการเรียนรู้ออนไลน์ เรื่อง โครงสร้างข้อมูลแบ...
รายงานโปรแกรมสื่อบทเรียนสำหรับระบบการเรียนรู้ออนไลน์ เรื่อง โครงสร้างข้อมูลแบ...รายงานโปรแกรมสื่อบทเรียนสำหรับระบบการเรียนรู้ออนไลน์ เรื่อง โครงสร้างข้อมูลแบ...
รายงานโปรแกรมสื่อบทเรียนสำหรับระบบการเรียนรู้ออนไลน์ เรื่อง โครงสร้างข้อมูลแบ...Noppakhun Suebloei
 
รายงานโปรแกรมสื่อบทเรียนสำหรับระบบการเรียนรู้ออนไลน์ เรื่อง ส่วนประกอบของคอมพ...
รายงานโปรแกรมสื่อบทเรียนสำหรับระบบการเรียนรู้ออนไลน์ เรื่อง ส่วนประกอบของคอมพ...รายงานโปรแกรมสื่อบทเรียนสำหรับระบบการเรียนรู้ออนไลน์ เรื่อง ส่วนประกอบของคอมพ...
รายงานโปรแกรมสื่อบทเรียนสำหรับระบบการเรียนรู้ออนไลน์ เรื่อง ส่วนประกอบของคอมพ...Noppakhun Suebloei
 
การพัฒนาบทเรียนคอมพิวเตอร์ช่วยสอน เรื่อง โครงสร้างข้อมูลแบบกราฟ วิชา คอมพิวเต...
การพัฒนาบทเรียนคอมพิวเตอร์ช่วยสอน เรื่อง โครงสร้างข้อมูลแบบกราฟ วิชา คอมพิวเต...การพัฒนาบทเรียนคอมพิวเตอร์ช่วยสอน เรื่อง โครงสร้างข้อมูลแบบกราฟ วิชา คอมพิวเต...
การพัฒนาบทเรียนคอมพิวเตอร์ช่วยสอน เรื่อง โครงสร้างข้อมูลแบบกราฟ วิชา คอมพิวเต...Noppakhun Suebloei
 
การพัฒนาโปรแกรมบทเรียน เรื่อง ส่วนประกอบของคอมพิวเตอร์ วิชา เทคโนโลยีสารสนเท...
การพัฒนาโปรแกรมบทเรียน เรื่อง ส่วนประกอบของคอมพิวเตอร์  วิชา เทคโนโลยีสารสนเท...การพัฒนาโปรแกรมบทเรียน เรื่อง ส่วนประกอบของคอมพิวเตอร์  วิชา เทคโนโลยีสารสนเท...
การพัฒนาโปรแกรมบทเรียน เรื่อง ส่วนประกอบของคอมพิวเตอร์ วิชา เทคโนโลยีสารสนเท...Noppakhun Suebloei
 
ปฏิทินการปฏิบัติกิจกรรมการนำองค์ความรู้ไปใช้บริการสังคม
ปฏิทินการปฏิบัติกิจกรรมการนำองค์ความรู้ไปใช้บริการสังคมปฏิทินการปฏิบัติกิจกรรมการนำองค์ความรู้ไปใช้บริการสังคม
ปฏิทินการปฏิบัติกิจกรรมการนำองค์ความรู้ไปใช้บริการสังคมNoppakhun Suebloei
 
คำอธิบายรายวิชาIS3
คำอธิบายรายวิชาIS3คำอธิบายรายวิชาIS3
คำอธิบายรายวิชาIS3Noppakhun Suebloei
 

Plus de Noppakhun Suebloei (17)

ระบบลงทะเบียนชุมชุม
ระบบลงทะเบียนชุมชุมระบบลงทะเบียนชุมชุม
ระบบลงทะเบียนชุมชุม
 
สื่อการสอน คอมพิวเตอร์เบื้องต้น
สื่อการสอน คอมพิวเตอร์เบื้องต้นสื่อการสอน คอมพิวเตอร์เบื้องต้น
สื่อการสอน คอมพิวเตอร์เบื้องต้น
 
การวิเคราะห์องค์ความรู้
การวิเคราะห์องค์ความรู้การวิเคราะห์องค์ความรู้
การวิเคราะห์องค์ความรู้
 
รายงานโปรแกรมสื่อบทเรียนสำหรับระบบการเรียนรู้ออนไลน์ เรื่อง โครงสร้างข้อมูลแบ...
รายงานโปรแกรมสื่อบทเรียนสำหรับระบบการเรียนรู้ออนไลน์ เรื่อง โครงสร้างข้อมูลแบ...รายงานโปรแกรมสื่อบทเรียนสำหรับระบบการเรียนรู้ออนไลน์ เรื่อง โครงสร้างข้อมูลแบ...
รายงานโปรแกรมสื่อบทเรียนสำหรับระบบการเรียนรู้ออนไลน์ เรื่อง โครงสร้างข้อมูลแบ...
 
รายงานโปรแกรมสื่อบทเรียนสำหรับระบบการเรียนรู้ออนไลน์ เรื่อง ส่วนประกอบของคอมพ...
รายงานโปรแกรมสื่อบทเรียนสำหรับระบบการเรียนรู้ออนไลน์ เรื่อง ส่วนประกอบของคอมพ...รายงานโปรแกรมสื่อบทเรียนสำหรับระบบการเรียนรู้ออนไลน์ เรื่อง ส่วนประกอบของคอมพ...
รายงานโปรแกรมสื่อบทเรียนสำหรับระบบการเรียนรู้ออนไลน์ เรื่อง ส่วนประกอบของคอมพ...
 
การพัฒนาบทเรียนคอมพิวเตอร์ช่วยสอน เรื่อง โครงสร้างข้อมูลแบบกราฟ วิชา คอมพิวเต...
การพัฒนาบทเรียนคอมพิวเตอร์ช่วยสอน เรื่อง โครงสร้างข้อมูลแบบกราฟ วิชา คอมพิวเต...การพัฒนาบทเรียนคอมพิวเตอร์ช่วยสอน เรื่อง โครงสร้างข้อมูลแบบกราฟ วิชา คอมพิวเต...
การพัฒนาบทเรียนคอมพิวเตอร์ช่วยสอน เรื่อง โครงสร้างข้อมูลแบบกราฟ วิชา คอมพิวเต...
 
การพัฒนาโปรแกรมบทเรียน เรื่อง ส่วนประกอบของคอมพิวเตอร์ วิชา เทคโนโลยีสารสนเท...
การพัฒนาโปรแกรมบทเรียน เรื่อง ส่วนประกอบของคอมพิวเตอร์  วิชา เทคโนโลยีสารสนเท...การพัฒนาโปรแกรมบทเรียน เรื่อง ส่วนประกอบของคอมพิวเตอร์  วิชา เทคโนโลยีสารสนเท...
การพัฒนาโปรแกรมบทเรียน เรื่อง ส่วนประกอบของคอมพิวเตอร์ วิชา เทคโนโลยีสารสนเท...
 
Test sort
Test sortTest sort
Test sort
 
Sort
SortSort
Sort
 
Graph shortest
Graph shortestGraph shortest
Graph shortest
 
Graph
GraphGraph
Graph
 
ปฏิทินการปฏิบัติกิจกรรมการนำองค์ความรู้ไปใช้บริการสังคม
ปฏิทินการปฏิบัติกิจกรรมการนำองค์ความรู้ไปใช้บริการสังคมปฏิทินการปฏิบัติกิจกรรมการนำองค์ความรู้ไปใช้บริการสังคม
ปฏิทินการปฏิบัติกิจกรรมการนำองค์ความรู้ไปใช้บริการสังคม
 
กิจกรรม Is3
กิจกรรม Is3กิจกรรม Is3
กิจกรรม Is3
 
ใบงานที่ 1
ใบงานที่ 1ใบงานที่ 1
ใบงานที่ 1
 
คำอธิบายรายวิชาIS3
คำอธิบายรายวิชาIS3คำอธิบายรายวิชาIS3
คำอธิบายรายวิชาIS3
 
IS3
IS3IS3
IS3
 
ActivityIS3
ActivityIS3ActivityIS3
ActivityIS3
 

Graph

  • 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 F ABECFD • 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  6 1. เลอก 1 เลือก Edge ใน Graph ที่มี Weight ตําสด เปน edge เริ่มต้ น ทม ตาสุ ด เป็ น ่ เรมตน .32 7 .25 0-7 = .31  .60 .21 2. จากนั้นให้ เพิม 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 AD1 1. เลือกจุุดเริ่ มต้น B 13 C 7 D AD1 AC8 AB14 1 2. ตรวจสอบค่านํ้าหนักกับจุดที่เชื่อมต่อทุกจุด นําค่านํ้าหนักเก็บใน 3 6 7 priority queue แล้วเลือกเส้นที่มีค่าตํ่าสุ ด E F DC8 DE7 DF8 1 DE7 AC8 DC8 DF8 AB14 2 3. เยียมจุดที่เลือกใหม่ แล้วทําซํ้า 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 3 2. กราฟสมบูรณ์แบบไม่มีทิศทาง ประกอบด้วยเวอร์เทกซ์ท้ งหมด 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