1. Trang chủ
  2. » Giáo Dục - Đào Tạo

PHÂN TÍCH THIẾT KẾ THUẬT TOÁN

34 880 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 34
Dung lượng 570,8 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

 Biết các kiến thức toán học cơ sở cho việc đánh giá độ phức tạp của tuật toán  Áp dụng được các phương pháp thiết kế để xây dựng các thuật toán, đồng thời biết cách đánh giá độ phức

Trang 1

PHÂN TÍCH THIẾT KẾ THUẬT TOÁN

1

Trang 2

GIỚI THIỆU MÔN HỌC

 Tên học phần: Phân tích thiết kế thuật toán

 Tên tiếng Anh: Design and Analysis of Algorithms

Trang 3

MỤC TIÊU MÔN HỌC

 Trang bị cho sinh viên

 Hiểu được về thuật toán: Khái niệm, tính chất, cách biểu diễn, độ phức tap.

 Biết các kiến thức toán học cơ sở cho việc đánh giá độ phức tạp của tuật toán

 Áp dụng được các phương pháp thiết kế để xây dựng các

thuật toán, đồng thời biết cách đánh giá độ phức tạp của thuật toán.

3

Trang 4

NỘI DUNG

 Chương 1: Giới thiệu thuật toán

 Chương 2: Kỹ thuật đánh giá thuật toán

 Chương 3: Kỹ thuật thiết kế thuật toán

 Chương 4 (option): Một số vấn đề mở rộng và nâng cao

Trang 5

TÀI LIỆU THAM KHẢO

 Cẩm nang thuật toán – cuốn 1, Robert Sedgewich –

Trang 6

CHƯƠNG 1 GiỚI THIỆU VỀ THUẬT TOÁN

Trang 7

NỘI DUNG

 1 Khái niệm về thuật toán

 2 Độ phức tạp của thuật toán

 2.1 Ký hiệu tiệm cận: Big-O

Trang 8

NỘI DUNG

 1 Khái niệm về thuật toán

 2 Độ phức tạp của thuật toán

 2.1 Ký hiệu tiệm cận: Big-O

 2.2 Lớp các hàm thông dụng

Trang 9

1 KHÁI NIỆM VỀ THUẬT TOÁN

 Thuật toán là gì?

 Tập hợp hữu hạn các hướng dẫn rõ ràng để giải quyết một

bài toán (vấnđề).

 Mở rộng (máy tính): 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 được kết quả như mong muốn

 Tính chất cơ bản của thuật toán:

 Xác định = không mập mờ+thực thi được

 Hữu hạn

 Đúng

9

Trang 10

1 KHÁI NIỆM VỀ THUẬT TOÁN

 Các dạng diễn đạt thuật toán

 Ngôn ngữ tự nhiên

 Lưu đồ (Sơ đồ khối)

 Mã giả

 Ngôn ngữ lập trình

Trang 11

Dữ kiện vào M ột dãy các bước tính toán Quá trình tính toán

M ột dãy số

Thuật toán sắp xếp

11

Trang 12

1 KHÁI NIỆM VỀ THUẬT TOÁN

 Sắp theo thứ tự nào? (tăng giảm, tiêu chí nào)

 Nếu trùng tiêu chí thì giải quyết ra sao?

Trang 13

1 KHÁI NIỆM THUẬT TOÁN

 Sửa lại:

a) Lập danh sách theo: họ tên, ngày tháng năm sinh, điểm các môn, điểm trung bình cuối năm.

b) Sắp xếp theo ĐTB giảm Nếu ĐTB bằng nhau  cùng hạng.

c) Nếu có 01HS đứng đầu chọn, ngược lại chọn người có điểm toán cao nhất, nếu không chọn được thì bốcthăm.

 Phân biệt mập mờ và lựa chọn có quyết định:

 Mập mờ là thiếu thông tin hoặc có nhiều lựa chọn nhưng không

đủ điều kiện quyết định, ví dụ:bước 1, 2.

 Lựa chọn có quyết định là hoàn toàn xác định duy nhất trong

điều kiện cụ thể của vấn đề,ví dụ bước c. 13

Trang 14

1 KHÁI NIỆM VỀ THUẬT TOÁN

 Đặc trưng của thuật toán

 Xác định đầu vào/ ra

 Tính hiệu quả: khối lượng tính toán, không gian, thời

gian

Giải quyết một bài toán

Mô hình hóa Viết thuật toán Lập chương trình

Trang 15

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

Sự cần thiết của phân tích và đánh giá thuật toán

 Lựa chọn một thuật toán tốt nhất trong các thuật toán để cài

đặt chương trình giải quyết bài toán đặt ra

 Cải tiến thuật toán hiện có để có được thuật toán tốt hơn

Một thuật toán được xem là tốt nếu nó đạt được các

tiêu chuẩn sau

 Thực hiện đúng

 Tốn ít bộ nhớ

 Thực hiện nhanh

Trong khuôn khổ của môn học này, chúng ta chỉ quan tâm

đến tiêu chuẩn thực hiện nhanh 15

Trang 16

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

Thời gian thực hiện chương trình: là một hàm của

kích thước dữ liệu vào

 Ký hiệu: T(n) với n là kích thước dữ liệu vào

 Ví dụ: Chương trình tính tổng của n số có thời gian thực

hiện là T(n) = Cn với C là hằng số

 Thời gian thực hiện chương trình là một hàm không âm

Trang 17

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

 Đơn vị đo T(n) không phải là đơn vị đo thời gian bình

thường như giờ, phút, giây, … mà thường được xác định

bởi số các lệnh được thực hiện trong máy tính

 Ví dụ: Khi ta nói thời gian thực hiện chương trình là

T(n) = Cn có nghĩa là chương trình ấy cần có Cn chỉ thị

17

Trang 18

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

Trang 19

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

 Thời gian thực hiện trong trường hợp xấu nhất

 Thời gian thực hiện chương trình không chỉ phụ thuộc và

kích thước dữ liệu mà còn phụ thuộc vào tính chất của dữ liệu

 Vì vậy ta thường coi T(n) là thời gian thực hiện chương

trình trong trường hợp xấu nhất, tức là T(n) là thời gian

lớn nhất để thực hiện chương trình đối với mọi dữ liệu có

cùng kích thước n

19

Trang 20

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

 Làm sao xác định “thời gian thực hiện chương trình

Trang 21

HƯỚNG TIẾP CẬN THỰC NGHIỆM

 Các bước thực hiện

 1 Viết chương trình cài đặt

 2 Thực thi chương trình với nhiều bộ dữ liệu

 3 Đo và thống kê thời gian

Trang 22

HƯỚNG TIẾP CẬN LÝ THUYẾT

 Tính toán thời gian, bộ nhớ, … cần thiết của mỗi thuật

toán dựa theo độ lớn của dữ liệu đầu vào

 Ưu điểm:

 Không phụ thuộc vào ngôn ngữ lập trình, loại máy tính

 Biết được tính hiệu quả của thuật toán đối với các dữ liệu có

kích thước lớn

Trang 23

NỘI DUNG

 1 Khái niệm về thuật toán

 2 Độ phức tạp của thuật toán

 2.1 Ký hiệu tiệm cận: Big-O

 2.2 Lớp các hàm thông dụng

23

Trang 24

2 ĐỘ PHỨC TẠP CỦA THUẬT TOÁN

2.1 KÝ HIỆU TIỆM CẬN: BIG-O

Cho một hàm T(n), T(n) được gọi là có độ phức tạp

f(n) nếu tồn tại các hằng số C, n 0 sao cho:

Trang 25

2 ĐỘ PHỨC TẠP CỦA THUẬT TOÁN

2.1 KÝ HIỆU TIỆM CẬN: BIG-O

25

Trang 26

2 ĐỘ PHỨC TẠP CỦA THUẬT TOÁN

Trang 27

2 ĐỘ PHỨC TẠP CỦA THUẬT TOÁN

Trang 28

2 ĐỘ PHỨC TẠP CỦA THUẬT TOÁN

1

1 2

1

2 2

2 2

n n

O n

Trang 29

2 ĐỘ PHỨC TẠP CỦA THUẬT TOÁN

2.1 KÝ HIỆU TIỆM CẬN: BIG-O

Các qui tắc tính O:

Cho T 1 (n) và T 2 (n) là thời gian thực hiện của

hai đoạn chương trình P 1 và P 2 ; và T 1 (n) =

O(f(n)) và T 2 (n) = O(g(n)).

Qui tắc cộng : Thời gian thực hiện của hai

đoạn chương trình P 1 , P 2 nối nhau là T(n) =

O(max(f(n), g(n)))

Qui tắc nhân : Thời gian thực hiện của hai

đoạn chương trình P 1 , P 2 lồng nhau là T(n) =

O(f(n)*g(n))

29

Trang 30

2 ĐỘ PHỨC TẠP CỦA THUẬT TOÁN

2.2 CÁC LỚP HÀM THÔNG DỤNG

Trang 31

2 ĐỘ PHỨC TẠP CỦA THUẬT TOÁN

2.2 CÁC LỚP HÀM THÔNG DỤNG

31

Trang 32

2 ĐỘ PHỨC TẠP CỦA THUẬT TOÁN

2.1 KÝ HIỆU TIỆM CẬN: BIG-O

Định lý:

 g(n) = O(f(n))  a.g(n) = O(f(n))  a> 0

 d(n) = O(f(n)), e(n) = O(g(n))  d(n)+e(n) = O(f(n)+g(n))

 d(n) = O(f(n)), e(n) = O(g(n))  d(n)e(n) = O(f(n)g(n))

 d(n) = O(f(n)), f(n) = O(g(n))  d(n) = O(g(n))

 f(n) là một đa thức bậc d  f(n) = O(n d )

Trang 33

BÀI TẬP

1.1.1 Hãy chạy thuật toán Insertion-Sort

Đối với các bảng sau :

A = [3,1,4,1,5,9,2,6,5,3]

B = [1,2,3,4,5,6]

C = [6,5,4,3,2,1]

1.1.2 Tính thời gian thực hiện chương trình

của thuật toán tìm n! (không dùng đệ qui)

Trang 34

BÀI TẬP

1.2.1: Thuật toán A có kích thước dữ liệu vào là n và thời gian thực

hiện chương trình là: CM: T(n) = O(n 3 ).

1.2.2: Chứng minh

1.2.3: Phát biểu bài toán:

Cho trước một mảng X chứa n số cho trước, mảng trung

bình tiền tố A của mảng X là một mảng có n phần tử được

định nghĩa như sau:

A[i] = avg(X[1] X[i])

Hãy viết thuật toán xác định mảng trung bình tiền tố A

n n

n

10

1 )

(  3 

) (

2

1kk   kk1

n O n

Ngày đăng: 12/04/2015, 14:07

TỪ KHÓA LIÊN QUAN

w