1. Trang chủ
  2. » Tài Chính - Ngân Hàng

Chu trình hamilton tổng quát trong đồ thị vô hướng

64 463 1

Đ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 64
Dung lượng 1,58 MB

Nội dung

1 MỤC LỤC LỜI CAM ĐOAN Tôi xin cam đoan kết nêu luận văn kết tìm hiểu, nghiên cứu hướng dẫn GS.TS: Đặng Quang Á Mọi trích dẫn sử dụng báo cáo ghi rõ nguồn tài liệu tham khảo theo quy định Tác giả Nguyễn Văn Thái LỜI CẢM ƠN Trước tiên, xin gửi lời cảm ơn đến tất quý thầy cô giảng dạy chương trình đào tạo Cao học chuyên ngành Khoa học máy tính K11 trường Đại học Công nghệ thông tin truyền thông – Đại học Thái Nguyên tổ chức đào tạo, người truyền đạt cho kiến thức hữu ích làm sở cho thực tốt luận văn Tác giả xin chân thành cảm ơn thầy cô, người tận tình hướng dẫn truyền đạt kinh nghiệm quý báu học tập nghiên cứu tận tình giúp đỡ Đặc biệt xin bày tỏ lòng cảm ơn xâu sắc tới GS.TS Đặng Quang Á, người tận tình hướng dẫn, quan tâm, đóng góp ý kiến cho xuất thời gian thực luận văn Mặc dù trình thực luận văn có giai đoạn không thuận lợi Thầy hướng dẫn, bảo cho nhiều kinh nghiệm thời gian thực luận văn Sau xin gửi lời biết ơn sâu sắc đến gia đình tạo điều kiện tốt cho suốt trình học thực luận văn Do thời gian có hạn kinh nghiệm nghiên cứu khoa học chưa nhiều nên luận văn nhiều thiếu sót, mong nhận ý kiến góp ý Thầy/Cô anh chị học viên Thái Nguyên, tháng năm 2014 Nguyễn Văn Thái DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT Ký hiêu Từ viết tắt V Tập đỉnh đồ thị E Tập cạnh đồ thị G=(V,E) Đồ thị G với tập đỉnh V, tập cạnh E |V|, |V(G)| Số đỉnh đồ thị |E|, |E(G)| Số đỉnh đồ thị deg(v), degG(v) Bậc đỉnh v đồ thị G δ, δ(G) Bậc nhỏ đỉnh G Kn Đồ thị đầy đủ n đỉnh Cn Đồ thị vòng n đỉnh Wn Đồ thị bánh xe n đỉnh W(G) Số thành phần liên thông G k-liên thông Đồ thị có số liên thông k k(G) Chỉ số liên thông đồ thị G P Deterministic Polynomial NP Nondeterministic Polynomial NP-C NP-Complete HC Hamilton cycle DC Dominating cycle NTM Nondeterministic Turing Machine DTM Deterministic Turing Machines ∝ Phép quy dẫn đa thức K Lớp đồ thị đặc biệt K K 1, K 2, K 3, K 4, K Các đồ thị đặc biệt K 1, K 2, K 3, K 4, K Diễn giải Hợp s đồ thị đầy đủ lạ Hợp s đồ thị đầy đủ lạ Kn DANH MỤC HÌNH Trang MỞ ĐẦU Đặt vấn đề: Lý thuyết đồ thị lĩnh vực nghiên cứu từ năm đầu kỷ 18 nhà toán học Leonhard Euler người Thụy sĩ Đồ thị sử dụng để giải nhiều toán nhiều lĩnh vực khác nhau, tin học trường hợp cụ thể Trong năm 70 kỷ 20, giới chứng kiến phát triển nhanh chóng rộng lớn lý thuyết đồ thị, số có số lượng đáng kể công trình nghiên cứu cấu trúc chu trình đồ thị, đặc biệt chu trình Hamilton nhiều vấn đề mở Nghiên cứu cấu trúc chu trình đồ thị giúp giải tốt toán tối ưu đời sống Chẳng hạn, lĩnh vực chế tạo robot thám hiểm, chuyển gửi tín hiệu hình ảnh qua vệ tinh, toán phân tích hệ thống tương tác tiện ích website, Trong số cấu trúc đồ thị chu trình Hamilton đóng vai trò đặc biệt quan trọng Đó chu trình qua tất đỉnh đồ thị, đỉnh lần Bài toán chu trình Hamilton toán xác định xem liệu đồ thị có chứa chu trình Hamilton không tìm chu trình Bài toán chứng minh NP-C (NP- đầy đủ) Chính không tồn thuật toán đa thức giải nó, để giải toán nhiều thuật toán gần nghiên cứu Một mở rộng chu trình Hamilton chu trình trội (Dominating cycle) Bài toán chứng minh NP-C Việc tìm hiểu chu trình Hamilton chu trình trội, dấu hiệu nhận biết chúng thuật toán xác định, cải tiến phát triển chúng việc làm có ý nghĩa khoa học thực tiễn Đây mục đích luận văn Mục tiêu luận văn: Đối tượng nghiên cứu luận văn vấn đề cấu trúc chu trình liên quan đến chu trình Hamilton chu trình trội đồ thị Phạm vi nghiên cứu Luận văn tập trung nghiên cứu kiến thức có liên quan, sở lý thuyết như: Lý thuyết đồ thị lý thuyết toán NP-C, chu trình Hamilton chu trình trội Nhiệm vụ nghiên cứu - Tìm hiểu kiến thức tổng quan đồ thị lý thuyết toán NP-C - Tìm hiểu đồ thị Hamilton mở rộng - Tìm hiểu thuật toán tìm chu trình Hamilton - Xây dựng thuật toán đa thức xác định tồn chu trình trội đồ thị cho trước - Cài đặt thuật toán Tổ chức luận văn: Luận văn bao gồm phần mở đầu, chương nội dung, phần kết luận, phần phụ lục tài liệu tham khảo Chương I: Một số kiến thức lý thuyết đồ thị lý thuyết toán NP-C Chương II: Chu trình Hamilton Phần đầu tìm hiểu chu trình Hamilton, số thuật toán xác định chu trình Hamilton Phần cuối tìm hiểu chu trình Hamilton tối đại, cách xây dựng đồ thị Hamilton tối đại n đỉnh Chương III: Chu trình trội Phần đầu trình bày hiểu biết chu trình trội đồ thị hướng, chứng minh toán xác định có tồn chu trình trội đồ thị G cho trước NP-C Phần sau trình trình bày thuật toán đa thức xác định tồn chu trình trội đồ thị hướng lớp đồ thị 2-liên thông có δ(G) ≥ n/3 Tìm hiểu lớp đồ thị 2-liên thông Một số hình ảnh thể chương trình demo Phần kết luận: Tóm tắt kết đạt luận văn Chương I: MỘT SỐ KHÁI NIỆM CƠ BẢN TRONG LÝ THUYẾT ĐỒ THỊ VÀ LÝ THUYẾT CÁC BÀI TOÁN NP-C 1.1 Lý thuyết đồ thị Trong toán học tin học, đồ thị đối tượng nghiên cứu lý thuyết đồ thị Một cách không thức, đồ thị tập đối tượng gọi đỉnh nối với cạnh Thông thường, đồ thị vẽ dạng tập điểm (đỉnh, nút) nối với đoạn thẳng (cạnh) Tùy theo ứng dụng mà số cạnh có hướng Chúng ta phân biệt loại đồ thị khác kiểu số lượng cạnh nối hai đỉnh đồ thị Trong phạm vi luận văn xét đến đơn đồ thị hữu hạn, hướng gọi tắt đồ thị Các kiến thức mục tham khảo từ [2], [3] 1.1.1 Các thuật ngữ 1.1.1.1 Một số khái niệm Định nghĩa 1.1 Đơn đồ thị hướng G=(V, E) bao gồm V tập đỉnh, E tập cặp thứ tự gồm hai phần tử khác V gọi cạnh Đồ thị hướng G cặp G = (V,E) Trong đó: V ≠ φ tập hợp phần tử gọi đỉnh đồ thị E: Là tập cặp (u,v) (gọi cạnh đồ thị) với u,v ∈ V, (u,v) ∈ E ⇒ (v,u) ∈ E coi (u,v) ≡ (v,u); Nếu e = (u,v) cạnh đồ thị G u, v coi đỉnh đầu mút cạnh e hay đỉnh liên thuộc với e, hay nói u,v kề hay láng giềng Định nghĩa 1.2 Đồ thị G gọi hướng ∀ u,v ∈ V:(u,v)≡(v,u)∈E 10 Hình 1.1 Đồ thị hướng Định nghĩa 1.3 Đồ thị G gọi có hướng ∃ u,v∈V: (u,v) ≠ (v,u) Định nghĩa 1.4 Đơn đồ thị hướng G = (V,E) bao gồm V tập đỉnh, E tập cặp thứ tự gồm hai phần tử khác V gọi cạnh + Đồ thị G = (V,E) với đỉnh v ∈ V, e = (u,v) ∈ E Khi đó: u,v hai đỉnh đầu, cuối cạnh e; e _ cạnh liên thuộc u,v Định nghĩa 1.5 Hai đỉnh u v đồ thị hướng gọi liền kề (hay láng giềng) (u,v) cạnh đồ thị G Nếu e=(u,v) e gọ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 mút cạnh (u,v) Định nghĩa 1.6 Bậc đỉnh u ∈ V kí hiệu deg(u) đồ thị hướng số cạnh liên thuộc với u (hay tập láng giềng u), riêng khuyên đỉnh tính hai lần cho bậc Đỉnh có bậc không gọi đỉnh cô lập (Không kề với đỉnh nào) Đỉnh v gọi đỉnh treo deg(v)=1 b c a d j k i h e g f Hình 1.2 Đồ thị hướng bậc đỉnh 50 Bước 3: Chọn ba đỉnh u, v, w có bậc lớn (deg(u) = deg(v) = deg(w) = max(deg(i)) = k) Nếu k < 12 K Bước 4: Tìm đồ thị đầy đủ mà đỉnh gồm đỉnh (K3) Nếu K Bước 5: Kiểm tra đỉnh đồ thị đầy đủ K3 xem có nối với ba đỉnh u, v, w không? Nếu không K 3.2.6 Thuật toán 3.3: Kiểm tra đồ thị có thuộc K hay không? Để kiểm tra G có thuộc K hay không ta kiểm tra xem G có tập đỉnh S gồm r-1 đỉnh có bậc ≥ 2(r-1) Nếu có, bỏ chúng G phân rã thành r – đồ thị đầy đủ mà đồ thị có đỉnh đỉnh nối tới r-1 đỉnh thuộc S Các bước thực hiện: Bước 1: gán r = δ Bước 2: Kiểm tra |V| = 3r không? Nếu không K Bước 3: Chọn tập S gồm r – đỉnh (∀ j ∈ S|deg(j) = max(deg(i)) = k) Nếu k < 2(r-1) K Bước 4: Tìm r-1 đồ thị đầy đủ (K2) đồ thị đầy đủ K3 Nếu K Bước 5: Kiểm tra đỉnh thuộc tập S có nối với đồ thị đầy đủ không? Nếu không K 3.2.7 Thuật toán 3.4: Kiểm tra đồ thị G có thuộc lớp K hay không? Để kiểm tra G có thuộc K hay không ta kiểm tra xem G có chứa đỉnh u, v có bậc lớn ≥ 3r cho bỏ đồ thị G trở thành đồ thị 51 đầy đủ mà đồ thị gồm r đỉnh hay không, đỉnh nối với u, v không? Các bước thực hiện: Bước 1: gán r = δ - Bước 2: Kiểm tra |V| = 3r+2 không? Nếu không K Bước 3: Chọn hai đỉnh u, v có bậc lớn (deg(u) = deg(v) = max(deg(i)) = k) Nếu k < 3r K Bước 4: Tìm K_(r, r, r) (3 đồ thị đầy đủ mà đồ thị gồm r đỉnh) Nếu K Bước 5: Kiểm tra đỉnh K_(r, r, r) có nối với hai đỉnh u, v không? Nếu không K 3.2.8 Thuật toán 3.5: Kiểm tra đồ thị G có thuộc lớp K hay không? Để kiểm tra G có thuộc K hay không ta kiểm tra xem G có tập S gồm r đỉnh có bậc ≥ 2(r+1) cho bỏ đỉnh thuộc S đồ thị G phân rã thành r+1 đồ thị đầy đủ gồm đỉnh hay không, đỉnh nối với đỉnh tập S Các bước thực hiện: Bước 1: gán r = δ - Bước 2: Kiểm tra |V| = 3r+2 không? Nếu không K Bước 3: Chọn tập S gồm r đỉnh có bậc lớn (∀ j ∈ S|deg(j) = max(deg(i)) = k) Nếu k < 2(r+1) K Bước 4: Tìm r+1 đồ thị đầy đủ K2 Nếu K 52 Bước 5: Kiểm tra đỉnh r+1 đồ thị đầy đủ K2 có nối với r đỉnh tập S không? Nếu không K Đánh giá độ phức tạp thuật toán: Với việc đồ thị tổ chức ma trận kề, độ phức tạp thuật toán xác định sau: Bước 1: Để tính bậc cho đỉnh O(n2) phép toán Bước 2: Sắp xếp dãy bậc đỉnh theo chiều giảm dần bậc đỉnh: độ phức tạp O(n2) kiểm tra δ(G) O(1) Như bước thời gian O(n2) Bước 3: Kiểm tra đồ thị 2-liên thông: Sử dụng thuật toán 2.1 để kiểm tra tính liên thông đồ thị O(n2) phép tính Lặp lại n lần việc xóa đỉnh kiểm tra tính liên thông đồ thị thu (thuật toán 2.2), toàn bước có độ phức tạp O(n3) Bước 4: Kiểm tra xem đồ thị có thuộc lớp đồ thị đặc biệt K hay không Để đánh giá độ phức tạp bước 4, ta tiến hành đánh giá độ phức tạp thuật toán 3.1, 3.2, , 3.5 Vì thuật toán tương tự nên ta xét độ phức tạp thuật toán (giả sử chọn thuật toán 3.1) Trong bước bước thuật toán 3.1 O(1) phép tính Bước có độ phức tạp O(r) với r số phần tử thuộc tập S Trong bước 4, đỉnh cần kiểm tra đỉnh kề với xét xem tập đỉnh có tạo nên đồ thị đầy đủ hay không Việc kiểm tra có phải đồ thị đầy đủ hay không O(n2) phép tính Do bước O(n3) phép toán Bước O(n2) phép toán Như thuật toán 3.1 có độ phức tạp O(n3) để kiểm tra đồ thị có thuộc vào lớp đồ thị K hay không Tóm lại thuật toán xác định tồn chu trình trội lớp đồ thị 2-liên thông thỏa δ O(n3), độ phức tạp thời gian đa thức 53 Như ta thấy toán xác định tồn chu trình trội đồ thị G thuộc lớp NP-C, toán toán xác định tồn chu trình trội lớp đồ thị 2-liên thông thỏa δ lại thuộc lớp P có độ phức tạp tính toán thời gian đa thức 3.3 Cài đặt thử nghiệm: 3.3.1 Phát biểu toán Cho trước đồ thị hướng G Hãy kiểm tra xem G có phải lớp đồ thị 2liên thông thỏa mãn δ(G) hay không, G có tồn chu trình trội hay không? 3.3.2 Công cụ lựa chọn Việc lựa chọn ngôn ngữ lập trình cho nội dung toán vấn đề quan trọng ngôn ngữ lập trình có ưu điểm nhược điểm định Để hoàn thành ứng dụng chương trình Demo viết ngôn ngữ lập trình C# Visual Studio 2010, chương trình chạy hệ điều hành Windows XP, Vista, Windows7 3.3.3 Xây dựng, phát triển chương trình Luận văn sử dụng phương pháp dùng ma trận kề để biểu diễn đồ thị máy tính Chương trình gồm lớp Form hiển thị kết thu Ngoài chương trình sử dụng số class, phương thức nhằm bổ trợ cho việc thể thuật toán 3.3.3.1 Lớp MyFile.class Trong lớp Myfile.class ta sử dụng phương thức public static int[][] readFile(String filename) để đọc ma trận kề phương thức public static void saveFile(String filename, int[][] matran) để lưu ma trận vào máy tính 54 3.3.3.2 Lớp MaTran.class Trên lớp Matran.class thực chức như: Tính bậc đỉnh, xếp bậc đỉnh theo chiều giảm dần, kiểm tra tính liên thông đồ thị, kiểm tra đồ thị có phải đồ thị 2-liên thông Để duyệt đồ thị, chương trình sử dụng thuật toán duyệt theo chiều sâu (DFS) 3.3.3.3 Lớp DoThi.class Trên lớp Dothi.class chủ yếu thực chức kiểm tra đồ thị có phải đồ thị đầy đủ không? Kiểm tra xem đồ thị có thuộc lớp đồ thị đặc biệt K (K 1, K 2, K 3, K 4, K 5) hay không Phương thức isDominating nhằm đưa kết luận xem đồ thị có thuộc lớp đồ thị đặc biệt K, hay có chu trình trội hay không Sau đoạn chương trình kiểm tra đồ thị có thuộc lớp K hay không (các lớp lại tương tự) public static bool kiemTraK1(MaTran m) { int[] fix = new int[m.nMaTran]; int r = m.dsDinh[m.nMaTran - 1].bac; //Bước 1: kiểm tra |V|=3r if (m.nMaTran != * r) return false; // Bước 2: chọn đỉnh u, v có bậc lớn kiểm tra deg(u)=deg(v)

Ngày đăng: 14/04/2017, 22:47

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w