1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bài tập môn phân tích và thiết kế thuật toán homework #01 Đánh giá thuật toán dùng kỹ thuật toán sơ cấp

22 0 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Đánh Giá Thuật Toán Dùng Kỹ Thuật Toán Sơ Cấp
Tác giả Bui Nhat Phi, Thai Ngoc Quan, Nguyễn Phỳ Tài, Huỳnh Nhật Minh
Người hướng dẫn GV Huỳnh Thị Thanh Thương Nhúm
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Khoa Học Máy Tính
Thể loại Bài Tập
Năm xuất bản 2024
Thành phố TP.HCM
Định dạng
Số trang 22
Dung lượng 1,24 MB

Nội dung

TRUONG DAI HOC CONG NGHE THONG TIN KHOA KHOA HOC MAY TINH BAI TAP MON PHAN TICH VA THIET KE THUAT TOAN HOMEWORK #01: DANH GIA THUAT TOAN DUNG KY THUAT TOAN SO CAP GV hướng dẫn: Huỳn

Trang 1

TRUONG DAI HOC CONG NGHE THONG TIN

KHOA KHOA HOC MAY TINH

BAI TAP MON PHAN TICH VA THIET KE THUAT TOAN

HOMEWORK #01: DANH GIA THUAT TOAN DUNG KY

THUAT TOAN SO CAP

GV hướng dẫn: Huỳnh Thị Thanh Thương Nhóm thực hiện:

1 Bui Nhat Phi 22521078

2 Thai Ngoc Quan 22521189

3 Nguyễn Phú Tài 22521280

4 Huỳnh Nhật Minh 22520862

TP.HCM, ngày 16 tháng 3 năm 2024

Trang 5

e 2a; phép gan, a; + 1 phép so sánh (xét độc lập while trong)

e ø„~+ 1 phếp so sánh của while ngoài

G(n) =2+2n "» 20;

i=l 5S(m) =n+1+ So (ai + 1)

mn

Xét:

® œ¿ — số con 7, với 7 từ 1 đến i”, bước tăng 7 = j+1 = øœ¡ =/?—1+1=

Vậy: Giá trị của G(n):

G(n) =2+2n+ » (222)

1 nín + 1)(2n + 1)

=2+2: +2n + 3

Giá trị của S9(m):

SS(n) "1A v.v

i=1 m n(n + 1)(2n +1)

Trang 6

e 2 phép gan đầu tiên

e 4n phép gán của while ngoài

© 2a; phép gan, a; + 1 phép so sánh (xét độc lập while trong)

e n+1 phép so sénh while ngoai

G(n) =2+4n "» 2a;

¿=1 5S(m) =n+1+ » +1)

¿=1

Xét aj:

© a; = 86 con j, véi j tit 1 dén i, bude ting 7 = 2 * j

ef ={1,2,4,8, ,2* <i}, s6 conk: 1 <2? <i S0<k < logyi

Trang 7

log a + log b = log (a * b)

e œ;¿ là số vòng lặp của while trong trên (xét độc lập với while trong trên)

e 6; lA 86 vòng lặp của while trong dưới (xét độc lập với while trong

dưới)

® G(n), S5(n) lần lượt là số phép gần và so sánh cần tìm

Tà có:

e 2 lệnh gán đầu tiên

e 3n lénh gan cha while ngoài

e 2o; phếp gắn, œ + l phép so sánh (xét độc lập while trong trên)

e 23; phép gan, Ø; + 1 phép so sánh (xét độc lập while trong dưới)

e ø„~+ 1 phếp so sánh của while ngoài

Trang 9

k=k+4+ 2;

j=j+k

endw i=i+1;

L¿ = 86 con j chay ttt 1 —> 7, bước tang tại 7 thet ¢: ky, = 2t+1

=j/.=l+3+5+7+-: ha = Yip Dat iae

Ma 1 <j, <i nén L, 1A sé con £ thỏa mãn 1< <i

sil<t<Vish=vi

= G(n) =2+ 3n +3 ` Vi 2+ 3n + 9nVn

j=1

Trang 10

e œ; là số vòng lặp của while trong (xét độc lập với while trong)

e 6; là số phép gán của lệnh count = count - 2

® ð; là số phép so sánh của câu lệnh if(ï>=2y)

® G(m), S5(n) lần lượt là số phép gán và so sánh cần tìm

Tà có:

e 2 lệnh gán đầu tiên

Trang 11

© a; + 8; phép gan cha while trong (xét độc lập while trong)

e Lénh gan count = count - 2 thuc hién khi i>=2y

¿ >= 3 © ¡ < 4n => lệnh gần luôn được thực hiện => 6; = a;

e Lệnh so sánh if(>=2y) thực hiện khi while trong lặp > 6; = a;

Trang 12

®© 4; là số vòng lặp của while trong (xét độc lập với while trong)

e B;,C; lan luot là số phép gần và so sánh của while trong (xét độc lập

với while ngoài)

e 7); L„ lần lượt là số phép gần và so sánh của lệnh if (x>0) if(y>0) count=count+1;

Trang 13

® 4; = số con 7, với 7 từ 1 đến #, bước tăng j + +

=> Á¡ =# = (n — ?)(— 3n)

e While trong chỉ thực hiện khi 7 < z © 1 < (ø— 2) — 3m)

=> (n — ?)(¡— 3n) > Ũ

=nm+l]<¿<8n— ]

e Phép gán 7 + + thực hiện 4; lần ứng với mỗi vòng lặp của while ngoài

e Phép gán coun# = cơun‡ — 2 thực hiện A; lần với điều kiện ¿ > 2n

e Từ đó kết luận được: Từ ¿ = 1 —> 22 — 1 chỉ có A; phép gan, tit

4 = 2n —> Ân có 2A; phép gần

Xét C; :

e Mỗi lần lặp của while trong, lệnh if(i>=2x*n) luôn được thực thi, do

đó phép so sánh i >= 2 *# cũng được thực hiện ứng với số lần lặp của

while trong, tức 4; lần

e Bản thân phép so sánh 7 <= # của while trong cũng được so sánh

A¿+ 1 lần (4; lần đúng, thực thi lệnh bên trong while trong, 1 lần sai, thoát while trong)

e Lénh if (x>0) va phép so sénh x > 0 luôn được thực thi ứng với mỗi

lần lặp của while ngoài Tức là nó được thực thi 4ø lần

Trang 14

đúng, tức chỉ khi z > 0, hay ø < ¿ < 3m

=nm+l]<¿<8n— ]

e Từ đó ta có: #¿ = 4n + (3n — 1) — (n+ 1) + 1= 4n + 2n — 1 = 6n — T Gia tri cla G(n):

Trang 15

e q; la s6 lan lap cha while trong (xét độc lập while trong)

Trang 16

Ta lap bang xét dau:

e >0 luôn được thực hiện => 3n phép so sanh

e + >0 được thực hiện khi y > 0 đúng, tức là ® + 1 < ¿ < 3n

= %¡ = 3n + 3n — (n + 1) +1 =ñn

Vậy: Giá trị của G(n):

3n 3n G(n) =2+1LntS at S 0 tôi

Trang 17

while (i <= n)

{ jJ = 1;

while (j <= n) { if (Gi == j) kè (¡ + j ==n + 1))

sum = sum — a[idx] [idx];

Ta quy ude nhu sau: Dém dua trén ngdn ngit hé tro short-circuit evalu- ation (déi số thứ hai trong biểu thúc logic chỉ được đánh giá nếu đối số thứ nhất không đủ để rác định giá trị biểu thúc) Ngoài ra, phép logic && sẽ không được đếm

Tà có:

e 3 phép gán đầu tiên

e 2n phép gán while ngoài

e 2ø phép gán luôn được thực hiện của while trong

Nhan xét: Diéu kién if ((i == j) && (Gi + j == n + 1)) đúng khi

¿=7j=(n+ 1)/2, mà ¿, 7 nguyên nên lúc này n là số lẻ

Xét ø lễ: ¡ chạy từ 1 đến ø%, 7 chạy từ 1 đến ø ứng với mỗi ¡, ta thấy ¡ = 7= (n+1)/2 chỉ xây một lần duy nhất trong toàn bộ chương trình nên phép

gán idx = i được thực hiện 1 lan vA theo dé sum = sum - alidx] [idx]

Trang 18

=> Số phép gan: G(n) =34+2n+ 2` n= 2n2 + 2n + 3

¿=1

Œ là số phép so sánh khi thực thi lệnh if ((i == j) && (i + j == n + 1))

Tà có:

e ø +1 phép so sánh điều kiện lặp while ngoài

e ø +1 phép so sánh điều kiện lặp while trong

e 1 phếp so sánh cuối

S6 phép so sinh: SS(n) =n +1+ » (n+1)+Œ~+1

1 Xét while trong: lệnh iŸ được thực hiện n lần, trong n lần đó, có 1 lần

điều kiện ¡ == j đúng để thực hiện phép so sánh ¡ + j == n + I

Trang 19

= Lap n lan

Gọi a là số lần lặp của while trong (xét độc lập while trong)

œ¿ = số con j với j chạy từ 1 đến s

i k=1

Trang 20

11 Baill

a) Đếm thủ công

Đặt:

e A; 1a số lần lặp của while trong (xét độc lập với while trong)

e Ö; là số phép gán của lệnh if(i!=j) sum=sum+1;

Ứng với mỗi lần lặp của while ngoài, cho đến khi ¿ = ø, luôn có nñ(m— 1)

thời điểm điều kiện 7! = j7 thỏa mãn (tương tự THỊ)

Từ ¿ > ø + 1 đến ¿ = rm, không tồn tại thời điểm điều kiện ¿! = j thỏa mãn vi lic nay i > maa(j) =n

(242m 4+ V2 n+ n(m—-1), néum>n

Trang 21

5S(m) =m + 1+ S 0A; +1)

i=1

=m+1+ 5 (Qn +1)

i=1 b) Kiém tra két qua dém bang may tinh Code C++:

Trang 22

= Nhận xét bảng: Giá trị khi đếm thủ công và khi chạy chương trình của

cả Gín) và 55(n) là như nhau

Ngày đăng: 11/02/2025, 16:19

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

TÀI LIỆU LIÊN QUAN

w