Nghiên cứu, trình bày về cây khung của đồ thị và các thuật toán tìm cây khung

36 7 3
Nghiên cứu, trình bày về cây khung của đồ thị và các thuật toán tìm cây khung

Đ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

1 PHẦN MỞ ĐẦU 1.1 Lý chọn đề tài Như ta biết, muốn giải toán Tin học việc tìm ý tưởng giải thuật điều bắt buộc phải làm, không quan trọng kèm với việc phải biết lựa chọn cấu trúc liệu phù hợp với ý tưởng giải thuật nhằm tối ưu hóa tốn Chuyên đề đồ thị chuyên đề giảng dạy cho sinh viên lớp chuyên Tin Với nhiều toán thực tế ta mơ hình hóa, đưa cấu trúc đồ thị để giải Đồ thị có trọng số cạnh sử dụng để giải tốn như: Tìm đường ngắn hai thành phố mạng lưới giao thông; Lập lịch sửa chữa tuyến đường cho đảm bảo lưu thông khu dân cư, Lâp kế hoạch lắp đặt hệ thống điện cho tiết kiệm chi phí Để khai thác tính chất đồ thị việc giải số tốn thực tế, tốn giải dựa tính chất liên thơng đồ thị lĩnh vực quan trọng Trong tốn có tốn “Tìm khung đồ thị vô hướng liên thông” lựa chọn đưa vào giảng dạy cho khối lớp chuyên Tin trường THPT Chun Võ Ngun Giáp Đó lí tơi chọn đề tài: “Bài tốn tìm khung đồ thị vô hướng” làm đề tài nghiên cứu cho sáng kiến kinh nghiệm 1.2 Điểm đề tài “Bài tốn tìm khung đồ thị vô hướng” chuyên đề quan trọng bồi dưỡng sinh viên giỏi Tin học nhà trường chuyên đề lý thuyết đồ thị thuật tốn đồ thị Có nhiều dạng đồ thị, nhiều dạng toán thuật toán đồ thị Một toán tối ưu tiếng đồ thị tốn tìm khung, khung cực tiểu Giải pháp đặt sử dụng thuật tốn tìm khung, khung cực tiểu để giải toán đặc trưng đồng thời áp dụng thuật tốn cho lớp tốn kiểm tra tính liên thơng đồ thị, đếm số thành phần liên thông đồ thị Khi sử dụng thuật toán để quay trở lại giải tốn nói cho sinh viên có định hướng tốt việc phân tích, lựa chọn thuật tốn phù hợp, tốt để thiết kế, cài đặt cho toán PHẦN NỘI DUNG 2.1 Thực trạng Trong toán học tin học, lý thuyết đồ thị nghiên cứu tính chất đồ thị Một cách khơng thức, đồ thị tập đối tượng gọi đỉnh (hoặc nút) nối với cạnh (hoặc cung) Cạnh có hướng vô hướng Đồ thị thường vẽ dạng tập điểm (các đỉnh nối với đoạn thẳng (các cạnh) Những ý tưởng đồ thị đưa từ kỷ thứ XVIII nhà tốn học Thụy Sĩ Leonhard Euler, ơng dùng mơ hình đồ thị để giải tốn cầu Konigsberg tiếng Mặc dù lý thuyết đồ thị khoa học phát triển từ lâu lại có nhiều ứng dụng đại Đặc biệt khoảng vài mươi năm trở lại đây, với sự phát triển nhanh chóng Cơng nghệ thông tin, Lý thuyết đồ thị quan tâm nghiên cứu đến nhiều Hiện nay, môn học kiến thức sở mơn khoa học máy tính Đặc biệt thuật tốn đồ thị có nhiều ứng dụng nhiều lĩnh vực khác như: Mạng máy tính, Bưu viễn thơng, Tối ưu hố, Giao thơng vận tải, v.v Ở trường THPT Chuyên Võ Nguyên Giáp vấn đề bồi dưỡng sinh viên giỏi, bồi dưỡng giáo viên vấn đề quan tâm hàng đầu Đặc biệt lớp khối chuyên Tin u cầu sinh viên khơng phải nắm vững kiến thức tư thuật toán mà cịn phải biết sử dụng ngơn ngữ lập trình thành thạo cấu trúc liệu hợp lí để giải tốn Tin học Như ta biết: "Thuật toán + Cấu trúc liệu + Ngơn ngữ lập trình = Chương trình" Như vậy, công việc không phần quan trọng để lập trình giải tốn Tin học việc lựa chọn cấu trúc liệu hợp lí Do sinh viên cần phải biết cách khai thác sử dụng cấu trúc liệu cách hợp lí Từ việc xác định cấu trúc liệu cần sử dụng, sinh viên hình thành tư thuật toán, lựa chọn thuật toán tối ưu để giải toán cụ thể 2.2 Một số định nghĩa liên quan đến lý thuyết đồ thị • Định nghĩa đơn đồ thị vơ hướng Đơn đồ thị vô hướng G = (V, E) bao gồm V tập đỉnh, E tập cặp khơng có thứ tự gồm hai phần tử khác V gọi cạnh • Định nghĩa đỉnh cạnh đồ thị vô hướng Hai đỉnh u v đồ thị vô hướng G gọi kề (u, v) cạnh đồ thị G Nếu e=(u, v) cạnh đồ thị ta nói cạnh liên thuộc với hai đỉnh u v, nói cạnh e nối đỉnh u đỉnh v, đồng thời đỉnh u v gọi đỉnh đầu cạnh (u, v) • Định nghĩa bậc đỉnh đồ thị vô hướng Ta gọi bậc đỉnh v đồ thị vô hướng số cạnh liên thuộc với ký hiệu deg(v) • Định nghĩa đường đồ thị vô hướng Đường độ dài n từ đỉnh u đến đỉnh v, n nguyên dương, đồ thị vô hướng G = (V, E) dãy x0, x1, x2, , xn-1, xn đó: u = x0, v = xn, (xi, xi+1) € E, i = 0, 1, 2, n-1 Đường nói cịn biểu diễn dạng dãy cạnh: (x0, x1), (x1, x2), (x2, x3), , (xn-2, xn-1), (xn-1, xn) Đỉnh u gọi đỉnh đầu, đỉnh v gọi đỉnh cuối đường Đường gọi đơn khơng có cạnh bị lặp lại • Định nghĩa chu trình đồ thị vơ hướng Đường độ dài n từ đỉnh u đến đỉnh v, n nguyên dương, đồ thị vô hướng G = (V, E) dãy x0, x1, x2, , xn-1, xn đó: u = x0, v = xn, (xi, xi+1) ∈ E , i = 0, 1, 2, n-1 Đỉnh u gọi đỉnh đầu, đỉnh v gọi đỉnh cuối đường Đường có đỉnh đầu trùng với đỉnh cuối (tức u = v) gọi chu trình Chu trình gọi đơn khơng có cạnh bị lặp lại • Định nghĩa liên thông đồ thị vô hướng Đồ thị vô hướng G = (V, E) gọi liên thông ln tìm đường hai đỉnh đồ thị • Định nghĩa thành phần liên thơng đồ thị vô hướng Ta gọi đồ thị dồ thị G = (V, E) đồ thị H = (W, F) đó: W ⊆ V F ⊆ E Trong trường hợp đồ thị không liên thơng, rã số đồ thị liên thơng đơi khơng có đỉnh chung Những đồ thị liên thông ta gọi thành phần liên thơng đồ thị • Định nghĩa Cây đồ thị vô hướng Ta gọi T = (V, E) đồ thị vô hướng liên thơng khơng có chu trình Đồ thị khơng có chu trình gọi rừng • Định nghĩa khung đồ thị vô hướng Cho G = (V, E) đồ thị vô hướng liên thông Cây T = (V, F) với F ⊂ E gọi khung đồ thị 2.3 Bài tốn tìm khung 2.3.1 Bài toán thực tế Xây cầu nối đảo BRIDGE.??? Chủ đầu tư xây dựng đặc khu kinh tế quần đảo Quần đảo có n đảo đánh số từ 1, 2, n Trên đảo xây dựng xong sở vật chất hạ tầng phục vụ cho đời sống phát triển kinh tế Tuy nhiên đảo chưa xây dựng cầu để nối chúng nên việc lại đảo vất vả, đặc biệt mua mưa bão Để thu hút nhà đầu tư đưa vốn phát triển đặc khu, Chủ đầu tư định lập dự án xây dựng cầu nối đảo đặc khu nhằm thúc đẩy phát triển kinh tế du lịch Đơn vị thi công khảo sát địa hình cho Chủ đầu tư biết địa hình địa chất nơi đảm bảo xây dựng số cầu nối trực tiếp đảo, xây dựng xong đảm bảo người dân đảo đến với cầu xây dựng Do không đủ nguồn vốn để xây dựng tất cầu lúc, Chủ đầu tư định xây dựng số cầu giai đoạn cho đảm bảo người dân đảo đến đảo lại cầu xây dựng Yêu cầu: Hãy giúp Chủ đầu tư lập kế hoạch xây dựng số cầu đảm bảo người dân đảo đến đảo lại Dữ liệu vào: Cho file BRIDGE.INP có cấu trúc: - Dịng 1: Ghi số nguyên dương n, số lượng đảo đặc khu (2 ≤ n ≤ 100) - Dòng thứ i n dòng tiếp theo: Mỗi dòng ghi n số 1, số thứ j = thể xây cầu nối trực tiếp đảo i với đảo j (1 ≤ i, j ≤ n) Dữ liệu ra: Ghi file văn BRIDGE.OUT theo cấu trúc: - Dòng 1: Ghi số nguyên dương k, số cầu cần phải xây dựng - k dòng tiếp theo: Mỗi dòng ghi số p, q thể việc cần xây dựng cầu nối đảo p với đảo q Hai số ghi cách dấu cách Ví dụ: BRIDGE.INP BRIDGE.OUT 1 1 1 0 0 0 1 0 0 0 0 0 2.3.2 Đưa tốn mơ hình đồ thị Với toán thực tế trên, ta mơ hình hóa đồ thị vơ hướng sau: - Gọi đảo đỉnh đồ thị - Gọi cầu nối trực tiếp hai đảo cạnh đồ thị Từ ví dụ cụ thể cho ta có đồ thị G = (V, E) sau đây: Tập đỉnh: V = {1, 2, 3, 4, 5, 6} Tập cạnh: E = {(1, 2);(1, 4);(1, 5); (1, 6);(2, 3);(2, 4);(4, 5)} 2.3.3 Thuật toán Việc xây dựng cầu đảm bảo người dân lại đảo với thực chất tìm đồ thị liên thơng Để xây dựng cầu đảm bảo người dân lại đảo xây dựng khung T = (V, F) với F ⊂ E Vậy thuật tốn để giải tốn thuật tốn tìm khung T = (V, F) đồ thị G = (V, E), G đồ thị liên thơng Có nhiều thuật tốn để giải tốn tìm khung, ta chọn thuật tốn duyệt theo chiều sâu (DFS) duyệt theo chiều rộng (BFS) Sau ta xây dựng thuật toán duyệt theo chiều sâu để giải quyết: Thủ tục Solution dùng để tìm khung T: Procedure Solution Begin T=∅ While E ≠ ∅ Begin v)trong tập cạnh E đồ thị G - Lấy cạnh e = (u, - Dùng thủ tục BFS(u, v) để tìm đường từ u đến v khung T = (V, F), không tồn đường từ u đến v thì: Nạp cạnh e = (u, v) vào khung T (nạp cạnh e vào tập cạnh F khung T) End; - Loại bỏ cạnh e = (u, v) khỏi tập cạnh E đồ thị G End; Hàm BFS(u, v) dùng để kiểm tra kết nạp thêm cạnh khung T = (V, F) có tạo thành chu trình hay khơng Function BFS(u,v); Begin BFS := True; Nạp u vào Stack, đánh dấu thăm u; While Stack ≠ ∅ Begin e = (u, v)vào Lấy p từ đỉnh Stack; For q lân cận p Begin Nạp q vào Stack, đánh dấu thăm q; End; If p = v then Begin BFS:= False; Exit; End; End; 2.3.4 Chương trình End; * Cấu trúc liệu: - Dùng hai mảng P, Q: Array[0 100] of Integer danh sách kề chứa cạnh đồ thị G, e = (Q[i], P[i]) cạnh đồ thị - Dùng mảng B: array[1 100, 100] of Integer ma trận kề để chứa cạnh khung T tìm - Dùng mảng Free: array[1 max] of Boolean để đánh dấu đỉnh thăm T để kiểm chu trình muốn nạp thêm cạnh e = (Q[i], P[i]) vào khung T - Dùng mảng Stack: array[1 max] of Integer để sử dụng thuật toán DFS việc kiểm tra chu trình muốn nạp thêm cạnh e = (Q[i], P[i]) vào khung T * Chương trình: Pro gra m Th uat _to an_ DF S_t im_ cay _kh ung ; = ' B R I D G E O U T ' ; C o n s t M a x = 0 ; f i = ' B R I D G E I N P ' ; f o T y p e m m c i = A r r a y [ M a x ] o f a x , I n t e g e r ; M a x ] V a r o f f : t e x t ; P,Q: mmci ; B : a r r a y [ M I n t e g e r ; F r e e : a r r a y [ For j:=1 to n Begin Read(f,u); if (u0) and (i L[j] then Begin Proc Integer); edur e SPu sh(V : End; Begin 22 End; Swap(L[i],L[j]); Swap(P[i],P[j]); Swap(Q[i],Q[j]); Begin 23 Inc(Last); Stack[Last] := V; End; Function SPop: Intege r; Begin SPop := Stack[La st]; Dec(Las t); End; Function DFS(u,v:Integer): Boolean; Var i,j: Integer; Be DFS:=True; gin Fillchar(Free,Sizeof(Free),True); FillChar(Stack, sizeof(Stack), 0); Last := 0; SPush(u); Free[u]:=False; While Last > Begin i:=SPop; For j:=1 to N if (B[i,j] > 0) And Free[j] then Begin Beg in End; if i = v then S P u s h ( j ) ; : F= r F ea el [ s j e ] ; D F End; End;S : End; = F a l s e ; E x i t ; Procedure Solution; Var u,v,i ,Val ue:I nteg er; ... thơng đồ thị • Định nghĩa Cây đồ thị vô hướng Ta gọi T = (V, E) đồ thị vô hướng liên thông chu trình Đồ thị khơng có chu trình gọi rừng • Định nghĩa khung đồ thị vô hướng Cho G = (V, E) đồ thị. .. tốn tìm khung cực tiểu Bài toán 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 Trong mục ta tìm hiểu tốn thực tế, đưa tốn mơ hình đồ thị, xây dựng lựa chọn thuật. .. chất tìm đồ thị liên thơng Để xây dựng cầu đảm bảo người dân lại đảo xây dựng khung T = (V, F) với F ⊂ E Vậy thuật toán để giải tốn thuật tốn tìm khung T = (V, F) đồ thị G = (V, E), G đồ thị

Ngày đăng: 20/01/2022, 04:52

Mục lục

  • 1. PHẦN MỞ ĐẦU

    • 1.1. Lý do chọn đề tài

    • 1.2. Điểm mới của đề tài

    • 2. PHẦN NỘI DUNG

      • 2.2. Một số định nghĩa liên quan đến lý thuyết đồ thị

      • 2.3. Bài toán tìm cây khung

        • 2.3.1. Bài toán thực tế

        • 2.3.2. Đưa bài toán về mô hình đồ thị

        • 2.4. Bài toán tìm cây khung cực tiểu

          • 2.4.1. Bài toán thực tế

          • 2.4.2. Đưa bài toán về mô hình đồ thị

          • 3. KẾT LUẬN

            • 3.1. Ý nghĩa, phạm vi áp dụng

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

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

Tài liệu liên quan