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

TĂNG TRƯỞNG CỦA HÀM VÀ PHÂN TÍCH THUẬT TOÁN

52 1,1K 0

Đ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

Định dạng
Số trang 52
Dung lượng 3,36 MB

Nội dung

Identit yTHUẬT TOÁN SẮP XẾP CHÈN Cách sử dụng những mã giả 6- Các thành phần mảng được truy cập bằng cách đặt tả tên mảng theo sau là chỉ số trong các dấu ngoặc vuông.. Hệ ký hiệu Θ tt•

Trang 1

BÁO CÁO TIỂU LUẬN

TĂNG TRƯỞNG CỦA HÀM

VÀ PHÂN TÍCH THUẬT TOÁN

Giáo viên hướng dẫn: TS Hoàng Quang Thực hiện: Hồ Thủy Sơn

Nguyễn Hữu Lương

Hồ Thị Thu Thủy Nguyễn Thị Phương Ngọc

Lê Thị Thanh Châu

ĐẠI HỌC HUẾ TRƯỜNG ĐẠI HỌC KHOA HỌC

Trang 2

NỘI DUNG TRÌNH BÀY

Giới thiệu thuật toán Sắp xếp chèn (Thủy Sơn)

Thiết kế thuật toán (Thanh Châu)

5 Các hàm thông thường (Thu Thủy)

Trang 3

THUẬT TOÁN SẮP XẾP CHÈN

Đầu vào: Cho một dãy n số (a1, a2…an)

Đầu ra: Phép hoán vị (a1’, a2’,….an’)

thỏa mãn a1’<=a2’<=an’

Ví dụ: Cho mảng A với dãy số chưa được sắp xếp A = <5, 2, 4,

6, 1, 3> và tiến hành xây dựng mã giả để viết thuật toán sắp xếp chèn theo thứ tự tăng dần và kết quả sẽ là A = <1, 2, 3, 4, 5, 6>

Trang 4

THUẬT TOÁN SẮP XẾP CHÈN

- Đầu tiên ta xem chỉ số j như là con bài

hiện tại đang ở trên tay Cho vòng lặp For

chạy bởi j nó sẽ chia mảng A thành 2

đoạn A[1 j - 1] đây là đoạn cần được

sắp xếp và A[j + 1 n] là số con bài còn

lại ở trên bàn chưa được đưa vào

- Chỉ số j dời từ trái sang phải qua mảng Với mỗi lần lặp của vòng lặp For thành phần A[j] được lấy ra khỏi mảng Sau đó bắt đầu tại vị trí j-1, các thành phần liên tiếp được dời về bên phải một vị trí cho đến khi tìm thấy vị trí đúng đắn cho A[j] tại điểm mà

nó được chèn vào.

Trang 6

Identit y

Trang 7

THUẬT TOÁN SẮP XẾP CHÈN

Cách sử dụng những mã giả

1- Thụt đầu dòng để nêu rỏ cấu trúc khối.

2- Cấu trúc vòng lặp while, for, và repeat và những cấu trúc có điều

kiện như if, then, và else được thể hiện giống nhau như trong pascal 3- Ký tự "►" để ghi chú hoặc giải thích một đoạn lệnh

4- Phép gán nhiều biến cho 1 giá trị nào đó như: i ← j ← e tức là cả 2 biến i và j là có giá trị e nó nên được xem là tương đương như là phép gán j ← e theo sau phép gán i ← j.

5- Biến (như là i, j, và key) là biến cục bộ trong thủ tục đã cho trên Chúng ta không nên sử dụng biến toàn cục với những mục đích không rỏ

Trang 8

Identit y

THUẬT TOÁN SẮP XẾP CHÈN

Cách sử dụng những mã giả

6- Các thành phần mảng được truy cập bằng cách đặt tả tên mảng theo sau là chỉ số trong các dấu ngoặc vuông Ví dụ A[i] nêu rỏ thành phần thứ i trong mảng A

7- Dữ liệu phức hợp thường được tổ chức thành các đối tượng bao hàm các thuộc tính hoặc các trường Để truy cập 1 trường cụ thể ta dùng tên trường theo sau là tên đối tượng của nó trong các dấu ngoặc vuông

Ví dụ ta xem 1 mảng như 1 đối tượng có thuộc tính length nêu rỏ số lượng thành phần mà nó chứa Để đặt tả số lượng thành phần trong mảng A ta viết Length[A]

8 – Việc cấp phát bộ nhớ sẽ được hiểu ngầm

Trang 9

PHẦN 3 THIẾT KẾ THUÂẬT TOÁN

Trang 10

Nguyên lý “Chia để tri” (divide and conquer)

- Chia bài toán thành các bài toán con tương

tự với bài toán ban đầu nhưng kích thước nhỏ hơn.

- Giải quyết các bài toán con đó bằng phương pháp đệ quy.Nếu kích thước của các bài toán

con này là nhỏ thì giải quyết bằng cách trực

tiếp

- Kết nối những cách giải quyết trên để tạo ra một phương pháp giải quyết cho bài toán gốc.

Trang 11

Ứng dụng nguyên lý “divide and conquer”

vào thuật toán sắp xếp hòa nhập

Input: dãy số gồm n phần tư

Output: dãy n đã sắp xếp

Trang 12

THU T TOAN MERGE-SORT Â

Trang 13

Th tuc con Merge u

15 i := i + 1

16 else A[k] := R[j]

17 j := j + 1

Trang 15

Bước 2 MS(2,5,4,5,9)

Trang 16

Bước 3 MS(2,5,4,5,9)

Trang 17

2.3.2.Phân tích thuật toán “chia để tri”

Vì thời gian thực hiện công thức truy hồi của nguyên lý “chia để tri” là

dựa trên 3 bước cơ bản:

Nên ta có công thức truy hồi như sau:

Trang 18

2.3.3 Phân tich thu t toan Merge sort â

Áp dụng nguyên lý “ chia để trị” để thành lập công thức truy hồi cho

thuật toán này:

Hay

Trang 19

PHẦN 4: HỆ KÝ HIỆU TIỆM CẬN

 Các ký hiệu dùng để mô tả thời gian thực hiện

tiệm cận của một thuật toán được định nghĩa

là tập hợp các số tự nhiên N={1,2,3….}.

 Nó thường định nghĩa trên kích thước dữ liệu

vào là số nguyên (integer)

Tuy nhiên, ký hiệu dễ dàng mở rộng trên miền là

tập số thực hoặc giới hạn của tập hợp con các

số tự nhiên

Trang 21

1 Hệ ký hiệu Θ

))(

()

()

Trang 22

Identit y

Trang 23

1 Hệ ký hiệu Θ (tt)

Định nghĩa của Θ(g(n)) yêu cầu mọi phần tử

))(

()

(n g n

phải là tiệm cận không âm.

Do vậy, bản thân hàm g(n) phải là tiệm cận không âm, hoặc ngược lại tập Θ(g(n)) là rỗng

Giả sử rằng tất cả các hàm được sử dụng trong vòng

ký hiệu Θ, và các ký hiệu tiếp theo là tiệm không âm

• Ta có thể sử dụng định nghĩa để chỉ ra rằng

) ( 3

2 /

1 n2 − n = Θ n2

bằng cách chọn c1 = 1/14, c2=1/2, và n0 = 7

Trang 24

1 Hệ ký hiệu Θ (tt)

Identit y

Tổng quát hơn, xét hàm bậc hai bất kỳ

c bn an

n

f ( ) = 2 + +

Với a,b,c là hằng số và a>0

Ta sẽ lấy c1=a/4, c2=7a/4 và n0 = 2*max(b / a, (c / a))

p

0

) (

Với ai là hằng số và ad>0, chúng ta có

) (

) (n n d

p = Θ

Vì một hằng bất kỳ là đa thức bậc 0, nên ta có thể biễu diễn hàm liên tục bất kỳ là Θ(n 0 ), hoặc Θ(1)

Trang 25

2 H ký hi u Oệ ệ

Các ký hiệu Θ là ký hiệu tiệm cận giới hạn của một hàm chặn trên và chặn dưới Khi chỉ có một tiệm cận chặn trên (asymptotic higher bound), chúng ta sử dụng ký hiệu O

nghĩa:

O(g(n)) = {f(n): tồn tại hằng số dương c

và n0 sao cho 0 ≤ f (n) ≤ cg(n), với mọi n>n }.

Trang 26

2 H ký hi u O ệ ệ (tt)

Identit y

Với mọi giá trị n đến bên phải n0, giá

trị của hàm f(n)<=cg(n).

Khi viết f(n) = O(g(n)) nghĩa là f(n) là

một phần tử của tập O(g(n))

Lưu ý rằng f(n) = Θ(g(n)) suy ra f (n)

= O(g(n)), bởi vì ký hiệu Θ là một

khái niệm mạnh hơn ký hiệu O

Trang 27

2 H ký hi u O ệ ệ (tt)

Thường sử dụng ký hiệu O để mô tả thời gian thực hiện của thuật toán bằng cách kiểm tra cơ cấu tổng thể của thuật toán

Ví dụ, cấu trúc vòng lặp lồng nhau của thuật toán sắp xếp chèn từ Chương 2 xấp xỉ giới hạn trên O(n 2 ) trong trường hợp xấu nhất

Chi phí cho mỗi lần lặp của vòng lặp bên trong là bị chặn trên bởi O(1) (không đổi), các chỉ số i và j đều dần đến n, và các vòng lặp bên trong được thực thi nhiều nhất là

Trang 28

3 H ký hi u ệ ệ Ω

Identit y

Ký hiệu Ω cung cấp một tiệm cận giới hạn thấp hơn(asymptotic lower bound).

Trang 29

3 H ký hi u ệ ệ Ω (tt)

Hình bên biễu diễn ký hiệu Ω

Với mọi giá trị n đến bên phải

của n0, giá trị của f (n) là nằm

tại hoặc bên trên cg(n) (nghĩa là

f(n)>=cg(n))

• Do hệ ký hiệu Ω mô tả một giới hạn dưới, ta cũng

có thể sử dụng nó để giới hạn thời gian thực hiện trong trường hợp tốt nhất của một thuật toán.

• Ví dụ, trong trường hợp tốt nhất, thời gian chạy của

sắp xếp chèn là Ω (n), điều đó suy ra rằng thời gian chạy

Trang 30

* Khái niệm tiệm cận trong đẳng thức và bất đẳng thức.

Identit y

• Khi các ký hiệu tiệm cận đứng độc lập ở vế

phải của một đẳng thức (hay bất đẳng thức), như trong

n=O(n2 ), nó là phần tử của một tập hợp

Tuy nhiên, nhìn chung, khi ký hiệu tiệm cận xuất hiện trong một công thức, chúng ta xem nó như đại diện cho một số hàm ẩn danh (anonymous function).

Ví dụ, công thức :

trong đó f(n) là một số hàm đặt trong Θ (n) Trong trường hợp này f(n) = 3n + 1

Trang 31

4 Hệ ký hiệu o

Các tiệm cận trên ràng buộc cung cấp bởi ký hiệu O có thể có hoặc có thể không có tiệm chặt chẽ

Vd: Các cận 2n 2 =O(n 2 ) là tiệm cận chặt chẽ.

Các cận 2n=O(n 2 ) không phải là tiệm chặt chẽ.

Ta sử dụng ký hiệu o để biểu thị một cận trên mà không phải là tiệm chặt chẽ

Đ/n: o(g(n)) = {f(n): cho bất kỳ tích cực hằng c>0, tồn tại một hằng n 0 >0 sao cho 0≤f(n)<cg(n) với mọi n ≥ n ).

Trang 32

4 Hệ ký hiệu o (tt)

Ví dụ, 2n = o(n 2 ), nhưng 2n 2 ≠ o (n 2 ).

Trong ký hiệu o, hàm f(n) trở nên không đáng kể so với g(n) khi n tiến gần đến vô cực; có nghĩa là,

Identit y

Trang 33

5 Hệ ký hiệu ω

không phải là tiệm chặt chẽ

Trang 34

So sánh các hàm

Identit y

Nhiều tính chất quan hệ của số thực cũng áp dụng cho các phép so sánh tiệm cận Đối với các hàm sau, giả định rằng f (n) v à g (n) là tiệm cận dương.

Trang 35

f(n) = O(g(n)) khi v à chỉ khi g(n) = Ω(f(n)),

f(n) = o(g(n)) khi và chỉ khi g(n) = ω(f(n)).

Trang 36

Phần 5:

Khái niệm chuẩn và các

hàm thông dụng

Trang 37

Khái niệm chuẩn và các hàm thông dụng

1 Tính đơn điệu

2 Hàm sàn và hàm trần

Trang 38

1 Tính đơn điệu

- Một hàm f(n) là đơn điệu tăng nếu m

n thì f(m) f(n) Tương tự, f(n) là

hàm đơn điệu giảm nếu m n thì f(m)

≥ f(n).

- Một hàm f(n) là tăng nghiêm ngặt

nếu m<n thì f(m) < f(n) và là giảm

nghiêm ngặt nếu m <n thì f(m)>f(n).

Trang 39

2 Hàm sàn và hàm trần

Với mọi x R

- Hàm sàn của x là số nguyên lớn nhất nhỏ hơn hoặc bằng x, ký hiệu x.

- Hàm trần của x là số nguyên nhỏ nhất lớn

hơn hoặc bằng x, ký hiệu x.

Trang 40

- Ta có: (a mod n) = (b mod n) nếu a và b khi chia

n đều có số dư giống nhau hay nói cách khác a

b (mod n).

ví dụ: 4 mod 3 = 7 mod 3 = 1

Trang 41

i n a n

Trang 42

Do đó n b = o(a n ) Như vậy, bất cứ hàm mũ dương với số mũ

n tăng nghiêm ngặt nhanh hơn một hàm đa thức biến n

Trang 43

= +

+ +

+

=

0

3 2

!

! 3

! 2

1

i

i x

i

x x

x x

Trang 44

6 Lôgarít

- Sử dụng các khái niệm (n > 0):

lg k n = (lg n)k (lôgarit mũ)

lg lg n = lg(lg n) (lôgarit hợp thành)

lg n = log2 n (lôgarit cơ số 2)

ln n = log e n (lôgarit tự nhiên)

- Ta quy ước: lg n+k có nghĩa là lg(n) + k mà không phải

là lg(n+k)

- Nếu b > 1 và n > 0 thì logbn là hàm tăng nghiêm ngặt.

- Hàm f(n) là được giới hạn theo đa lôgarit nếu f(n) =

O(lgk n) với hằng số k.

Trang 45

6 Lôgarít(tt)

- Ta có thể biểu diễn sự tăng trưởng của đa thức và đa lôgarit bằng cách thay thế lgn cho n và 2a cho a ở phương trình , dễ dàng ta có:

- Từ đó, ta có thể kết luận rằng: lg b n = o(n a ) với số

mũ a > 0 thì mọi hàm đa thức dương tăng nhanh hơn hàm các hàm đa lôgarit (n a tăng nhanh hơn

lg b n khi ).

0

lg )

2 (

n a

b

n n

Trang 46

7 Giai thừa

- Khái niệm n! (đọc là n giai thừa) được đinh nghĩa với n là số nguyên không âm n 0

1 nếu n = 0 n! = n.(n-1)! nếu n > 0

ta có n! = 1.2.3…n

- Một giới hạn trên yếu của hàm giai thừa là n!≤ n n , bởi mỗi số trong n số hạng trong tích giai thừa tối đa là n Ta có phép xấp xỉ Stirling (Stirling's

2

Trang 47

Dùng phép xấp xỉ Stirling để chứng minh phương trình

trên Với mọi n ≥ 1 ta có:

n a

n

e e

n n

Trang 48

f(i)(n)= n nếu i = 0

f(f(i-1)(n)) nếu i > 0

Ví dụ: cho f(n) = 2n thì f (n) = 2 n

Trang 49

9 Lôgarit lặp

- Sử dụng ký hiệu lg*n (đọc là log sao của n) là lôgarit lặp

được định nghĩa như sau:

lg*n = min{i≥ 0: lg(i)n ≤ 1} trong đó, lg(i)n được định

nghĩa như hàm lặp, với f(n) = lgn và lg(i)n được định nghĩa

nếu lg (i-1)n > 0

lg*2 = 1 lg*65536 = 4 lg*4 = 2 lg*2 (65536) = 5 lg*16 = 3

- Hàm logarit lặp là một hàm tăng trưởng rất chậm Vì Bởi

số lượng các phân tử trong vũ trụ được ước khoảng 10 80 , nó

Trang 50

10 Dãy Fibonacci

- Dãy Fibonacci được đinh nghĩa như sau với

phép truy toán sau (recurrence):

F 0 = 0;

F 1 = 1;

F i = F i-1 + F i-2 với i ≥ 2

- Do đó, mỗi dãy Fibonacci là tổng của 2 dãy trước nó, ta dể thấy ở dãy sau:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55,…

Trang 51

- Vì | | < 1, nên ta có Do đó, số

Fibonacci thứ i, F i bằng giá tri là số nguyên gần

1 2

Trang 52

CẢM ƠN

Ngày đăng: 11/04/2015, 22:05

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w