You are on page 1of 22

Phân tích &

Thiết kế thuật toán


(Algorithms Design &
Analysis)
L/O/G/O
GV: HUỲNH THỊ THANH THƯƠNG
Email: thuonghtt@uit.edu.vn
TỔNG QUAN
CHƯƠNG 1

L/O/G/O
www.themegallery.com
Bài tập trên lớp (lấy điểm quá trình)

Bài 3

24/02/2021 3 GV: Huỳnh Thị Thanh Thương


Sửa bài tập trên lớp: Bài 3

{2 g}
{n+1 ss} While ngoài lặp n lần
{n g}
{𝛼𝑖 +1 𝑠𝑠}
{2𝛼𝑖 𝑔} While trong lặp bao nhiều lần?
Pi
{n g}

Gọi 𝛼𝑖 số lần lặp của vòng while trong – đoạn Pi (xét độc lập với while ngoài)
𝑛

𝑆ố 𝑝ℎé𝑝 𝑔á𝑛 𝑛 = 2 + 2𝑛 + ෍ 2𝛼𝑖 Tìm 𝛼𝑖 nữa là xong


𝑖=1
𝑛

𝑆ố 𝑝ℎé𝑝 𝑠𝑜 𝑠á𝑛ℎ 𝑛 = 𝑛 + 1 + ෍(𝛼𝑖 + 1)


𝑖=1

4 GV: Huỳnh Thị Thanh Thương


9/17/2021
Sửa bài tập trên lớp Bài 3
𝑛
Vòng lặp Pi chỉ thực hiện khi 𝑛 − 𝑖 ≤ 𝑖 ⟺ 𝑖 ≥
2
Suy ra:

𝑛
0 𝑘ℎ𝑖 𝑖 <
𝛼𝑖 = 2
𝑛
Pi 𝑖 − 𝑛 − 𝑖 + 1 = 2𝑖 − 𝑛 + 1 𝑘ℎ𝑖 𝑖 ≥
2
Kết luận:
𝑛 𝑛

𝑆ố 𝑝ℎé𝑝 𝑔á𝑛 𝑛 = 2 + 2𝑛 + ෍ 2𝛼𝑖 = 2 + 2𝑛 + 2 ෍ (2𝑖 − 𝑛 + 1)


𝑛
𝑖=1 𝑖= 2
𝑛 𝑛

= 2 + 2𝑛 + 4 ෍ 𝑖 + 2 ෍ (1 − 𝑛)
𝑛 𝑛
𝑖= 2 𝑖= 2

𝑛 𝑛 𝑛
= 2 + 2𝑛 + 4 + 𝑛 (𝑛 − + 1)/2 + 2(1 − 𝑛) (𝑛 − + 1)
2 2 2
24/02/2021 5 GV: Huỳnh Thị Thanh Thương
Sửa bài tập trên lớp Bài 3
𝑛
Vòng lặp Pi chỉ thực hiện khi 𝑛 − 𝑖 ≤ 𝑖 ⟺ 𝑖 ≥
2
Suy ra:

𝑛
0 𝑘ℎ𝑖 𝑖 <
𝛼𝑖 = 2
𝑛
Pi 𝑖 − 𝑛 − 𝑖 + 1 = 2𝑖 − 𝑛 + 1 𝑘ℎ𝑖 𝑖 ≥
2
Kết luận:
𝑛 𝑛 𝑛
𝑆ố 𝑝ℎé𝑝 𝑠𝑜 𝑠á𝑛ℎ 𝑛 = 𝑛 + 1 + ෍(𝛼𝑖 + 1) = 𝑛 + 1 + ෍ 𝛼𝑖 + ෍ 1
𝑖=1 𝑖=1 𝑖=1
𝑛 𝑛 𝑛

= 𝑛 + 1 + ෍ 2𝑖 − 𝑛 + 1 + 𝑛 = 2𝑛 + 1 + 2 ෍ 𝑖 + ෍ (1 − 𝑛)
𝑛 𝑛 𝑛
𝑖= 2 𝑖= 2 𝑖= 2

𝑛 𝑛 𝑛
= 2𝑛 + 1 + 2 + 𝑛 (𝑛 − + 1)/2 + (1 − 𝑛) (𝑛 − + 1)
2 2 2

24/02/2021 6 GV: Huỳnh Thị Thanh Thương


Đếm số phép gán và so sánh

Bài 4

24/02/2021 7 GV: Huỳnh Thị Thanh Thương


Đếm số phép gán và so sánh Bài 4
While trong lặp bao nhiều lần?
(xét độc lập với while ngoài)

Số lần lặp while trong = số con j,


với j chạy từ i -> 1, bước giảm là j/2

Các giá trị có thể có của j

𝑖 𝑖 𝑖
𝑗: {𝑖, , , , … , > 0}
2 4 8
𝑖 𝑖 𝑖 𝑖 𝑖
𝛼𝑖 = số con k, 𝑘 ∈ ℕ| 𝑘 ≥ 1 𝑗: { 0 , 1 , 2 , 3 , … , 1}
2 2 2 2 2
𝑖 𝑘 ⇔ log 𝑖 ≥ 𝑘
≥ 1 ⟺ 𝑖 ≥ 2 2
2𝑘

𝛼𝑖 = số con k, 0 ≤ k ≤ log 2 𝑖 = log 2 𝑖 + 1

24/02/2021 8 GV: Huỳnh Thị Thanh Thương


Đếm số phép gán và so sánh

Bài 5

24/02/2021 9 GV: Huỳnh Thị Thanh Thương


Đếm số phép gán và so sánh Bài 5
{2 g}
{3n+1 ss}

{3*3n g}

{3n ss}

{3n g}

24/02/2021 10 GV: Huỳnh Thị Thanh Thương


Đếm số phép gán và so sánh Bài 5
• Câu lệnh if(x>0) chỉ thực hiện khi y>0
Số lần thực hiện phép so sánh x>0
= số con i thỏa điều kiện y>0
= (n-1) -1+1=n-1

• Câu lệnh count = … chỉ thực hiện khi y>0 và x>0


Số lần thực hiện phép gán count = …
= số con i thỏa 2 cả điều kiện y>0 và x>0
=0

i 1 n 2n 3n
x - - 0 +
y + 0 - -

24/02/2021 11 GV: Huỳnh Thị Thanh Thương


Đếm số phép gán và so sánh Bài 5
• Vòng lặp while trong chỉ thực hiện khi 1 ≤ x, hay x > 0
Số lần lặp của while trong 𝛼𝑖
= số con j với j chạy từ 1 → x, bước tăng là 2

𝛼𝑖 𝑥/2 𝑘ℎ𝑖 𝑥 > 0


=ቊ
Pi 0 𝑘ℎ𝑖 𝑥 ≤ 0
𝑥/2 𝑘ℎ𝑖 𝑖 > 2𝑛
=ቊ
0 𝑘ℎ𝑖 𝑖 ≤ 2𝑛

i 1 n 2n 3n
x - - 0 +
y + 0 - -

Số phép gán (n)= 2 + 12𝑛 + σ3𝑛


𝑖=1 𝑔á𝑛(𝑃𝑖)

Số phép so sánh (n)= 7𝑛 + σ3𝑛


𝑖=1 𝑠𝑜 𝑠á𝑛ℎ (𝑃𝑖)
24/02/2021 12 GV: Huỳnh Thị Thanh Thương
Đếm số phép gán và so sánh Bài 5
• Vòng lặp while trong chỉ thực hiện khi 1 ≤ x, hay x> 0
Số lần lặp của while trong 𝛼𝑖
= số con j với j chạy từ 1 → x, bước tăng là 2

𝛼𝑖 𝑥/2 𝑘ℎ𝑖 𝑥 > 0


=ቊ
Pi 0 𝑘ℎ𝑖 𝑥 ≤ 0
𝑥/2 𝑘ℎ𝑖 𝑖 > 2𝑛
=ቊ
0 𝑘ℎ𝑖 𝑖 ≤ 2𝑛

3𝑛 3𝑛 3𝑛

෍ 𝑔á𝑛(𝑃𝑖) = ෍ 2𝛼𝑖 = 2 ෍ (𝑖 − 2𝑛)/2 =


𝑖=1 𝑖=1 𝑖=2𝑛+1
3𝑛 3𝑛 3𝑛 3𝑛
𝑖 − 2𝑛
෍ 𝑠𝑜 𝑠á𝑛ℎ (𝑃𝑖) = ෍(𝛼𝑖 + 1) = ෍ + ෍1 =
𝑖=1 𝑖=1
2
𝑖=2𝑛+1 𝑖=1

24/02/2021 13 GV: Huỳnh Thị Thanh Thương


Q&A
• Mục tiêu của lập trình?

9/17/2021 GV: Huỳnh Thị Thanh Thương 14


Q&A

• Vấn đề , bài toán (Problem) là gì?

• Giải quyết vấn đề là làm gì?

9/17/2021 GV: Huỳnh Thị Thanh Thương 15


Quy trình giải quyết vấn đề bằng MTĐT
Thực hiện, bảo trì, phát triển

Thực hiện CT
Chạy thử, kiểm tra:
Lỗi và cách sửa: Lỗi cú pháp, Lỗi ngữ nghĩa
Xây dựng bộ dữ liệu test
Hiệu chỉnh CT

Mã hóa, viết CT: Cài đặt thành CTDL,


đoạn CT cụ thể
Diễn tả thuật toán theo NNLT đã chọn
Cài đặt chương trình
Thiết kế: Xây dựng mô
Biểu diễn bằng:
hình dữ liệu, các bước xử
▪ Ngôn ngữ tự nhiên

▪ Lưu đồ - Sơ đồ khố
Thiết kế CTDL và thuật toán ▪ Mã giả

Lựa chọn phương


pháp giải, ý tưởng
chung Lựa chọn chiến lược thiết kế

Khảo sát, Phân tích


Xác định vấn đề và mô hình hóa vấn đề 16
Mối quan hệ giữa CTDL và GT

Niklaus Wirth:

CTDL + Giải thuật = Chương trình

⚫ Cấu trúc dữ liệu: (có thể hiểu là) cách tổ chức dữ liệu,
mô hình dữ liệu, cách mô tả bài toán dưới dạng NNLT

⚫ Giải thuật: hướng giải quyết bài toán, một quy trình để
thực hiện một công việc xác định.
Nội dung Tổng quan

1. Vấn đề và xác định vấn đề (sẽ học sau)

2. Thuật toán (nhắc lại: đã học ở môn NMLT)

3. Phân tích thuật toán

4. Độ phức tạp

9/17/2021 GV: Huỳnh Thị Thanh Thương 19


Thuật toán

• Thuật toán là gì? Algorithm:


Viết tắt của tên nhà
toán học thế kỷ IX là
: Abu Ja’fa
Mohammed ibn
Musa al-Khowarizmi

9/17/2021 GV: Huỳnh Thị Thanh Thương 20


Thuật toán là gì?
Nhắc lại: Khái niệm

“Thuật toán là một dãy hữu hạn các bước


không mập mờ và có thể thực thi được, quá
trình hành động theo các bước này phải dừng
và cho kết quả mong muốn”

17/09/2021
GV: Huỳnh Thị Thanh Thương 21
Thuật toán là gì?
Nhắc lại: Khái niệm

▪ Giải pháp viết dưới dạng thủ tục (các bước giải
quyết vấn đề được diễn đạt một cách cụ thể) và
thỏa 3 tiêu chuẩn:

Xác định + Hữu hạn + Đúng

17/09/2021
GV: Huỳnh Thị Thanh Thương 22
Câu hỏi thảo luận trên lớp

1) Tại sao phải đánh giá/phân tích giải thuật?

2) Đánh giá dựa trên những tiêu chuẩn nào?

3) Tiêu chuẩn nào quan trọng nhất?

4) Đánh giá bằng cách nào?

9/17/2021 GV: Huỳnh Thị Thanh Thương 23

You might also like