1. Trang chủ
  2. » Văn Hóa - Nghệ Thuật

Nghiên cứu ảnh hưởng của chất liệu sợi dệt và quá trình nhuộm tới khả năng ngăn ngừa tia uv của vải

121 218 0

Đ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 121
Dung lượng 3,65 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Dưới dạng một bài toán thì một vấn đề sẽ gồm có đầu vào và đầu ra, trong đó đầu vào mô tả không gian các giá trị có thể có của bài toán và đầu ra là giá trị mong muốn tương ứng với đầu v

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI -

NGUYỄN DUY HIỆP

ỨNG DỤNG THUẬT TOÁN LAI

GIẢI BÀI TOÁN CÂY KHUNG TRUYỀN THÔNG TỐI ƯU

Trang 2

~ 1 ~

Lời cảm ơn

Đầu tiên tôi xin bày tỏ sự biết ơn sâu sắc PGS TS Nguyễn Đức Nghĩa, thầy đã tận

tình giảng dạy chúng tôi các môn học chuyên ngành và nhiệt tình hướng dẫn, giúp

đỡ tôi hoàn thành luận văn này

Tôi cũng muốn bày tỏ lòng biết ơn các thầy cô khoa Công nghệ Thông tin trường Đại học Bách khoa Hà Nội đã giảng dạy cho chúng tôi các môn học chuyên đề trong khóa học

Cuối cùng tôi xin gửi lời cảm ơn sâu sắc đến gia đình, và bạn bè, những người luôn

ở bên cạnh giúp đỡ, động viên tôi trong quá trình hoàn thành đồ án

Mặc dù đã có nhiều cố gắng, nhưng vì kiến thức và thời gian hạn chế nên chắc chắn luận văn này còn nhiều thiếu sót Tôi xin chân thành cảm ơn và rất mong nhận được những ý kiến đóng góp từ các thầy cô và các bạn Những góp ý xin gửi về địa chỉ:

Nguyễn Duy Hiệp

Bộ môn Khoa học máy tính, viện Công nghệ thông tin và truyền thông, trường Đại học Bách Khoa Hà Nội

Email: hiepnd@soict.hut.edu.vn hoặc

nguyenduyhiep@gmail.com

Hà Nội, ngày 31 tháng 10 năm 2010

Nguyễn Duy Hiệp Học viên cao học Lớp Công nghệ thông tin 2008 – 2010 Trường Đại học Bách Khoa Hà Nội

Trang 3

~ 2 ~

Lời mở đầu

Việc phát triển các thuật toán hiệu quả để giải các bài toán NP – khó (NP – hard) là một vấn đề được quan tâm của nhiều nhà khoa học nghiên cứu về máy tính Bởi vì chúng thường có rất nhiều ứng dụng trong thực tiễn, ví dụ như bài toán người du lịch, bài toán đóng thùng, bài toán cây Steiner, bài toán người đưa thư Trung Hoa,

… Đối với các bài toán này các thuật toán giải chính xác thường có thời gian tính lớn do độ phức tăng rất nhanh khi kích thước bài toán tăng Do đó hiện nay người ta thường sử dụng cách tiếp cận giải gần đúng Các phương pháp giải gần đúng thường dùng là: các thuật toán xấp xỉ (approximation schemes), tìm kiếm cục bộ (local search), các phương pháp xác xuất (probabilistic methods), tính toán tiến hóa (evolutionary computation), thuật toán di truyền (genetic algorithm), …

Luận văn này tập trung vào xây dựng thuật toán di truyền lai để giải bài toán cây

khung truyền thông tối ưu (Optimal Communication Spanning Tree - OCST) Đây

là một trong những bài toán trên đồ thị thuộc lớp NP-khó, và có ứng dụng trong nhiều lĩnh vực thực tế như thiết kế vi mạch và các mô hình mạng

Thuật toán đề xuất đã được chạy thử nghiệm trên các bộ dữ liệu thường dùng bởi các nhà khoa học để đánh giá các thuật toán giải bài toán OCST, và một số bộ dữ liệu có kích thước lớn được sinh ngẫu nhiên Kết quả thực nghiệm cho thấy thuật toán cho kết quả là tốt hơn so với một số một số thuật toán di truyền tốt nhất hiện biết Những kết quả đạt được được trình bày thành một bài báo và đã được chấp nhận đăng trong hội thảo quốc tế lần thứ 26 về tính toán ứng dụng (Symposium On Applied Computing – SAC) diễn ra vào 21-24/3/2011 tại đại học Tunghai, TaiChung, Taiwan

Luận văn được bố cục như sau :

Chương 1 trình bày một số kiến thức cơ sở trong lý thuyết về độ phức tạp tính toán,

lớp bài toán NP-khó làm nền tảng cho các chương tiếp theo

Trang 4

~ 3 ~

Chương 2 trình bày tổng quan về bài toán cây khung truyền thông tối ưu và các

hướng tiếp cận đã được đề xuất để giải quyết bài toán

Chương 3 trình bày sơ đồ của hai giải thuật meta-heuristic gồm giải thuật di truyền

và giải thuật tối ưu hóa bày đàn

Chương 4 đề xuất giải thuật di truyền lai dựa trên giải thuật di truyền chuẩn kết hợp

với giải thuật tối ưu hóa bày đàn để giải bài toán cây khung truyền thông tối ưu

Chương 5 trình bày kết quả thực nghiệm của giải thuật di truyền lai đề xuất trong

chương 4 Giải thuật được thực hiện với sáu loại mã hóa cây khung và hai phương pháp lai ghép nhằm so sánh hiệu quả so với các giải thuật hiện biết

Kết luận và hướng phát triển

Đánh giá tổng quan lại những kết quả đã thực hiện được, những hạn chế của luận văn và một số vấn đề mở cần tiếp tục giải quyết

Trang 5

~ 4 ~

Mục lục

Lời cảm ơn 1

Lời mở đầu 2

Danh mục hình vẽ 7

Danh mục bảng 10

Danh mục thuật ngữ tiếng Anh 11

CHƯƠNG 1 CÁC KHÁI NIỆM CƠ BẢN 13

1.1 Thuật toán và đánh giá độ phức tạp của thuật toán 13

1.1.1 Khái niệm thuật toán 13

1.1.2 Đánh giá thuật toán 19

1.2 Độ phức tạp tính toán của bài toán 24

1.2.1 Khái niệm về độ phức tạp của bài toán 24

1.2.2 Các bài toán NP 27

1.3 Một số cách tiếp cận giải các bài toán NP-khó 36

1.3.1 Phương pháp xấp xỉ 36

1.3.2 Phương pháp xác xuất 37

1.3.3 Phương pháp heuristic 38

1.3.4 Phương pháp tính toán tiến hóa 40

CHƯƠNG 2 BÀI TOÁN CÂY KHUNG TRUYỀN THÔNG TỐI ƯU 46

2.1 Bài toán cây khung truyền thông tối ưu 46

2.2 Một số tính chất của các trường hợp đặc biệt của bài toán OCST 49

2.2.1 Bài toán MRCT 49

2.2.2 Bài toán cây khung truyền thông tối ưu tích nhu cầu (PROCT) 51

2.2.3 Bài toán cây khung truyền thông tối ưu tổng nhu cầu (SROCT) 52

2.2.4 Bài toán nhiều nguồn (Multiple Source) 52

2.3 Một số ứng dụng của bài toán cây khung truyền thông 54

Trang 6

~ 5 ~

2.4 Các phương pháp tiếp cận để giải bài toán OCST 57

CHƯƠNG 3 THUẬT TOÁN DI TRUYỀN VÀ TỐI ƯU HÓA BẦY ĐÀN ……… 67

3.1 Tính toán tiến hóa 67

3.2 Giải thuật di truyền 69

3.3 Giải thuật tối ưu hóa bầy đàn 74

CHƯƠNG 4 GIẢI THUẬT DI TRUYỀN LAI GIẢI BÀI TOÁN OCST 79

4.1 Mô hình lai ghép đề xuất 79

4.2 Sơ đồ giải thuật đề xuất 80

4.3 Mã hóa cá thể 83

4.3.1 Mã hóa Prufer 83

4.3.2 Mã hóa NetKeys (Network Random Keys Encoding) 85

4.3.3 Mã hóa CB-TCR 87

4.3.4 Mã hóa NB (Node Biased Encoding) 90

4.3.5 Mã hóa LB (Link Biased Encoding) 91

4.3.6 Mã hóa LNB (Link and Node Biased Encoding) 92

4.4 Chọn lọc cá thể 94

4.5 Toán tử di truyền 95

4.5.1 Toán tử lai ghép 95

4.5.2 Toán tử đột biến 96

CHƯƠNG 5 KẾT QUẢ THỰC NGHIỆM 97

5.1 Cài đặt thử nghiệm 97

5.1.1 Dữ liệu thực nghiệm 97

5.1.2 Các tham số cho các thử nghiệm 99

5.2 Kết quả thực nghiệm 100

5.2.1 Kết quả trên các bộ test chuẩn 100

5.2.2 Kết quả trên các bộ test ngẫu nhiên 107

Trang 7

~ 6 ~

5.3 So sánh với các thuật toán khác 108

5.3.1 So sánh với giải thuật tiến hóa (Sang-moon 2006) 109

5.3.2 So sánh với giải thuật di truyền, mô phỏng tôi luyện, tìm kiếm cục bộ (Rothlauf 2009) 111

5.3.3 So sánh với giải thuật tối ưu hóa bầy đàn (2010) 113

KẾT LUẬN 115

TÀI LIỆU THAM KHẢO 117

Trang 8

~ 7 ~

Danh mục hình vẽ

Hình 1-1 Minh họa thuật toán 15

Hình 1-2 Minh họa bài toán chọn lịch xem phim 17

Hình 1-3 Phản ví dụ của thuật toán 1 17

Hình 1-4 Phản ví dụ của thuật toán 2 17

Hình 1-5 Cận trên và cận dưới để đánh giá cho độ phức tạp của hàm 20

Hình 1-6 Ký hiệu -lớn 21

Hình 1-7 Ký hiệu -lớn 21

Hình 1-8 Ký hiệu -lớn 22

Hình 1-9 Tốc độ tăng theo kích thước đầu vào của một số hàm 23

Hình 1-10 Mối quan hệ giữa thời gian thực hiện và kích thước đầu vào của một số lớp hàm 24

Hình 1-11 Mối quan hệ giữa 3 lớp bài toán P, NP và Co-NP 32

Hình 1-12 Sơ đồ phép quy dẫn 32

Hình 1-13 Minh họa mối quan hệ giữa các lớp bài toán 35

Hình 1-14 Danh sách một số bài toán NP-khó và sơ đồ quy dẫn giữa chúng 35

Hình 1-15 Đồ thị vô hướng và đồ thị có hướng 41

Hình 1-16 Danh sách kề và ma trận kề 44

Hình 2-1 Minh họa cách tính giá cây khung trong bài toán OCST 47

Hình 2-2 Minh họa bài toán SROCT và PROCT 48

Hình 2-3 Các biến thể của bài toán cây khung truyền thông tối ưu tổng quát 49

Hình 2-4 Minh họa cách tính độ trễ của cặp đỉnh 50

Hình 2-5 Một cây khung 3-star, trong đó B,C,E là các nút trong và A,D,E,F,G,H,I là các nút lá 51

Hình 2-6 Cây khung 1-star, với B là nút trong và các nút còn lại là nút lá 51

Hình 2-7 Thiết kế mạng truyền thông 56

Hình 2-8 Thủ tục xây dựng cây – tree building 60

Trang 9

~ 8 ~

Hình 2-9 Thủ tục cải tiến cây – tree improvement 61

Hình 2-10 Cấu trúc của thuật toán Memetic 64

Hình 3-1 Mô hình một thuật toán tiến hóa 68

Hình 3-2 Minh họa Allele, Gen và nhiễm sắc thể 69

Hình 3-3 Sơ đồ chung của thuật toán di truyền 71

Hình 3-4 Bài toán tối ưu có thể có rất nhiều cực trị 73

Hình 3-5 Mô tả giải thuật PSO 76

Hình 3-6 Mô tả giải thuật PSO 78

Hình 4-1 Sơ đồ giải thuật di truyền lai đề xuất 82

Hình 4-2 Giải thuật mã hóa cây khung thành chuỗi Prufer 83

Hình 4-3 Cây khung được mã hóa bởi chuỗi Prufer 2565 84

Hình 4-4 Giải thuật giải mã cây khung từ một chuỗi Prufer 85

Hình 4-5 Giải thuật xây dựng cây khung từ chuỗi NetKeys 86

Hình 4-6 Cây thu được theo mã hóa NetKeys 87

Hình 4-7 Giải thuật xây dựng cây khung từ một chuỗi CB-TCR 88

Hình 4-8 Đồ thị minh họa cho mã hóa CB-TCR 89

Hình 4-9 Cây khung sinh ra từ chuỗi CB-TCR (1,5,2,1,4,3,2,5) 90

Hình 4-10 Giải thuật Prim 91

Hình 4-11 Cây khung thu được từ mã hóa LNB 94

Hình 4-12 Mô tả phương pháp chọn lọc theo vòng quay Roulette 94

Hình 4-13 Các bước trong phương pháp chọn lọc theo vòng quay Roulette 95

Hình 4-14 Minh họa phương pháp lai ghép một điểm cắt 95

Hình 4-15 Minh họa phương pháp lai ghép đồng bộ 96

Hình 5-1 So sánh tốc độ hội tụ khi sử dụng hai mã hóa CB-TCR và NB 105

Hình 5-2 So sánh kết quả tìm được bởi hai toán tử lai ghép trên bộ Raidl100 106

Trang 10

~ 9 ~

Hình 5-3 So sánh tốc độ hội tụ của giải thuật với hai loại lai ghép trên bộ Raidl100 106Hình 5-4 So sánh tốc độ hội tụ của giải thuật trên bộ test NE-RAND-200 107Hình 5-5 So sánh tốc độ hội tụ của giải thuật trên bộ test E-RAND-200 108

Trang 11

~ 10 ~

Danh mục bảng

Bảng 1-1 Mối tương quan giữa quá trình tiến hóa và tính toán tiến hóa 40

Bảng 2-1 Các bài toán OCT và tỉ lệ xấp xỉ tốt nhất hiện biết của nó 54

Bảng 4-1 Chuỗi NetKeys cùng nhãn của các cạnh trong đồ thị 86

Bảng 5-1 Các bộ test chuẩn 98

Bảng 5-2 Kết quả chạy các bộ test chuẩn sử dụng mã hóa Prufer và CB-TCR 101

Bảng 5-3 Kết quả chạy các bộ test chuẩn sử dụng mã hóa NetKeys và NB 102

Bảng 5-4 Kết quả chạy trên các bộ test chuẩn sử dụng mã hóa LNB và LB 103

Bảng 5-5 So sánh về độ lệch của kết quả tìm được so với kết quả đã biết 109

Bảng 5-6 So sánh thời gian tìm ra kết quả tốt nhất 110

Bảng 5-7 So sánh số lượng thế hệ tối thiểu để tìm ra kết quả tốt nhất 111

Bảng 5-8 So sánh với một số giải thuật meta-heuristic 112

Bảng 5-9 So sánh với giải thuật tối ưu hóa bầy đàn 114

Trang 12

~ 11 ~

Danh mục thuật ngữ tiếng Anh

STT Thuật ngữ Viết tắt Đề nghị dịch tiếng Việt

8

Relative performance ration Đảm bảo về tỷ số chênh lệch

tương đối

9 Absolute performance guarantee Đảm bảo về sai số tuyệt đối

10 Polynomial time approximation

Trang 13

26 Uniform order-based crossover Lai ghép đồng bộ theo thứ tự

27 Optimal Communication

Cây khung truyền thông tối

29 Optimal Product Requirement

Communication Spanning Tree PROCT

Cây khung truyền thông tích nhu cầu

30 Optimal Sum Requirement

Communication Spanning Tree SROCT

Cây khung truyền thông tổng nhu cầu

32 Minimum Average Stretch

Cây khung tối thiểu khoảng giãn

33 Particle Swarm Optimization PSO Tối ưu hóa bầy đàn

Trang 14

~ 13 ~

CHƯƠNG 1

CÁC KHÁI NIỆM CƠ BẢN

Chương này trình bày tổng quan về các khái niệm và các thuật ngữ cơ sở được sử dụng trong luận văn Các khái niệm và thuật ngữ được trình bày dựa trên các tài liệu [10] [22] [23] [32] [38]

1.1 Thuật toán và đánh giá độ phức tạp của thuật toán

1.1.1 Khái niệm thuật toán

Ngày nay máy tính đã trở thành một công cụ sản xuất quan trọng, một thiết bị không thể thiếu trong bất cứ lĩnh vực nào Nó được sử dụng để trực tiếp giải quyết, hoặc để hỗ trợ con người trong việc giải quyết các vấn đề trong thực tế Do vậy việc nghiên cứu lý thuyết về khoa học máy tính và các vấn đề về giải quyết bài toán bằng máy tính ngày càng quan trọng và được phát triển mạnh mẽ

Các vấn đề xuất phát từ trong thực tế hằng ngày rất đa dạng, có thể là các vấn đề đơn giản cũng có thể là các vấn đề mà không thể giải quyết được Nhưng cho dù vấn đề là gì đi nữa để giải quyết nó bao giờ cũng vậy, trước hết chúng ta cần phát biểu lại vấn đề đó một cách chính xác dưới dạng các bài toán Dưới dạng một bài toán thì một vấn đề sẽ gồm có đầu vào và đầu ra, trong đó đầu vào mô tả không gian các giá trị có thể có của bài toán và đầu ra là giá trị mong muốn tương ứng với đầu vào đó

Ví dụ: bài toán sắp xếp được định nghĩa như sau

Đầu vào: một dãy gồm khóa

Đầu ra: một hoán vị của dãy khóa đầu vào thỏa mãn

Trang 15

~ 14 ~

Như vậy dãy đầu vào có thể là dãy số bất kỳ, hoặc có thể là dãy các xâu ký tự, hoặc

là dãy các đối tượng…

Ở đây chúng ta chỉ đề cập đến việc giải quyết bài toán bằng máy tính Để giải quyết bài toán bằng máy tính trước hết chúng ta phải biểu diễn được bài toán đó trên máy tính, tức là biểu diễn được đầu vào và đầu ra của nó Trong máy tính tất cả các dữ liệu và câu lệnh đều được biểu diễn dưới dạng mã nhị phân (biểu diễn bằng các chuỗi nhị phân gồm bit 1 và 0)

Ví dụ:

 Một số nguyên được biểu diễn dưới dạng chuỗi bit sử dụng mã bù 2 (nếu là kiểu số nguyên có dấu) hoặc là sử dụng số trong hệ nhị phân tương ứng (nếu

là số nguyên không dấu)

 Một số thực được biểu diễn trong máy tính dưới dạng chuỗi bit nhị phân sử dụng chuẩn IEEE-754

 Một kí tự được biểu diễn bằng số thứ tự (dưới dạng mã nhị phân) của nó trong bảng mã nào đó như bảng mã ASCII, Unicode …

 Một xâu kí tự được biểu diễn là ghép nối biểu diễn của các kí tự thành phần của xâu đó

 Một vector được biểu diễn là ghép nối biểu diễn nhị phân (mảng – array) của

các thành phần tọa độ của các chiều

 Một ma trận được biểu diễn bởi ghép nối các biểu diễn của các vector thành phần hoặc ma trận thành phần cấp thấp hơn nó một đơn vị

 Một hệ phương trình tuyến tính dạng có thể biểu diễn dưới dạng nhị phân là ghép nối của các xâu biểu diễn nhị phân của các thành phần trong

ma trận A và vector b

 Đa thức một biến dạng được đặc trưng bởi dãy các hệ số , ,…, và số mũ Do đó có thể dùng các xâu nhị phân

Trang 16

~ 15 ~

biểu diễn dãy hệ số và xâu nhị phân biểu diễn là ta có thể tạo thành một

biểu diễn hợp lệ cho P(x)

 Đồ thị có thể được biểu diễn bằng ma trận kề, hoặc danh sách kề

 Các dữ liệu phức hợp được tổ chức dưới dạng tổ hợp cấu trúc của các dữ liệu

cơ bản, ví dụ như mảng, bản ghi, cây …

Như vậy chúng ta có thể định nghĩa một cách hình thức bài toán tính toán như sau:

Định nghĩa 1.1 Bài toán tính toán F là ánh xạ từ các xâu nhị phân độ dài hữu hạn

vào tập các xâu nhị phân độ dài hữu hạn: F: {0,1}* → {0,1}*

Các dữ liệu trong bài toán tổng quát có thể không hữu hạn, tuy nhiên khi đã chuyển vào trong máy tính thì chúng ta phải chuyển nó thành hữu hạn, bởi vì không gian của máy tính là hữu hạn Nói một cách khác các xâu nhị phân biểu diễn bài toán có

độ dài là hữu hạn

Để giải quyết bài toán (vấn đề trong thực tế) chúng ta phải đề xuất ra một phương

án Trong giải quyết bài toán bằng máy tính phương án được gọi là thuật toán (algorithm) Một thuật toán để giải quyết bài toán có thể được định nghĩa như sau

Định nghĩa 1.2 Thuật toán giải bài toán đặt ra là một thủ tục xác định bao gồm một

dãy hữu hạn các bước cần thực hiện để thu được đầu ra cho một đầu vào cho trước của bài toán

Thuật toán (Algorithm)

Đầu vào (Input)

Đầu ra (Output)

Hình 1-1 Minh họa thuật toán

Thuật toán có những đặc trưng sau đây:

 Có đầu vào (Input): là tập các dữ liệu cần cung cấp cho thuật toán để xử lý

Trang 17

~ 16 ~

 Có đầu ra (Output): với mỗi một bộ dữ liệu vào, thuật toán sẽ cho ra một bộ

các dữ liệu ra tương ứng với lời giải của bài toán cho bộ dữ liệu vào

 Chính xác (Precision): Các bước của thuật toán cần phải được mô tả chính

xác và rõ ràng để có thể cài đặt được trên máy tính và có thể thực hiện được

 Hữu hạn (Finiteness): với mọi đầu vào thuật toán phải đưa được đầu ra sau

một số hữu hạn (có thể rất lớn) bước thực hiện

 Đơn trị (Uniqueness): các kết quả trung gian trong quá trình thực hiện thuật

toán được xác định một cách đơn trị và chỉ phụ thuộc vào đầu vào cũng như kết quả ở những bước trước

 Tổng quát (Generality): thuật toán có thể áp dụng để giải mọi bài toán có

Đầu vào: Một tập L gồm thời gian chiếu (thời điểm bắt đầu và kết thúc) trong ngày của bộ phim

Đầu ra: Tập con của L chứa số bộ phim lớn nhất có thể xem (không được giao nhau

về thời gian)

Để đơn giản có thể biểu diễn các bộ phim dưới dạng các đoạn thẳng không giao nhau như hình bên dưới Trong đó P1, P2, và P3 là các phòng chiếu

Trang 18

~ 17 ~

P1 P2 P3

Hình 1-2 Minh họa bài toán chọn lịch xem phim

Thuật toán 1 Chọn bộ phim có thời điểm bắt đầu sớm nhất trong L mà có thời gian không bị giao với các bộ phim đã chọn trước đó Lặp lại cho đến khi không thể chọn thêm

Với thuật toán này ta có thể đưa ra một ví dụ chỉ ra thuật toán (phản ví dụ) sai như sau

P1 P2

Hình 1-3 Phản ví dụ của thuật toán 1

Thuật toán 2 Chọn bộ phim có thời gian chiếu ngắn nhất trong L mà có thời gian không bị giao với các bộ phim đã chọn trước Lặp lại cho đến khi không chọn thêm được

Với thuật toán 2 ta có thể chỉ ra một phản ví dụ

P1 P2

Hình 1-4 Phản ví dụ của thuật toán 2

Thuật toán 3 Duyệt toàn bộ: duyệt tập con của n bộ phim trong L Chọn ra tập con nào có số lượng phần tử lớn nhất Đảm bảo thu được kết quả tối ưu Thuật toán chạy rất chậm, vd số tập con là 220

Trang 19

~ 18 ~

Thuật toán 4 Thuật toán tối ưu: sắp xếp các lịch chiếu phim theo thứ tự không giảm thời điểm kết thúc Lần lượt xem xét các phim trong danh sách đã sắp xếp, bổ sung vào danh sách xem bộ phim đang xét nếu nó không chồng lên các bộ phim đã có trong danh sách xem

Để chỉ ra thuật toán là không chính xác ta chỉ cần đưa ra một phản ví dụ của thuật toán Tuy nhiên chưa chỉ ra được một phản ví dụ của thuật toán không có nghĩa là thuật toán chính xác Để chứng minh một thuật toán là chính xác ta phải chứng minh bằng toán học Có những bài toán mà không tồn tại thuật toán chính xác để giải!

Với một bài toán có thể tồn tại rất nhiều thuật toán để giải, mỗi thuật toán nó cần sử dụng lượng tài nguyên máy tính khác nhau Chúng ta đánh giá hiệu quả của thuật toán thông qua lượng tài nguyên mà nó cần để tìm ra lời giải cho bài toán Tất nhiên

là chúng ta chỉ đánh giá hiệu quả của những thuật toán chính xác Các tài nguyên máy tính mà chúng ta xét đến ở đây là thời gian CPU (để thực hiện thuật toán thì CPU cần thực hiện lệnh của nó), dung lượng bộ nhớ cần dùng, và các tài nguyên khác như ổ cứng, mạng,… Trong đó thời gian CPU và bộ nhớ là hai tài nguyên quan trọng nhất Ngày nay với sự phát triển mạnh của công nghệ bán dẫn nên giá thành bộ nhớ máy tính giảm nhanh chóng, vì thế tài nguyên thời gian CPU được đánh giá quan trọng hơn Mặc dù công nghệ chế tạo CPU cũng phát triển rất nhanh Theo định luật Moore ―máy tính sẽ tăng gấp đôi khả năng tính toán với cùng mức giá hoặc giảm giá chỉ còn một nửa với cùng khả năng tính toán cứ sau 18 tháng‖ Tuy nhiên khi thực hiện trên đầu vào với kích thước đủ lớn thì thuật toán hiệu quả hơn dù được thực hiện trên máy tính tốc độ chậm vẫn luôn chiến thắng thuật toán tồi hơn nhưng được thực hiện trên máy tính có tốc độ nhanh hơn Vì thế để đánh giá hiệu quả của các thuật toán người ta thường căn cứ vào thời gian thực hiện của thuật toán

Trang 20

~ 19 ~

1.1.2 Đánh giá thuật toán

Một vấn đề được đặt ra ở đây là thời gian thực hiện thuật toán trên máy tính phụ thuộc vào rất nhiều yếu tố như tốc độ CPU, bộ nhớ, thời điểm chạy chương trình

do đó không thể đánh giá thời gian thực hiện thuật toán bằng thời gian trên máy tính, và cũng không thể dùng thời gian này để so sánh hiệu quả của các thuật toán được Có hai mô hình đánh giá thời gian thuật toán hay sử dụng trong thực tế là mô hình RAM và O-lớn

Mô hình RAM: Thực hiện thuật toán trên một máy tính giả định gọi là Random

Access Machine hoặc RAM

 Mỗi phép tính đơn giản (+, *, –, =, if, call) thực hiện trong 1 đơn vị thời gian (hoặc 1 bước)

 Vòng lặp, hàm, thủ tục: là kết hợp của nhiều phép tính đơn lẻ

 Mỗi bước truy cập bộ nhớ mất 1 đơn vị thời gian

 Luôn có đủ bộ nhớ cần thiết để thực hiện thuật toán

Thời gian thực hiện của thuật toán phụ thuộc vào đầu vào của bài toán Các trường hợp đầu vào khác nhau thời gian thực hiện khác nhau Khi đánh giá thời gian thực hiện thuật toán, người ta chia thành 3 loại là

 Độ phức tạp trong trường hợp tồi nhất (worst-case complexity): Là số lượng bước lớn nhất thuật toán cần thực hiện với bất cứ đầu vào kích thước nào

 Độ phức tạp trong trường hợp tốt nhất (best-case complexity): Là số lượng bước nhỏ nhất thuật toán cần thực hiện với bất cứ đầu vào kích thước nào

 Độ phức tạp trong trường hợp trung bình (average-case complexity): Là số lượng bước trung bình thuật toán cần thực hiện trên tất cả các trường hợp đầu vào kích thước

Trong 3 đánh giá độ phức tạp trên đánh giá trong trường hợp tồi nhất là đánh giá quan trọng nhất

Trang 21

~ 20 ~

Trong mô hình RAM chúng ta đánh giá thời gian thực hiện thuật toán bằng cách đếm số đơn vị thời gian cần Ưu điểm của mô hình này là đơn giản, tuy nhiên việc đếm số đơn vị thời gian cần không phải lúc nào cũng đơn giản Trong một số trường hợp việc này gần như là không thể bởi vì hàm thời gian thực hiện là hàm có rất nhiều điểm lồi, và để xác định nó một cách chính xác ta cần phân tích rất tỉ mỉ Hơn nữa theo mô hình RAM thời gian thực hiện của thuật toán thường có dạng đa thức

Trong đó là kích thước đầu vào của dữ liệu Chúng ta nhận thấy là thời gian thực hiện thuật toán phụ thuộc rất nhiều số hạng, nhưng số hạng có số mũ cao nhất trong

đó là thành phần có yếu tố quan trọng nhất Nó quyết định chính đến tốc độ tăng thời gian thực hiện của thuật toán

Hình 1-5 Cận trên và cận dưới để đánh giá cho độ phức tạp của hàm

Phân tích O-lớn: trong mô hình phân tích này chúng ta đơn giản phân tích trong mô hình RAM, bỏ bớt những thành phần ít ảnh hưởng đến thời gian thực hiện của thuật toán khi so sánh các thuật toán với nhau

Trang 22

~ 21 ~

Ví dụ trong O-lớn thì và là như nhau

Các ký hiệu tiệm cận được dùng để phân tích độ phức tạp của thuật toán trong thực tế

 Kí hiệu biểu diễn tập các hàm = { : tồn tại các hằng

số dương và sao cho , với mọi .} Ta nói là cận trên tiệm cận của hay có bậc không quá

 Kí hiệu biểu diễn tập các hàm = { : tồn tại các hằng

số dương và sao cho , với mọi .} Ta nói cận dưới tiệm cận của hay có bậc ít nhất là

 Kí hiệu biểu diễn tập các hàm = { : tồn tại các hằng

số dương và sao cho , với mọi } Ta nói là đánh giá tiệm cận đúng của hay có bậc là

Với là các hằng số dương không phụ thuộc vào , và

Ví dụ

 vì chọn thì

Hình 1-7 Ký hiệu 𝛰-lớn Hình 1-6 Ký hiệu 𝛺-lớn

Trang 23

~ 22 ~

 vì chọn thì khi

 vì với bất kỳ hằng số c nào thì khi

 vì chọn thì khi

 vì với bất kỳ giá trị thì khi đủ lớn ( nếu , nếu )

 vì với bất kỳ hằng số c nào thì khi

Trang 24

~ 23 ~

Các lớp hàm thông dụng:

 Hàm hằng Thời gian thực hiện là hằng số VD hàm tính tổng 2 số

 Hàm loga VD tìm kiếm nhị phân

 Hàm tuyến tính VD Tìm giá trị lớn nhất trong dãy số

 Hàm siêu tuyến tính VD QuickSort, MergeSort

 Hàm bậc hai VD Sắp xếp nổi bọt (bubble sort )

 Hàm bậc ba

 Hàm mũ , là hằng số >1

 Hàm giai thừa

Hình 1-9 Tốc độ tăng theo kích thước đầu vào của một số hàm

Hình 1-9 và 1-10 minh họa tốc độ tăng và thời gian thực hiện của một số lớp hàm thông dụng

Mối quan hệ giữa các ký hiệu tiệm cận và các mô hình đánh giá:

Trang 25

~ 24 ~

 Thời gian tính là được hiểu là : ―đánh giá trong tình huống tồi nhất

là ‖ Nghĩa là thời gian tính trong tình huống tồi nhất được xác định bởi một hàm nào đó

 Thời gian tính là được hiểu là : ―đánh giá trong tình huống tốt nhất

là ‖ Nghĩa là thời gian trong tình huống tốt nhất được xác định bởi một hàm nào đó

Hình 1-10 Mối quan hệ giữa thời gian thực hiện và kích thước đầu vào của một số lớp hàm

1.2 Độ phức tạp tính toán của bài toán

1.2.1 Khái niệm về độ phức tạp của bài toán

Như đã biết, đối với một bài toán có thể có nhiều thuật toán khác nhau để giải Mỗi thuật toán có độ phức tạp tính toán khác nhau Một câu hỏi được đặt ra là độ phức tạp tính toán của các thuật toán có liên quan gì đến bài toán không? Hay nói cách khác có phải bài toán nào cũng khó như nhau không? Câu trả lời là không Mỗi bài toán nó có một mức độ khó khác nhau và được đặc trưng bởi độ phức tạp tính toán của thuật toán tốt nhất trong số tất cả các thuật toán có thể để giải nó

Định nghĩa 1.3 Độ phức tạp tính toán của một bài toán là thời gian của thuật toán

tốt nhất trong số tất cả các thuật toán có thể để giải bài toán đó

Trang 26

~ 25 ~

Một vấn đề được đặt ra là làm thế nào có thể xác định độ phức tạp tính toán của bài toán khi mà chúng ta còn chưa biết hết các thuật toán có thể để giải bài toán Có 2 cách để giải quyết vấn đề này

 Cách thứ nhất ta tìm cách để đưa ra cận dưới cho độ phức tạp tính toán của bài toán

 Còn trong cách thứ hai ta tìm cách chỉ ra rằng bài toán đang xét có mức độ khó (tức là độ phức tạp tính toán) không thua kém gì bất kì một bài toán khó nào hiện biết

Phần còn lại của mục này chúng ta đi tìm hiểu về cách tiếp cận thứ nhất, còn cách tiếp cận thứ 2 sẽ được trình bày ở mục tiếp theo

Định nghĩa 1.4 Gọi là thời gian tính của thuật toán đối với đầu vào Khi

đó, thời gian tính trong tình huống tồi nhất của thuật toán đối với dữ liệu đầu vào kích thước được định nghĩa là thời gian tính lớn nhất của thuật toán trên mọi bộ

Thông thường do tính phức tạp của bài toán cũng như các thuật toán giải nó nên không dễ dàng gì để đưa ra một đánh giá chính xác cho thời gian tính của nó Do đó thay vì đi tìm đánh giá chính xác cho độ phức tạp tính toán của một bài toán, người

ta có thể đi đánh giá cận trên và cận dưới của nó

Trang 27

~ 26 ~

Định nghĩa 1.6 Nếu là một thuật toán để giải bài toán và có thời gian tính trong tình huống tồi nhất là thì rõ ràng

tức là ta có cận trên cho độ phức tạp của bài toán là

Định nghĩa 1.7 Để chỉ ra cận dưới của độ phức tạp tính toán của bài toán

ta cần có đồng thời 2 điều kiện sau:

i Có thuật toán với thời gian tính để giải bài toán ;

ii Mọi thuật toán giải bài toán đều đòi hỏi thời gian tính trong tình huống tốt nhất là

Điều kiện ii) có thể thay bởi điều kiện

ii*) Cận dưới cho độ phức tạp tính toán của bài toán là

Ví dụ xét bài toán tìm kiếm một giá trị khóa trên danh sách gồm phần tử không có thứ tự Rõ ràng để tìm kiếm xem trong phần tử có phần tử nào có giá trị khóa bằng khóa cần tìm hay không chúng ta cần phải duyệt tất cả phần tử Vì vậy cận dưới cho bài toán này là Hơn nữa dễ thấy chỉ cần so sánh với khóa của phần tử là đủ để kiểm tra xem khóa có xuất hiện trong dãy hay không Như vậy độ phức tạp của bài toán này là

Trang 28

~ 27 ~

Chúng ta thấy đánh giá cận trên của bài toán cho ta biết rằng bài toán có thể được giải bằng một thuật toán nào đó có độ phức tạp không quá Còn đánh giá cận dưới của bài toán ta muốn biết xem bài toán khó đến mức nào, tức là ta không thể giải bài toán bằng một thuật toán nào đó mà có độ phức tạp thấp hơn

1.2.2 Các bài toán NP

Như đã đề cập đến ở phần trước, để đánh giá độ phức tạp của một bài toán chúng ta

có thể đi tìm cận dưới độ phức tạp của nó, hoặc đi chứng minh rằng bài toán đang xét có độ phức tạp không thua kém bất cứ một bài toán khó nào hiện biết Nếu chúng ta chứng minh được điều đó thì bài toán đang xét sẽ được xếp vào lớp các bài toán NP-khó

Định nghĩa 1.9 Bài toán quyết định (decision problems) là bài toán mà đầu ra chỉ

có thể là ‗yes‘ hoặc ‗no‘ ( hay là đúng/sai, 0/1, chấp nhận/từ chối, accept/reject)

Đối với một bài toán quyết định, có những bộ dữ liệu vào của nó có câu trả lời (đầu

ra) là ‗yes‘ và cũng có những bộ dữ liệu vào có câu trả lời là ‗no‘ Những bộ dữ liệu vào với câu trả lời ‗yes‘ (‗no‘) sẽ được gọi là bộ dữ liệu vào ‗yes‘ (‗no‘) Và tương

tự, những bộ dữ liệu vào với câu trả lời ‗no‘ sẽ được gọi là bộ dữ liệu vào ‗no‘

Ví dụ:

Bài toán về tính nguyên tố: ―Hỏi số nguyên có là số nguyên tố hay không?‖.Với là bộ dữ liệu vào ‗yes‘, còn là bộ dữ liệu vào

‗no‘ của bài toán

Bài toán tổng con (Subset sum): ―Cho tập gồm số nguyên dương

và số nguyên dương Hỏi có thể tìm được tập con của với tổng các số trong là bằng ?‖

Trang 29

~ 28 ~

Bài toán người du lịch dạng quyết định (Dec-TSP): ―Cho ma trận chi phí

và một số Hỏi rằng tồn tại hay không hành trình của người du

lịch với tổng chi phí không vượt quá ?‖

Định nghĩa 1.10 Xét bài toán tối ưu hóa

Định lý 1 Nếu bài toán quyết định tương ứng với một bài toán tối ưu có thể giải

được hiệu quả (chẳng hạn bằng thuật toán có thời gian tính đa thức) thì bài toán tối

ưu đó cũng giải được hiệu quả (bằng thuật toán thời gian tính đa thức)

Chứng minh:

Giả sử bài toán (PD) được giải bằng thuật toán A có thời gian tính với là hằng số Ta cũng giả thiết rằng là hàm nhận giá trị nguyên có cận trên và cận dưới trên miền xác định là và với Khi đó sơ đồ thuật

toán giải bài toán tối ưu (P) có thể cho như sau:

Trang 30

~ 29 ~

Rõ ràng số bước lặp của thuật toán trên là Thời gian tính của mỗi bước lặp bằng thời gian tính của một lần thực hiện thuật toán giải bài toán dạng quyết định, tức là bằng Do đó thuật toán giải bài toán tối ưu (P) ở trên có

tổng thời gian tính là Vậy ta có điều phải chứng minh

Rất nhiều bài toán quyết định cùng có một đặc điểm chung là để xác nhận câu trả

lời ‗yes‘ đối với bộ dữ liệu vào ‗yes‘ của chúng, ta có thể đưa ra bằng chứng ngắn gọn dễ kiểm tra xác nhận câu trả lời ‗yes‘ cho bộ dữ liệu vào ‗yes‘ đó

Bài toán tổng con, bằng chứng xác nhận câu trả lời ‗yes‘ đối với bộ dữ liệu

là vectơ , trong đó nếu được chọn vào tập nếu trái lại Việc kiểm tra xem tập gồm các số được chọn có thoả mãn yêu cầu đặt ra hay không, rõ ràng, có thể thực hiện sau thời gian đa thức

Bài toán người du lịch dạng quyết định, bằng chứng xác nhận câu trả lời

‗yes‘ cho ma trận chi phí { } của bài toán là dãy các thành phố trên hành trình Bằng việc cộng tổng chi phí trên các quãng đường, việc kiểm tra xem dãy các thành phố đã cho có phải là hành trình với chi phí không vượt quá có thể thực hiện xong sau thời gian đa thức

Trang 31

~ 30 ~

Định nghĩa 1.11 Ta gọi bằng chứng ngắn gọn dễ kiểm tra xác nhận câu trả lời ‗yes’

cho bộ dữ liệu vào ‘yes’ của bài toán là một bằng chứng có độ dài bị chặn bởi một

đa thức bậc cố định của độ dài dữ liệu đầu vào của bài toán, và việc kiểm tra nó là

bằng chứng xác nhận câu trả lời ‘yes’ đối với đầu vào đã cho của bài toán có thể

thực hiện xong sau thời gian đa thức

Hoàn toàn tương tự, có thể đưa ra định nghĩa bằng chứng ngắn gọn dễ kiểm tra để

xác nhận câu trả lời ‘no’

Có những bài toán việc đưa ra bằng chứng ngắn gọn dễ kiểm tra xác định câu trả lời

‘no’ là dễ tìm hơn so với việc đưa ra bằng chứng ngắn gọn xác định câu trả lời

‘yes’, và cũng có những bài toán thì ngược lại

Ví dụ:

 Đối với bài toán kiểm tra tính nguyên tố, để đưa ra bằng chứng ngắn gọn dễ

kiểm tra xác nhận câu trả lời ‗no’ cho đầu vào của nó, ta có thể đưa ra một

ước số của

 Còn với bài toán kiểm tra tính hợp số thì để đưa ra bằng chứng ngắn gọn dễ

kiểm tra xác nhận câu trả lời ‗yes’ cho đầu vào của nó, ta cũng chỉ cần đưa

ra một ước số của

Có những bài toán mà việc đưa ra bằng chứng ngắn gọn dễ kiểm tra xác nhận câu

trả lời ‗yes’ cũng như ‗no’ đều là không dễ dàng

Ví dụ:

 Bài toán về tính duy nhất của đường đi đơn nối 2 đỉnh của đồ thị vô hướng: Cho đơn đồ thị vô hướng Hỏi đường đi đơn dài nhất nối hai đỉnh

và của đồ thị có tồn tại duy nhất?

Định nghĩa 1.12 Ta gọi là lớp các bài toán có thể giải được sau thời gian đa thức

Trang 32

~ 31 ~

Đôi khi còn được gọi là lớp các bài toán dễ giải bởi vì các bài toán thuộc lớp này

có thể giải được nhờ các thuật toán thời gian tính đa thức

Ví dụ:

 Bài toán về tính liên thông của đồ thị có thể giải được nhờ thuật toán với thời

gian tính là bài toán thuộc lớp

Bài toán nhân dãy ma trận có thể giải được nhờ sử dụng quy hoạch động với thời

gian tính cũng là bài toán thuộc lớp

Định nghĩa 1.13 Ta gọi NP là lớp các bài toán quyết định mà để xác nhận câu trả

lời ‗yes’ của nó ta có thể đưa ra bằng chứng ngắn gọn dễ kiểm tra

Ví dụ: Các bài toán kiểm tra tính hợp số, bài toán tổng con hay bài toán du lịch dạng quyết định là các bài toán thuộc lớp NP

Định nghĩa 1.14 Ta gọi co-NP là lớp các bài toán quyết định mà để xác nhận câu

trả lời ‗no’ của nó ta có thể đưa ra bằng chứng ngắn gọn dễ kiểm tra

Ví dụ: Các bài toán kiểm tra tính nguyên tố, bài toán về tính không chấp nhận được của biểu thức Boolean là các bài toán thuộc lớp co-NP

Còn bài toán về tính duy nhất của đường đi đơn nối 2 đỉnh của đồ thị vô hướng thì

vẫn chưa biết là có thuộc lớp nào trong 2 lớp NP và co-NP hay không

Với một bài toán thuộc lớp P do ta có thể tìm được lời giải của nó sau thời gian đa thức nên ta cũng có thể xác nhận được câu trả lời ‗yes‘ hoặc ‗no‘ của nó (bằng việc

giải nó) sau thời gian đa thức Vì vậy,

và P co-NP

Tuy nhiên điều ngược lại

tức là hay không,

Trang 33

Hình 1-11 Mối quan hệ giữa 3 lớp bài toán P, NP và Co-NP

Định nghĩa 1.15 Giả sử và là hai bài toán quyết định Ta nói bài toán có thể qui dẫn sau thời gian đa thức về bài toán nếu tồn tại thuật toán thời gian đa thức cho phép biến đổi bộ dữ liệu vào của thành bộ dữ liệu vào của sao cho

là bộ dữ liệu ‗yes’ (nghĩa là bộ dữ liệu mà câu trả lời cho nó là ‗yes’) của khi và

chỉ là bộ dữ liệu ‗yes‘ của

Trong phần tiếp theo ta chỉ xét phép qui dẫn sau thời gian đa thức, vì thế để ngắn gọn, ta sẽ gọi là phép qui dẫn thay cho phép qui dẫn sau thời gian đa thức

Nếu A qui dẫn được về B và để giải B đã có thuật toán đa thức thì A cũng sẽ giải

được sau thời gian đa thức

Giải thuật quy dẫn

(R)

Giải thuật giải (B) Đầu vào

cho B

Đầu vào

cho A

Đầu ra của B

Đầu ra của A

Trang 34

~ 33 ~

Dễ thấy phép quy dẫn có tính chất bắc cầu: và thì

Phép quy dẫn thường dùng để so sánh độ khó của 2 bài toán Nếu quy dẫn được

về thì, sai khác một thời gian đa thức, không khó hơn Nếu A là khó (theo

nghĩa chưa tìm được thuật toán thời gian tính đa thức để giải ) thì cũng là khó, còn nếu là dễ (nghĩa là đã có thuật toán thời gian tính đa thức giải ) thì cũng

là dễ

Từ khái niệm quy dẫn chúng ta đưa ra định nghĩa các định nghĩa về lớp các bài toán

NP-khó và NP-đầy đủ như sau

Định nghĩa 1.16 Một bài toán quyết định được gọi là NP-đầy đủ nếu như

là bài toán trong NP, nghĩa là

o là bài toán dạng quyết định

o Để xác nhận câu trả lời ‗yes‘ của ta có thể đưa ra bằng chứng ngắn gọn dễ kiểm tra

Mọi bài toán trong NP đều có thể quy dẫn về

NP-đầy đủ vẫn được người ta coi là lớp bài toán khó nhất trong lớp các bài toán NP

Bổ đề 1.1 Giả sử bài toán là NP-đầy đủ, bài toán là thuộc NP, và bài toán

qui dẫn về Khi đó bài toán cũng là NP-đầy đủ

Chứng minh:

Giả thiết đã cho là bài toán thuộc NP, vấn đề còn lại là chỉ việc chứng minh mọi

bài toán trong NP đều có thể quy dẫn về Thực vậy, vì là bài toán NP-đầy đủ nên mọi bài toán NP đều có thể quy dẫn về , mà lại quy dẫn về Do tính chất bắc cầu của phép quy dẫn ta có mọi bài toán NP đều quy dẫn được về Từ đó ta

có điều phải chứng minh

Kết hợp định nghĩa 1.15 và bổ đề 1.1 ta có nếu là một bài toán NP-đầy đủ thì mọi

bài toán thuộc lớp NP đều có thể quy dẫn về , tức là khó không kém bất cứ một

Trang 35

~ 34 ~

bài toán nào thuộc lớp NP Suy rộng hơn nữa, vì mọi bài toán NP-đầy đủ trước tiên phải là bài toán NP, do đó các bài toán NP-đầy đủ có thể suy dẫn về nhau, hay nói

cách khác chúng có độ khó tương đương nhau Vấn đề khó khăn nhất là làm thế nào

để tìm được bài toán NP-đầy đủ đầu tiên, bởi vì từ đó ta có thể xây dựng nên những bài toán NP-đầy đủ khác nhờ quy dẫn

Mối quan hệ giữa các lớp bài toán được minh họa trong hình 1-13

Năm 1971, Stephen A Cook đã chứng minh được bài toán Cir-Sat (Circuit

Satisfiability Problem – bài toán về tính thực hiện của mạch logic) là bài toán đầy đủ Bài toán được phát biểu như sau:

NP-Bài toán Cir-Sat: Cho một mạch logic với đầu vào gồm n giá trị, hỏi có tồn tại một

đầu vào của mạch để đầu ra của mạch là True hay mạch luôn đưa ra giá trị False

Một yêu cầu bắt buộc với mọi bài toán NP-đầy đủ là chúng phải ở dạng quyết định

Tuy nhiên có những bài toán không phải là bài toán dạng quyết định nhưng lại khó

không kém bất kì một bài toán NP nào, tức là nó có tính chất mọi bài toán trong NP

đều có thể quy dẫn về bài toán đó Với những bài toán như vậy, người ta xếp chúng

vào lớp bài toán NP-khó

Định nghĩa 1.17 Một bài toán A được gọi là NP-khó (NP-hard) nếu như sự tồn tại

thuật toán đa thức để giải nó kéo theo sự tồn tại thuật toán đa thức để giải mọi bài

toán trong NP

Như đã nói ở trên, khi đã tìm ra và chứng minh được một bài toán là NP-đầy đủ thì

ta có thể chứng minh nhiều bài toán khác cũng là NP-đầy đủ nhờ sử dụng phép quy

dẫn Sau đây là sơ đồ chứng minh một bài toán thuộc lớp bài toán NP-đầy đủ:

 Chứng minh thuộc NP bằng cách đưa ra một bằng chứng ngắn gọn dễ kiểm tra

 Chọn một bài toán đã được chứng minh là thuộc lớp bài toán NP-đầy đủ hoặc NP-khó

Trang 36

Hamilton Circle

Set Cover Subset Sum

Vertex Cover Clique

Max Clique

Hình 1-14 Danh sách một số bài toán NP-khó và sơ đồ quy dẫn giữa chúng

Trang 37

~ 36 ~

1.3 Một số cách tiếp cận giải các bài toán NP-khó

Như ta đã biết, các bài toán NP-khó (trong đó có NP-đầy đủ) hiện vẫn chưa có thuật

toán hiệu quả để giải Do đó người ta hướng tới các phương pháp giải gần đúng và

các phương pháp dùng tính toán tiến hóa, một số phương pháp giải các bài toán NP

thường sử dụng đến kỹ thuật quy hoạch tuyến tính nới lỏng (relaxed linear programming)

Chỉ số đặc trưng cho phương pháp xấp xỉ chính là sai số tuyệt đối hoặc tỷ số chênh lệch tương đối cho phép giữa lời giải gần đúng và lời giải đúng

hoặc

Trong đó gọi là đảm bảo về tỷ số chênh lệch tương đối (relative performance guarantee) và gọi là đảm bảo về sai số tuyệt đối (absolute performance guarantee) Tuy nhiên phương pháp xấp xỉ không phải lúc nào cũng đảm bảo được tính chất này với mọi bài toán NP-khó, nghĩa là có những bài toán (ví dụ như bài toán đóng thùng

Trang 38

~ 37 ~

– bin packing – người ta đã xây dựng được những phương án xấp xỉ trong thời gian

đa thức (polynomial time approximation schemes – PTAS) cho phép đạt tới kết quả sai khác với kết quả đúng không quá một sai số cho trước bất kì Tuy nhiên với một

số bài toán, ví dụ như bài toán tìm bè lớn nhất của đồ thị vô hướng (Maximum Clique), thì không thể làm được điều này, thậm chí không thể xấp xỉ kết quả tới một giá trị sai khác với lời giải đúng một sai số hoặc một tỉ số đa thức

Một hạn chế khác của phương pháp xấp xỉ là chúng chỉ có thể được áp dụng để giải những bài toán tối ưu hóa mà không áp dụng để giải những bài toán dạng quyết định thuần túy được (tuy nhiên người ta có thể chuyển đổi qua lại giữa dạng tối ưu hóa và dạng quyết định của những bài toán như vậy)

1.3.2 Phương pháp xác xuất

Phương pháp xác xuất (probabilistic methods) hay còn gọi là phương pháp ngẫu nhiên (randomized) sử dụng các bộ sinh giá trị ngẫu nhiên như là đầu vào phụ giúp thuật toán định hướng xử lí và hy vọng thuật toán sẽ có hiệu quả hoạt động cao trong tình huống trung bình Với phương pháp này khả năng thuật toán hoạt động tồi vẫn có thể xảy ra nhưng xác suất xảy ra là nhỏ

ví dụ sau: Hãy tìm một kí tự ‗a‘ trong mảng gồm n thành phần trong đó một nửa là

kí tự ‗a‘, một nửa còn lại là kí tự ‗b‘

Một cách tiếp cận tự nhiên là ta đi xét từng phần tử của mảng, nhưng rõ ràng cách làm này khá tốn thời gian (cần n/2 phép toán) nếu mảng được xếp bởi các kí tự ‗b‘ trước rồi đến các kí tự ‗a‘ sau Còn nếu ta duyệt các phần tử của mảng theo chiều ngược từ cuối trở về hoặc theo chiều xuôi nhưng với bước nhảy là 2 phần tử ta vẫn

có thể gặp vấn đề tương tự với một bộ dữ liệu nào đó Tóm lại là với bất kì một thuật toán có tính xác định (deterministic) nào, ta không thể đảm bảo rằng thuật toán đó sẽ hoạt động tốt với mọi bộ dữ liệu Nhưng nếu ta sử dụng phương pháp xác suất để duyệt các phần tử của mảng trên một cách ngẫu nhiên, ta có thể hy vọng với

Trang 39

có chi phí thấp nhất theo hàm trong đó là chi phí chính xác của đường đi từ trạng thái đầu tới nút đang xét Nếu là một hàm dự đoán tốt thì hiển nhiên A* cũng có nhiều khả năng tìm ra lời giải tốt, trong đó có thể có lời giải tối ưu Vấn đề thực sự giờ đây nằm ở chỗ lựa chọn hàm như thế nào để hỗ trợ tìm kiếm hiệu quả Có nhiều cách để xây dựng heuristic cho bài toán

 Sử dụng hàm chi phí của các bài toán con làm heuristic, vì chi phí của bài toán tổng được tổ hợp từ chi phí của bài toán con, tất nhiên có thể hàm tổ hợp đó rất phức tạp, nhưng những thông tin về chi phí các bài toán con là rất

Trang 40

~ 39 ~

hữu ích cho việc ước đoán chi phí của bài toán tổng, đặc biệt nếu ta có nhiều kinh nghiệm tiếp xúc với dạng bài toán này Để tiết kiệm thời gian tính toán người ta thường hay sử dụng một cơ sở dữ liệu mẫu (pattern database) lưu trữ lại lời giải đúng của mọi bài toán con

 Sử dụng lời giải của chính bài toán đó nhưng đã được loại bỏ một số điều kiện ràng buộc (việc loại bỏ này cho phép ta có thể tìm được lời giải đúng cho bài toán với thời gian tính chấp nhận được)

Phương pháp heuristic có nét giống với phương pháp xác suất ở chỗ nó đôi lúc cho

ra những lời giải tồi hoặc có thời gian thực hiện là rất lâu Tuy nhiên xác suất để xảy ra điều đó lại là rất thấp Hơn thế nữa, nhờ sử dụng những tri thức và kinh nghiệm bổ trợ (heuristic), các phương pháp heuristic thường cho mang lại hiệu quả cao xét về cả chất lượng lời giải lẫn thời gian tính toán trong quá trình ứng dụng thực tế, nhưng nó không đảm bảo được rằng điều đó lúc nào cũng xảy ra

Các phương pháp heuristic có một ưu điểm là giúp cải thiện đáng kể hiệu quả tính toán Giả sử ta đang đứng ở một nút trên cây tìm kiếm, khoảng cách từ nút này tới nút đích là , và trên cây tìm kiếm trung bình một nút rẽ thành nhánh Nếu sử dụng thuật toán tìm kiếm vét cạn thời gian tính sẽ là Ta tìm được lời giải tối

ưu nhưng trả giá bằng chi phí thời gian quá đắt và nhiều lúc sẽ trở thành không chấp nhận được Nhưng nếu sử dụng heuristic ta có thể rút hệ số rẽ nhánh (branching factor) từ xuống một giá trị thấp hơn nào đó, và hiển nhiên chi phí thời gian sẽ được rút xuống rất nhiều

Kĩ thuật heuristic được ứng dụng nhiều trong trí tuệ nhân tạo (Artificial Intelligence

- AI) nhưng ta cũng thấy với cơ chế như trên nó cũng giúp nâng cao hiệu quả các

thuật toán giải các bài toán tối ưu hóa thuộc lớp NP-khó

Ngày đăng: 21/07/2017, 19:50

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[8] D. E. Boyce, A. Farhi and R.Weischedel. (1973), ―Optimal Network Problem, A Branch and Bound Algorithm”, Environ. Plan. 5, pp. 519-533 Sách, tạp chí
Tiêu đề:
Tác giả: D. E. Boyce, A. Farhi and R.Weischedel
Năm: 1973
[12] T. Fischer. (2007), ―Improved Local Search for Large Optimum Communication Spanning Tree Problem”, MIC'2007-7th Metaheuristics International Conference Sách, tạp chí
Tiêu đề: Improved "Local Search for Large Optimum Communication Spanning Tree Problem"”
Tác giả: T. Fischer
Năm: 2007
[13] G. Gallo. (1981), ―A new Branch and Bound Algorithm for the Network Design Problem”, Report L 81-1, Instituto Di Elaborazione Dell Informazione, Pisa, Italy Sách, tạp chí
Tiêu đề:
Tác giả: G. Gallo
Năm: 1981
[14] Garey,M.R., Johnson, D.S. (1979), ―Computers and Intractability: A Guide to the Theory of NP-Completeness”, W. H. Freeman, San Francisco, CA, USA Sách, tạp chí
Tiêu đề:
Tác giả: Garey,M.R., Johnson, D.S
Năm: 1979
[15] M. Gen and R. Chen. (1997), Genetic Algorithms and Engineering Design, Wiley Sách, tạp chí
Tiêu đề: Genetic Algorithms and Engineering Design
Tác giả: M. Gen and R. Chen
Năm: 1997
[17] Goldberg, D. E. (1989), Genetic algorithms in search optimization and machine learning, Reading, MA: Addison-Wesley Sách, tạp chí
Tiêu đề: Genetic algorithms in search optimization and machine learning
Tác giả: Goldberg, D. E
Năm: 1989
[19] Holland, J. H. (1975), Adaptation in Natural and Artificial Systems, University of MichiganPress, Ann Arbor, MI Sách, tạp chí
Tiêu đề: Adaptation in Natural and Artificial Systems
Tác giả: Holland, J. H
Năm: 1975
[22] Nguyễn Đức Nghĩa. (2004), Bài giảng chuyên đề về phân tích và thiết kế thuật toán, trường đại học Bách Khoa Hà Nội Sách, tạp chí
Tiêu đề: Bài giảng chuyên đề về phân tích và thiết kế thuật toán
Tác giả: Nguyễn Đức Nghĩa
Năm: 2004
[23] Nguyễn Đức Nghĩa. (2008), Bài giảng môn cấu trúc dữ liệu và giải thuật, trường đại học Bách Khoa Hà Nội Sách, tạp chí
Tiêu đề: Bài giảng môn cấu trúc dữ liệu và giải thuật
Tác giả: Nguyễn Đức Nghĩa
Năm: 2008
[26] C. Papadimitriou and M. Yannakakis. (1988), ―Optimization, approximation, and complexity classes”, In STOC ‘88: Proceedings of the twentieth annual ACM symposium on Theory of computing, pp. 229–234, New York, NY, USA,. ACM Press Sách, tạp chí
Tiêu đề:
Tác giả: C. Papadimitriou and M. Yannakakis
Năm: 1988
[31] F. Rothlauf. (2009), ―On optimal solutions for the optimal communication spanning tree problem”, Operation Research, Vol. 57, No. 2, pp. 413-425 Sách, tạp chí
Tiêu đề:
Tác giả: F. Rothlauf
Năm: 2009
[32] F. Rothlauf. (2006), Representations for Genetic and Evolutionary Algorithms, 2 nd edition, Springer Sách, tạp chí
Tiêu đề: Representations for Genetic and Evolutionary Algorithms
Tác giả: F. Rothlauf
Năm: 2006
[38] Steven S. Skiena. (2008),The Algorithm Design Manual, Second Edition, Springer- Verlag London Limited Sách, tạp chí
Tiêu đề: The Algorithm Design Manual
Tác giả: Steven S. Skiena
Năm: 2008
[43] Xiaodong et al. (2006), ―A hybrid algorithm based on Particle Swarm Optimization” Sách, tạp chí
Tiêu đề: [43] Xiaodong et al. (2006), ―A hybrid algorithm based on Particle Swarm Optimization”
Tác giả: Xiaodong et al
Năm: 2006
[1] Alon, N., Karp, R. M., Peleg, D., & West, D. A. (1995), graph theoretic game and its application to the k-server problem. SIAM Journal on Computing, pp.78-100 Khác
[2] Anh Tuan Hoang, Vinh Trong Le and Nhu Gia Nguyen. (2010), ―A Novel Particle Swarm Optimization-Based Algorithm for the Optimal Communication Spanning Tree Problem‖, Second International Conference on Communication Software and Networks Khác
[3] R. K. Ahuja and V. V. S. Murty. (August 1987), ―Exact and Heuristic Algorithms for the Optimum Communi-cation Spanning Tree Problem‖, Transportation Science, 21(3), pp.163–170 Khác
[4] S. Arora, C. Lund, R. Motwani, M. Sundan, and M. Szegedy. (1998), ―Proof varification and the hardness of approximation problems,‖ Colloquium on Computational Complexity Report TR98-008, Univ. of Trier Khác
[5] Bartal, Y. (1996), Probabilistic approximation of metric spaces and its algorithmic applications. In Proc. 37th IEEE Symp. on Foundations of Computer Science, pp.184-193 Khác
[6] Bartal, Y. (1998), On approximating arbitrary metrics by tree metrics. In Proc. 30th Anual ACM Symp. on Theory of Computer Science, pp. 161-168 Khác

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

🧩 Sản phẩm bạn có thể quan tâm

w