1. Trang chủ
  2. » Giáo án - Bài giảng

Phan tich Thuat toan 8

7 22 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Nội dung

• Khi gặp ứng dụng cần số nguyên lớn hơn (hàng chục hay hàng trăm chữ số), chúng ta phải đi xây dựng cấu trúc dữ liệu số nguyên lớn Các thao tác đi kèm là: cộng trừ nhân lớn.. Mỗi đội th[r]

(1)

CHIA

ĐỂ

TRN

CHIA

ĐỂ

TRN

DIVIDE A

N

D CO

N

QUER

Phạm Thế Bảo Khoa Toán – Tin học

Trường Đại học Khoa học Tự nhiên Tp.HCM

N

i dung

• Kỹ thuật quan trọng, áp dụng rộng rãi để

thiết kếcác giải thuật có hiệu thiết kếcác giải thuật có hiệu

• Để giải tốn kích thước n, ta chia tốn thành số tốn có kích thước nhỏ Giải toán tổng hợp kết quảlại để lời giải banđầu

• Những tốn chia thành tốn có kích thước nhỏ để

thành tốn có kích thước nhỏ để

(2)

M

t s

bài toán tiêu bi

u

• MergeSort QuickSort ố

• Nhân số nguyên lớn • Xếp lịch thi đấu thểthao • Bài tốn cân

• …

Phạm Thế Bảo

MergeSort QuickSort

• Chia tập liệu làm tập con, trình chia

đế hỉ ị 01 hầ tử Ỉ dừ (bài t

đến cịn 01 phần tử Ỉ dừng (bài toán sở), tổng hợp tập cách trộn có thứtự Ỉ tập liệu xếp

(3)

Bài toán nhân hai s

ngun l

n

• Trong ngơn ngữ lập trình, kiểu liệu số ngunđều có miền giá trịhạn chế

ngunđều có miền giá trịhạn chế,

ví dụ: Pascal, C sốnguyên từ -32768 đến 32767

• Khi gặp ứng dụng cần số nguyên lớn (hàng chục hay hàng trăm chữ số), phải xây dựng cấu trúc liệu số nguyên lớn Các thao tác kèm là: cộng trừ nhân lớn Các thao tác kèm là: cộng, trừ, nhân, … • Chúng ta xem xét cách nhân 02 số nguyên lớn

có n chữ số cho hiệu

Phạm Thế Bảo

• Nếu dùng cách nhân thông thường, nghĩa chữ số nhân với cộng lại chi phí O(n2).

• Áp dụng kỹp dụ g ỹ thuật chiat uật c a đểđể trị Ta chia 02 sốt ị a c a số nguyên X, Y thành số nguyên lớn có n/2 chữ số: X=A10n/2+B Y=C10n/2+D

Ví dụ: A=1234 A=12x102+34

Khi X.Y = AC10n+(AD+BC)10n/2+BD.

Giố h ê l i hi iế để ó

(4)

• Theo cách làm phải thực phép nhân số nguyên lớn n/2 chữ số (AC, AD, BC, BD), sau dùng phép cộng số nguyên lớn n chữ số phép nhan với 10n và

ể ổ

10n /2để tổng hợp.

• Phép cộng số nguyên lớn cần O(n), phép nhân 10n có thể thực hiện đơn giản cách thêm

n chữ số Ỉ cần O(n) Gọi T(n) thời gian nhân hai số nguyên lớn ta có phương gian nhân hai số ngun lớn, ta có phương trình đệ quy:

Phạm Thế Bảo

• Giải phương trỡnh ta cú T(n) =

ặkhụng ci thin! ã Viết lại:

X Y AC10n+[(A B)(D C)+AC+BD]10n/2+BD

X.Y = AC10n+[(A-B)(D-C)+AC+BD]10n/2+BD

Cơng thức cần tính phép nhân số nguyên lớn n/2 chữ số: AC,BD (A-B)(D-C), phép cộng trừ phép nhân với 10n

Lập luận tương tựập ậ g ự ta có phương trìnhp g đệệquy:q y T(1)=1

T(n)=

(5)

Nghiệm phương trình T(n)=

Ỉcải thiện Thuật giải thơ:

longDigit multi2Integer(longDigit X, longDogit Y, int n){

if( 1) th t X*Y

if(n=1) then return X*Y; A=left(X,n/2);

B=right(X,n/2); C=left(Y,n/2); D=right(Y,n/2);

m1=multi2Integer(A,C,n/2);

2 lti2I t (A B D C /2)

m2=multi2Integer(A-B,D-C,n/2); m3=multi2Integer(B,D,n/2);

return (m1*10n+(m1+m2+m3)*10n/2+m3);

}

Phạm Thế Bảo

X

ế

p l

ch thi

đấ

u th

thao

• Xét việc xếp lịch thi đấu vòng tròn lượt cho n đội đá banh Mỗi đội thi đấu với cho n đội đá banh Mỗi đội thi đấu với nhau, đội đấu nhiều trận ngày Làm ta xếp lịch thi đấu cho số ngày • Ta có tổng số trậnđấu tồn giải

nếu n chẵn ta n/2 cặp thi đấu

ộ Ỉ ầ í hấ ( 1) Nế

(6)

• Lịch thi đấu bảng n dòng n-1 cột

đánh số tứ trở đi, dòng iđại diện chođội thứi cột j

đại diện cho ngày thi đấu j, ô(i,j) ghi đội phải thi đấu vớiđội i ngày j

• Dùng chiến lược chia để trị: để lịch cho n đội, ta cho n/2 đội, để lịch cho n/2 đội ta lịch cho

ắ ấ

p ộ , p ị ộ p ị

n/4 đội, … Ỉ lịch thi đấu cho đội (bài toán

sở)

• Từ lịch thiđấu đội, lịch thi đấu cho 4đội nhưsau:

– Lịch thiđấu cho 4đội bảng dòng cột

– Lịch thiđấu cho 2đội ngày lịch thi

đấu đội (bài tốn sở) Vậy ơ(1 1)=2 ô(2 1)=1

đấu đội (bài toán sở) Vậy ơ(1,1)=2, ơ(2,1)=1 Tương tự có lịch thiđấu cho đội ngày 1: ô(3,1)=4 ơ(4,1)=3 Ta thấy ơ(3,1)=ơ(1,1)+2 ơ(4,1)=ơ(2,1)+2

– Lịch thiđấu 4đội, ta lấy góc bên trái bảng lắp vào cho góc bên phải lấy góc bên trái lắp cho góc bên phải Phạm Thế Bảo

Ngày 1 Đội

Đội

Ngày Ngày 2 Ngày 3 Đội

Đội

Đội

Đội

Ngày Ngày 2 Ngày 3

Đội

Đội

Đội

Đội

Ngày Ngày 2 Ngày 3

Đội

(7)

Ngày Ngày Ngày Ngày Ngày Ngày 6 Ngày 7

Đội

Đội

Ngày Ngày Ngày Ngày Ngày Ngày 6 Ngày 7

Đội

Đội

Ngày Ngày Ngày Ngày Ngày Ngày 6 Ngày 7

Đội

ĐĐộội 2i 11 44 33

Đội

Đội

Đội

Đội

Đội

Đội

Đội

Đội

Đội

Đội

Đội

Đội

Đội

Đội

Đội

Đội

Đội

Đội

Đội

Đội

Phạm Thế Bảo

Đội

Đội

Đội

Bài tập: càiđặt chương trình

Bài tốn cân b

ng

• Với kỹ thuật chia để trị, toán ban đầu

đ h t ó kí h th ầ

được thành toán có kích thước gần hiểu suất cao

Ngày đăng: 27/05/2021, 01:20

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w