Chap07Graph

UN
Uni24h
0 downloads
95
0

Document content

Page 3

NỘI DUNG 1. Đồ thị Đồ thị vô hướng, Đồ thị có hướng,Tính liên thông của đồ thị 2. Biểu diễn đồ thị Biểu diễn đồ thị bởi ma trận, Danh sách kề, Danh sách cạnh 3. Các thuật toán duyệt đồ thị Thuật toán tìm kiếm theo chiều sâu, Thuật toán tìm kiếm theo chiều rộng 4. Một số ứng dụng của tìm kiếm trên đồ thị Bài toán đường đi, Bài toán liên thông, Đồ thị không chứa chu trình và bài toán sắp xếp tôpô, Bài toán tô màu đỉnh đồ thị 5. Bài toán cây khung nhỏ nhất Thuật toán Kruscal, Cấu trúc dữ liệu biểu diễn phân hoạch, 6. Bài toán đường đi ngắn nhất Thuật toán Dijkstra, Cài đặt thuật toán với các cấu trúc dữ liệu KHMT ĐHBKHN 3

Page 4

1. Đồ thị Đồ thị là cặp (V, E), trong đó  V là tập đỉnh  E là họ các cặp đỉnh gọi là các cạnh Ví dụ:  Các đỉnh là các sân bay  Các cạnh thể hiện đường bay nối hai sân bay  Các số trên cạnh có thể là chi phí (thời gian, khoảng cách) DAN DBP HAP HCM HAN BKK NHT VIN KHMT ĐHBKHN 4

Page 5

Các kiểu cạnh Cạnh có hướng (Directed edge) Cặp có thứ tự gồm hai đỉnh (u,v) flight  HAN VN 426 HCM  Đỉnh u là đỉnh đầu  Đỉnh v là đỉnh cuối  Ví dụ, chuyến bay Cạnh vô hướng (Undirected edge) 1135 HAN km HCM  Cặp không có thứ tự gồm 2 đỉnh (u,v)  Ví dụ, tuyến bay Đồ thị có hướng (digraph)  Các cạnh có hướng  Ví dụ, mạng truyền tin Đồ thị vô hướng (Undirected graph/graph)  Các cạnh không có hướng  Ví dụ, mạng tuyến bay KHMT ĐHBKHN 5

Page 6

Ứng dụng Mạch lôgic (Electronic circuits) Phòng máy 1 Phòng máy 2  Mạch in Mạch tích hợp Phòng hành chính  Mạng giao thông (Transportation networks) Mạng xa lộ Phòng Giáo vụ   Mạng tuyến bay Mạng máy tính (Computer Trường ĐHQG networks) Mạng cục bộ Ban Giám đốc  Phòng Tuyên huấn  Internet  Web Cơ sở dữ liệu (Databases)  Sơ đồ quan hệ thực thể Tổ Tin (Entity-relationship diagram) Bờm Cuội Chị Hằng KHMT ĐHBKHN 6

Page 7

Thuật ngữ Đầu mút của cạnh  U và V là các đầu mút của cạnh a Cạnh kề với đỉnh V a b  a, d, và b kề với đỉnh V h j Đỉnh kề U d X Z  U và V là kề nhau Bậc của đỉnh c e i  X có bậc 5 W g Cạnh lặp h và i là các cạnh lặp f  Y Khuyên  j là khuyên Đơn đồ thị: Không chứa cạnh lặp và khuyên KHMT ĐHBKHN 7

Page 8

Thuật ngữ (tiếp tục) Đường đi  Dãy các đỉnh (hoặc dãy các cạnh), trong đó hai đỉnh liên tiếp là có cạnh nối: P: s = v0, v1, ..., vk-1, vk = t, (vi-1, vi) là cạnh của đồ thị, i=1, 2, ..., k.  Độ dài của đường đi là số cạnh trên đường đi (k).  s - đỉnh đầu và t - đỉnh cuối của đường đi P Đường đi đơn  Các đỉnh trên đường đi là phân biệt KHMT ĐHBKHN 8

Page 9

Thuật ngữ (tiếp tục) V a b P1 U d X Z P2 h c e W g f Y Ví dụ  P1= V,X,Z (dãy cạnh: b, h) là đường đi đơn  P2= U,W,X,Y,W,V) (P2=c,e,g,f,d) là đường đi nhưng không là đơn 9

Page 10

Thuật ngữ (tiếp) Chu trình  Đường đi gồm các cạnh phân biệt có đỉnh đầu trùng V đỉnh cuối a b Chu trình đơn Ngoại trừ đầu trùng cuối, U d X Z  không còn hai đỉnh nào C2 h giống nhau e C Ví dụ c 1 W g  C1= V,X,Y,W,U là CT đơn  C2=U,W,X,Y,W,V là chu trinh f không là đơn Y KHMT ĐHBKHN 10

Page 11

Tính chất Tính chất 1 Ký hiệu S deg(v)  2m n số đỉnh v m số cạnh CM: mỗi cạnh được đếm 2 lần Tính chất 2 deg(v) bậc của đỉnh v Trong đơn đồ thị vô hướng (đồ thị không có cạnh lặp và Ví dụ khuyên) n  4 m  n (n  1)/2  CM: mỗi đỉnh có bậc không  m  6 quá (n  1)  deg(v)  3 Tương tự có những cận cho đồ thị có hướng KHMT ĐHBKHN 11

Page 12

Graph ADT Các phép toán cơ bản (Basic Graph operations)  khởi tạo/create (số đỉnh, isDirected)  huỷ/destroy  nhận số cạnh / get number of edges  nhận số đỉnh / get number of vertices  cho biết đồ thị là có hướng hay vô hướng / tell whether graph is directed or undirected  bổ sung cạnh / insert an edge  loại bỏ cạnh / remove an edge  có cạnh nối giữa hai đỉnh / tell whether an edge exists between two vertices  duyệt các đỉnh kề của một đỉnh cho trước / An iterator that process all vertices adjacent to a given vertex 12

Page 13

Các bài toán xử lý đồ thị Tính giá trị của một số đặc trưng số của đồ thị (số liên thông, sắc số, ...) Tìm một số tập con cạnh đặc biệt (chẳng hạn, cặp ghép, bè, chu trình, cây khung, ...) Tìm một số tập con đỉnh đặc biệt (chẳng hạn, phủ đỉnh, phủ cạnh, tập độc lập,...) Trả lời truy vấn về một số tính chất của đồ thị (liên thông, phẳng, ...) Các bài toán tối ưu trên đồ thị: Cây khung nhỏ nhất, đường đi ngắn nhất, luồng cực đại trong mạng, ... ... KHMT ĐHBKHN 13

Page 15

2. Biểu diễn đồ thị Có nhiều cách biểu diễn, Việc lựa chọn cách biểu diễn phụ thuộc vào từng bài toán cụ thể cần xét, từng thuật toán cụ thể cần cài đặt. Có hai vấn đề chính cần quan tâm khi lựa chọn cách biểu diễn:  Bộ nhớ mà cách biểu diễn đó đòi hỏi  Thời gian cần thiết để trả lời các truy vấn thường xuyên đối với đồ thị trong quá trình xử lý đồ thị:  Chẳng hạn:  Có cạnh nối hai đỉnh u, v ?  Liệt kê các đỉnh kề của đỉnh v ? 15 KHMT ĐHBKHN

Page 16

Ma trận kề (Adjacency Matrix) n  n ma trận A. Các đỉnh được đánh số từ 1 đến |V| theo 1 thứ tự nào đó. 1 nÕu ( , )i j E A xác định bởi: A i j[ , ]  a   ij 0 nÕu tr¸i l¹i 1 2 1 2 3 4 1 2 a b a b 1 2 3 4 1 0 1 1 1 1 0 1 1 1 2 0 0 1 0 2 1 0 1 0 c d 3 0 0 0 1 c d 3 1 1 0 1 3 4 4 0 0 0 0 3 4 4 1 0 1 0 A = AT đối với đồ thị vô hướng. KHMT ĐHBKHN 16

Page 17

Ma trận kề  Chú ý về sử dụng ma trận kề:  Dòng toàn không ~đỉnh cô lập.  M[i, i] = 1  khuyên (self-loop)  Bộ nhớ (Space)  |V |2 bits  Các thông tin bổ sung, chẳng hạn chi phí trên cạnh, cần được cất giữ dưới dạng ma trận.  Thời gian trả lời các truy vấn  Hai đỉnh i và j có kề nhau? O(1)  Bổ sung hoặc loại bỏ cạnh O(1)  Bổ sung đỉnh: tăng kích thước ma trận  Liệt kê các đỉnh kề của v : O(|V|) (ngay cả khi v là đỉnh cô lập). KHMT ĐHBKHN 17

Page 18

Ma trận trọng số Trong trường hợp đồ thị có trọng số trên cạnh, thay vì ma trận kề, để biểu diễn đồ thị ta sử dụng ma trận trọng số C = c[i, j], i, j = 1, 2,..., n, víi  c i j( , ), nÕu (i, j)E c i j[ , ]    , nÕu (i, j)E, trong ®ã  lμ gi¸ trÞ ®Æc biÖt ®Ó chØ ra mét cÆp (i,j) kh«ng lμ c¹nh, tuú tõng trêng hîp cô thÓ, cã thÓ ®îc ®Æt b»ng mét trong c¸c gi¸ trÞ sau: 0, +, -. KHMT ĐHBKHN 18

Page 19

Ma trận trọng số Ví dụ 8 1  5  3 6  5   6 2   8    5 3 8 A   6    6   2  7 7   3 8      4 2   KHMT ĐHBKHN 19

Page 20

Danh sách kề (Adjacency List) Danh sách kề: Với mỗi đỉnh v cất giữ danh sách các đỉnh kề của nó.  Là mảng Adj gồm |V| danh sách.  Mỗi đỉnh có một danh sách.  Với mỗi u  V, Adj[u] bao gồm tất cả các đỉnh kề của u. Ví dụ Đồ thị vô hướng Đồ thị có hướng u v w a b c v u w y b e w u v c b x z v d y b x e z f f t KHMT ĐHBKHN 20

Showing the first 20 pages. Download the document to see it all.

Comments (0)

Sign in to join the discussion

No comments yet. Be the first!