1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài toán cây khung nhỏ nhất và các ứng dụng

115 1,3K 4

Đ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

Thông tin cơ bản

Định dạng
Số trang 115
Dung lượng 2,73 MB

Nội dung

MỤC LỤC DANH MỤC BẢNG BIỂU iii Chương GIỚI THIỆU TỔNG QUAN 1.1 Lịch sử toán khung nhỏ 1.2 Các ký hiệu toán học 1.3 Lý thuyết đồ thị 1.4 Cây khung nhỏ 1.4.1 Một số tính chất 1.4.2 Rừng trải rộng tối thiểu giả định đồ thị 1.4.3 Thời gian tính 1.5 Các ứng dụng toán MST 10 1.5.1 Truyền hình cáp 11 1.5.2 Thiết kế mạch điện tử 11 1.5.4 Clustering biểu liệu gen (Thuật phân nhóm liệu biểu gen) 11 1.5.5 Xấp xỉ dựa MST 12 1.6 Kỹ nghệ thuật toán (Algorithm Engineering) 13 1.6.1 Giới thiệu 13 1.6.2 Nền tảng kỹ nghệ thuật toán 22 1.7 Mục tiêu kết Luận văn 26 Chương 28 CẤU TRÚC DỮ LIỆU CÁC THUẬT TOÁN GIẢI BÀI TOÁN MST 28 2.1 Khối xây dựng 28 2.1.1 Hàng đợi ưu tiên 28 2.1.2 Kết nối đồ thị sơ đồ tổng quát thuật toán MST 29 2.1.3 Thuật toán Kruskal 34 2.1.4 Thuật toán Boruvka 35 2.1.5 Thuật toán Dijkstra-Jarn'ık-Prim (DJP) 37 2.2 Khối xây dựng nâng cao 40 2.2.1 Thuật toán "Trường hợp đồ thị dày" 40 2.2.2 Cây định MST 46 2.2.3 Đống mềm 55 Chương 73 THUẬT TOÁN MST TỐI ƯU 73 i 3.1 Biểu diễn đồ thị 73 3.2 Bổ đề thủ tục 75 3.2.1 Bổ đề 75 3.2.2 Phương pháp phân vùng 76 3.2.3 Thời gian tính phân vùng thực 78 3.3 Thuật toán MST tối ưu 81 3.3.1 Thuật toán 81 3.3.2 Thời gian thực 85 3.3.3 Phân tích định 87 3.3.4 Kết luận thời gian tính 89 3.4 Thực 90 3.4.1 Thực chi tiết 90 3.4.2 Thông tin thực tiễn 91 Chương 92 THỰC NGHIỆM 92 4.1 Mục đích thực nghiệm thuật toán lựa chọn để thực nghiệm 92 4.1.1 Mục đích 92 4.1.2 Các thuật toán 92 4.2 Môi trường liệu thực nghiệm 93 4.2.1 Bộ liệu thực nghiệm 93 4.2.2 Môi trường thực nghiệm 95 4.3 Mô tả cài đặt thuật toán 95 4.4 Kết thực nghiệm 96 4.5.Phân tích kết thực nghiệm MST 98 Tài liệu tham khảo 99 Phụ lục 100 ii DANH MỤC BẢNG BIỂU Bảng 1.1: Thời gian chạy trường hợp tồi thuật toán MST, xếp theo năm 10 Bảng 2.1 Thời gian thực đống nhị phân, đống Fibonaccis, Đống mềm 29 Bảng 2.2: Giá trị 54 Bảng 4.1: Các thuật toán lựa chọn thực nghiệm 92 với mật độ đồ thị Bảng 4.2 Giá trị 93 với mật độ đồ thị Bảng 4.3 : Giá trị 93 Bảng 4.4: Giá trị với mật độ đồ thị 94 Bảng 4.5 Giá trị với mật độ đồ thị 94 Bảng 4.6 Giá trị với mật độ đồ thị 94 Bảng 4.7 Giá trị với mật độ đồ thị 94 Bảng 4.8 Giá trị với mật độ đồ thị 94 Bảng C.1: Thể giá trị , đơn đồ thị có đỉnh, cạnh với mật độ đồ thị Bảng C.2: Thể giá trị , đơn đồ thị có đỉnh, đỉnh, đơn đồ thị có đỉnh đơn đồ thị có đỉnh đỉnh đỉnh, thời gian chạy t(ms) thuật toán tìm MST thời gian chạy t(ms) thuật toán tìm MST cạnh với mật độ đồ thị Bảng C.7: Thể giá trị đơn đồ thị có 107 cạnh với mật độ đồ thị 108 Bảng C.6: Thể giá trị đơn đồ thị có 106 thời gian chạy t(ms) thuật toán tìm MST cạnh với mật độ đồ thị Bảng C.5: Thể giá trị 105 thời gian chạy t(ms) thuật toán tìm MST cạnh với mật độ đồ thị Bảng C.4: Thể giá trị 104 thời gian chạy t(ms) thuật toán tìm MST cạnh với mật độ đồ thị Bảng C.3: Thể giá trị đơn đồ thị có thời gian chạy t(ms) thuật toán tìm MST 109 thời gian chạy t(ms) thuật toán tìm MST cạnh với mật độ đồ thị iii 110 Hình 1.1: Đơn đồ thị liên thông với Hình 1.2: Các thuộc tính chu kỳ thuộc tính cắt cắt Hình 1.3 Kỹ nghệ thuật toán 21 Hình 2.1: Một đồ thị với đỉnh xác định ((1, 2), (1, 3), (2, 3)) định tối ưu nối cứng 49 Hình 2.2: Cấu trúc liệu Đống mềm với ba hàng đợi mềm 58 Hình B.1: Ví dụ chọn lọc, lặp lại liên kết lại 100 Hình B.2.1: Đồ thị đầu vào Hình B.2.2: Sau phân vùng 102 Hình B.2.3: Sau định Hình B.2.4: Đồ thị kết nối Ga 103 Hình B.2.5: Sau DenseCase Hình B.2.6: Cạnh ứng viên Gb 103 Hình B.2.7: cạnh MST T'được tìm thấy Boruvka2 104 Hình C.1: Đồ thị thể thời gian chạy t thuật toán đồ thị ngẫu nhiên với mật độ đồ thị (trục Ox biểu diễn , Oy biểu diễn 𝑡 𝑠 ) 105 Hình C.2: Đồ thị thể thời gian chạy t thuật toán đồ thị ngẫu nhiên với mật độ đồ thị (trục Ox biểu diễn m, Oy biểu diễn t(s)) 106 Hình C.3: Đồ thị thể thời gian chạy t thuật toán đồ thị ngẫu nhiên với mật độ đồ thị (trục Ox biểu diễn , Oy biểu diễn 𝑡 𝑠 ) 107 Hình C.4: Đồ thị thể thời gian chạy t thuật toán đồ thị ngẫu 108 nhiên với mật độ đồ thị (trục Ox biểu diễn , Oy biểu diễn 𝑡 𝑠 ) 108 Hình C.5: Đồ thị thể thời gian chạy t thuật toán đồ thị ngẫu nhiên với mật độ đồ thị 𝑥 (trục Ox biểu diễn ,Oy biểu diễn 𝑡 𝑠 ) 109 Hình C.6: Đồ thị thể thời gian chạy t thuật toán đồ thị ngẫu nhiên với mật độ đồ thị 𝑥 (trục Ox biểu diễn ,Oy biểu diễn 𝑡) 110 Hình C.7: Đồ thị thể thời gian chạy t(ms) thuật toán đồ thị ngẫu nhiên với mật độ đồ thị 𝑥 (trục Ox biểu diễn iv , Oy biểu diễn 𝑡) 111 Chương GIỚI THIỆU TỔNG QUAN 1.1 Lịch sử toán khung nhỏ Cho G = (V, E) (V tập đỉnh, E tập cạnh) đồ thị vô hướng liên thông có trọng số cạnh 𝑤 Giả sử T khung G, ta gọi trọng số T tổng trọng số cạnh T Bài toán đặt số khung G, tìm khung có trọng số nhỏ Cây khung gọi khung nhỏ đồ thị (minimum spanning tree) toán đặt gọi toán khung nhỏ Năm 1926, nhà toán học người Séc Otakar Boruvka mô tả thuật toán giải "một số toán cực tiểu hoá" [4] Ông đề xuất thuật toán để tối ưu hoá mạng lưới điện Vào thời Boruvka chưa có khái niệm đồ thị khung tối thiểu Thuật toán ông thuật toán giải toán khung nhỏ biết đến sớm Ngày thuật toán gọi thuật toán Boruvka Trong luận văn, khung nhỏ gọi tắt "MST" Năm 1930, thuật toán MST khác phát nhà toán học Séc Jarn'ık [9] Thuật toán đề xuất độc lập nhà toán học khoa học máy tính người Mỹ Prim vào năm 1957, sau tái khám phá nhà khoa học máy tính Hà Lan Dijkstra năm 1959 Do đó, thuật toán gọi thuật toán Prim, thuật toán Jarn'ık, thuật toán Prim-Jarn'ık thuật toán DJP Trong luận văn này, gọi thuật toán thuật toán DJP Thuật toán Kruskal thuật toán lý thuyết đồ thị để tìm bao trùm tối thiểu đồ thị liên thông có trọng số Nói cách khác, tìm tập hợp cạnh tạo thành chứa tất đỉnh đồ thị có tổng trọng số cạnh nhỏ Thuật toán Kruskal ví dụ thuật toán tham lam Thuật toán xuất lần năm 1956, Joseph Kruskal Nhiều thuật toán MST đại sử dụng ý tưởng từ thuật toán Boruvka DJP Cụ thể thuật toán MST tối ưu nghiên cứu luận văn sử dụng nhiều ý tưởng từ hai thuật toán Kể từ phát minh thuật toán, toán MST nghiên cứu nhiều, chưa tìm cận xác cho độ phức tạp thời gian toán MST Thuật toán MST tối ưu nghiên cứu luận văn thiết kế Pettie Ramachandran [13] vào năm 2002 Các tác giả chứng minh thuật toán chạy thời gian tối ưu, đưa cận xác thấp Thuật toán trình bày chương Phần chương trình bày phát biểu toán khung nhỏ nhất, tổng quan thuật toán MST quan trọng Trước hết đưa ký hiệu toán học sử dụng luận văn, số kiến thức lý thuyết đồ thị 1.2 Các ký hiệu toán học Trong luận văn, ta sử dụng ký hiệu log = , ký hiệu Với số nguyên Ví dụ: , logarithm với số định nghĩa quy nạp sau: = logloglog Ký hiệu định nghĩa {| , nghĩa là, số lần hàm logarithm phải áp dụng thu kết tăng chậm, Hàm số nhỏ cho tất giá trị "thực" Giai thừa số nguyên dương n, kí hiệu n!, định nghĩa ∏ Hàm n! định nghĩa đệ qui bởi: Đối với số nguyên không âm nghĩa đệ quy sau: !=( −1) Dễ dàng thấy hàm Ackermann 𝐴( , ) định {𝐴 𝐴( 𝐴 ) 𝐴 Một tính chất quan trọng 𝐴 giá trị tăng nhanh Gọi 𝐴′( ) = 𝐴( , ) Khi 𝐴′ tăng nhanh, ngược lại hàm nghịch đảo 𝐴 tăng chậm Hàm nghịch đảo hàm Ackermann ký hiệu 𝛼 Hàm 𝛼( ) nhỏ cho tất giá trị "thực" Hàm nghịch đảo Ackermann hai tham số định nghĩa 𝛼( , ) = min{ ≥1| 𝐴( ,[ / ]) ≥ log } Chú ý hàm 𝛼 tăng chậm Đối với số nguyên ≥1, hàm 𝛽( , ) định nghĩa 𝛽 ≥ { | , nghĩa 𝛽( , ) số lần hàm logarithm áp dụng để thu kết ≤ / 1.3 Lý thuyết đồ thị Đồ thị vô hướng G kiểu liệu trừu tượng xác định , tập đỉnh thứ tự Ta ký hiệu { tập cạnh, cặp đỉnh =| |, tập đỉnh =| | Lớp đồ thị với Để tập đỉnh đồ thị Một cạnh hiệu đỉnh ta dùng kí hiệu {𝑣 𝑣 𝑣 , tập cạnh cạnh ký hiệu , tập cạnh kí nối hai đỉnh 𝑣 𝑣 , ký hiệu 𝑣 𝑣 Theo định nghĩa đồ thị vô hướng, cạnh cặp thứ tự gồm hai đỉnh, 𝑣 dương 𝑤 𝑣 𝑣 𝑣 Mỗi cạnh đồ thị gán trọng số hiểu chi phí "sử dụng" cạnh Nếu 𝑤 coi nhẹ , nặng 𝑤 với Để đơn giản, tất ví dụ đồ thị luận văn có trọng số cạnh tương ứng với khoảng cách Euclide điểm cuối Điều giả định phổ biến ví dụ thực tế, chẳng hạn mạng lưới đường mạng lưới điện dây liệu Bậc đỉnh v, ký hiệu 𝑣 số cạnh kề với (nhận đầu mút) Một đường đồ thị dãy đỉnh cạnh xen kẽ đỉnh kết thúc đỉnh Như vậy, cạnh đường kết nối đỉnh với đỉnh sau Như đường mô tả dãy: 𝑣 𝑣 𝑣 𝑣 𝑣 𝑣 𝑣 𝑣 Ta gọi chu trình đường không chứa cạnh lặp lại khởi đầu kết thúc đỉnh, nghĩa 𝑣 𝑣 Một đường gọi đường đơn đỉnh phân biệt Tương tự vậy, chu trình đơn chu trình mà đỉnh phân biệt, ngoại trừ đỉnh bắt đầu kết thúc với 𝒏 Hình 1.1: Đơn đồ thị liên thông 𝒎 {𝑣 , , 𝑣 } Ví dụ: Hình 1.1 cho ví dụ đồ thị G = (V, E) với { 𝑣 𝑣 𝑣 𝑣 𝑣 𝑣 đoạn tô đậm) 𝑣 𝑣 𝑣 𝑣 đơn cạnh Dãy chấm) 𝑣 (các 𝑣 𝑣 𝑣 𝑣 𝑣 𝑣 𝑣 𝑣 𝑣 𝑣 Dãy (các cạnh đường thể 𝑣 𝑣 𝑣 đường 𝑣 𝑣 𝑣 thể 𝑣 𝑣 𝑣 cho ta ví dụ đường đoạn gạch 𝑣 cho ta ví dụ chu trình đơn Một đồ thị gọi liên thông tìm đường hai đỉnh Ta gọi khuyên cạnh nối đỉnh với nó, tức cạnh có dạng 𝑣 𝑣 Cạnh tính hai lần 𝑣 Hai cạnh khác nhau, cạnh song song (hay cạnh lặp) chúng nối cặp đỉnh Một đồ thị có chứa cạnh lặp gọi đa đồ thị Một đồ thị có chứa cạnh lặp khuyên gọi giả đồ thị Ta gọi đơn đồ thị đồ thị vô hướng khuyên cạnh lặp Từ định nghĩa, tập cạnh đơn đồ thị tập thứ tự gồm hai đỉnh Bậc lớn đỉnh đơn đồ thị , bậc đỉnh số đỉnh lân cận với Đồ thị hình 1.1 đơn đồ thị liên thông Nếu đồ thị không liên thông, đồ thị liên thông cực đại gọi thành phần liên thông Có thể chứng minh số lượng cạnh đơn đồ thị liên thông lớn n-1 Vì vậy, đồ thị liên thông có cạnh Ta gọi rừng đồ thị mà thành phần liên thông Một trường hợp đặc biệt đơn đồ thị liên thông đồ thị đầy đủ Đồ thị đầy đủ đồ thị có tất cạnh Tổng số cạnh đồ thị đầy đủ = 2 , nghĩa số cạnh đồ thị đầy đủ Đồ thị đầy đủ với đỉnh ký hiệu Kn Trong suốt luận văn này, định nghĩa mật độ đồ thị tỷ lệ số cạnh số đỉnh, m/n Số cạnh m đơn đồ thị liên thông n đỉnh thoả mãn bất đẳng thức: khoảng Như m nằm Một đồ thị gọi đồ thị thưa tự, đồ thị dày đồ thị có nhỏ Tương lớn Quan niệm “nhỏ”/”lớn” nêu rõ phạm vi ứng dụng cụ thể Một trường hợp đồ thị thưa đặc biệt đồ thị phẳng Đồ thị phẳng đồ thị vẽ mặt phẳng cho hai cạnh không giao nhau, ngoại trừ đỉnh Ta có Định lý 1.3: Đồ thị phẳng đơn liên thông với đỉnh có ≤ −6 cạnh Do đó, đồ thị phẳng, mật độ giới hạn số, ta có = ( ) Do ta có cận cho số lượng cạnh đơn đồ thị liên thông , nên kích thước đầu vào đơn đồ thị liên thông với cạnh Do đó, thời gian cần thiết để xây dựng đơn đồ thị liên thông với cạnh 1.4 Cây khung nhỏ Định nghĩa: Cho G đồ thị liên thông Một khung G chứa tất đỉnh với tập cạnh tập tập cạnh G Nói cách khác khung bao trùm tất đỉnh G Định nghĩa: Cho T khung đồ thị liên thông có trọng số Trọng lượng T xác định tổng trọng số cạnh T: ∑ Định nghĩa: Cho G đồ thị liên thông có trọng số Cây khung nhỏ (MST) G khung G với trọng số nhỏ Rõ ràng từ định nghĩa, MST lời giải cho toán đòi hỏi phải so sánh trọng số cạnh Nếu đồ thị có trọng số cạnh khung MST Ví dụ cho thấy đồ thị có nhiều khung nhỏ Tuy nhiên, phần ta thấy đồ thị có trọng số cạnh phân biệt (tức hai cạnh có trọng số), khung nhỏ 1.4.1 Một số tính chất Thuộc tính chu trình Định lý 1.4.1: Đối với chu trình đơn đồ thị liên thông có trọng số với trọng lượng cạnh phân biệt, cạnh nặng chu trình không thuộc MST Chứng minh: Xem Hình 1.2a Giả sử ngược lại, tức cạnh nặng e thuộc MST Xóa từ MST chia thành hai tách rời với hai điểm cuối khác Có tồn số cạnh đầu cuối hai khác Bởi 𝑤 chu trình với 𝑤 , kết nối hai lại trục Ox 𝑡 trục Oy, thuật toán thể nối giao trị đường khác Đối với liệu chọn, test 1, test ,test với số đỉnh n số cạnh m bảng C.1- C.3 Phụ lục C tiến hành chạy thực nghiệm với thuật toán Kruskal xảy hiện tượng tràn nhớ ram máy tính số giá trị Vì thuật toán Kruskal đồ thị test 1, test test Từ hình vẽ C.1- B.7 bảng C.1 -.C.7 Phụ lục C cho thấy thuật toán DJP thuật toán chạy nhanh cho tất trường hợp đồ thị thực nghiệm Hai thuật toán DJP Thuật toán trường hợp đồ thị dày lý thuyết chạy thời gian tuyến tính cho đồ thị dày Về mặt lý thuyết, thuật toán Trường hợp đồ thị dày nhanh DJP m , điều không phản ánh đồ thị Ta thấy số Big-Oh thuật toán Trường hợp đồ thị dày lớn Big-Oh thuật toán DJP, thuật toán Trường hợp đồ thị dày có số chi phí, chạy DJP nhiều lần cộng với số thực phụ Đối với mật độ , thời gian chạy thuật toán Boruvka thuật toán Hybrid ( Boruvka + DJP) gần phân biệt Điều dễ dàng giải thích bước loglog Boruvka Hybrid giống hệt Cho số đỉnh đồ thị kết nối sau bước Boruvka Kết từ thực nghiệm mật độ thấy tỷ lệ số tồi đỉnh sau bước Boruvka > cho giá trị cho , chúng tôi, số lượng đỉnh giảm bước Boruvka Điều làm cho đồ thị đầu vào DJP nhỏ với giá trị chúng tôi, khác biệt thời gian chạy thuật toán Boruvka gốc thuật toán Boruvka + DJP không đáng kể Hơn thực nghiệm cho thấy số đồ thị đầu vào, thuật toán Boruvka cần ≤ 97 bước để xác định MST, DJP không thực thuật toán Hybrid, mà giống với thuật toán Boruvka Trong hình C.1 C.2 Thuật toán MST tối ưu chạy nhanh thuật toán Trường hợp đồ thị dày Ở hình C.4 Thuật toán MST tối ưu chạy nhanh thuật toán Boruvka Kruskal Trong hình C.7 thuật toán Boruvka chạy chậm sau đến Thuật toán MST tối ưu Rõ ràng từ đồ thị, thời gian chạy thuật toán MST tối ưu tăng nhanh đáng kể so với thời gian chạy thuật toán khác Đối với giá trị thực nghiệm của , (tương đối lớn) số Big-Oh thuật toán tối ưu chiếm ưu thời gian chạy Đối với hầu hết mật độ, DJP thuật toán nhanh Dense Case, sau đến Boruvka hybrid, cuối Kruskal thuật toán MST tối ưu tương đối chậm Sự sụt giảm tương đối lớn (s) thời gian chạy cho thuật toán Trường hợp đồ thị dày giải thích sụt giảm số lượng lần lặp tốn thời gian kết nối Đối với giá trị thấp cho thấy thời gian chạy Boruvka hybrid vượt thời gian chạy thuật toán MST tối ưu cho mật độ định Khoảng cách lý thuyết cài đặt thực tế có chênh lệch lần thời gian chạy thuật toán theo lý thuyết thực tế cài đặt có khác 4.5.Phân tích kết thực nghiệm MST Trong số thuật toán chọn làm thực nghiệm, DJP rõ ràng thuật toán chiến thắng nói đến thời gian chạy thực tế, thuật toán MST tối ưu không chiếm ưu thời gian cho đồ thị thực tế Tuy nhiên, có tham khảo Bảng 1.1 mục 1.4.3, có thuật toán MST nhanh cho trường hợp đồ thị thực 98 Tài liệu tham khảo [1] Nguyễn Đức Nghĩa Bài giảng ''Thiết kế phân tích thuật toán" Bộ môn Khoa học Máy tính, Đại học Bách khoa Hà nội, 2014 [2] Nguyễn Đức Nghĩa Cấu trúc liệu thuậ toán NXB Bách khoa Hà nội, 2008 [3] Claus Andersen and Henrik Bitsch Kirk Advanced algorithms - data structures 2007, projekt - prioritetskøer 2007 [4] O Boruvka O jist´em probl´emu minim´aln´ım Pr´ace Moravsk´e Pˇr´ırodovˇedeck´e Spoleˇcnosti, 3:37–58, 1926 In Czech [5] Bernard Chazelle A minimum spanning tree algorithm with inverse-Ackermann type complexity J ACM, 47(6):1028–1047, 2000 [6] Bernard Chazelle The soft heap: An approximate priority queue with optimal error rate J ACM, 47(6):1012–1027, 2000 [7] Robert W Floyd Algorithm 245: Treesort Communications of the ACM, 7(12):701, December 1964 [8] Michael L Fredman and Robert Endre Tarjan Fibonacci heaps and their uses in improved network optimization algorithms J ACM, 34(3):596–615, 1987 [9] V Jarn´ık O jist´em probl´emu minim´aln´ım P˘r´ırodov˘edeck´e Spole˘cnosti, 6:57–63, 1930 In Czech Pr´aca Moravsk´e [10] David R Karger, Philip N Klein, and Robert E Tarjan A randomized lineartime algorithm to find minimum spanning trees J ACM, 42(2):321–328, 1995 Abstract only [11] Haim Kaplan and Uri Zwick A simpler implementation and analysis of Chazelle’s Soft Heaps To appear, SODA, 2009 [12] Martin Mareˇs Two linear time algorithms for MST on minor closed graph classes Archivum Mathematicum, 40:315–320, 2004 [13] Seth Pettie and Vijaya Ramachandran An optimal minimum spanning tree algorithm J ACM, 49(1):16–34, 2002 [14] D.M.Y Sommerville An introduction to the geometry of N dimensions Dover Publ Inc., New York, 1958 [15] J W J Williams Algorithm 232: Heapsort Communications of the ACM, 7(6):347–348, 1964 [16] Claus Andersen-An optimal minimum spanning tree algorithm-Master’s Thesis-November 28, 2008 99 Phụ lục A Các từ ngữ viết tắt Luận văn DFS Depth-First Search DJP Dijkstra-Jarnik-Prim MSF Minimum Spanning Forest MST Minimum Spanning Tree Dense Case: Thuật toán trường hợp đồ thị dày Optimal MST: Thuật toán MST tối ưu Hybrid: Thuật toán DJP + Boruvka B Các ví dụ B.1 Ví dụ chọn lọc Hình B.1: Ví dụ chọn lọc, lặp lại liên kết lại Chỉ có gốc gốc hiển thị Cây bỏ liên kết hiển thị với đường nét đứt tới gốc Các số bên nút ckey Các số gốc bậc Các số thư mục gốc bậc gốc Các ký hiệu bên cạnh số nút danh sách phần tử a) 10 liên kết với 41 10 liên kết b) 10 liên kết Các gốc bị bậc 6, 100 gọi đệ quy c) Gọi đệ quy: Các bỏ liên kết (3 19) đến gọi đệ quy Các danh sách phần tử (B) gốc lưu lại, minh họa hộp Sau đó, danh sách phần tử gốc làm trống, ckey thiết lập liên kết d) 15 , liên kết Các gốc 15 không liên quan, lấy Các bước liên kết liên quan đến 15 70 Giả sử gọi đệ quy tiếp tục xảy ra, gọi đệ quy kết thúc cách thay đổi gốc (15) 10, làm 10 gốc mới, ghép nối danh sách phần tử A B B.2 Ví dụ trực quan Việc dành riêng để thể ví dụ trực quan thuật toán đệ quy không tầm thường cuối Hình B.2.1 cho thấy đầu vào đồ thị Hình B.2.2 cho thấy kết thủ tục phân vùng với giả định 𝑟 Các phân vùng phát triển thể với đường gạch ngang chấm xung quanh Các cạnh gỡ bỏ M hiển thị với đường chấm Hình B.2.3 Cho thấy kết DecisionTree Chỉ cạnh với hai điểm cuối hiển thị trình bày lại với dòng gạch ngang chấm xung quanh Các cạnh MST tìm thấy định tối ưu (các 𝐹 ) thể với dòng đậm nét Hình B.2.4 cho thấy đồ thị Ga xuất phát cách loại bỏ cạnh M kết nối thành phần MST kết nối Trong ví dụ này, loại bỏ cạnh song song bỏ qua Đó thành phần MST kết nối 𝐹 𝐹 𝑀 Các siêu đỉnh (các ) thể với đường gạch ngang chấm xung quanh đậm nét Hình B.2.5 Cho thấy đỉnh MST tìm thấy DenseCase, 𝐹 Các cạnh hiển thị với dòng đậm nét 101 Hình B.2.6 Cho thấy đồ thị 𝐹 𝐹 candidate cạnh MST Đó 𝐹 𝑀 Cạnh có nguồn gốc từ 𝑀 𝐹 thích Các cạnh lại có nguồn gốc từ 𝐹 𝐹 Hình B.2.7a biểu thị đỉnh MST tìm thấy đồ thị Boruvka2, Các cạnh MST hiển thị với dòng đậm nét Boruvka2 kết nối đồ thị vào đỉnh, mà làm cho dừng đệ quy gọi đệ quy Hình B.2.7b biểu thị cạnh MST giống hình B.2.7a, phạm vi đồ thị ban đầu Hình B.2.1: Đồ thị đầu vào Hình B.2.2: Sau phân vùng 102 Hình B.2.3: Sau định Hình B.2.4: Đồ thị kết nối Ga Hình B.2.6: Cạnh ứng viên Gb Hình B.2.5: Sau DenseCase 103 (a) Cạnh ứng viên phạm vi (b) Bản gốc đồ thị phạm vi Hình B.2.7: cạnh MST T'được tìm thấy Boruvka2 C Các bảng kết hình vẽ thực nghiệm Test 1: Mật độ đồ thị 𝒎 𝒏 Trong Test máy tính không đủ nhớ ram để chạy thuật toán Kruskal nên kết thuật toán Kruskal Test 𝒏 ⌊ 𝒎 𝒏⌋ DJP Kruskal Boruvka Dense case Optimal DJP+Boruvka 262144 393216 415 112103 7053 23562 22974 7112 524288 786432 1805 1048576 2097152 4194304 8388608 1572864 3145728 6291456 12582912 1587 1690 1622 2213 5971 93451 45703 6008 12136 374894 185367 13698 13739.2 380833 184121 15457 12805 375699 186997 13873 11924 378160 185862 13900 Bảng C.1: Thể giá trị 𝒏, 𝒎 thời gian chạy t(ms) thuật toán tìm MST đơn đồ thị có 𝒏 đỉnh, 𝒎 cạnh với mật độ đồ thị 𝒎 104 𝒏 400 350 300 250 200 150 100 50 0 DJP Optimal Boruvka Hybrid 10 12 DenseCase 14 m × 1000000 Hình C.1: Đồ thị thể thời gian chạy t thuật toán đồ thị ngẫu nhiên với mật độ đồ thị 𝒎 Test 2: Mật độ đồ thị 𝒎 𝒏 𝒏 (trục Ox biểu diễn 𝒎, Oy biểu diễn 𝒕 𝒔 ) 𝒏 Trong Test máy tính không đủ nhớ ram để chạy thuật toán Kruskal nên kết thuật toán Kruskal Test 𝒏 𝒎 ⌊𝒏 𝒏⌋ DJP Kruskal Boruvka Dense case Optimal DJP+Boruvka 262144 1093121 613 707553 4655 21070 25373 10679 524288 2227137 1326 5196105 12202 79563 47304 12873 1048576 4531870 3266 2097152 9211357 7661 3200000 14187530 15086 39388 335892 184474 44235 99530 1550277 777460 89367 195427 3772144 1902951 113837 Bảng C.2: Thể giá trị 𝒏, 𝒎 thời gian chạy t(ms) thuật toán tìm MST đơn đồ thị có 𝒏 đỉnh, 𝒎 cạnh với mật độ đồ thị 𝒎 105 𝒏 𝒏 4000 3500 3000 2500 2000 1500 1000 500 0 DJP Optimal 10 Boruvka Hybrid 12 14 16 DenseCase m × 1000000 Hình C.2: Đồ thị thể thời gian chạy t thuật toán đồ thị ngẫu nhiên với mật độ đồ thị 𝒎 Test 3: Mật độ đồ thị 𝒎 𝒏 𝒏 𝒏 (trục Ox biểu diễn m, Oy biểu diễn t(s)) 𝒏 Trong Test máy tính không đủ nhớ ram để chạy thuật toán Kruskal nên kết thuật toán Kruskal Test 𝒏 ⌊𝒏 𝒎 𝒏⌋ DJP Kruskal Boruvka Dense case Optimal DJP+Boruvka 32768 491520 170 66048 492 656 1550 813 65536 1048576 299 668436 2029 1363 3846 1763 524288 9961472 3086 650000 12551552 3873 800000 15687712 7048 95185 48015 118667 79703 128344 77876 176207 103660 175811 115769 234442 145411 Bảng C.3: Thể giá trị 𝒏 𝒎 thời gian chạy t(ms) thuật toán tìm MST đơn đồ thị có 𝒏 đỉnh, 𝒎 cạnh với mật độ đồ thị 𝒎 106 𝒏 𝒏 250 200 150 100 50 0 DJP Optimal 10 Boruvka Hybrid m × 1000000 12 14 16 DenseCase 18 Hình C.3: Đồ thị thể thời gian chạy t thuật toán đồ thị ngẫu nhiên với mật độ đồ thị 𝒎 Test 4: Mật độ đồ thị 𝒎 n 𝒎 ⌊𝒎𝒎𝒂 DJP Kruskal Boruvka Dense case Optimal DJP+Boruvka 𝒏⌋ 𝒏 𝒎𝒎𝒂 4096 698880 179 1261 1648 430 2597 1658 𝒏 (trục Ox biểu diễn 𝒎, Oy biểu diễn 𝒕 𝒔 ) 𝒏 8192 2580795 267 2621 928 588 3421 694 10000 3762499 371 4258 988 745 3084 3517 16384 9586395 886 14711 7932 1593 15605 8495 20000 13997342 2150 22053 12636 230060 122677 13607 Bảng C.4: Thể giá trị 𝒏 𝒎 thời gian chạy t(ms) thuật toán tìm MST đơn đồ thị có 𝒏 đỉnh 𝒎 cạnh với mật độ đồ thị 𝒎 𝒎𝒎𝒂 107 𝒏 450 400 350 300 250 200 150 100 50 0 10 12 14 DJP Kruskal Boruvka DenseCase Optimal Hybrid 16 18 m × 1000000 Hình C.4: Đồ thị thể thời gian chạy t thuật toán đồ thị ngẫu nhiên với mật độ đồ thị 𝒎 𝒏 𝒏 (trục Ox biểu diễn 𝒎, Oy biểu diễn 𝒕 𝒔 ) Test 5: Mật độ đồ thị 𝒎 𝒎𝒎𝒂 n 2048 605917 118 729 256 260 1301 251 𝒎 ⌊𝒎𝒎𝒂 𝒍𝒐𝒈𝒍𝒐𝒈𝒏⌋ DJP Kruskal Boruvka Dense case Optimal DJP+Boruvka 𝒏 4096 2339372 262 1444 2008 533 2408 2274 8192 10000 15000 9066581 13396227 29648745 837 1286 2745 3730 5523 14680 9502 10716 63232 1424 1983 4758 10941 13332 64205 6762 10187 32565 Bảng C.5: Thể giá trị 𝒏 𝒎 thời gian chạy t(ms) thuật toán tìm MST đơn đồ thị có 𝒏 đỉnh 𝒎 cạnh với mật độ đồ thị 𝒎 𝒎𝒎𝒂 108 𝒏 30000 25000 20000 15000 10000 5000 0 DJP DenseCase 10 Kruskal Optimal 12 14 16 Boruvka Hybrid m×1000000 Hình C.5: Đồ thị thể thời gian chạy t thuật toán đồ thị ngẫu nhiên với mật độ đồ thị 𝒎 𝒎𝒎𝒂 𝒏 (trục Ox biểu diễn 𝒎,Oy biểu diễn 𝒕 𝒔 ) Test 6: Mật độ đồ thị 𝒎 𝒏 ⌊𝒏 𝒏⌋ 𝒎 DJP Kruskal Boruvka Dense case Optimal DJP+Boruvka 4096 262144 81 829 155 213 610 141 𝒏 𝒏 8192 741455 143 2900 371 408 1819 368 16384 2097152 284 15870 1503 705 3360 1792 32768 5931642 699 76759 10128 1470 11962 5365 65536 16777216 1985 392791 53570 4115 30219 17737 Bảng C.6: Thể giá trị 𝒏 𝒎 thời gian chạy t(ms) thuật toán tìm MST đơn đồ thị có 𝒏 đỉnh 𝒎 cạnh với mật độ đồ thị 𝒎 109 𝒏 𝒏 70 60 50 40 30 20 10 0 10 15 DJP 20 Kruskal 25 30 35 Boruvka m×1000000 Hình C.6: Đồ thị thể thời gian chạy t thuật toán đồ thị ngẫu nhiên với mật độ đồ thị 𝒎 𝒎𝒎𝒂 𝒏 (trục Ox biểu diễn 𝒎,Oy biểu diễn 𝒕) Test : Mật độ đồ thị 𝒎 𝒎𝒎𝒂 𝒏 1024 2048 3000 4096 5000 ⌊𝒎𝒎𝒂 ⌋ DJP Kruskal Boruvka Dense case Optimal DJP+Boruvka 523776 89 755 256 218 693 248 2096128 225 1362 3174 400 1973 566 4498500 410 2349 6183 711 3960 1195 8386560 779 4797 16040 1268 13631 2132 12497500 1081 5410 30134 1791 21822 13769 𝒎 Bảng C.7: Thể giá trị 𝒏 𝒎 thời gian chạy t(ms) thuật toán tìm MST đơn đồ thị có 𝒏 đỉnh, 𝒎 cạnh với mật độ đồ thị 𝒎 110 𝒎𝒎𝒂 35 30 25 20 15 10 0.0 2.0 4.0 6.0 DJP DenseCase 8.0 Kruskal Optimal 10.0 12.0 14.0 Boruvka Hybrid m × 1000000 Hình C.7: Đồ thị thể thời gian chạy t(ms) thuật toán đồ thị ngẫu nhiên với mật độ đồ thị 𝒎 𝒎𝒎𝒂 (trục Ox biểu diễn 𝒎, Oy biểu diễn 𝒕) D Source code Tất liệu Luận văn ghi đĩa CD 111 ... Giả sử T khung G, ta gọi trọng số T tổng trọng số cạnh T Bài toán đặt số khung G, tìm khung có trọng số nhỏ Cây khung gọi khung nhỏ đồ thị (minimum spanning tree) toán đặt gọi toán khung nhỏ Năm... thiểu Thuật toán ông thuật toán giải toán khung nhỏ biết đến sớm Ngày thuật toán gọi thuật toán Boruvka Trong luận văn, khung nhỏ gọi tắt "MST" Năm 1930, thuật toán MST khác phát nhà toán học Séc... thuật toán MST, xếp theo năm 1.5 Các ứng dụng toán MST Cây bao trùm tối thiểu hữu ích việc xây dựng lưới mạng, cách mô tả cách để kết nối tập hợp địa điểm cách sử dụng tổng số chí phí dây nhỏ Phần

Ngày đăng: 26/07/2017, 20:57

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w