Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 49 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
49
Dung lượng
0,9 MB
Nội dung
TRƢỜNG ĐẠI HỌC SƢ PHẠM HÀ NỘI KHOA TOÁN ************* NGUYỄN THÚY LINH NHỮNGVẤNĐỀCƠBẢNVÀMỘTSỐTHUẬT TỐN TRÊNĐỒTHỊ KHĨA LUẬN TỐT NGHIỆP ĐẠI HỌC Chuyên ngành Ứng dụng Ngƣời hƣớng dẫn khoa học TS TRẦN MINH TƢỚC HÀ NỘI – 2014 LỜI CẢM ƠN Trong q trình thực khố luận em nhận nhiều giúp đỡ quý báu bổ ích từ thầy bạn bè Em xin chân thành cảm ơn thầy cô khoa Toán trường Đại học Sư phạm Hà Nội tận tâm giảng dạy, truyền thụ kiến thức kinh nghiệm q báu để em hồn thành tốt khố học Đặc biệt, em xin bày tỏ lòng cảm ơn sâu sắc tới thầy Trần Minh Tƣớc, thầy trực tiếp hướng dẫn, nhiệt tình giúp đỡ bảo em suốt q trình thực khố luận Em xin chân thành cảm ơn thầy cô tổ toán Ứng dụng – khoa Toán, thư viện nhà trường, gia đình bạn bè tạo điều kiện, động viên, giúp đỡđể em hoàn thành khố luận Xn Hòa, ngày 06 tháng năm 2014 Sinh viên Nguyễn Thúy Linh LỜI CAM ĐOAN Tôi cam đoan khoá luận “Những vấnđềsốthuậttoánđồ thị” kết nghiên cứu hướng dẫn TS.Trần Minh Tƣớc Tôi xin khẳng định kết nghiên cứu khố luận khơng chép kết tác giả khác Nếu sai sót tơi xin chịu hồn tồn trách nhiệm Xn Hòa, ngày 06 tháng năm 2014 Sinh viên Nguyễn Thúy Linh MỤC LỤC MỞ ĐẦU Chương MỘTSỐ KIẾN THỨC CƠBẢN VỀ ĐỒTHỊMộtsố khái niệm đồthị 1.1 Định nghĩa đồthị 1.2 Các thuật ngữ 1.3 Mộtsốđồthị đặc biệt Biểu diễn đồthị 11 2.1 Biểu diễn đồthị ma trận kề, ma trận trọng số 11 2.2 Ma trận liên thuộc 13 2.3 Ý nghĩa cách biểu diễn đồthị 14 Chương MỘTSỐTHUẬTTOÁNTRÊNĐỒTHỊ 16 Bài toán duyệt đồthị 16 1.1 Thuật tốn tìm kiếm theo chiều sâu DFS (Depth First Search) 16 1.2 Thuật tốn tìm kiếm theo chiều rộng BFS (Breath First Search) 20 1.3 Ý nghĩa toán duyệt đồthị 24 Bài tốn tìm đường ngắn 24 2.1 Thuật tốn tìm đường ngắn Dijkstra 24 2.2 Thuậttoán Floyd 30 2.3 Ý nghĩa tốn tìm đường ngắn 33 Bài toán khung cực tiểu 34 3.1 Cây, khung số tính chất 34 3.2 Bài toán khung cực tiểu 35 3.3 Ý nghĩa toán khung cực tiểu 42 KẾT LUẬN 44 TÀI LIỆU THAM KHẢO 45 MỞ ĐẦU Lý thuyết đồthị ngành khoa học phát từ lâu lại có nhiều ứng dụng đại Những tư tưởng lý thuyết đồthịđề xuất từ năm đầu kỉ XVIII nhà toán học lỗi lạc người Thụy Sĩ Leonhard Euler Chính ơng người sử dụng đồthịđể giải toán tiếng cầu thành phố Kưnigsberg Từ lý thuyết đồthị ngày khẳng định vị trí quan trọng việc giải toán thực tế Lý thuyết đồthị khơng có nhiều ứng dụng thực tế mà cơng cụ đắc lực cho ngành cơng nghệ thơng tin Nó giúp cho mơ tả dễ dàng toán phức tạp cách cụ thể, để từ ta mã hóa tốn máy tính Tuy nhiên, kiến thức hồn tồn mới, khơng có chương trình học tơi Với mong muốn học hỏi tìm tòi kiến thức nên tơi chọn đề tài “Những vấnđềsốthuậttoánđồ thị” Nội dung khóa luận tơi khơng phải kết tìm với tinh thần học hỏi kiến thức mới, hi vọng đề tài đem lại nhiều kiến thức bổ ích cho thân cho độc giả Nội dung khóa luận gồm hai chương: Chương Mộtsố kiến thức đồthị Chương Mộtsốthuật tốn đồthị Tuy có nhiều cố gắng, song hạn chế thời gian lực thân, nên khóa luận khơng tránh khỏi sai sót, mong quan tâm góp ý thầy côbạn Tôi xin chân thành cảm ơn! Chƣơng MỘTSỐ KIẾN THỨC CƠBẢN VỀ ĐỒTHỊMộtsố khái niệm đồthị 1.1 Định nghĩa đồthị Ta hình dung đồthị tập hữu hạn đối tượng mối liên hệ đối tượng Sơđồ biểu diễn mạng máy tính hình ảnh đồthị Các đối tượng máy tính, kênh thoại biểu diễn mối liên hệ hai máy tính mạng Có nhiều loại đồthị xây dựng dựa vào cấu trúc đồ thị, cụ thể tùy thuộc vào xác định mối liên hệ đối tượng Khuôn khổ khóa luận tơi đề cập tới đồthị vơ hướng đồthị vơ hướng có trọng số Định nghĩa 1.1 Đồthị cặp G (V , E ) gồm hai tập hợp hữu hạn V E thỏa mãn điều kiện E {{u, v}| u, v V ; u v} Phần tử V gọi đỉnh, phần tử E gọi cạnh đồthị G Người ta thường ký hiệu V {v1, v2 , , } ,cạnh e {u, v} thường viết gọn uv (cũng trùng với vu) Trong định nghĩa này, phần tử E tập gồm hai phần tử khác thuộc V Như vậy, đồthị xét đồthị hữu hạn, khơng có khun cạnh bội (xem [1]) , gọi tắt đồthịMột cách trực quan, người ta thường biểu diễn đồthịsơđồ đỉnh – cạnh sau: - Biểu diễn đỉnh đồthị vòng tròn nhỏ (rỗng đặc) - Một cạnh biểu diễn đoạn (cong hay thẳng) nối hai đỉnh liên thuộc với cạnh Ví dụ Đồthị G (V , E ) với V {v1, v2 , , v7 } , E {v1v2 , v1v5 , v2v3 , v1v3 , v2v6 , v2v7 , v3v4 , v3v5 , v3v7 , v4v6 , v5v6 , v6v7 } đồthị biểu diễn hình v1 v2 v3 v5 v4 v7 v6 Hình1 Đồthị G biểu diễn sơđồ đỉnh – cạnh Định nghĩa 1.2 Giả sử G (V , E ) đồthị không rỗng Đồthị G (V , E) gọi đồthị G, kí hiệu G G , V V E E Trong trường hợp V V ta nói G đồthị bao trùm G Ví dụ Đồthị G G đồthị G Đồthị G đồthị bao trùm G v1 v2 v3 v4 G v1 v2 v1 v2 v3 G v3 G v4 Hình Đồthị G đồthị G G G Định nghĩa 1.3 Đồthị G (V , E ) gọi đồthịcó trọng số hàm: w : E WE xác định, giá trị WE Giá trị w(e) cho e E gọi trọng số canh e Kí hiệu: G (V , E, w) Các phần tử WE đơn liệu thường có ý nghĩa định lượng Ví dụ Cho G (V , E, f ) với V {v1, v2 , , v7 } , E {v1v2 , v1v7 , v2v3 , v2v5 , v2v6 , v2v7 , v3v4 , v3v5 , v4v5 , v5v6 , v6v7 } Và w : E WE xác định sau: w(v1v7 ) w(v3v4 ) w(v3v5 ) 1; w(v2v3 ) w(v2v7 ) w(v2v5 ) w(v6v7 ) ; w(v4v5 ) w(v1v2 ) ; w(v5v6 ) ; w(v2v6 ) Khi G đồthịcó trọng số biểu diễn hình v1 v2 v3 1 v4 v7 v6 v5 Hình Đồthịcó trọng số G 1.2 Các thuật ngữ 1.2.1 Liên thuộc, kề Định nghĩa 1.4 Giả sử G (V , E ) đồthị không rỗng với v V e E , ta nói đỉnh v liên thuộc với cạnh e (hay cạnh e liên thuộc với đỉnh v) v e Các đỉnh liên thuộc với cạnh gọi đầu mút cạnh Hai đỉnh u v G gọi kề uv cạnh G Ví dụ v1 v2 e1 e2 e4 v3 e5 e3 e6 v5 e8 v4 e7 v6 Hình Đơn đồthị G Xét đồthị G cho hình 4: Đỉnh v1 liên thuộc với e1 , e2 Đỉnh v2 kề với đỉnh v1, v3 , v5 1.2.2 Bậc đỉnh Định nghĩa 1.5 Giả sử G (V , E ) đồthị không rỗng với v đỉnh G Ta kí hiệu E (v) tập cạnh liên thuộc với v Khi bậc v ký hiệu deg (v) số cạnh liên thuộc với v, nghĩa deg (v) | E (v) | Đỉnh bậc gọi đỉnh cô lập Đỉnh bậc gọi đỉnh treo Ví dụ v1 v2 v3 v4 v5 v6 v7 Hình Bậc đỉnh đồthị G Xét đồthị G cho hình ta có deg( v1 ) = 1, deg( v2 ) = 3, deg( v3 ) = 4, deg( v4 ) = deg( v5 ) = 0, deg( v6 ) = 3, deg( v7 ) = Từ khái niệm ta có đỉnh v5 đỉnh cô lập, v1 đỉnh treo Định lý 1.1.[2] Trong đồthị G = (V, E) ta ln có deg (v) = 2|E| vV *Nhận xét: Ta thấy cạnh e uv tính lần deg (u ) lần deg (v) Từ ta suy tổng tất bậc đỉnh hai lần số cạnh 1.2.3 Đƣờng đi, chu trình Định nghĩa 1.6 Giả sử G (V , E ) đồthị không rỗng, đường G dãy phân biệt đỉnh v0 , v1, v2 , , , vi V cho vi vi1 E với i 0,1, , n Khi n gọi độ dài, đỉnh v0 gọi đỉnh đầu, đỉnh gọi đỉnh cuối đường cặp đỉnh đồthịcó trọng số hình sau: v1 v2 v3 v4 Hình Đồthị G có trọng số Các bước dùng thuật tốn Floyd tìm độ dài đường ngắn hai đỉnh v1 v3 biểu diễn hình ma trận sau: Ma trận trọng sốđồthị G là: v1 v2 v3 v4 v1 D0 v2 v3 v4 - v1 đỉnh trung gian, ta có: v2 v3 v2 v1 v4 v1 v3 v4 v2 v4 v2 v3 v1 v2 v1 D1 v2 v3 v4 v3 v1 31 v1 v1 v4 v1 v3 v4 7 3 5 - v2 đỉnh trung gian, ta có: v v v v 1 v3 v1 v3 v4 v4 v2 v2 v2 v1 v4 v2 v3 v2 v1 v2 v1 D2 v2 v3 v4 v4 v2 v1 v3 v2 v1 v2 v3 v4 5 3 5 - v3 đỉnh trung gian, ta có: v1 v3 v1 v1 v4 v2 v3 v4 v2 v1 v2 v1 D3 v2 v3 v4 v3 v1 v2 v3 v2 5 v1 v2 v4 v4 v3 v4 5 3 5 - v4 đỉnh trung gian, ta có: v1 v2 v4 v1 5 v4 v2 v3 32 v1 v4 v2 v3 v4 v1 v2 v1 D4 v2 v3 v4 v3 v4 5 3 5 2.3 Ý nghĩa tốn tìm đƣờng ngắn Bài tốn tìm đường ngắn hai đỉnh đồthị liên thơng có ý nghĩa to lớn ứng dụng thực tế Chẳng hạn mạng lưới giao thông đường bộ, đường thủy hay đường khơng, chọn hành trình tiết kiệm theo tiêu chuẩn khoảng cách, thời gian chi phí Bài tốn chọn phương pháp tiết kiệm để đưa hệ thống động lực từ trạng thái xuất phát đến trạng thái đích Trong lĩnh vực Tin học, xét mạng máy tính, nhiều người ta cần xác định đường truyền có thời gian truyền tin ngắn hai máy Để thực điều mơ hình mạng đồ thị, sau vận dụng thuật tốn tìm đường ngắn để giải Các thuậttoán xây dựng dựa sở lý thuyết đồthịcó hiệu cao để giải tốn trình bày Mỗi thuật tốn có ưu nhược điểm riêng, cần lựa chọn thuật tốn phù hợp để giải tốn 33 Bài toán khung cực tiểu 3.1 Cây, khung số tính chất Định nghĩa 2.1 Ta gọi đồthị liên thơng khơng có chu trình Mộtđồthị không thiết phải liên thông khơng có chu trình gọi rừng Từ định nghĩa ta thấy thành phần liên thơng rừng Ví dụ Rừng gồm T1 ,T2 ,T3 • T1 T2 T3 Hình Rừng gồm T1 ,T2 ,T3 Định nghĩa 2.2 Giả sử G = (V, E) đồthị liên thông Cây T = (V, F) với F E gọi khung (cũng gọi bao trùm) đồthị G Ví dụ T1 G T2 Hình Đồthị G khung T1 , T2 G 34 Định lý 2.1.[1] Giả sử T = (V, E) đồthị n đỉnh Khi mệnh đề sau tương đương: 1- T 2- T khơng chứa chu trình có n – cạnh 3- T liên thơng có n – cạnh 4- T liên thông cạnh cầu 5- Hai đỉnh T nối với đường 6- T khơng chứa chu trình thêm vào cạnh ta thu chu trình 3.2 Bài tốn khung cực tiểu Giả sử G (V , E, w) đồthị liên thơng có trọng số với w : E R hàm trọng số cạnh Với khung T (V , E) đồthị G, ta định nghĩa độ dài khung T, ký hiệu w(T ) , giá trị: w(T ) w(e) eE Bài toán: Cho đồthị trọng số G (V , E, w) Hãy tìm khung T (V , E) G cho w(T ) câu T nhỏ sốđộ dài khung G Sau đây, ta xét hai thuật tốn thơng dụng để giải toán khung cực tiểu đồthị liên thơng có trọng số 3.2.1 Thuật tốn Kruskal Tư tưởng: Thuật tốn Kruskal khơng phải xét cạnh với thứ tự tuỳ ý mà xét cạnh theo thứ tự xếp theo trọng số Giả sử đồthị G = (V, E,w) liên thơng có trọng số với n đỉnh w: E Khởi tạo T ban đầu khơng có cạnh Xét tất cạnh đồthị từ cạnh có trọng số nhỏ đến cạnh có trọng số lớn, việc thêm cạnh vào T khơng tạo thành chu trình đơn T kết 35 nạp thêm cạnh vào T Cứ làm khi: - Hoặc kết nạp n - cạnh vào T ta T khung nhỏ - Hoặc chưa kết nạp đủ n - cạnh kết nạp thêm cạnh số cạnh lại tạo thành chu trình đơn Trong trường hợp đồthị G khơng liên thơng, việc tìm kiếm khung thất bại Thuật tốn Kruskal mơ tả sau: procedure Kruskal; begin T := ; while |T| < (n -1) and (E ≠ ) begin Chọn e cạnh có trọng sơ nhỏ E; E := E \{e}; if (T {e} khơng chứa chu trình) then T := T {e}; end; if ( |T| < n – 1) then Đồthị khơng liên thơng; end; Ví dụ Tìm khung cực tiểu đồthị theo thuậttoán Kruskal v1 v2 v5 v3 v4 Hình Đồthịcó trọng số 36 Quá trình tìm khung cực tiểu đồthị cho hình minh họa sau: Các cạnh tô đậm cạnh chọn vào khung Các cạnh đứt nét cạnh bỏ qua trình duyệt qua cạnh v1 v2 v1 v2 v5 v3 Hình 7a 8 v3 v4 Hình 7b v2 v5 v2 v3 v4 v3 Hình 7d v2 v5 Hình 7e 8 v3 v4 37 v5 7 v3 v4 v1 v5 v1 v2 Hình 7c v4 v1 v5 v1 Hình 7f v4 v1 v2 v1 v2 v5 v3 Hình 7g v3 v4 Hình 7h v1 v2 v5 v3 v4 v1 v2 v5 v5 v3 v4 Hình 7i Hình 7k v4 Vậy khung cực tiểu đồthị cho gồm tập cạnh {v1v2 , v2v4 , v4v5 ,v2v3} Bảng ghi nhãn đỉnh bước lặp thuật toán, đỉnh đánh dấu (*) đỉnh chọn để bổ sung vào khung T, nhãn đỉnh không bị biến đổi bước lặp đánh dấu (–) 38 Lần v1 v2 v3 v4 v5 Xét T [0, v1 ] [2, v1 ] [8, v1 ] [4, v1 ] [6,v1 ] v1 - - [7, v2 ] [4, v2 ] [6,v1 ] v1 , v2 v1v2 - - [7, v2 ] - [5, v4 ] v1 , v2 , v4 v1v2 , v2v4 - - [7, v2 ] - - v1 , v2 , v4 , v5 v1v2 , v2v4 , v4v5 - - - - - v1 , v2 , v4 v1v2 , v2v4 v5 , v3 v4v5 ,v2v3 lặp 3.2.2 Thuậttoán Prim Tư tưởng: Thuậttoán đỉnh tùy ý đồthịBan đầu khởi tạo T gồm có đỉnh Sau chọn số đỉnh T đỉnh gần T nhất, kết nạp đỉnh vào T đồng thời kết nạp ln cạnh tạo khoảng cách gần Cứ làm khi: - Hoặc kết nạp tất n đỉnh ta có T khung cực tiểu - Hoặc chưa kết nạp hết n đỉnh đỉnh T có khoảng cách tới T +∞ Khi đồthị cho không liên thông, ta thông báo việc tìm khung thất bại Thuật tốn Prim mô tả thủ tục sau: procedure Prim; begin (* Bước khởi tạo *) Chọn s đỉnh đồ thị; VH := {s}; T := ; 39 d[s] := 0; near[s] := s, for v V \ VH begin d[v] := c[s, v]; near[v] := s; end; (* Bước lặp*) Stop := false; while not Stop begin Tìm u V \ VH : d[u] = { d[v] : u V \ VH }; VH := VH {u}; T := T {(u, near[u])}; if |VH| = n then begin H = (VH, T) khung cực tiểu đồ thị; Stop := True; end; else for v V \ VH if d[v] > c[u, v] then begin d[u] := c[u, v]; near[v] := u; end; end; end; 40 Ví dụ Tìm khung cực tiểu đồthị sau theo thuậttoán Prim v1 v3 3 v6 v5 v2 v4 Hình Đồthịcó trọng số Các bước tìm khung cực tiểu đồthị cho hình minh họa hình bảng sau: Các cạnh đậm cạnh chọn vào khung Mũi tên hướng chọn đỉnh Các cạnh nét đứt không cần phải xét bước v1 3 v6 v2 Hình 8c v4 Hình 8b v3 v5 v1 v3 3 v4 Hình 8a v1 v2 v5 v6 v5 v3 3 v2 v6 v1 v3 v6 v5 v2 v4 41 Hình 8d v4 v1 v1 v3 v6 v2 v3 v5 v6 v5 v2 v4 v4 Hình 8f Hình 8e Bảng ghi nhãn đỉnh bước lặp thuật toán, đỉnh đánh dấu (*) đỉnh chọn để bổ sung vào khung T, nhãn đỉnh không bị biến đổi bước lặp đánh dấu (–) Lần lặp v1 v2 v3 v4 v5 v6 Xét T [0, v1 ] [2, v1 ] [3, v1 ] [, v1 ] [,v1 ] [3, v1 ] v1 - - [3, v1 ] [3, v2 ] [,v1 ] [3, v1 ] v1 , v2 v1v2 - - - [3, v2 ] [7, v3 ] [3, v1 ] v1 , v2 , v3 v1v2 , v1v3 - - - [1, v6 ] [6, v6 ] - v1 , v2 , v3 , v6 v1v2 , v1v3 , v1v6 - - - - [6, v6 ] - v1 , v2 , v3 v1v2 , v1v3 v1v6 ,v6v4 v6 , v4 3.3 Ý nghĩa toán khung cực tiểu Bài toán tìm khung nhỏ đồthịsốtoán tối ưu đồthị tìm ứng dụng nhiều lĩnh vực khác đời sống Để minh hoạ cho ứng dụng toán khung nhỏ nhất, hai mơ hình thực tế tiêu biểu cho 42 Bài toán xây dựng hệ thống đường sắt: Giả sử ta muốn xây dựng hệ thống đường sắt nối n thành phố cho hành khách từ thành phố đến số thành phố lại Mặt khác, quan điểm kinh tế đòi hỏi chi phí xây dựng hệ thống đường phải nhỏ Rõ ràng đồthị mà đỉnh thành phố cạnh tuyến đường sắt nối thành phố tương ứng, với phương án xây dựng tối ưu phải Vì vậy, tốn đặt dẫn tốn tìm khung nhỏ đồthị đầy đủ n đỉnh, đỉnh tương ứng với thành phố với độ dài cạnh chi phí xây dựng hệ thống đường sắt nối hai thành phố Bài toán nối mạng máy tính: Cần nối mạng hệ thống gồm n máy tính đánh số từ đến n Biết chi phí nối máy i với máy j m(i, j) (thông thường chi phí phụ thuộc vào độ dài cáp nối cần sử dụng) Hãy tìm cách nối mạng cho tổng chi phí nhỏ Bài tốn dẫn tốn tìm khung nhỏ Bài tốn tìm khung nhỏ cóthuậttoán hiệu để giải chúng Ta xét hai sốthuậttoán vậy: thuậttoán Kruskal thuậttoán Prim 43 KẾT LUẬN Việc sử dụng đồthị vào thuậttoán cơng cụ hữu ích để giải tốn thực tế Sau thời gian thực đề tài, khóa luận thu kết sau Mô tả sốthuậttoán duyệt đồ thị, thuật tốn tìm đường ngắn nhất, thuật tốn tìm khung cực tiểu hình vẽ bảng chi tiết Nêu ý nghĩa toán duyệt đồ thị, đường ngắn khung cực tiểu Như vậy, đề tài “Những vấnđềsốthuật tốn đồ thị” hồn thành nội dung đạt mục đích nghiên cứu Bước đầu làm quen với nghiên cứu khoa học, chắn khóa luận khơng thể tránh khỏi thiếu sót Tơi mong muốn thầy cô, bạn sinh viên, độc giả đóng góp ý kiến, trao đổi để khóa luận hoàn thiện thực tài liệu tham khảo bổ ích 44 TÀI LIỆU THAM KHẢO [1] Nguyễn Đức Nghĩa – Nguyễn Tơ Thành, Tốn rời rạc, NXB Giáo Dục, 1997 [2] Ngô Đắc Tân, Lý thuyết tổ hợp đồ thị, NXB Đại học Quốc Gia Hà Nội, 2004 [3].Tại địa https://www.youtube.com/watch?v=odeFemb3o-o [4] Kenneth H Rosen, Toán rời rạc ứng dụng tin học, NXB Khoa Học Kỹ Thuật, 1997 45 ... tiện 15 Chƣơng MỘT SỐ THUẬT TOÁN TRÊN ĐỒ THỊ Bài toán duyệt đồ thị Một toán quan trọng lý thuyết đồ thị toán duyệt đồ thị Ta phải duyệt qua tất đỉnh đồ thị, đỉnh xuất phát Vấn đề đưa tốn liệt... Chương MỘT SỐ KIẾN THỨC CƠ BẢN VỀ ĐỒ THỊ Một số khái niệm đồ thị 1.1 Định nghĩa đồ thị 1.2 Các thuật ngữ 1.3 Một số đồ thị đặc biệt Biểu diễn đồ thị ... Chƣơng MỘT SỐ KIẾN THỨC CƠ BẢN VỀ ĐỒ THỊ Một số khái niệm đồ thị 1.1 Định nghĩa đồ thị Ta hình dung đồ thị tập hữu hạn đối tượng mối liên hệ đối tượng Sơ đồ biểu diễn mạng máy tính hình ảnh đồ thị