Những vấn đề cơ bản và một số thuật toán trên đồ thị

59 59 0
Những vấn đề cơ bản và một số thuật toán trên đồ thị

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI KHOA TOÁN ************* NGUYỄN THÚY LINH NHỮNG VẤN ĐỀ CƠ BẢN VÀ MỘT SỐ 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ật toá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Ộ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ị 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ỘT SỐ THUẬT TOÁN TRÊ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ật toá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à tố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 chọn đề tài “Những vấn đề số thuật toá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ột số kiến thức đồ thị Chương Một số thuật toá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Ộ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ị 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 Khn khổ khóa luận đề 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 , ,vn},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 , với V  {v1,v2 E) , ,v7}, E  {v1v2 v1v5 , , v2v3 , v1v3 , v2v6 , v2v7 v3v4 , v3v5 , v3v7 , v4v6 , v5v6 , v6v7 } , đồ thị biểu diễn hình v1 v2 v      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) G  (V , E) đồ thị không rỗng Đồ thị 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  v2  v1    v v1 v3 v4 G v2   v1 v2     v3 v4 G G Hình Đồ thị G đồ thị G G G Định nghĩa 1.3 Đồ thị G  (V , E) hàm: gọi đồ thị có trọng số 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 )  3; w(v1v2 )  5; w(v5v6 )  w(v2v6 )  6; Khi G đồ thị có trọng số biểu diễn hình v1   v7 v2 v3   1  v6  v4  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  e1 e2 v2  e3  v5 e4 v3  e5 e6 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 - v2 đỉnh trung gian, ta có: v v v v 1 v2 v1 v4 v4 v2 v2 v1 v4 v2 v3 v2 v1 v1   D2  v2   v3  v4 v4 v2 v3 v1 v3 v2 v3 v1 v2 v2 v3 v4  5  3  0 5 - v3 đỉnh trung gian, ta có: v1 v3 v1 v1 v4 v1 v1   D3  v2   v3  v4 v2 v3 v1 v3 v4 v2 v3 v2 5 v1 v2 v4 v4 v2 v3  6 0 v2 v4  5 3  - v4 đỉnh trung gian, ta có: v1 v2 v4 v1 5 v4 v2 v3 32 v1 v4 v2 v3 v4 v1 v2 v3 v4   5 1v   D4  v2     3v   v4 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ật toá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      •            T3  T1   T2 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ụ    G         T1 Hình Đồ thị G khung T1,T2    T2 G  Đị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 toán khung cực tiểu Giả sử G  (V , E, đồ thị liên thơng có trọng số với w: E  R w) 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) eE Bài toán: Cho đồ thị trọng số G  (V , E, w) Hãy tìm khung T  (V , G cho w(T ) câu T nhỏ số độ E ) 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 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ật toán Kruskal v1  v2  6  v3  v5  v4 Hình Đồ thị có trọng số 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  v1  v2  v5 v2  v2    v4 v3 Hình 7b v1  6  v5   v4 v3 Hình 7d v1  v1   v5  v3 Hình 7e  v5   v4 v3 Hình 7c v2  v2 v5 v1    v4 v3 Hình 7a  v4 v2   v5  v3 Hình 7f  v4 v1  v2  v5 v1  v2   v4 v3 Hình 7g  v5   v4 v3 Hình 7h v1  v1  2 v2  v5 v2   v4 v3 Hình 7i v5   v v3 Hình 7k 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 (–) v1 v2 v3 v4 v5 Xét T [0, v1 ] [2, v1 ] [8, v1 ] [4, v1 ] [6,v1 ] v1  - - [7, v2 ] v1 , v2 v1v2 - - [7, v2 ] - [6,v1 ] [5, v4 ] v1 , v2 , v4 v1v2 , v2v4 - - [7, v2 ] - - - - - - - Lần lặp  [4, v2 ]  v1 , v , v ,v 2 4 v v ,v v ,v v v1 , v , v4 v1v2 , v2v4 v5 , v3 v4v5 ,v2v3 3.2.2 Thuật toán Prim Tư tưởng: Thuật toá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 := ; 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; Ví dụ Tìm khung cực tiểu đồ thị sau theo thuật toá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  v6 v2 v6  v2 v6 v4 Hình 8b v3 v5  v v  v6  8 v5 v5 v1  v3 v4 Hình 8a v3 3 3  v5 v1  v1  v3  v v2 Hình 8c Hình 8d v1  v6  v1   v3  3 v5 v5 v6  v3   v2 Hình 8e v4   Hình 8f v2 v4 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 [0, v1 ] [2, v1 ] v3 v4 v5 v6 Xét T [3, v1 ] [, v1 ] [,v1 ] [3, v1 ] v1  [,v ] [3, v ] v,v vv - - [3, v1 ] [3, v ] - - - [3, v2 ] [7, v3 ] [3, v1 ] - - - [1, v6 ] [6, v6 ] - - - - [6, v6 ] 1  2 v1, v2 , v3 v1v2 , v1 v3 - v1, v2 , v3 , v6 v1v2 ,v1 v3 ,v1 v6 - v1 , v , v3 v1v2 , v1 v3 v6 , v4 v1v6 ,v6v4 3.3 Ý nghĩa toán khung cực tiểu Bài tố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 Bài tố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 tố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 toán dẫn toán tìm khung nhỏ Bài tốn tìm khung nhỏ có thuật tốn hiệu để giải chúng Ta xét hai số thuật toán vậy: thuật toán Kruskal thuật toán Prim KẾT LUẬN Việc sử dụng đồ thị vào thuật tốn cơng cụ hữu ích để giải toán thực tế Sau thời gian thực đề tài, khóa luận thu kết sau Mô tả số thuật tố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 toán đồ thị” hoà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 hồn thiện thực tài liệu tham khảo bổ ích 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 ... thuận tiện 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ị

Ngày đăng: 03/12/2019, 15:02

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan