Tải bản đầy đủ (.pdf) (76 trang)

Một số thuật toán giải bài toán phủ tập hợp và ứng dụng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.21 MB, 76 trang )

ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
VÀ TRUYỀN THÔNG

HOÀNG XUÂN THÁI

MỘT SỐ THUẬT TOÁN GIẢI BÀI TOÁN
PHỦ TẬP HỢP VÀ ỨNG DỤNG

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

Thái Nguyên - Năm 2014


1

ĐẠI HOẠC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
VÀ TRUYỀN THÔNG

HOÀNG XUÂN THÁI

MỘT SỐ THUẬT TOÁN GIẢI BÀI TOÁN
PHỦ TẬP HỢP VÀ ỨNG DỤNG
Chuyên ngành: KHOA HỌC MÁY TÍNH
Mã số

:

60.48.01


LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

NGƯỜI HƯỚNG DẪN KHOA HỌC
GS. TS. ĐẶNG QUANG Á

Thái Nguyên - Năm 2014


2

MỤC LỤC
Trang
LỜI CẢM ƠN ........................................................................................................ 4
LỜI CAM ĐOAN................................................................................................... 5
DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT .............................................. 6
DANH MỤC BẢNG .............................................................................................. 7
DANH MỤC HÌNH ............................................................................................... 8
MỞ ĐẦU ............................................................................................................... 9
Chương 1. TỔNG QUAN ..................................................................................... 11
1.1. KIẾN THỨC CƠ SỞ VỀ LÝ THUYẾT BÀI TOÁN NP-HARD ............. 11
1.1.1. Định nghĩa về lớp bài toán P và NP .................................................... 11
1.1.2. Các ví dụ về bài toán NP .................................................................... 14
1.2. LÝ THUYẾT QUY HOẠCH TOÁN HỌC .............................................. 15
1.2.1. Khái niệm chung ................................................................................ 16
1.2.2. Quy hoạch tuyến tính.......................................................................... 19
1.2.3. Quy hoạch rời rạc ............................................................................... 22
1.3. TỔNG KẾT CHƯƠNG ............................................................................ 25
Chương 2. BÀI TOÁN PHỦ TẬP HỢP............................................................... 26
2.1. GIỚI THIỆU BÀI TOÁN PHỦ TẬP HỢP.................................................. 26
2.1.1. Một số ví dụ về bài toán phủ tập hợp .................................................. 26

2.1.2. Bài toán phủ tập hợp........................................................................... 28
2.2. MỘT SỐ KẾT QUẢ LÝ THUYẾT VỀ BÀI TOÁN PHỦ TẬP HỢP ......... 29
2.2.1. Hướng tiếp cận giải bài toán SCP ......................................................... 29


3

2.2.2. Một số phương pháp tìm giải pháp gần tối ưu cho bài toán SCP........... 31
2.3. THUẬT TOÁN HEURISTIC GIẢI BÀI TOÁN PHỦ TẬP HỢP ............... 35
2.3.1. Thuật toán Heuristic ........................................................................... 35
2.3.2. Ứng dụng thuật toán Heuristics giải bài toán SCP .............................. 36
2.3.3. Tính hiệu quả của thuật toán Heuristic................................................ 45
2.4. THUẬT TOÁN CHÍNH XÁC .................................................................... 50
2.4.1. Ví dụ về thuật toán nhánh cận .................................................................. 50
2.4.2. Thuật toán chính xác giải bài toán SCP .................................................... 54
2.5. TỔNG KẾT CHƯƠNG .............................................................................. 57
Chương 3. CÀI ĐẶT CHƯƠNG TRÌNH VÀ ỨNG DỤNG ................................ 58
3.1. BÀI TOÁN PHÂN LỊCH TRỰC BÁC SĨ ................................................... 58
3.1.1. Phát biểu bài toán..................................................................................... 58
3.1.2. Cài đặt thuật toán tham lam...................................................................... 59
3.1.3. Cài đặt thuật toán Nhánh cận ................................................................... 60
3.2. XÂY DỰNG CHƯƠNG TRÌNH PHÂN LỊCH TRỰC BÁC SĨ .................. 64
3.2.1. Công cụ lựa chọn................................................................................ 64
3.2.2. Modul chương trình ............................................................................ 64
3.2.3. Giao diện chương trình ....................................................................... 66
3.3. THỬ NGHIỆM VÀ ĐÁNH GIÁ ................................................................ 70
3.4. TỔNG KẾT CHƯƠNG .............................................................................. 70
KẾT LUẬN VÀ KIẾN NGHỊ .............................................................................. 72
DANH MỤC TÀI LIỆU THAM KHẢO .............................................................. 74



4

LỜI CẢM ƠN
Em xin chân thành cảm ơn Ban Giám hiệu, Phòng Đào tạo Sau Đại học,
Khoa Công nghệ Thông tin Trường Đại học công nghệ thông tin và truyền thông
Thái Nguyên đã tận tình giúp đỡ, tạo mọi điều kiện thuận lợi cho em trong quá
trình học tập, nghiên cứu và thực hiện luận văn.
Đặc biệt, em xin gửi lời tri ân sâu sắc đến GS. TS Đặng Quang Á – người đã
dành nhiều thời gian, công sức và tận tình hướng dẫn khoa học cho em trong suốt
quá trình hình thành và hoàn chỉnh luận văn.
Xin chân thành cảm ơn Quý Thầy, Cô đã giảng dạy, truyền đạt cho em
những tri thức quý báu, thiết thực trong suốt khóa học.
Cuối cùng xin bày tỏ lòng biết ơn đối với gia đình, người thân, bạn bè, đồng
nghiệp đã giúp đỡ, động viên, đóng góp ý kiến quý báu cho em trong việc hoàn
thành luận văn này.

Thái Nguyên, ngày tháng năm 2014
Tác giả

Hoàng Xuân Thái


5

LỜI CAM ĐOAN
Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi dưới sự hướng
dẫn trực tiếp của GS.TS. Đặng Quang Á.
Mọi trích dẫn sử dụng trong báo cáo này đều được ghi rõ nguồn tài liệu
tham khảo theo đúng qui định.

Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, tôi xin
chịu hoàn toàn trách nhiệm.

Thái Nguyên, ngày tháng năm 2014
Tác giả

Hoàng Xuân Thái


6

DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT
Tiếng Anh
Từ viết tắt

Tên đầy đủ

Diễn giải

GA

Genetic Algorithm

Giải thuật di truyền

LP

Linear Programming

Quy hoạch tuyến tính


NP

Nondeterministic Polynomial
Time

Thuật toán bất định trong thời gian
đa thức

SA

Simulated Annealing

Giải thuật luyện thép

SCP

Set Covering Problem

Bài toán phủ tập hợp

Tiếng Việt
BTQHTT

Bài toán quy hoạch tuyến tính

BTQHPT

Bài toán quy hoạch phi tuyến


BTQHL

Bài toán quy hoạch lồi

BTQHTP

Bài toán quy hoạch toàn phương


7

DANH MỤC BẢNG
Trang
Bảng 3.1. Danh sách các bác sĩ và các dịch vụ mà bác sĩ đó có thể thực hiện trong
trường hợp tổng quát ............................................................................................. 58
Bảng 3.2. Thời gian trung bình (miligiây).............................................................. 70


8

DANH MỤC HÌNH
Trang
Hình 1.1 Mô hình phân lớp các bài toán P, NP, CO-NP, NP-Complete, NP-hard 15
Hình 1.2. Đồ thị hàm f(x)

17

Hình 2.1. Thuật toán Meta-RaPS tìm giải pháp cơ sở

38


Hình 2.2. Thủ tục cập nhật

38

Hình 2.3. Thủ tục tìm giải pháp láng giềng

39

Hình 2.4. Thuật toán Meta-RaPS giải bài toán SCP

40

Hình 2.5. Ví dụ bài toán SCP

42

Hình 2.6. Kết quả sau khi thực hiện thuật toán tham lam

43

Hình ví dụ thuật toán tham lam

44

Hình 2.7. Kết quả cây phân nhánh

52

Hình 2.8. Ma trận chi phí của bài toán người du lịch


54

Hình 2.9. Cây phân nhánh giải bài toán người du lịch

54

Hình 3.1. Giao diện chính của chương trình

67

Hình 3.2. Giao diện nạp dữ liệu

68

Hình 3.3. Giao diện phân lịch bằng thuật toán tham lam

68

Hình 3.4. Giao diện phân lịch bằng thuật toán tham lam

69

Hình 3.5. Giao diện lưu kết quả phân lịch

69

Hình 3.6. Đồ thị biểu diễn thời gian thực hiện trung bình

70



9

MỞ ĐẦU
1. Lý do chọn đề tài
Bài toán tối ưu tổ hợp là dạng bài toán có độ phức tạp tính toán cao thuộc lớp
NP khó. Đã có nhiều giải thuật được đưa ra để giải quyết bài toán trên như họ giải
thuật kiến (Ant Algorithm), giải thuật luyện thép SA (Simulated Annealing), giải
thuật di truyền GA (Genetic Algorithm) và giải thuật Meta-Heuristic. Những giải
thuật này đã giải quyết các bài toán với hiệu quả cao và cho kết quả lời giải gần tối
ưu.
Với độ phức tạp tính toán cao của các bài toán tối ưu tổ hợp cũng như đòi hỏi
về mặt thời gian, việc giải các bài toán này với tính chất tuần tự của các giải thuật sẽ
gặp phải những vấn đề về thời gian thực hiện chương trình, tốc độ xử lý, khả năng
lưu trữ của bộ nhớ, xử lý dữ liệu với quy mô lớn, … Kích thước bài toán tăng lên và
không gian tìm kiếm càng lớn yêu cầu cần phải có các giải thuật để tăng tốc độ và
hiệu quả của giải thuật.
Bài toán phủ tập hợp (set covering problem) là một bài toán tối ưu tổ hợp cơ
bản. Dạng bài toán này có rất nhiều trong thực tế như: lập lịch biểu, lập kế hoạch
sản xuất, định tuyến, phân bổ đầu tư, …Đã có nhiều nghiên cứu về phương pháp
hiệu quả để giải quyết bài toán này bao gồm các giải thuật heuristic, thuật toán sử
dụng ý tưởng tham lam (Greedy Method) và các thuật toán sử dụng các phương
pháp của quy hoạch nguyên.
Vì vậy, việc tìm hiểu bài toán dạng phủ tập hợp, các thuật toán giải quyết bài
toán để từ đó ứng dụng vào trong thực tế là một việc làm có ý nghĩa khoa học và
thực tiễn. Đây chính là mục đích của luận văn này.
2. Đối tượng nghiên cứu
Đối tượng nghiên cứu của luận văn này là bài toán phủ tập hợp và các vấn đề
liên quan, các thuật toán để giải quyết pài toán phủ tập hợp.



10

3. Phạm vi nghiên cứu
Luận văn tập trung nghiên cứu các kiến thức có liên quan, các cơ sở lý thuyết
như: Lý thuyết các bài toán NP-hard, quy hoạch tuyến tính, quy hoạch nguyên, các
phương pháp giải chúng và áp dụng vào bài toán phủ tập hợp.
4. Nhiệm vụ nghiên cứu
-

Tìm hiểu và hệ thống các kiến thức cơ sở về lý thuyết các bài toán NP-hard

-

Tìm hiểu về quy hoạch toán học, bài toán phủ tập hợp và ứng dụng.

-

Tìm hiểu một vài thuật toán chính xác giải bài toán phủ tập hợp.

-

Cài đặt và thử nghiệm một vài thuật toán.

5. Những nội dung nghiên cứu chính
Bố cục của luận văn gồm phần mở đầu trình bày lý do chọn đề tài, đối tượng và
nhiệm vụ nghiên cứu của đề tài. Chương một, tập trung trình bày những kiến thức
tổng quan về lý thuyết NP-hard và quy hoạch toán học. Chương hai, giới thiệu bài
toán phủ tập hợp, một số kết quả lý thuyết về bài toán phủ tập hợp, trình bày thuật

toán Heuristic và thuật toán chính xác giải bài toán phủ tập hợp. Chương 3, ứng
dụng những kiến thức về bài toán phủ tập hợp và những thuật toán đã trình bày,
trong chương này chúng tôi trình bày phần cài đặt chương trình ứng dụng.
Với những kết quả đạt được, phần cuối của luận văn nêu ra những phép đo
tính hiệu quả của nghiên cứu, đánh giá thuật toán và nêu vài đề xuất nhằm tối ưu
thuật toán, đánh giá các kết quả đạt được, những hạn chế và đề xuất hướng nghiên
cứu tiếp theo của đề tài.
6. Phương pháp nghiên cứu
-

Phương pháp đọc tài liệu

-

Phương pháp quan sát

-

Phương pháp phân tích – tổng hợp lý thuyết.

-

Phương pháp thực nghiệm.


11

Chương 1. TỔNG QUAN
1.1.


KIẾN THỨC CƠ SỞ VỀ LÝ THUYẾT BÀI TOÁN NP-HARD

1.1.1. Định nghĩa về lớp bài toán P và NP
1.1.1.1. Khái niệm các loại thời gian tính
Thời gian tính tốt nhất: là thời gian tính tối thiểu cần thiết để thực hiện thuật
toán với mọi bộ dữ liệu đầu vào kích thước n.
Thời gian tính tồi nhất: là thời gian tính tối đa cần thiết để thực hiện thuật toán
với mọi bộ dữ liệu đầu vào có kích thước n.
Thời gian tính trung bình: là thời gian tính cần thiết để thực hiện thuật toán trên
một tập hữu hạn các bộ dữ liệu đầu vào có kích thước n. Thời gian tính trung bình
được tính theo công thức sau:
Thời gian tính trung bình=(Tổng thời gian tính tất cả các bộ dữ liệu có thể)/ Số
bộ dữ liệu.
Định nghĩa 1.1 [1]. Bài toán quyết định là bài toán mà đầu ra chỉ có thể là ‘yes’
hoặc ‘no’ (đúng/sai, 0/1).
Đối với một bài toán quyết định, có những bộ dữ liệu vào cho ra câu trả lời (đầu
ra) là ‘yes’, chúng ta gọi đây là bộ dữ liệu ‘yes’, nhưng cũng có những bộ dữ liệu
vào cho ra câu trả lời là ‘no’, chúng ta gọi những bộ dữ liệu này là bộ dữ liệu ‘no’.
1.1.1.2. Bằng chứng ngắn gọn dễ kiểm tra
Rất nhiều các bài toán quyết định có một đặc điểm chung, đó là để xác nhận câu
trả lời ặ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, 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’ đó. Tính ngắn gọn dễ kiểm tra ám chỉ việc
thời gian kiểm tra để đưa ra kết quả chỉ mất thời gian đa thức. Ví dụ về những bài
toán quyết định kiểu này:
-

Bài toán kiểm tra tính hợp số: “Có phải số n là hợp số?”, để xác nhận câu trả
lời ‘yes’ cho đầu vào n, chúng ta có thể đưa ra một ước số b (1Để kiểm tra xem b có phải là ước số của n chúng ta có thể thực hiện phép chi



12

n cho b sau thời gian đa thức. Trong ví dụ này, b là bằng chứng ngắn gọn (vì
bcủa n không).
-

Đối với bài toán Hamilton, để xác nhận câu trả lời ‘yes’ cho đồ thị đã cho G,
chúng ta có thể đưa ra một chu trình Hamilton của đồ thị:
v1, v2, v3, …, vn, v1

Việc kiểm tra dãy đỉnh nói trên có là chu trình Hamilton của đồ thị đã cho hay
không có thể thực hiện sau thời gian đa thức. Khi đó chúng ta nói dãy đỉnh nói trên
là bằng chứng ngắn gọn dễ kiểm tra để xác nhận câu trả lời ‘yes’ của bài toán
Hamilton.
-

Đối với bài toán về tính chấp nhận được của biểu thức Bun, để xác nhận câu
trả lời ‘yes’ đối với một biểu thức đã cho, chúng ta chỉ cần đưa ra một bộ giá
trị các biến số mà tại đó biểu thức nhận giá trị true. Việc tính giá trị của biểu
thức tại một bộ giá trị có thể thực hiện sau thời gian đa thức.

Một các tương tự, có thể đưa ra khái niệm bằng chứng ngắn gọn dễ kiểm tra để
xác định câu trả lời ‘no’. Đối với mỗi bài toán, 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 ‘no’ là dễ dàng 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 là ‘yes’.
1.1.1.3. Khái niệm quy dẫn
Định nghĩa 1.2 [1]. Giả sử chúng ta có hai bài toán quyết định A và B. Chúng

ta nói A có thể quy dẫn về B nếu như sau một thời gian tính đa thức nếu tồn tại một
thuật toán thời gian đa thức R cho phép biến đổi bộ dữ liệu x của A thành bộ dữ
liệu vào R(x) của B sao cho x là bộ dữ liệu yes của A khi và chỉ khi R(x) là dữ liệu
vào yes của B.
Nếu A quy dẫn về được B sau thời gian đa thức và B có thể giải được sau thời
gian đa thức thì A cũng có thể giải được sau thời gian đa thức.
1.1.1.4. Lớp bài toán P.
Định nghĩa 1.3 [1]. Chúng ta gọi P là lớp các bài toán có thể giải được trong
thời gian đa thức, NP là lớp các bài toán quyết định mà để xác định câu trả lời


13

“yes” của nó chúng ta có thể đưa ra các bằng chứng ngắn gọn dễ kiểm tra, co-NP
là lớp các bài toán quyết định mà để xác định câu trả lời “no” của nó chúng ta có
thể đưa ra bằng chứng ngắn gọn dễ kiểm tra.
Ví dụ 1.1. Bài toán cây khung nhỏ nhất giải được nhờ thuật toán Prim với thời
gian O(n2) thuộc lớp bài toán P.
1.1.1.5. Lớp bài toán NP
Định nghĩa 1.4 [1]. 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ụ 1.2. Bài toán kiểm tra tính hợp số: “Có phải n là hợp số không?”, để xác
nhận câu trả lời “yes” cho đầu vào n ta có thể đưa ra một ước số b (1Để kiểm tra xem b có phải là ước số của n hay không ta có thể thực hiện phép chia
n cho b sau thời gian đa thức. Trong ví dụ này dễ thấy b là bằng chứng ngắn gọn
(bước số của n).
1.1.1.6. Lớp bài toán Co-NP
Định nghĩa 1.5 [1]. 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ụ 1.3. Bài toán kiểm tra tính nguyên tố: “Có phải n là số nguyên tố
không?”, để đư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 n ta có thể đưa ra một ước số b của n.
1.1.1.7. Lớp bài toán NP-đầy đủ (NP-Complete)
Định nghĩa 1.6 [1]. Một bài toán quyết định A được gọi là NP-đầy đủ (NPComplete) nếu như:
-

A là một bài toán NP

-

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

Bổ đề. Giả sử bài toán A là NP-đầy đủ, bài toán B thuộc NP, và bài toán A quy
dẫn được về bài toán B. Khi đó bài toán B cũng là NP-đầy đủ.


14

1.1.1.8. Lớp bài toán NP-khó (NP-Hard)
Một cách ngắn gọn có thể hiểu bài toán NP-Hard là bài toán mà không có thuật
toán thời gian tính đa thức để giải nó trừ khi P=NP, mà chỉ có các thuật toán giải
trong thời gian hàm mũ.
Định nghĩa 1.7 [1]. 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.
1.1.2. Các ví dụ về bài toán NP
Bài toán bè cực đại (MaxClique): Cho đồ thị vô hướng G=(V, E). V là tập các
đỉnh, E là tập các cạnh tương ứng các đỉnh trong V. Cần tìm bè lớn nhất của G. Bè
là tập các đỉnh trong đồ thị mà đôi một có cạnh nối với nhau (là một đồ thị con đầy

đủ trong đồ thị G).
Bài toán tập độc lập (Independsent set): Cho đồ thị vô hướng G=(V, E) và số
nguyên K, hỏi có thể tìm được tập độc lập S với |S| ≥ K. Tập độc lập là tập các đỉnh trong
đồ thị mà chúng đôi một không có cạnh nối với nhau.
Bài toán phủ đỉnh (Vertex cover ): Ta gọi một phủ của đồ thị vô hướng G = (V, E) là
một tập con các đỉnh của đồ thị S  V sao cho mỗi cạnh của đồ thị có ít nhất một đầu

mút trong S. Bài toán đặt ra là: Cho đồ thị vô hướng G = (V, E) và số nguyên k. Hỏi G
có phủ đỉnh với kích thước k hay không?
Một cách không hình thức, có thể nói rằng nếu ta có thể giải được một cách hiệu quả
một bài toán NP-khó cụ thể, thì ta cũng có thể giải hiệu quả bất kỳ bài toán NP bằng cách
sử dụng thuật toán giải bài toán NP-khó như một chương trình con.
Từ định nghĩa bài toán NP-khó có thể suy ra rằng mỗi bài toán NP-đầy đủ đều là NPkhó. Tuy nhiên một bài toán NP-khó không nhất thiết phải là NP-đầy đủ.
Cũng từ bổ đề nêu trên, ta có thể suy ra rằng để chứng minh một bài toán A nào đó là
NP-khó, ta chỉ cần chỉ ra phép qui dẫn một bài toán đã biết là NP-khó về nó.
Từ phần trình bày trên, ta thấy có rất nhiều bài toán ứng dụng quan trọng thuộc vào
lớp NP-khó, và vì thế khó hy vọng xây dựng được thuật toán đúng hiệu quả để giải chúng.


15

Do đó, một trong những hướng phát triển thuật toán giải các bài toán như vậy là xây dựng
các thuật toán gần đúng.

Hình 1.1 Mô hình phân lớp các bài toán P, NP, CO-NP, NP-Complete và NPhard
1.2.

LÝ THUYẾT QUY HOẠCH TOÁN HỌC

Tối ưu hóa, được khởi nguồn như một ngành của Toán học, có rất nhiều ứng

dụng hiệu quả và rộng rãi trong quy hoạch tài nguyên, thiết kế chế tạo máy, điều
khiển tự động, quản trị kinh doanh, kiến trúc đô thị, công nghệ thông tin, trong việc
tạo nên các hệ hỗ trợ ra quyết định trong quản lý và phát triển các hệ thống lớn.
Chính vì vậy, các lĩnh vực của Tối ưu hóa ngày càng trở nên đa dạng, mang nhiều
tên gọi khác nhau như Quy hoạch toán học, Điều khiển tối ưu, Vận trù học, lý
thuyết trò chơi …
Có thể tạm định nghĩa quy hoạch tuyến tính là lĩnh vực toán học nghiên cứu các
bài toán tối ưu mà hàm mục tiêu (vấn đề được quan tâm) và các ràng buộc (điều
kiện của bài toán) đều là hàm và các phương trình hoặc bất phương trình tuyến tính.


16

Đây chỉ là một định nghĩa mơ hồ, bài toán quy hoạch tuyến tính sẽ được xác định rõ
ràng hơn thông qua các ví dụ.
Các bước nghiên cứu và ứng dụng một bài toán quy hoạch tuyến tính điển hình
là như sau:
-

Xác định vấn đề cần giải quyết, thu thập dữ liệu

-

Lập mô hình toán học

-

Xây dựng các thuật toán để giải bài toán đã mô hình hóa bằng ngôn ngữ
thuận lợi cho việc lập trình cho máy tính.


-

Tính toán thử và điều chỉnh mô hình nếu cần.

-

Áp dụng giải các bài toán thực tế.

1.2.1. Khái niệm chung
1.2.1.1. Bài toán tối ưu tổng quát

Tối ưu hóa là một trong những lĩnh vực kinh điển của toán học có ảnh hưởng
đến hầu hết các lĩnh vực khoa học – công nghệ và kinh tế - xã hội. Trong thực tế,
việc tìm giải pháp tối ưu cho một vấn đề nào đó chiếm một vai trò hết sức quan
trọng. Phương pháp tối ưu là phương pháp hợp lý nhất, tốt nhất, tiết kiệm chi phí,
tài nguyên, nguồn lực mà lại cho hiệu quả cao.
Ví dụ 1.4. Tìm

x  D   2.2,1.8  R1

3
sao cho f ( x)  x  3x  1  Max

Bài toán tối ưu trên có dạng cực đại hóa được giải như sau: Cho
f '( x)  3x 2  3  0 , ta có các điểm tới hạn là x=-1 và x=+1. Xét giá trị hàm số f(x) tại

thời điểm tới hạn vừa tìm được và tại các giá trị x = -2.2 và x = 1.8 (các điểm đầu
mút của đoạn [-2.2, 1.8]), ta có f(-2.2) = -3.048, f(-1)=3, f(1.8)= 1.432. Vậy giá trị x
cần tìm là x= -1. Kết quả của bài toán được minh họa trên hình I.1



17

Hình 1.2. Đồ thị hàm f(x)
n
Cho hàm số f : D  R  R . Bài toán tối ưu tổng quát có dạng: Max (Min) f(x),

n
n
với x  D  R . Như vậy, cần tìm điểm x  ( x1 , x2 ,..., xn )  D  R sao cho hàm mục

tiêu f(x) đạt được giá trị lớn nhất đối với bài toán Max – cực đại hóa (giá trị bé nhất
đối với bài toán Min – cực tiểu hóa).
n
Điểm x  ( x1 , x2 ,..., xn )  D  R được gọi là phương án khả thi (hay phương án

chấp nhận được hoặc phương án, nếu nói vắn tắt) của bài toán tối ưu: Max (Min)
n
f(x), với x  D  R . Miền D được gọi là miền ràng buộc. Các tọa độ thành phần

của điểm x được gọi là các biến quyết định, còn x cũng được gọi là vectơ quyết
định.
*
*
*
*
n
n
Xét bài toán cực đại hóa: Max f(x), với x  D  R . Điểm x  ( x1 , x2 ,..., xn )  R
*

được gọi là điểm tối ưu (hay phương án tối ưu) toàn cục nếu x  D và

f ( x* )  f ( x ), x  D . Điểm x  R n được gọi là điểm tối ưu (hay phương án tối ưu)


18

địa phương nếu x  D và tồn tại một lân cận N đủ nhỏ của điểm x sao cho
f ( x)  f ( x), x  N  D .
n
*
n
Đối với bài toán cực tiểu hóa Min f(x), với x  D  R , điểm x  R được gọi là

*
*
điểm tối ưu (hay phương án tối ưu) toàn cục nếu x  D và f ( x )  f ( x ), x  D .

n
Điểm x  R được gọi là điểm tối ưu (hay phương án tối ưu) địa phương nếu x  D

và tồn tại một lân cận N đủ nhỏ của điểm x sao cho f ( x)  f ( x), x  N  D .
Dễ thấy, mọi phương án tối ưu toàn cục cũng là phương án tối ưu địa phương,
trong khi đó một phương án tối ưu địa phương không nhất thiết là phương án tối ưu
toàn cục. Trên hình …, điểm x=1 chỉ là phương án tối ưu địa phương khi xét bài
toán cực tiểu hóa.
Ví dụ 1.5. Xét bài toán tối ưu sau: Max f(x)= 8 x1  6 x2 với điều kiện ràng buộc
x  D   x1 , x2   R 2 : 4 x1  2 x2  60; 2 x1  4 x2  48, x1  0, x2  0

Bài toán tối ưu trên đây còn được gọi là bài toán quy hoạch tuyến tính. Người ta

đã chứng minh được rằng mọi phương án tối ưu địa phương của bài toán quy hoạch
tuyến tính cũng đồng thời là phương án tối ưu toàn cục.
1.2.1.2. Phân loại các bài toán tối ưu
Các bài toán tối ưu, cũng được gọi là các bài toán quy hoạch toán học, được chia
thành các lớp sau [2]:
-

Bài toán quy hoạch tuyến tính (BTQHTT)

-

Bài toán tối ưu phi tuyến hay còn gọi là bài toán quy hoạch phi tuyến
(BTQHPT), bao gồm cả bài toán quy hoạch lồi (BTQHL) và bài toán quy
hoạch toàn phương (BTQHTP).

-

Bài toán tối ưu rời rạc, bài toán tối ưu nguyên và hỗn hợp nguyên.

-

Bài toán quy hoạch động.


19

-

Bài toán quy hoạch đa mục tiêu.


-

Bài toán quy hoạch ngẫu nhiên/ mờ …

Các phương pháp toán học giải các lớp bài toán tối ưu tổng quát như nêu trên
đây được gọi là các phương pháp tối ưu toán học (hay các phương pháp quy hoạch
toán học).
1.2.2. Quy hoạch tuyến tính
1.2.2.1. Phát biểu bài toán
Bài toán quy hoạch tuyến tính trong [2] là bài toán có dạng
n

x0   c j x j  max

(1)

j 1

n

a x
ij

j

 bi , i  1, 2,..., l

(2)

j


 bi , i  l  1,..., m

(3)

j 1

n

a x
ij

j 1

(4)

x j  0, j  1,..., n

Miền xác định: tập hợp các véc tơ x thỏa mãn (2) và (4)
Phương án bài toán: véc tơ x thỏa mãn (2) và (4)
n

Nếu ( x1 ,..., xn ) là phương án của bài toán, x0   c j x j thì X  ( x0 , x1 ,..., xn ) gọi là
j 1

phương án mở rộng của bài toán (1) – (4).
Phương án X* đạt cực đại (1) gọi là phương án tối ưu. Phương án mở rộng X *
gọi là phương án tối ưu mở rộng nếu X* là phương án tối ưu.
Ký hiệu:



20

 L – miền xác định của bài toán (1) – (4)
 (L, C) – kí hiệu bài toán qui hoạch tuyến tính (1) – (4)
 X(L, C) – phương án tối ưu của bài toán (1) – (4)


X (L, C) – phương án tối ưu mở rộng của bài toán (1) – (4)

 LC là tập hợp các phương án tối ưu của bài toán (L, C)
 Bài toán quy hoạch tuyến tính gọi là giải được nếu tồn tại phương án tối
ưu.
1.2.2.2. Dạng chính tắc của bài toán qui hoạch tuyến tính
n

x0   c j x j  max

(5)

j 1

n

a x
ij

j

 bi , i  1, 2,..., m


(6)

j 1

x j  0, j  1,..., n

(7)

 a1 j 
 
 a2 j 
Gọi Aj   .  là vectơ điều kiện thứ j của bài toán (5) – (7)
 
. 
 
a
 mj 

 b1 
 
 b2 
B   .  là vectơ ràng buộc của bài toán (5) – (7).
 
. 
b 
 m

Phương án X của bài toán (5) – (7) gọi là tựa nếu các véc tơ điều kiện ứng với
các thành phần dương của nó là độc lập tuyến tính.



21

Cơ sở của phương án tựa X là tập hợp

A



x j  0 . Các thành phần của phương

j

án tựa ứng với các vectơ cơ sở gọi là các thành phần cơ sở (các biến tương ứng gọi
là biến cơ sở), các thành phần còn lại gọi là các thành phần phi cơ sở (các biến
tương ứng gọi là biến cơ sở).
Nếu X   x1 ,..., xn  phương án tựa của bài toán quy hoạch tuyến tính,
( Aj1 ,..., Ajk ) là cơ sở của phương án tựa, B   j1 ,..., jk  , N  1,.., n \ B thì hàm mục

tiêu

x0 , x1 ,..., xn



thể

biểu


diễn

qua

các

biến

phi



sở:

xi  xi 0   xij ( x j ), i  0,1,..., n
jN

Kí hiệu Q n  0,1,..., n
B 0  B  0 , N 0  N  0

Bảng đơn hình T  xij

iQ n , jN 0

gọi là bảng đơn hình đầy đủ.

Phương án tựa bài toán (5) – (7) gọi là không suy biến nếu số ràng buộc của hệ
(6) – (7) mà phương án thỏa mãn với dấu bằng bằng đúng n (các ràng buộc này là
độc lập tuyến tính). Phương án tựa là suy biến nếu số ràng buộc mà phương án tựa
thỏa mãn chặt là lớn hơn n.

Phương án tựa X của bài toán (5) – (7) là không suy biến nếu các thành phần cơ
sở của nó là dương. Cơ sở của phương án tựa không suy biến xác định duy nhất.
Ứng với phương án tựa suy biến có nhiều cơ sở.
Tiêu chuẩn tối ưu: để cho phương án mở rộng X '   x0' , x1' ,..., xn'  là tối ưu điều
kiện cần và đủ là tồn tại cơ sở B sao cho
xi  xi'   xij ( x j ), i  0,1,..., n
jN

x0 j  0, j  N


22

Giả sử ràng buộc (6) của bài toán (5) – (7) viết ở dạng:
xi  xi 0   xij ( x j ), i  0,1,..., n
jN

Bảng đơn hình tương ứng T  xij

iQ n , jN 0

,

X   x1 , x2 ,..., xn   ( x10 , x20 ,..., xn 0 ),
n

X   x1 , x2 ,..., xn   ( c j x j , x1 ,..., xn ).
j 1

Nếu xi 0  0 (i  1, 2,..., n) thì bảng đơn hình T gọi là chấp nhận được, vectơ X là

phương án tựa của bài toán quy hoạch tuyến tính.
Nếu x0 j  0, j  N thì bảng đơn hình T là chuẩn (đối ngẫu chấp nhận được),
vectơ X gọi là giả phương án, X gọi là giả phương án mở rộng.
1.2.3. Quy hoạch rời rạc
1.2.3.1. Định nghĩa [2]
Trong các bài toán quy hoạch tuyến tính, các biến số có thể nhận những giá trị
thực không âm. Tuy nhiên, trong thực tiễn thường gặp các bài toán mà các biến số
chỉ có thể nhận một số hữu hạn hay đếm được giá trị, thường là các giá trị nguyên.
Chẳng hạn sẽ là vô nghĩa khi đưa ra câu trả lời: cần sản xuất nửa cái bàn hay cần
thuê 2,7 cái ô tô để vận chuyển hàng hóa … Trong một số bài toán, chẳng hạn bài
toán vận tải với các lượng hàng cung và cầu là các số nguyên, song nhiều bài toán
khác thì không phải như vậy. vì thế trong chương này sẽ đề cập đến nội dung và
phương pháp giải các bài toán tối ưu trên lưới các điểm nguyên hay trên các tập rời
rạc, gọi tắt là bài toán quy hoạch rời rạc hay bài toán quy hoạch nguyên. Bài toán
quy hoạch rời rạc có dạng sau:
Tìm cực đại của hàm f ( x, y ) phụ thuộc hai nhóm biến x và y với các ràng buộc
có dạng:


23

gi ( x, y )  0, i  1, 2,..., m, x  D

(8)

Trong đó, x   x1 , x2 ,..., x p  , y   y1 , y2 ,..., yq  , p  0, q  0 , D là tập hữu hạn các
véc tơ p – chiều, còn f, gi là các hàm tuyến tính và D là lưới các điểm nguyên, thì ta
có bài toán quy hoạch nguyên tuyến tính, còn nếu D là tập các véc tơ p thành phần 0
hay 1 thì ta có bài toán quy hoạch nguyên 0 – 1.
Nếu q = 0, nghĩa là chỉ có các biến rời rạc x1 , x2 ,..., x p thì ta có bài toán được gọi

là bài toán quy hoạch nguyên hoàn toàn. Còn nếu q>0 thì bài toán được gọi là bài
toán nguyên bộ phận.
1.2.3.2. Các bài toán thực tế dẫn tới quy hoạch rời rạc
 Bài toán vận tải
Có m kho hàng (điểm phát) chứa một loại hàng hóa, lượng hàng ở kho i là ai và
n nơi tiêu thụ (điểm thu), nhu cầu ở nơi thu là b j , cij là chi phí vận chuyển một đơn
vị hàng từ điểm phát i đến điểm thu j. Xác định các lượng hàng vận chuyển xij từ
các điểm phát i tới các điểm thu j sao cho tổng chi phí là nhỏ nhất và nhu cầu các
điểm thu được thỏa mãn.
Dạng toán học của bài toán là:

c x

ij ij

 min

(9)

ij
n

x

ij

 ai , i  1, 2,..., m

(10)


 b j , j  1, 2,..., n

(11)

j 1
m

x

ij

i 1

(12)

xij  0
m

n

 a  b
i

i 1

j

(13)

j 1


Nếu các ai và bj là nguyên thì đa diện lồi xác định bởi các ràng buộc của bài
toán có mọi đỉnh đều là nguyên. Do đó ta có thể dùng phương pháp đơn hình để giải
bài toán quy hoạch tuyến tính này, lời giải cuối cùng nhận được sẽ là một phương


24

án nguyên.
 Bài toán phân việc
Có n đơn vị sản xuất cần sản xuất n loại sản phẩm, cij là chi phí cho đơn vị i sản
xuất sản phẩm j. Hãy phân công mỗi đơn vị sản xuất một sản phẩm để tổng chi phí
là nhỏ nhất.
Dạng toán học của bài toán là:
n

n

 c x

ij ij

 min

i 1 j 1

n

x


ij

 1, i  1, 2,..., n

j 1

m

x

ij

 1, j  1, 2,..., n

i 1

xij {0;1}

 Bài toán cái túi
Có một cái túi chứa được nhiều nhất một trọng lượng là b, có n đồ vật cần
mang, đồ vật j nặng aj, giá trị của nó là cj. Bài toán đặt ra là cho những đồ vật nào
vào túi để tổng giá trị của nó lớn nhất. Ký hiệu xj là số đồ vật j được đưa vào túi.
Dạng toán học của bài toán là:
n

c x
j

j


 max

j

b

j 1
n

a x
j

j 1

x j  0, x j  Z

 Bài toán xếp hàng lên tàu
Một tàu chở hàng có trọng tải T và thể tích K, tàu chở n loại hàng, hàng loại j có
số lượng là sj, có trọng lượng là aj, thể tích bj và giá trị sử dụng là cj. Bài toán đặt ra


×