Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 41 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
41
Dung lượng
276,09 KB
Nội dung
CH NG 5: Đ THƯƠ Ồ Ị Nguy n Văn Linhễ Khoa CNTT-TT Đ i h c C n Thạ ọ ầ ơ nvlinh@cit.ctu.edu.vn Nguy n Văn Linhễ Nguy n Văn Linhễ N I DUNGỘ • Các khái ni mệ • Bi u di n đ thể ễ ồ ị • Các phép duy t trên đ thệ ồ ị • Các bài toán trên đ th ồ ị Nguy n Văn Linhễ CÁC KHÁI NI M (1)Ệ • M t đ th G bao g m m t t p h p V các đ nh và m t t p ộ ồ ị ồ ộ ậ ợ ỉ ộ ậ h p E các c nh, ký hi u G=(V,E). ợ ạ ệ • Các đ nh còn đ c g i là nút (node) hay đi m (point). Các ỉ ượ ọ ể c nh n i gi a hai đ nh, hai đ nh này có th trùng nhau. ạ ố ữ ỉ ỉ ể • Hai đ nh có c nh n i nhau g i là hai đ nh k (adjacency). ỉ ạ ố ọ ỉ ề M t c nh n i gi a hai đ nh v, w có th coi nh là m t c p ộ ạ ố ữ ỉ ể ư ộ ặ đi m (v,w). ể • N u c p này có th t thì ta có c nh có th t , ng c l i ế ặ ứ ự ạ ứ ự ượ ạ thì c nh không có th t . ạ ứ ự • N u các c nh trong đ th G có th t thì G g i là đ th có ế ạ ồ ị ứ ự ọ ồ ị h ng (directed graph). ướ • N u các c nh trong đ th G không có th t thì đ th G là ế ạ ồ ị ứ ự ồ ị đ th vô h ng (undirected graph). ồ ị ướ Nguy n Văn Linhễ CÁC KHÁI NI M (2)Ệ • Thông th ng trong m t đ th , các đ nh bi u di n ườ ộ ồ ị ỉ ể ễ cho các đ i t ng còn các c nh bi u di n m i ố ượ ạ ể ễ ố quan h gi a các đ i t ng đó. ệ ữ ố ượ • M t đ ng đi (path) trên đ th là m t dãy tu n t ộ ườ ồ ị ộ ầ ự các đ nh v1, v2, , vn sao cho (vi,vi+1) là m t c nh ỉ ộ ạ trên đ th (i=1, ,n-1). ồ ị • Đ nh v1 còn g i là đ nh đ u, vn g i là đ nh cu i. ỉ ọ ỉ ầ ọ ỉ ố Đ dài c a đ ng đi này b ng s đ nh tr 1. ộ ủ ườ ằ ố ỉ ừ • Tr ng h p đ c bi t dãy ch có m t đ nh v thì ta ườ ợ ặ ệ ỉ ộ ỉ coi đó là đ ng đi t v đ n chính nó có đ dài ườ ừ ế ộ b ng không.ằ Nguy n Văn Linhễ CÁC KHÁI NI M (3)Ệ • Đ ng đi g i là đ n n u m i đ nh trên ườ ọ ơ ế ọ ỉ đ ng đi đ u đôi m t khác nhau, ngo i tr ườ ề ộ ạ ừ đ nh đ u và đ nh cu i có th trùng nhau. ỉ ầ ỉ ố ể • M t đ ng đi có đ nh đ u và đ nh cu i ộ ườ ỉ ầ ỉ ố trùng nhau g i là m t chu trình (cycle).ọ ộ • Đ th có tr ng s : các c nh ho c các đ nh ồ ị ọ ố ạ ặ ỉ có giá trị Nguy n Văn Linhễ BI U DI N Đ THỂ Ễ Ồ Ị • Bi u di n đ th b ng ma tr n k ể ễ ồ ị ằ ậ ề • Bi u di n đ th b ng danh sách các đ nh ể ễ ồ ị ằ ỉ k ề Nguy n Văn Linhễ BI U DI N B NG MA TR N K (1)Ể Ễ Ằ Ậ Ề • Dùng m ng A logic 2 chi u có n ph n t đ ả ề ầ ử ể bi u di n cho đ th G có n đ nh.ể ễ ồ ị ỉ • Gi s các đ nh c a đ th đ c đánh s t ả ử ỉ ủ ồ ị ượ ố ừ 0 đ n n-1. ế • N u có c nh (i,j) thì A[i,j] = 1, ng c l i thì ế ạ ượ ạ A[i,j] = 0. Nguy n Văn Linhễ BI U DI N B NG MA TR N K (2)Ể Ễ Ằ Ậ Ề 0 1 4 32 A 0 1 2 3 4 0 1 0 1 1 1 1 1 0 0 2 0 1 1 1 3 1 0 1 1 4 1 0 1 1 Ma tr n k c a đ th vô h ng là ậ ề ủ ồ ị ướ ma tr n đ i x ngậ ố ứ Nguy n Văn Linhễ BI U DI N B NG MA TR N K (3)Ể Ễ Ằ Ậ Ề A 0 1 2 3 4 0 1 0 1 1 1 0 1 0 0 2 0 0 0 1 3 0 0 1 1 4 0 0 0 0 Ma tr n k c a đ th có h ng là ậ ề ủ ồ ị ướ ma tr n không đ i ậ ố x ngứ 0 1 4 32 Nguy n Văn Linhễ MA TR N TR NG S (1)Ậ Ọ Ố 0 1 4 32 A 0 1 2 3 4 0 10 ∞ 30 100 1 10 50 ∞ ∞ 2 ∞ 50 10 10 3 30 ∞ 10 60 4 100 ∞ 10 60 Ma tr n tr ng s c a đ th vô h ng là ậ ọ ố ủ ồ ị ướ ma tr n đ i ậ ố x ngứ 0 1 4 32 10 30 50 10 100 10 60 [...]... E, G Nguyễn Văn Linh CÁC BÀI TOÁN TRÊN ĐỒ THỊ • Tìm đuờng đi ngắn nhất từ một đỉnh của đồ thị (the single source shorted path problem) • Tìm cây bao trùm tối thiểu (minimum-cost spanning tree) • Tìm đường đi ngắn nhất giữa tất cả các cặp đỉnh • Tìm bao đóng chuyển tiếp (transitive closure) Nguyễn Văn Linh TÌM ĐƯỜNG ĐI NGẮN NHẤT TỪ MỘT ĐỈNH CỦA ĐỒ THỊ (1) • Cho đồ thị với các cạnh có trọng số G =(V, E)... nhất từ 0 đến 4 là 0,3,2,4 với độ dài lưu trong D[4] = 50 Nguyễn Văn Linh TÌM CÂY BAO TRÙM TỐI THIỂU (1) • Giả sử ta có một đồ thị vô hướng G=(V,E) • Đồ thị G gọi là liên thông nếu tồn tại đường đi giữa hai đỉnh bất kỳ • Cây bao trùm tối thiểu (hoặc cây phủ tối thiểu) của đồ thị G là một cây T có tập các nút là V và tổng độ dài các cạnh trong T là nhỏ nhất • Một ứng dụng thực tế là bài toán thiết lập... 1 10 ∞ ∞ ∞ 2 ∞ 50 10 ∞ 3 4 30 100 ∞ ∞ ∞ 10 60 ∞ Ma trận trọng số của đồ thị có hướng là ma trận không đối xứng Nguyễn Văn Linh BIỂU DIỄN BẰNG DANH SÁCH CÁC ĐỈNH KỀ (1) • Lưu trữ các đỉnh kề với một đỉnh i trong một danh sách liên kết theo một thứ tự nào đó • Như vậy ta cần một mảng HEAD một chiều có n phần tử để biểu diễn cho đồ thị có n đỉnh • HEAD[i] là con trỏ trỏ tới danh sách các đỉnh kề với đỉnh... xem là khoảng cách giữa 2 đỉnh • Cho trước một đỉnh v, gọi là đỉnh nguồn • Tìm đường đi ngắn nhất từ v đến các đỉnh còn lại của G • Chú ý rằng nếu đồ thị có hướng thì đường đi này là đường đi có hướng Nguyễn Văn Linh TÌM ĐƯỜNG ĐI NGẮN NHẤT TỪ MỘT ĐỈNH CỦA ĐỒ THỊ (2) • Xác định một tập hợp S chứa các đỉnh mà khoảng cách ngắn nhất từ nó đến đỉnh nguồn v đã biết • Khởi đầu S={v}, sau đó tại mỗi bước ta sẽ... Văn Linh TÌM ĐƯỜNG ĐI NGẮN NHẤT TỪ MỘT ĐỈNH CỦA ĐỒ THỊ (3) 0 100 10 30 1 4 10 50 2 10 60 3 • • • • • • Giả sử đỉnh nguồn là 0 Khởi đầu S = {0} S = {0, 1} S = {0, 1, 3} S = {0, 1, 3, 2} S = {0, 1, 3, 2, 4} ĐĐNN từ 0 đến 2 là 0, 3, 2 với tổng độ dài 40 ĐĐNN từ 0 đến 4 là 0, 3, 2, 4 với tổng độ dài 50 Nguyễn Văn Linh TÌM ĐƯỜNG ĐI NGẮN NHẤT TỪ MỘT ĐỈNH CỦA ĐỒ THỊ (4) • Ta dùng mảng hai chiều C để lưu độ dài... độ dài của đường đi ngắn nhất từ mỗi đỉnh của đồ thị đến v • Khởi đầu khoảng cách này chính là độ dài cạnh (v,i), tức là D[i]:=C[v,i] • Tại mỗi bước của giải thuật thì D[i] sẽ được cập nhật lại để lưu độ dài đường đi ngắn nhất từ đỉnh v tới đỉnh i, đường đi này chỉ đi qua các đỉnh đã có trong S • Để cài đặt giải thuật dễ dàng, ta giả sử các đỉnh của đồ thị được đánh số từ 1 đến n, tức là V={1, ,n}... ĐƯỜNG ĐI NGẮN NHẤT TỪ MỘT ĐỈNH CỦA ĐỒ THỊ (5) void Dijkstra () { S=[0]; //S chỉ chứa một đỉnh nguồn for (i=1; i . CH NG 5: Đ THƯƠ Ồ Ị Nguy n Văn Linhễ Khoa CNTT-TT Đ i h c C n Thạ ọ ầ ơ nvlinh@cit.ctu.edu.vn Nguy n Văn