Bài giảng Cơ sở lập trình nâng cao - Chương 6: Phương pháp thiết kế thuật toán − chia để trị

10 21 0
Bài giảng Cơ sở lập trình nâng cao - Chương 6: Phương pháp thiết kế thuật toán − chia để trị

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

Thông tin tài liệu

quá trình phân chia sẽ cùng dạng với bài toán ban đầu, chỉ khác nhau về kích thước. – Có thể có một số bài toán con không cùng[r]

(1)

CƠ SỞ LẬP TRÌNH NÂNG CAO

Biên soạn: Ths.Tôn Quang Toại TonQuangToai@yahoo.com

TPHCM, NĂM 2013

(2)

PHƯƠNG PHÁP THIẾT KẾ THUẬT TOÁN

− CHIA ĐỂ TRỊ −

(3)

Nội dung

• Giới thiệu

(4)(5)

Giới thiệu

• Chia để trị phương pháp thiết kế thuật

toán từ xuống (top – down) với ý tưởng:

– Chia toán lớn thành tốn nhỏ

hơn có dạng giống toán ban đầu

– Các toán nhỏ chia thành

bài toán nhỏ nữavới hy vọng

(6)

Phương pháp

• Phương pháp Chia để trị gồm bước:

– Bước [Divide] – Chia toán thành

phần

– Bước [Solve] – Giải phần

– Bước [Combine] – Kết hợp lời giải

(7)

Phương pháp

• Nhận xét quan trọng:

– Các toán (các phần) nhận

quá trình phân chia dạng với tốn ban đầu, khác kích thước

– Có thể có số tốn khơng

dạng với tốn lớn

(8)

Sơ đồ cài đặt

• Cài đặt phương pháp Đệ qui

void DivideConquer(A, x)

{

if (A du nho) Solve(A)

else

{

- Phan chia A A0, A1, …, An-1

- for (i=0; i<n; i++)

DivideConquer(Ai, xi)

- Ket hop cac nghiem xi de duoc nghiem x }

(9)

Các ví dụ

• Ví dụ [Sorting 1]: Cho dãy a1, a2, …,

an Hãy xây dựng thuật toán xếp dãy tăng dần

n-1 Phần tử cuối

(10)

Các ví dụ

– Bước 2: Solve

Sorted

Ngày đăng: 09/03/2021, 06:49

Tài liệu cùng người dùng

Tài liệu liên quan