BÀI TOÁN, THUẬT TOÁN VÀ ĐỘ PHỨC TẠPMỘT SỐ KHÁI NIỆM CƠ BẢN • Thuật toán: →Gồm các thủ tục “từng bước-từng bước” giải quyết bài toán.. BÀI TOÁN, THUẬT TOÁN VÀ ĐỘ PHỨC TẠPMỘT SỐ KHÁI NIỆM
Trang 1MÁY TÍNH, ĐỘ PHỨC TẠP VÀ TÍNH KHÔNG THỂ GIẢI ĐƯỢC
Giảng viên : PGS.TSKH VŨ ĐÌNH HÒA
Trang 2MỞ ĐẦU
TÌNH HUỐNG
• 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ông ty sẽ tham gia thị trường cạnh tranh
“bandersnatch cao cấp”
• 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 bandersnatch đặt ra?
Trang 4MỞ ĐẦU
KẾT QUẢ
• Vài tuần trôi qua
• Giấy tờ tràn ngập
• 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
một modun
– Có rất nhiều modun cho bài toán
Trang 5MỞ ĐẦU
PHẢI LÀM THẾ NÀO
• 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
nào”
→Bạn sẽ bị sa thải’
• Cần chứng minh rằng bài toán được giao là
không thể giải dễ dàng được
Trang 6MỞ ĐẦU
LỜI KHUYÊN
• 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 hiệu
• 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 đủ
• 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
Trang 7MỞ ĐẦU
LỜI KHUYÊN
→Khả năng tìm ra thuật toán tốt cho bài toán khó.
→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 trường hợp đặc biệt
Trang 8BÀI TOÁN, THUẬT TOÁN VÀ ĐỘ PHỨC TẠP
MỘT SỐ KHÁI NIỆM CƠ BẢN
Trang 9BÀI TOÁN, THUẬT TOÁN VÀ ĐỘ PHỨC TẠP
MỘT SỐ KHÁI NIỆM CƠ BẢN
cπ1, π2, , π
) ,
( )
,
1 1
) 1 ( )
π c d c c c
m i
Trang 10BÀI TOÁN, THUẬT TOÁN VÀ ĐỘ PHỨC TẠP
MỘT SỐ KHÁI NIỆM CƠ BẢN
• Một dữ kiện/input của bài toán:
3 4 2
1 , c , c , c c
Là lời giải: lengthmin = 27
Trang 11BÀI TOÁN, THUẬT TOÁN VÀ ĐỘ PHỨC TẠP
MỘT SỐ KHÁI NIỆM CƠ BẢN
• Thuật toán:
→Gồm các thủ tục “từng bước-từng
bước” giải quyết bài toán
→Có thể xem như một chương trình viết bằng ngôn ngữ máy
• Một TT giải quyết được bài toán П nếu nó
có lời giải cho mọi dữ kiện/input I của bài toán đó
Trang 12BÀI TOÁN, THUẬT TOÁN VÀ ĐỘ PHỨC TẠP
MỘT SỐ KHÁI NIỆM CƠ BẢN
• Thuật toán:
Thế nào là một TT hiệu quả (efficiency)?
– Chạy được với tất cả các input.
– 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
Trang 13BÀI TOÁN, THUẬT TOÁN VÀ ĐỘ PHỨC TẠP
MỘT SỐ KHÁI NIỆM CƠ BẢN
• Thuật toán: 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
Trang 14• Lược đồ mã hóa:
– Miêu tả đầu vào của một bài toán cụ thể bằng
một chuỗi kí tự.
– Độ 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ã hóa.
– Độ dài này là cách đo hình thức của kích
thước bài toán cụ thể П(I).
BÀI TOÁN, THUẬT TOÁN VÀ ĐỘ PHỨC TẠP
MỘT SỐ KHÁI NIỆM CƠ BẢN
Trang 15BÀI TOÁN, THUẬT TOÁN VÀ ĐỘ PHỨC TẠP
MỘT SỐ KHÁI NIỆM CƠ BẢN
٭ Độ 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 bằng chuỗi tương tự, không phải chuỗi rời rạc
Trang 16BÀI TOÁN, THUẬT TOÁN VÀ ĐỘ PHỨC TẠP
MỘT SỐ KHÁI NIỆM CƠ BẢN
• Hàm thời gian:
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
bài toán đó
Trang 17THUẬT TOÁN THỜI GIAN ĐA THỨC VÀ 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:
|f(n)|<=c.|g(n)| n>=k
• 1 thuật toán thời gian đa thức có độ phức tạp là
O(p(n)) với p(n) là một hàm đa thức.
• n chỉ kích thước đầu vào
• 1 thuật toán thời gian lũy thừa nếu hàm phức tạp
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
đa thức như )nlogn
Trang 18THUẬT TOÁN THỜI GIAN ĐA THỨC VÀ NHỮNG BÀI TOÁN KHÔNG GIẢI ĐƯỢC
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
Trang 19THUẬT TOÁN THỜI GIAN ĐA THỨC VÀ NHỮNG BÀI TOÁN KHÔNG GIẢI ĐƯỢC
• Ảnh hưởng của công nghệ máy tính đến
các hàm phức tạp thời gian
Time complexity function
Present computer
Computer 100 times faster 1000 times Computer
Trang 20THUẬT TOÁN THỜI GIAN ĐA THỨC VÀ 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ó
để tìm ra một thuật toán thời gian đa thức để
giải quyết nó.
• 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 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
2 n nhanh hơn thuật toán n 5 với n<=20.
Trang 21THUẬT TOÁN THỜI GIAN ĐA THỨC VÀ NHỮNG BÀI TOÁN KHÔNG GIẢI ĐƯỢC
Trang 22THUẬT TOÁN THỜI GIAN ĐA THỨC VÀ NHỮNG BÀI TOÁN KHÔNG GIẢI ĐƯỢC
• 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 lại thành công khiến nhiều người ngạc nhiên