MÁY TÍNH, ĐỘ PHỨC TẠP VÀ
MÁY TÍNH, ĐỘ PHỨC TẠP VÀ
TÍNH KHÔNG THỂ GIẢI ĐƯỢC
TÍNH KHÔNG THỂ GIẢI ĐƯỢC
Giảng viên : PGS.TSKH VŨ ĐÌNH HÒA
Giảng viên : PGS.TSKH VŨ ĐÌNH HÒA
MỞ ĐẦU
MỞ ĐẦU
TÌNH HUỐNG
TÌNH HUỐNG
•
Bạn được làm thuê cho một công ty với tư
Bạn được làm thuê cho một công ty với tư
cách là nhà thiết kế thuật toán.
cách là nhà thiết kế thuật toán.
•
Công ty sẽ tham gia thị trường cạnh tranh
Công ty sẽ tham gia thị trường cạnh tranh
“bandersnatch cao cấp”.
“bandersnatch cao cấp”.
•
Có phương pháp nào để tạo ra một tập các quy
Có phương pháp nào để tạo ra một tập các quy
cách kĩ thuật cho mỗi bài toán của thị trường
cách kĩ thuật cho mỗi bài toán của thị trường
bandersnatch đặt ra?
bandersnatch đặt ra?
MỞ ĐẦU
MỞ ĐẦU
PHẢI LÀM GÌ?
PHẢI LÀM GÌ?
•
Xác định chính xác bài toán = tham vấn
Xác định chính xác bài toán = tham vấn
phòng bandersnatch.
phòng bandersnatch.
•
Lao vào công việc với đầy bầu nhiệt
Lao vào công việc với đầy bầu nhiệt
huyết
huyết
MỞ ĐẦU
MỞ ĐẦU
KẾT QUẢ
KẾT QUẢ
•
Vài tuần trôi qua
Vài tuần trôi qua
•
Giấy tờ tràn ngập
Giấy tờ tràn ngập
•
Không tìm được bất kì thuật toán nào
Không tìm được bất kì thuật toán nào
–
phải mất hàng năm để xây dựng một thuật toán cho
phải mất hàng năm để xây dựng một thuật toán cho
một modun
một modun
–
Có rất nhiều modun cho bài toán
Có rất nhiều modun cho bài toán
MỞ ĐẦU
MỞ ĐẦU
PHẢI LÀM THẾ NÀO
PHẢI LÀM THẾ NÀO
•
Nếu viết báo cáo rằng
Nếu viết báo cáo rằng
“
“
Tôi thật ngu ngốc vì không thể tìm được thuật toán
Tôi thật ngu ngốc vì không thể tìm được thuật toán
nào”
nào”
→
→
Bạn sẽ bị sa thải’
Bạn sẽ bị sa thải’
•
Cần chứng minh rằng bài toán được giao là
Cần chứng minh rằng bài toán được giao là
không thể giải dễ dàng được
không thể giải dễ dàng được
MỞ ĐẦU
MỞ ĐẦU
LỜI KHUYÊN
LỜI KHUYÊN
•
Việc chứng minh tính không thể giải được =
Việc chứng minh tính không thể giải được =
chứng minh không tồn tại một thuật toán hữu
chứng minh không tồn tại một thuật toán hữu
hiệu.
hiệu.
•
Lý thuyết sau đây chỉ ra rằng cần chứng minh
Lý thuyết sau đây chỉ ra rằng cần chứng minh
bài toán của bạn là bài toán NP-đầy đủ.
bài toán của bạn là bài toán NP-đầy đủ.
•
Nó có độ khó tương đương với độ khó lớp các
Nó có độ khó tương đương với độ khó lớp các
bài toán khác mà nhiều chuyên gia phải bó tay.
bài toán khác mà nhiều chuyên gia phải bó tay.
MỞ ĐẦU
MỞ ĐẦU
LỜI KHUYÊN
LỜI KHUYÊN
•
Tính NP-đầy đủ cho ta thấy:
Tính NP-đầy đủ cho ta thấy:
→
→
Khả năng tìm ra thuật toán tốt cho
Khả năng tìm ra thuật toán tốt cho
bài toán khó.
bài toán khó.
→
→
Cách chuyển hướng tiếp cận: giải
Cách chuyển hướng tiếp cận: giải
gần đúng hoặc tìm lời giải cho những
gần đúng hoặc tìm lời giải cho những
trường hợp đặc biệt
trường hợp đặc biệt
BÀI TOÁN, THUẬT TOÁN VÀ ĐỘ PHỨC TẠP
BÀI TOÁN, THUẬT TOÁN VÀ ĐỘ PHỨC TẠP
MỘT SỐ KHÁI NIỆM CƠ BẢN
MỘT SỐ KHÁI NIỆM CƠ BẢN
•
Một bài toán/vấn đề là gì?
Một bài toán/vấn đề là gì?
:
:
→
→
Một câu hỏi có tính tổng quát cần được trả
Một câu hỏi có tính tổng quát cần được trả
lời.
lời.
→
→
T
T
hường chứa một số tham số hay biến tự do
hường chứa một số tham số hay biến tự do
chưa được xác định giá trị.
chưa được xác định giá trị.
→
→
Miêu tả:(1) các tham số, (2) các yêu cầu về
Miêu tả:(1) các tham số, (2) các yêu cầu về
câu trả lời.
câu trả lời.
BÀI TOÁN, THUẬT TOÁN VÀ ĐỘ PHỨC TẠP
BÀI TOÁN, THUẬT TOÁN VÀ ĐỘ PHỨC TẠP
MỘT SỐ KHÁI NIỆM CƠ BẢN
MỘT SỐ KHÁI NIỆM CƠ BẢN
•
Bài toán
Bài toán
:
:
→
→
Ví dụ: Bt “Người du lịch”.
Ví dụ: Bt “Người du lịch”.
٧
٧
Các thành phố
Các thành phố
٧
٧
Các khoảng cách
Các khoảng cách
? Yêu cầu: tìm hoán vị tròn
? Yêu cầu: tìm hoán vị tròn
sao cho tổng trọng số cạnh:
sao cho tổng trọng số cạnh:
nhỏ nhất.
nhỏ nhất.
٭
٭
Ý nghĩa:
Ý nghĩa:
{ }
m
ccC ,,,c
21
=
( )
ji
ccd ,
m
ccc
πππ
,,,
21
),(),(
)1()(
1
1
)1()(
ππππ
ccdccd
m
m
i
ii
+
∑
−
=
+
BÀI TOÁN, THUẬT TOÁN VÀ ĐỘ PHỨC TẠP
BÀI TOÁN, THUẬT TOÁN VÀ ĐỘ PHỨC TẠP
MỘT SỐ KHÁI NIỆM CƠ BẢN
MỘT SỐ KHÁI NIỆM CƠ BẢN
•
Một dữ kiện/input của bài toán:
Một dữ kiện/input của bài toán:
1
c
2
c
3
c
4
c
10
9
9
5
6
3
{ }
4321
,,,c cccC
=
( )
10,
21
=
ccd
( )
5,
31
=
ccd
( )
9,
41
=
ccd
( )
6,
32
=
ccd
( )
9,
42
=
ccd
( )
3,
43
=
ccd
Sắp
xếp:
3421
,,, cccc
Là lời giải:
27
min
=
length
BÀI TOÁN, THUẬT TOÁN VÀ ĐỘ PHỨC TẠP
BÀI TOÁN, THUẬT TOÁN VÀ ĐỘ PHỨC TẠP
MỘT SỐ KHÁI NIỆM CƠ BẢN
MỘT SỐ KHÁI NIỆM CƠ BẢN
•
Thuật toán
Thuật toán
:
:
→
→
G
G
ồm các thủ tục “từng bước-từng
ồm các thủ tục “từng bước-từng
bước” giải quyết bài toán.
bước” giải quyết bài toán.
→
→
Có thể xem như một chương trình viết
Có thể xem như một chương trình viết
bằng ngôn ngữ máy.
bằng ngôn ngữ máy.
•
Một TT giải quyết được bài toán
Một TT giải quyết được bài toán
П
П
nếu nó
nếu nó
có lời giải cho mọi dữ kiện/input I của bài
có lời giải cho mọi dữ kiện/input I của bài
toán đó.
toán đó.
BÀI TOÁN, THUẬT TOÁN VÀ ĐỘ PHỨC TẠP
BÀI TOÁN, THUẬT TOÁN VÀ ĐỘ PHỨC TẠP
MỘT SỐ KHÁI NIỆM CƠ BẢN
MỘT SỐ KHÁI NIỆM CƠ BẢN
•
Thuật toán
Thuật toán
:
:
Thế nào là một TT hiệu quả (efficiency)?
Thế nào là một TT hiệu quả (efficiency)?
–
Chạy được với tất cả các input.
Chạy được với tất cả các input.
–
Thời gian tính toán nhanh nhất.
Thời gian tính toán nhanh nhất.
Yêu cầu về thời gian có tính quyết định xem một thuật
toán có hiệu quả để đưa vào thực tế hay không
BÀI TOÁN, THUẬT TOÁN VÀ ĐỘ PHỨC TẠP
BÀI TOÁN, THUẬT TOÁN VÀ ĐỘ PHỨC TẠP
MỘT SỐ KHÁI NIỆM CƠ BẢN
MỘT SỐ KHÁI NIỆM CƠ BẢN
•
Thuật toán
Thuật toán
:
:
Yêu cầu về thời gian
Yêu cầu về thời gian
–
Có thể miêu tả hàm một biến (Kích thước của một bài
Có thể miêu tả hàm một biến (Kích thước của một bài
toán cụ thể)
toán cụ thể)
–
Đo kích thước của bài toán cụ thể theo cách thông
Đo kích thước của bài toán cụ thể theo cách thông
thường
thường
–
Ex, bài toán “người thương gia đi du lịch” có kích
Ex, bài toán “người thương gia đi du lịch” có kích
thước là số lượng m các thành phố.
thước là số lượng m các thành phố.
–
Để tính một cách chính xác thì phải xét cả số các khoảng
cách và độ lớn các khoảng cách giữa các thành phố.
•
Lược đồ mã hóa:
Lược đồ mã hóa:
–
Miêu tả đầu vào của một bài toán cụ thể bằng
Miêu tả đầu vào của một bài toán cụ thể bằng
một chuỗi kí tự.
một chuỗi kí tự.
–
Độ dài đầu vào của trường hợp I của bài toán
Độ dài đầu vào của trường hợp I của bài toán
П
П
là số kí tự trong chuỗi kí tự của lược đồ mã
là số kí tự trong chuỗi kí tự của lược đồ mã
hóa.
hóa.
–
Độ dài này là cách đo hình thức của kích
Độ dài này là cách đo hình thức của kích
thước bài toán cụ thể
thước bài toán cụ thể
П
П
(I).
(I).
BÀI TOÁN, THUẬT TOÁN VÀ ĐỘ PHỨC TẠP
BÀI TOÁN, THUẬT TOÁN VÀ ĐỘ PHỨC TẠP
MỘT SỐ KHÁI NIỆM CƠ BẢN
MỘT SỐ KHÁI NIỆM CƠ BẢN
BÀI TOÁN, THUẬT TOÁN VÀ ĐỘ PHỨC TẠP
BÀI TOÁN, THUẬT TOÁN VÀ ĐỘ PHỨC TẠP
MỘT SỐ KHÁI NIỆM CƠ BẢN
MỘT SỐ KHÁI NIỆM CƠ BẢN
•
Lược đồ mã hóa:
Lược đồ mã hóa:
–
Ví dụ: Bài toán người thương gia đi du lịch.
Ví dụ: Bài toán người thương gia đi du lịch.
٭
٭
Lđmh sử dụng bộ kí tự:
Lđmh sử dụng bộ kí tự:
{c, [, ], /, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
{c, [, ], /, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
٭
٭
Chuỗi mã hóa:
Chuỗi mã hóa:
“
“
c[1] c[2] c[3] c[4] // 10 / 5 / 9 // 6 / 9 // 3”
c[1] c[2] c[3] c[4] // 10 / 5 / 9 // 6 / 9 // 3”
٭
٭
Độ dài đầu vào là 32.
Độ dài đầu vào là 32.
٭
٭
Các trường hợp bài toán phức tạp, có thể mã hóa
Các trường hợp bài toán phức tạp, có thể mã hóa
bằng chuỗi tương tự, không phải chuỗi rời rạc.
bằng chuỗi tương tự, không phải chuỗi rời rạc.
BÀI TOÁN, THUẬT TOÁN VÀ ĐỘ PHỨC TẠP
BÀI TOÁN, THUẬT TOÁN VÀ ĐỘ PHỨC TẠP
MỘT SỐ KHÁI NIỆM CƠ BẢN
MỘT SỐ KHÁI NIỆM CƠ BẢN
•
Hàm thời gian:
Hàm thời gian:
Cho mỗi kích thước đầu vào một lượng thời
Cho mỗi kích thước đầu vào một lượng thời
gian lớn nhất để giải quyết trường hợp của
gian lớn nhất để giải quyết trường hợp của
bài toán đó
bài toán đó
THUẬT TOÁN THỜI GIAN ĐA THỨC VÀ
THUẬT TOÁN THỜI GIAN ĐA THỨC VÀ
NHỮNG BÀI TOÁN KHÔNG GIẢI ĐƯỢC
NHỮNG BÀI TOÁN KHÔNG GIẢI ĐƯỢC
•
1 hàm f(n) là O(g(n)) khi hằng c, k:
1 hàm f(n) là O(g(n)) khi hằng c, k:
|f(n)|<=c.|g(n)| n>=k
|f(n)|<=c.|g(n)| n>=k
•
1 thuật toán thời gian đa thức
1 thuật toán thời gian đa thức
có độ phức tạp là
có độ phức tạp là
O(p(n)) với p(n) là một hàm đa thức.
O(p(n)) với p(n) là một hàm đa thức.
•
n chỉ kích thước đầu vào
n chỉ kích thước đầu vào
•
1 thuật toán thời gian lũy thừa
1 thuật toán thời gian lũy thừa
nếu hàm phức tạp
nếu hàm phức tạp
thời gian của nó không có giới hạn.
thời gian của nó không có giới hạn.
(bao gồm cả một số hàm phức tạp thời gian không
(bao gồm cả một số hàm phức tạp thời gian không
đa thức như )
đa thức như )
n
n
log
THUẬT TOÁN THỜI GIAN ĐA THỨC VÀ
THUẬT TOÁN THỜI GIAN ĐA THỨC VÀ
NHỮNG BÀI TOÁN KHÔNG GIẢI ĐƯỢC
NHỮNG BÀI TOÁN KHÔNG GIẢI ĐƯỢC
•
Bảng so sánh một số hàm phức tạp thời
Bảng so sánh một số hàm phức tạp thời
gian lũy thừa và đa thức.
gian lũy thừa và đa thức.
n
Time
complexity
function
2
n
3
n
5
n
n
2
n
3
Size n
10 3020 5040 60
.00001s
.00002s .00003s .00004s .00005s .00006s
.0001s .0004s .0009s .0016s .0036s.0025s
.1s
.008s .0027s .064s .125s .216s.001s
3.2s 24.3s 1.7m 5.2m 13.0m
.001s 1.0s 17.9m 12.7d 35.7y 366c
.059s 58m 6.5y 3855c
2 x 10
8
c
1.3 x 10
13
c
THUẬT TOÁN THỜI GIAN ĐA THỨC VÀ
THUẬT TOÁN THỜI GIAN ĐA THỨC VÀ
NHỮNG BÀI TOÁN KHÔNG GIẢI ĐƯỢC
NHỮNG BÀI TOÁN KHÔNG GIẢI ĐƯỢC
•
Ảnh hưởng của công nghệ máy tính đến
Ảnh hưởng của công nghệ máy tính đến
các hàm phức tạp thời gian
các hàm phức tạp thời gian
Time
complexity
function
Present
computer
Computer 100
times faster
Computer
1000 times
faster
n
n
2
n
3
n
5
3
n
2
n
N
1
N
2
N
3
N
5
N
4
N
6
100N
1
1000N
1
10N
2
31.6N
2
4.64N
3
10N
3
2.5N
4
3.98N
4
N
5
+6.64 N
5
+9.97
N
6
+4.19 N
6
+6.29
THUẬT TOÁN THỜI GIAN ĐA THỨC VÀ
THUẬT TOÁN THỜI GIAN ĐA THỨC VÀ
NHỮNG BÀI TOÁN KHÔNG GIẢI ĐƯỢC
NHỮNG BÀI TOÁN KHÔNG GIẢI ĐƯỢC
•
Một bài toán là không thể giải được nếu quá khó
Một bài toán là không thể giải được nếu quá khó
để tìm ra một thuật toán thời gian đa thức để
để tìm ra một thuật toán thời gian đa thức để
giải quyết nó.
giải quyết nó.
•
Với kích thước bài toán có hạn thì việc so sánh
Với kích thước bài toán có hạn thì việc so sánh
giữa thuật toán đa thức hữu hiệu và thuật toán
giữa thuật toán đa thức hữu hiệu và thuật toán
lũy thừa không hữu hiệu có nhiều ngoại lệ.
lũy thừa không hữu hiệu có nhiều ngoại lệ.
•
Ex: xem bảng so sánh ở slide trước, thuật toán
Ex: xem bảng so sánh ở slide trước, thuật toán
2
2
n
n
nhanh hơn thuật toán n
nhanh hơn thuật toán n
5
5
với n<=20.
với n<=20.
THUẬT TOÁN THỜI GIAN ĐA THỨC VÀ
THUẬT TOÁN THỜI GIAN ĐA THỨC VÀ
NHỮNG BÀI TOÁN KHÔNG GIẢI ĐƯỢC
NHỮNG BÀI TOÁN KHÔNG GIẢI ĐƯỢC
•
Một số nhận xét
Một số nhận xét
–
Thuật ngữ “intratability” chỉ có nghĩa tương
Thuật ngữ “intratability” chỉ có nghĩa tương
đối vì:
đối vì:
•
Độ phức tạp về thời gian được định nghĩa trong
Độ phức tạp về thời gian được định nghĩa trong
trường hợp xấu nhất
trường hợp xấu nhất
•
Một thuật toán 2
Một thuật toán 2
n
n
nghĩa là có ít nhất một trường
nghĩa là có ít nhất một trường
hợp bài toán cỡ n cần bằng ẫy thời gian.
hợp bài toán cỡ n cần bằng ẫy thời gian.
•
Hầu hết trong thực tế cần ít thời gian hơn nhiều.
Hầu hết trong thực tế cần ít thời gian hơn nhiều.
THUẬT TOÁN THỜI GIAN ĐA THỨC VÀ
THUẬT TOÁN THỜI GIAN ĐA THỨC VÀ
NHỮNG BÀI TOÁN KHÔNG GIẢI ĐƯỢC
NHỮNG BÀI TOÁN KHÔNG GIẢI ĐƯỢC
•
Một số nhận xét
Một số nhận xét
•
Ex1, thuật toán đơn hình (simplex) cho lập trình
Ex1, thuật toán đơn hình (simplex) cho lập trình
tuyến tính có độ phức tạp lũy thừa [Klee
tuyến tính có độ phức tạp lũy thừa [Klee
&
&
Minty, 1972
Minty, 1972
], [Zadeh, 1973] nhưng lại có thành
], [Zadeh, 1973] nhưng lại có thành
tích ấn tượng về việc chạy nhanh trong thực tế.
tích ấn tượng về việc chạy nhanh trong thực tế.
•
Ex2, thuật toán “Branch and bound” cho bài
Ex2, thuật toán “Branch and bound” cho bài
toán Knapsack có độ phức tạp lũy thừa nhưng
toán Knapsack có độ phức tạp lũy thừa nhưng
lại thành công khiến nhiều người ngạc nhiên.
lại thành công khiến nhiều người ngạc nhiên.