Phân tích và thiết kế thuật toán - Nguyên Lý kế toán | Trường Đại học Quy Nhơn

Phân tích và thiết kế thuật toán - Nguyên Lý kế toán | Trường Đại học Quy Nhơn được sưu tầm và soạn thảo dưới dạng file PDF để gửi tới các bạn sinh viên cùng tham khảo, ôn tập đầy đủ kiến thức, chuẩn bị cho các buổi học thật tốt. Mời bạn đọc đón xem!

PHÂN TÍCH VÀ THIT K
THUT TOÁN
Phm Thế B o
ptbao@math.hcmuns.edu.vn
http://www.math.hcmuns.edu.vn/~ptbao/AlgorithmAnalysis/
Ni dung
Tng quan v thu t toán độ phc tp ca thut toán
Đánh giá thut toán bng:
Công c toán hc sơ cp
Thc nghim
Hàm sinh
Hoán v
Đệ q
Đánh giá mt s thut toán thông dng
Các phương pháp gii quyết bài toán trên máy tính:
Trc tiếp
Gián tiếp
K thut thiết kế thut toán:
C
Greedy
Quy hoch động
Tìm kiếm cc b (địa phương)
Phm Thế Bo
Hình thc kim tra
Thc hành (4 đ i m):
Làm vic theo nhóm
Mi nhóm s đánh giá mt thut toán:
Mi loi b d liu ch y 300*k l n, v i k=1..10
Mi ln chy d li u được phát sinh ng u nhiên
V đồ th , tính phương sai độ l ch chuNn
Ước lượng phđộ c tp
V
thuyết (6 đ i m)
Phm Thế Bo
Tài liu tham kho
1. Cm nang thut toán cun 1 Robert Sedgewich
Trn Đan Thư.
2. Lp trình = Thut toán + CTDL, N. Wirth
3. Algorithm Complexity & Communication Problems,
J.P Press,
London 1996.
4. Elementary Introduction to new Generalized
Functions, Jean Francois Colombeau, 1991.
5. Algorithm and Complexity, Herbert S.Wilf, 1994.
6. Gii mt bài toán trên máy tính như thế nào, Hoàng
Kiế
7. The Art of Computer Vol. 1, 2, 3, Donald Knuth,
Addison-Wesley
Phm Thế Bo
Tng quan v thut toán
1. Thut toán gì?
Tp hp hu hn các hướng dn rõ ràng để gii
quyết mt bài toán (vn đề).
M rng (máy tính): mt dãy hu hn các
bư được,
quá trình hành động theo các bước này phi
d kng cho được ết qu như mong mun.
2. Tính cht cơ bn ca thut toán:
Hu hn
Đúng
Phm Thế Bo
3. d:
Mt lp hc cn chn lp trưởng theo các
bước:
1. Lp danh sách sinh viên
2. Sp th t
Danh sách cn gì?
Sp theo th t nào? (tă ng gi m, tiêu chí
nào)
Nếu trùng tiêu chí thì gii quyết ra sao?
Phm Thế Bo
Sa li:
a) Lp danh sách theo: h tên, ngày tháng năm sinh,
đim các môn, đ im trung bình cu i năm.
b) Sp xếp theo ĐTB gim. Nếu ĐTB bng nhau Æ
cùng hng.
c) Nếu 01 HS đứng đầu Æ chn, ngược li chn
người đim toán cao nht, nếu không chn được
Phân bit mp m la chn quyết định:
Mp m thiếu thông tin hoc nhiu la chn
nhưng không đủ điu kin quyết định, d: bước 1,
2.
L nh duy
nht trong điu kin c th ca vn đề, d bước c.
Phm Thế Bo
Tính thc thi được, ví d :
Tính ?
Chy xe th ng t nhà hát l n đến nhà th đức
theo đường Đồng Khi?
Tính dng, ví d:
B1: nhp n;
B
B3 i=1;
B4 nếu i=n+1 sang B8, ngược li sang B5
B5 cng i vào s
B
B7 quay li B4
B8 Tng cn tính s
1
Phm Thế Bo
Đặc trư ng khác c a thut toán:
Xác định đầu vào/ra
Tính hiu qu : kh i lượng tính toán, không gian,
thi gian.
Tính tng quát
d:
g
Cho mng các s nguyên A, tìm phn t ln nht.
Các phương pháp biu din thut toán:
Ngôn ng t nhiên
Sơ đồ (lưu đồ) khi
gi (Pseudo-code)
Phm Thế Bo
Khái nim thut gii
1. Thut gii gì?
Các cách gii chp nhn được nhưng không
hoàn toàn đáp ng đầy đủ các tiêu chun
ca thut toán thường được gi các thut
gii.
Đ ây khái ni m m rng ca thut toán da
trên tính c định tính đúng n.đắ
d thut gii Heuristic:
Nguyên Greedy (tham lam)
Nguyên th t
Phm Thế Bo
Độ phc tp ca thut toán
1. Gii thiu
Bài toán
Kích th
ước n
{ }thut toán gii quyết
?
Cái nào tt?
chn?
d :
Tìm s nh nh t trong n s cho trước
Xác định s nguyên dương m có phi
s nguyên t?
Cho m
khác không trong h 10, hãy xáo trn
các s để s ln nht?
Da trên cái gì?
Thi gian thc hinÆ f(n)
1. Xáo trn t hp
2. Sp xếp gim dn
Phm Thế Bo
Làm sao xác định
th i gian th c hin
f(n)?
1. Hướng tim cn:
thuyết
Thc nghim
2. Công c toán hc:
Hàm sinh
Hoán v nghch thế
Phm Thế Bo
Höôùng tieáp caän thöïc nghieäm
Caùc böôùc thöïc hieän:
1. Vieát chöông trình caøi ñaët
2. Thöïc thi chöông trình vôùi nhieàu boä döõ lieäu
4. Xaáp bieåu ñoà
Haïn cheá:
1. Caàn phaûi caøi ñaët CT vaø ño thôøi gian
3. Khoù so saùnh 02 thuaät giaûi
Phm Thế Bo
Ước lượ ng ti m cn
1. Ý nghĩa:
Phân lp c p độ l n ca các hàm f(n) khi n
đủ ln.
hiu O (big O O ln)
2. Định nghĩa:
Cho 2 hàm f,g : NÆR, ta nói f = O(g) nếu
n
0
N M>0, sao cho f(n)⏐≤M ,g(n)
nn
0
.
Phm Thế Bo
Phm Thế Bo
n
0
Running Time
f(n)
M*g(n)
Ước lượ ng ti m cn
Mc đích:
Tìm f(n) được ước lượng da trên nhng hàm
g(n) đã biết
1,000,001 1,000,000
3n
2
n
2
d:
X iv
M=1 và n
0
=1. Ta có g(n)f(n)⏐≤1. , n1.
Phm Thế Bo
Xét f(n)=10000n và g(n)=n
2
ta vn f=O(g)
f(n)⏐≤10000g(n), n1
Hay f(n) ⏐≤1. 10000g(n), n
Câu hi: g=O(f) ?
Gi s g=O(f) thì M và n sao cho
n
2
M (10000n), n n n n
0
10000 M ), n
0
lý.
Xét f(n)=10n thì ta thy
f = O(n)
f = O(n )
f = O(n
3
)
Phm Thế Bo
Cách viết khác: f O(g)
d: 10n O(n) O(n
2
)
Tránh lun ngy bin:
Thc cht
Tránh viết: O(n
2
) = n +1
2
Viết hp l:
n
2
+1 = O(n
2
)
n
2
+1 O(n
2
)
2 2 2
2 2
1
( ) 1
2
1
1
S a i
n O n n
n n
= = +
= +
2 2 2 2
1
( ) 1 ( )
2
n O n n O n +
v a ø
Phm Thế Bo
Thut toán T th i gian th c hin f(n)
f = O(g). Ta nói thut tóan T có độ
phc tp g.
(hàm g ch mt chn trên ca f, vn
th cách ước lượng cht hơn)
Định
Ta nói f tương đương g nếu f=O(g) và
g=O(f), ta viết f g.
d: Thut toán T, kích thước n, có thi
gian chy
3
1
( ) 100
10
f
n n n= +
Phm Thế Bo
Ta có th chng minh:
f=O(n
3
) và n
3
=O(f)
Chn M=1, n
0
=100 f n
3
Ta nói T có độ phc tp tương đương n
3
3 3
3 3
3
2
1
1 0 0
1 0
1 0 0 0 1 0
1 0 0 0 (1 0 1)
1 0 0 0 (1 0 1)
n n M n
n n M n
n M n
M
n
+
+
Phm Thế Bo
| 1/28

Preview text:

PHÂN TÍCH VÀ THIẾT KẾ THUẬT TOÁN Phạm Thế Bảo ptbao@math.hcmuns.edu.vn
http://www.math.hcmuns.edu.vn/~ptbao/AlgorithmAnalysis/ Nội dung
• Tổng quan về thuật toán và độ phức tạp của thuật toán
• Đánh giá thuật toán bằng:
– Công cụ toán học sơ cấp – Thực nghiệm – Hàm sinh – Hoán vị • Đệ q
• Đánh giá một số thuật toán thông dụng
• Các phương pháp giải quyết bài toán trên máy tính: – Trực tiếp – Gián tiếp
• Kỹ thuật thiết kế thuật toán: – C – Greedy – Quy hoạch động
– Tìm kiếm cục bộ (địa phương) Phạm Thế Bảo Hình thức kiểm tra • Thực hành (4 điểm): – Làm việc theo nhóm
– Mỗi nhóm sẽ đánh giá một thuật toán:
• Mỗi loại bộ dữ liệu chạy 300*k lần, với k=1..10
• Mội lần chạy dữ liệu được phát sinh ngẫu nhiên
– Vẽ đồ thị, tính phương sai độ lệch chuNn
– Ước lượng độ phức tạp – V • Lý thuyết (6 điểm) Phạm Thế Bảo Tài liệu tham khảo
1. Cẩm nang thuật toán – cuốn 1 – Robert Sedgewich – Trần Đan Thư.
2. Lập trình = Thuật toán + CTDL, N. Wirth
3. Algorithm Complexity & Communication Problems, J.P Press, London 1996. 4. Elementary Introduction to new Generalized
Functions, Jean Francois Colombeau, 1991.
5. Algorithm and Complexity, Herbert S.Wilf, 1994.
6. Giải một bài toán trên máy tính như thế nào, Hoàng Kiế
7. The Art of Computer Vol. 1, 2, 3, Donald Knuth, Addison-Wesley Phạm Thế Bảo Tổng quan về thuật toán 1. Thuật toán là gì?
Tập hợp hữu hạn các hướng dẫn rõ ràng để giải
quyết một bài toán (vấn đề).
• Mở rộng (máy tính): một dãy hữu hạn các bư được,
quá trình hành động theo các bước này phải
dừng và cho được kết quả như mong muốn.
2. Tính chất cơ bản của thuật toán: – – Hữu hạn – Đúng Phạm Thế Bảo 3. Ví dụ:
– Một lớp học cần chọn lớp trưởng theo các bước: 1. Lập danh sách sinh viên 2. Sắp thứ tự – Danh sách cần gì?
– Sắp theo thứ tự nào? (tăng g ả i m, tiêu chí nào)
– Nếu trùng tiêu chí thì giải quyết ra sao? Phạm Thế Bảo Sửa lại:
a) Lập danh sách theo: họ tên, ngày tháng năm sinh,
điểm các môn, điểm trung bình cuối năm.
b) Sắp xếp theo ĐTB giảm. Nếu ĐTB bằng nhau Æ cùng hạng.
c) Nếu có 01 HS đứng đầu Æ chọn, ngược lại chọn
người có điểm toán cao nhất, nếu không chọn được
• Phân biệt mập mờ và lựa chọn có quyết định:
– Mập mờ là thiếu thông tin hoặc có nhiều lựa chọn
nhưng không đủ điều kiện quyết định, ví dụ: bước 1, 2. – L nh duy
nhất trong điều kiện cụ thể của vấn đề, ví dụ bước c. Phạm Thế Bảo
• Tính thực thi được, ví dụ: – Tính ? 1 −
– Chạy xe thẳng từ nhà hát ớ
l n đến nhà thờ đức bà theo đường Đồng Khởi? • Tính dừng, ví dụ: – B1: nhập n; – B – B3 i=1; – B4
nếu i=n+1 sang B8, ngược lại sang B5 – B5 cộng i vào s – B – B7 quay lại B4 – B8 Tổng cần tính là s Phạm Thế Bảo • Đặc trưng khác ủ c a thuật toán:
– Xác định đầu vào/ra
– Tính hiệu quả: khối lượng tính toán, không gian, thời gian. – Tính tổng quát Ví dụ: – g
– Cho mảng các số nguyên A, tìm phần tử lớn nhất.
• Các phương pháp biểu diễn thuật toán: – Ngôn ngữ tự nhiên
– Sơ đồ (lưu đồ) khối – Mã giả (Pseudo-code) Phạm Thế Bảo Khái niệm thuật giải 1. Thuật giải là gì?
Các cách giải chấp nhận được nhưng không
hoàn toàn đáp ứng đầy đủ các tiêu chuẩn
của thuật toán thường được gọi là các thuật giải. Đây là khái n ệ
i m mở rộng của thuật toán dựa
trên tính xác định và tính đúng đắn.
Ví dụ thuật giải Heuristic: – – Nguyên lý Greedy (tham lam) – Nguyên lý thứ tự Phạm Thế Bảo
Độ phức tạp của thuật toán 1. Giới thiệu Bài toán ? Kích thước n {thuật toán giải quyết} chọn? Cái nào tốt? Ví dụ:
• Tìm số nhỏ nhất trong n số cho trước
• Xác định số nguyên dương m có phải là số nguyên tố? Dựa trên cái gì? • Cho mộ
khác không trong hệ 10, hãy xáo trộn
các số để có số lớn nhất?
Thời gian thực hiện” Æ f(n) 1. Xáo trộn tổ hợp 2. Sắp xếp giảm dần Phạm Thế Bảo
Làm sao xác định “thời gian thực hiện” f(n)? 1. Hướng tiệm cận: – Lý thuyết – Thực nghiệm 2. Công cụ toán học: – – Hàm sinh
– Hoán vị và nghịch thế Phạm Thế Bảo
Höôùng tieáp caän thöïc nghieäm
 Caùc böôùc thöïc hieän:
1. Vieát chöông trình caøi ñaët
2. Thöïc thi chöông trình vôùi nhieàu boä döõ lieäu 4. Xaáp xæ bieåu ñoà  Haïn cheá:
1. Caàn phaûi caøi ñaët CT vaø ño thôøi gian
3. Khoù so saùnh 02 thuaät giaûi Phạm Thế Bảo Ước lượng tiệm cận 1. Ý nghĩa:
Phân lớp cấp độ lớn của các hàm f(n) khi n đủ lớn.
Ký hiệu O (big O – O lớn) 2. Định nghĩa:
Cho 2 hàm f,g : NÆR, ta nói f = O(g) nếu
∃n0∈N và M>0, sao cho ⏐f(n)⏐≤M⏐g(n)⏐, ∀n≥n0. Phạm Thế Bảo M*g(n) f(n) e im T g in n n u R n0 Phạm Thế Bảo Ước lượng tiệm cận  Mục đích:
Tìm f(n) được ước lượng dựa trên những hàm g(n) đã biết Ví 1,000,001 ≈ 1,000,000 3n2 ≈ n2  Ví dụ: • X với
M=1 và n0=1. Ta có ⏐f(n)⏐≤1.⏐g(n)⏐, ∀n≥1. Phạm Thế Bảo
• Xét f(n)=10000n và g(n)=n2 ta vẫn có f=O(g) vì
– ⏐f(n)⏐≤10000⏐g(n)⏐, ∀n≥1
– Hay ⏐f(n)⏐≤1.⏐g(n)⏐, ∀n≥10000 • Câu hỏi: g=O(f) ?
Giả sử g=O(f) thì có M và n sao cho n2 ≤ M (10000n), ∀n≥ n n n 0 ⇒ ≤ 10000 M ), ∀ ≥ n0 ⇒ vô lý.
• Xét f(n)=10n thì ta thấy  f = O(n)  f = O(n )  f = O(n3) Phạm Thế Bảo
• Cách viết khác: f∈ O(g)
Ví dụ: 10n ∈ O(n) ∈ O(n2)
• Tránh lý luận ngụy biện: 1 2 2 2 n
= O ( n ) = n + 1 2 1 2 2 ⇒ n = n + 1 ⇒ S a i 1 2 2 2 2 • Thực chất n
O ( n ) v a ø n + 1 ∈ O ( n ) 2 Tránh viết: O(n2) = n2+1 Viết hợp lệ: n2+1 = O(n2) n2+1 ∈ O(n2) Phạm Thế Bảo
• Thuật toán T có thời gian thực hiện là f(n)
và f = O(g). Ta nói thuật tóan T có độ phức tạp g.
(hàm g chỉ là một chặn trên của f, vẫn có
thể có cách ước lượng chặt hơn) Định
Ta nói f tương đương g nếu f=O(g) và g=O(f), ta viết f ∼ g.
Ví dụ: Thuật toán T, kích thước n, có thời gian chạy 1 3 f (n) = n +100n 10 Phạm Thế Bảo • Ta có thể chứng minh: f=O(n3) và n3=O(f) 1 3 3 n
+ 1 0 0 n M n 1 0 3 3 ⇒ n
+ 1 0 0 0 n ≤ 1 0 M n 3 ⇒
1 0 0 0 n ≤ (1 0 M − 1 ) n 2 ⇒
1 0 0 0 ≤ (1 0 M − 1 ) n
Chọn M=1, n0=100 ⇒ f ∼ n3
Ta nói “T có độ phức tạp tương đương n3” Phạm Thế Bảo