1. Trang chủ
  2. » Luận Văn - Báo Cáo

một số bài toán tối ưu tổ hợp trên đồ thị

67 528 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 67
Dung lượng 1,15 MB

Nội dung

ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC KHOA HỌC ĐOÀN NGỌC LÀNH MỘT SỐ BÀI TOÁN TỐI ƯU TỔ HỢP TRÊN ĐỒ THỊ LUẬN VĂN THẠC SĨ TOÁN HỌC Thái Nguyên - 2012 Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC KHOA HỌC ĐOÀN NGỌC LÀNH MỘT SỐ BÀI TOÁN TỐI ƯU TỔ HỢP TRÊN ĐỒ THỊ Chuyên ngành: TOÁN ỨNG DỤNG Mã số : 60.46.36 LUẬN VĂN THẠC SĨ TOÁN HỌC Người hướng dẫn khoa học: TS VŨ MẠNH XUÂN Thái Nguyên - 2012 Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn Mục lục Mở đầu 3 1 Tối ưu tổ hợp 5 1.1 Thuật toán và độ phức tạp của thuật toán . . . . . . . . . 5 1.1.1 Thuật toán . . . . . . . . . . . . . . . . . . . . . . . 5 1.1.2 Độ phức tạp của thuật toán . . . . . . . . . . . . . 7 1.1.3 Đánh giá thời gian tốt nhất, tồi nhất và trung bình của một thuật toán . . . . . . . . . . . . . . . . . . 10 1.2 Tối ưu tổ hợp . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.2.1 Bài toán tối ưu tổ hợp . . . . . . . . . . . . . . . . 13 1.2.2 Một số bài toán cụ thể . . . . . . . . . . . . . . . . 14 1.2.3 Bài toán lớp P và lớp NP . . . . . . . . . . . . . . 16 2 Một số bài toán tối ưu tổ hợp trên đồ thị 18 2.1 Một số khái niệm . . . . . . . . . . . . . . . . . . . . . . . 18 2.1.1 Đồ thị vô hướng . . . . . . . . . . . . . . . . . . . . 18 2.1.2 Đồ thị có hướng . . . . . . . . . . . . . . . . . . . . 19 2.1.3 Đường đi, chu trình. Đồ thị liên thông . . . . . . . . 20 2.2 Thuật toán tìm kiếm trên đồ thị . . . . . . . . . . . . . . . 22 2.2.1 Thuật toán tìm kiếm theo chiều sâu trên đồ thị . . . 22 2.2.2 Tìm kiếm theo chiều rộng trên đồ thị . . . . . . . . 25 2.3 Bài toán đường đi ngắn nhất . . . . . . . . . . . . . . . . . 29 2.3.1 Đường đi ngắn nhất xuất phát từ một đỉnh đến các đỉnh còn lại_Thuật toán Dijkstra . . . . . . . . . . 31 2.3.2 Đường đi ngắn nhất giữa tất cả các cặp đỉnh_Thuật toán Floyd . . . . . . . . . . . . . . . . . . . . . . . 37 2.4 Bài toán luồng cực đại trong mạng và ứng dụng . . . . . . . 41 2.4.1 Mạng. Luồng trong mạng. Bài toán luồng cực đại . . 41 1 Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn 2.4.2 Lát cắt. Đường tăng luồng. Định lí Ford - Fulkerson 43 2.4.3 Thuật toán tìm luồng cực đại trong mạng . . . . . . 46 2.4.4 Một số bài toán luồng tổng quát . . . . . . . . . . . 54 2.4.5 Một số ứng dụng trong tổ hợp từ bài toán luồng . . 57 Kết luận 64 Tài liệu tham khảo 65 2 Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn Mở đầu Lý thuyết đồ thị là một lĩnh vực nghiên cứu có ý nghĩa thực tiễn cao đã bắt đầu từ lâu. Tuy nhiên, do việc tính toán trên đồ thị thường là cần khối lượng tính toán cũng như không gian nhớ lớn, vì vậy gần đây cùng với sự phát triển mạnh mẽ của kỹ thuật máy tính điện tử, các bài toán tối ưu trên đồ thị ngày càng được quan tâm và đã đạt được nhiều kết quả khả quan. Đáng chú ý, việc chứng minh giả thuyết bốn màu có thể xem như một minh chứng rõ nét về việc chứng minh bài toán nhờ máy tính điện tử. Mặc dù có ý nghĩa thực tiễn cao nhưng lý thuyết đồ thị cũng chỉ mới được đưa vào chương trình giảng dạy và nói chung còn sơ sài. Đề tài này đặt vấn đề nghiên cứu những vấn đề cơ bản về thuật toán, độ phức tạp thuật toán, m ột số bài toán tối ưu cụ thể trên đồ thị và trình bày thuật toán cũng như kết quả tính toán với những bài toán cụ thể. Nội dung của bản Luận văn gồm 2 chương. Chương 1 trình bày khái quát về thuật toán, độ phức tạp của thuật toán, nêu một số bài toán có độ phức tạp đa thức và không đa thức. Chương 2 trình bày một số thuật toán giải một lớp những bài toán: duyệt đồ thị, bài toán tìm đường đi ngắn nhất, bài toán luồng cực đại và minh họa trên những ví dụ cụ thể. Dù đã rất cố gắng, nhưng chắc chắn nội dung được trình bày trong luận văn không tránh khỏi thiếu sót nhất định, em rất mong nhận được sự góp ý của các thầy cô giáo và các bạn. Luận văn này được hoàn thành dưới sự chỉ bảo và hướng dẫn tận tình của TS Vũ Mạnh Xuân. Thầy đã dành nhiều thời gian hướng dẫn và giải đáp các thắc mắc của tôi trong suốt quá trình làm luận văn. Em xin được bày tỏ lòng biết ơn sâu sắc đến Thầy. Tôi xin cảm ơn Sở Nội vụ, Sở Giáo dục và Đào tạo Tuyên Quang, trường THPT Xuân Vân, Tổ Toán trường THPT Xuân Vân đã giúp đỡ tạo điều kiện cho tôi hoàn thành khóa học này. 3 Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn Em xin gửi tới các thầy cô khoa Toán, phòng đào tạo sau đại học Trường Đại học Khoa Học, Đại học Thái Nguyên cũng như các Thầy cô đã tham gia giảng dạy khóa cao học 2010 - 2012, lời cảm ơn sâu sắc nhất về công lao dạy dỗ trong suốt quá trình giáo dục, đào tạo của Nhà trường. Thái Nguyên, ngày 15 tháng 7 năm 2012 Người thực hiện Đoàn Ngọc Lành 4 Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn Chương 1 Tối ưu tổ hợp Chương này trình bày về lớp bài toán tối ưu tổ hợp, thuật toán và mô tả thuật toán bằng ngôn ngữ tựa Passcal, đánh giá độ phức tạp của thuật toán. Nêu một số bài toán cụ thể thuộc lớp bài toán tối ưu tổ hợp, từ đó đưa ra khái niệm bài toán lớp P và lớp NP. 1.1 Thuật toán và độ phức tạp của thuật toán 1.1.1 Thuật toán Khái niệm thuật toán bắt đầu từ thuật ngữ “Algorithm” (thuật toán) là tên nhà toán học Arập: Aba Ja’fa Mohamedibn Musaal Khowarizmi, người đã viết cuốn sách về các chữ số Hindu - cơ sở của kí hiệu số thập phân hiện đại. Ban đầu từ algorism được dùng để chỉ các quy tắc thực hiện các phép tính số học với các con số được viết trên hệ thập phân. Sau đó, Algorism chuyển thành Algorithm vào thế kỷ XIX. Với sự quan tâm ngày càng tăng đối với các máy tính, khái niệm thuật toán đã được định nghĩa một cách hình thức chính xác thông qua máy Turing. Tuy nhiên trong Luận văn này khái niệm thuật toán được hiểu trực quan như sau. Định nghĩa 1.1.1. Thuật toán để giải một bài toán (P) là một thủ tục xác định, được chia ra thành các phép toán cơ bản, biến đổi một dãy các dấu hiệu diễn tả các dữ liệu, không quan trọng ở chỗ thuộc bản chất gì của bài toán (P) thành một dãy các dấu hiệu đặc trưng cho các kết quả của (P). Thuật toán có những đặc trưng sau: • Đầu vào (Input): Một thuật toán nhận các giá trị đầu vào từ một tập hợp đã được chỉ rõ (tập đã xác định). 5 Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn • Đầu ra (Output): Từ mỗi tập có các giá trị đầu vào, thuật toán sẽ tạo ra các giá trị đầu ra tương ứng. Các giá trị đầu ra chính là nghiệm (lời giải) của bài toán. • Tính chính xác (Precision): Các bước của thuật toán phải được mô tả chính xác. Ở mỗi bước, các thao tác phải hết sức rõ ràng, không gây nên sự nhập nhằng, lộn xộn, tùy tiện, đa định nghĩa. Nói rõ hơn, trong cùng một điều kiện hai bộ xử lý cùng thực hiện một bước của thuật toán phải cho những kết quả như nhau. • Tính hữu hạn hay tính dừng (Finiteness): Sau một số hữu hạn bước thuật toán phải cho kết quả với mọi đầu vào. • Tính đơn trị (Uniqueness): Các kết quả trung gian của từng bước thực hiện thuật toán được xác định một cách đơn trị, chỉ phụ thuộc đầu vào và các kết quả của các bước trước. Với hai bộ dữ liệu giống nhau cho trước làm input, thuật toán đơn định sẽ thi hành các mã lệnh giống nhau và cho kết quả giống nhau, còn thuật toán ngẫu nhiên có thể thực hiện theo những mã lệnh khác nhau và cho kết quả khác nhau. • Tính tổng quát (Generality): Thuật toán có thể giải bất kỳ một bài toán nào trong lớp các bài toán đang xét. Với thuật toán có đầu vào là các bộ dữ liệu khác nhau trong một miền xác định thì có thể vận dụng được thuật toán. • Tính hiệu quả (The effectiveness): Hiệu quả về thời gian: Thuật toán phải được thực hiện trong thời gian cho phép, điều này khác với lời giải toán (chỉ cần chứng minh là kết thúc sau hữu hạn bước). Tính hiệu quả về bộ nhớ: Kích thước của thuật toán phải đủ nhỏ để phù hợp với khả năng lưu trữ. Mô tả thuật toán: Có nhiều cách trình bày thuật toán, như dùng ngôn ngữ tự nhiên, ngôn ngữ lưu đồ (sơ đồ khối), ngôn ngữ lập trình, ngôn ngữ phỏng trình. Trong đề tài này các thuật toán được trình bày bằng ngôn ngữ tựa Pascal, trong đó cho phép vừa mô tả thuật toán bằng ngôn ngữ thông thường, vừa sử dụng những cấu trúc lệnh tương tự như của ngôn ngữ lập trình Pascal. 6 Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn Ví dụ 1.1.2. Mô tả thuật toán tìm phần tử lớn nhất trong một dãy hữu hạn các số nguyên. a) Dùng ngôn ngữ tự nhiên để mô tả các bước cần thực hiện. 1. Đặt giá trị cực đại tạm thời bằng số nguyên đầu tiên trong dãy. (Cực đại tạm thời sẽ là số nguyên lớn nhất đã được kiểm tra ở một giai đoạn nào đó của thủ tục.) 2. So sánh số nguyên tiếp sau với giá trị cực đại tạm thời, nếu nó lớn hơn giá trị cực đại tạm thời thì đặt cực đại tạm thời bằng số nguyên đó. 3. Lặp lại bước trước nếu còn các số nguyên trong dãy. 4. Dừng khi không còn số nguyên nào nữa trong dãy. Cực đại tạm thời ở điểm này chính là số nguyên lớn nhất của dãy. b) Thuật toán mô tả tựa Passcal. Input: Dãy gồm n số nguyên a 1 , a 2 , , a n Output: Max là số lớn nhất trong dãy. Procedure Max(a 1 , a 2 , , a n : integer); Begin Max:= a 1 ; for i:= 2 to n do (* Nếu a i lớn hơn Max thì gán lại Max *) if Max < a i then Max := a i ; End; Thuật toán này trước hết gán số hạng đầu tiên a 1 của dãy cho biến Max. Vòng lặp for được dùng để kiểm tra lần lượt các số hạng của dãy. Nếu một số hạng lớn hơn giá trị hiện thời của Max thì nó được gán làm giá trị mới của Max. 1.1.2 Độ phức tạp của thuật toán Để đánh giá khả năng ứng dụng của chương trình ta cần phân tích tính hiệu quả của thuật toán. Phân tích thuật toán là quá trình tìm ra những đánh giá về thời gian tính cũng như dung lượng bộ nhớ cần thiết để thực hiện thuật toán. Để đo tính hiệu quả của một thuật toán đã cho, ta thiết lập mối quan hệ giữa thời gian tiến hành thuật toán, được diễn tả bởi số các phép toán cơ bản với kích thước của bài toán đang xét, hoặc được diễn tả bởi số các dấu hiệu cần thiết để mã hóa các dữ liệu của bài toán. Có ba câu hỏi được đặt ra khi đánh giá thuật toán: 7 Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn 1) Những phép toán cơ bản đang nói đến là những phép toán nào? 2) Bộ mã hóa nào của các dữ liệu cho phép ta đo kích thước của bài toán? 3) Những hàm nào liên kết kích thước với số các phép toán cơ bản mà có thể giúp ta nói rằng một thuật toán là hiệu quả? Có thể cho rằng việc trả lời câu hỏi thứ ba cho phép ta trả lời hai câu hỏi đầu. Thước đo hiệu quả của một thuật toán là thời gian mà máy tính sử dụng để giải bài toán theo thuật toán đang xét, khi các giá trị đầu vào có một kích thước xác định. Một thước đo thứ hai là dung lượng bộ nhớ đòi hỏi để thực hiện thuật toán khi các giá trị đầu vào có kích thước xác định. Các vấn đề như thế liên quan đến độ phức tạp tính toán của một thuật toán. Định nghĩa 1.1.3. Độ phức tạp tính toán của một thuật toán là lượng thời gian và bộ nhớ cần thiết để thực hiện thuật toán (ta gọi là thời gian tính của thuật toán). Vì việc xem xét độ phức tạp không gian gắn liền với các cấu trúc dữ liệu đặc biệt được dùng để thực hiện thuật toán nên ở đây ta sẽ tập trung xem xét độ phức tạp thời gian tính của thuật toán. Chúng ta sẽ quan tâm đến: • Thời gian tính tốt nhất của thuật toán với đầu vào kích thức n, là thời gian tối thiểu cần thiết để thực hiện thuật toán. • Thời gian tính tồi nhất của thuật toán với đầu vào kích thước n, là thời gian nhiều nhất cần thiết để thực hiện thuật toán. • Thời gian tính trung bình của thuật toán, là thời gian trung bình cần thiết để thực hiện thuật toán, trên tập hữu hạn các đầu vào kích thước n. Để tính toán thời gian tính của thuật toán ta sẽ đếm số câu lệnh mà nó phải thực hiện, hoặc trong một số trường hợp cụ thể đếm số các phép tính số học, so sánh, gán, mà thuật toán đòi hỏi thực hiện. Đây là tiêu chuẩn khách quan để đánh giá tính hiệu quả của thuật toán. Ví dụ 1.1.4. Kiểm tra số nguyên dương n có phải là nguyên tố không? 8 Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn [...]... (những số có đơn vị kèm theo là những số gần đúng) 1.2 1.2.1 Tối ưu tổ hợp Bài toán tối ưu tổ hợp Định nghĩa 1.2.1 Bài toán tối ưu hóa tổ hợp được xác định bởi một tập hữu hạn S và một ánh xạ f : S → R Vấn đề đặt ra là xác định s∗ ∈ S sao cho: f (s∗ ) = min {f (s)} s∈S 13 Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn Bài toán tìm phần tử cực đại có thể chuyển về bài toán. .. chọn Do đó bài toán có thể phát biểu dưới dạng bài toán tối ưu tổ hợp Tìm dãy nhị phân (x1 , x2 , , xn ) với xj ∈ {0, 1} sao cho: xj aj b, và xj cj đạt giá trị cực đại Cách giải bài toán là duyệt tất cả dãy nhị phân có độ dài n tương đương với bài toán tìm số tập con của X có n phần tử Số các phép toán cần thực hiện là 2n Đây là bài toán tối ưu tổ hợp có độ phức tạp của tính toán là 2n Bài toán 1.2.4... Cho một tập gồm n thành phố, các khoảng cách giữa các thành phố và một số a Bài toán với nội dung là xác định xem có tồn tại một vòng đi với giá nhỏ hơn hoặc bằng a là bài toán liên hợp của bài toán người du lịch 1.2.2 16 Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn Định lý 1.2.11 Nếu bài toán nhận biết liên hợp của bài toán tối ưu tổ hợp đã cho là "khó" thì bài toán tối. .. các bài toán lớp P và lớp N P 17 Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn Chương 2 Một số bài toán tối ưu tổ hợp trên đồ thị Đồ thị và mạng là mô hình khái quát của nhiều hệ thống thực tế như mô hình tinh thể, cấu trúc phân tử, mạng điện, bản đồ giao thông, mạng máy tính, Bên cạnh các bài toán tối ưu hóa tổ hợp cơ sở đã nêu thì trình bày ứng dụng cụ thể về lớp bài. .. thể về lớp bài toán tối ưu tổ hợp trên đồ thị là nhiệm vụ của luận văn Chương này trình bày một số khái niệm cơ bản và một số thuật toán trên đồ thị 2.1 2.1.1 Một số khái niệm Đồ thị vô hướng Định nghĩa 2.1.1 Đồ thị vô hướng G = (V, E) bao gồm V là tập các đỉnh, và E là tập các cặp không có thứ tự gồm hai phần tử khác nhau của V gọi là các cạnh Định nghĩa 2.1.2 Hai đỉnh u và v của đồ thị vô hướng G... 1, x2 = 1, x3 = 1 Nghiệm của bài toán nhận biết chỉ là đúng hoặc sai và không đòi hỏi gì hơn Điều này phân biệt một cách cơ bản của bài toán nhận biết với các bài toán tồn tại cũng như với các bài toán về sự phân bố phù hợp Định nghĩa 1.2.9 Cho bài toán tối ưu tổ hợp min {f (s)} (tương ứng với s∈S max {f (s)}) và một số a Định nghĩa "bài toán nhận biết liên hợp" là bài s∈S toán: Liệu có tồn tại s ∈ S... những bài toán của lớp này là những bài toán có thể giải được nhờ một máy Turing bởi thuật toán không tiền định có thời gian đa thức Những thuật toán không tiền định là một kiến thức siêu tưởng, chúng khác các thuật toán tiền định ở chỗ chúng không thể đưa lên máy tính điện tử Kết luận chương 1 Chương này trình bày khái niệm thuật toán, độ phức tạp của thuật toán và một số bài toán bài toán tối ưu tổ hợp. .. của n số tự nhiên 1, 2, , n Khi đó bài toán có thể phát biểu dưới dạng bài toán tối ưu tổ hợp sau min{f (π) : π ∈ Π} Phương pháp giải đơn giản nhất là xét tất cả các cách đi để tìm chu trình bé nhất, tức là phải duyệt n! phép toán thì suy ra hành trình tối ưu Vậy đây là bài toán tối ưu tổ hợp có độ phức tạp cỡ n! 14 Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn Bài toán. .. của bài toán, mỗi phần tử s ∈ S đươc gọi là một phương án Còn tập S gọi là tập các phương án của bài toán Thông thường tập S được mô tả như là tập các cấu hình tổ hợp được thỏa mãn một số tính chất nào đó Phương án s∗ ∈ S đem lại giá trị nhỏ nhất cho hàm mục tiêu được gọi là phương án tối ưu, khi đó giá trị f ∗ = f (s∗ ) được gọi là giá trị tối ưu của bài toán Sau đây ta xét một số bài toán tối ưu hóa... bài toán tối ưu hóa tổ hợp truyền thống Các bài toán này một mặt giữ vai trò là những mô hình toán học có nhiều ứng dụng trong thực tế, mặt khác chúng giữ vai trò quan trọng trong việc nghiên cứu và phát triển lí thuyết tối ưu hóa tổ hợp 1.2.2 Một số bài toán cụ thể Bài toán 1.2.2 Bài toán người du lịch Một người du lịch muốn đi tham quan n thành phố T1 , T2 , , Tn Xuất phát từ một thành phố nào đó . (những số có đơn vị kèm theo là những số gần đúng). 1.2 Tối ưu tổ hợp 1.2.1 Bài toán tối ưu tổ hợp Định nghĩa 1.2.1. Bài toán tối ưu hóa tổ hợp được xác định bởi một tập hữu hạn S và một ánh. 13 1.2.2 Một số bài toán cụ thể . . . . . . . . . . . . . . . . 14 1.2.3 Bài toán lớp P và lớp NP . . . . . . . . . . . . . . 16 2 Một số bài toán tối ưu tổ hợp trên đồ thị 18 2.1 Một số khái. gọi là phương án tối ưu, khi đó giá trị f ∗ = f(s ∗ ) được gọi là giá trị tối ưu của bài toán. Sau đây ta xét một số bài toán tối ưu hóa tổ hợp truyền thống. Các bài toán này một mặt giữ vai trò

Ngày đăng: 21/10/2014, 05:39

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w