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

Khoa học máy tính - Độ phức tạp thuật toán ppt

17 727 10

Đ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 17
Dung lượng 100,51 KB

Nội dung

Đối với một thuật toán: – Độ phức tạp về không gian dung lượng bộ nhớ sử dụng – Độ phức tạp về thời gian chạy 3.. Độ phức tạp về thời gian chạy – Kĩ năng lập trình – Chương trình dịch –

Trang 1

Độ phức tạp thuật toán

Lê Sỹ Vinh

Bộ môn Khoa Học Máy Tính – Khoa CNTT

Đại Học Công Nghệ - ĐHQGHN

Email: vinhioi@yahoo.com

Trang 2

Các vấn đề liên quan đến thuật toán

1 Một vấn đề được giải quyết bởi nhiều thuật toán khác nhau

2 Đối với một thuật toán:

– Độ phức tạp về không gian (dung lượng bộ nhớ sử dụng)

– Độ phức tạp về thời gian chạy

3 Độ phức tạp về thời gian chạy

– Kĩ năng lập trình

– Chương trình dịch

– Tốc độ thực hiện các phép toán trên máy tính

– Dữ liệu vào

“Thời gian chạy chương trình : 10s” ???

Trang 3

Độ phức tạp thuật toán

1 Thời gian chạy 1 thuật toán phụ thuộc vào cỡ (size) của dữ liệu vào

Tìm xem 1 đối tượng có trong danh sách N phần tử hay không?

Sắp xếp tăng dần dãy số gồm N số

Bài toán người bán hàng cần thăm N địa điểm

2 Trong các dữ liệu vào cùng một cỡ (N), thời gian chạy của thuật toán cũng

2 Trong các dữ liệu vào cùng một cỡ (N), thời gian chạy của thuật toán cũng

thay đổi

Ví dụ: Tìm xem 1 đối tượng có trong danh sách N phần tử hay không?

– Đối tượng nằm ở đầu danh sach

– Đối tượng nằm ở giữa danh sach

– Đối tượng nằm ở cuối danh sách

Trang 4

Độ phức tạp thuật toán

1 Thời gian chạy trong trường hợp xấu nhất (worse-case running time)

Thời gian chạy lớn nhất của thuật toán đó trên tất cả các dữ liệu cùng cỡ

2 Thời gian chạy trung bình

Là trung bình cộng thời gian chạy trên tất cả các bộ dữ liệu cùng cỡ

3 Thời gian chạy trong trường hợp tốt nhất (best-case running time)

Thời gian chạy ít nhất của thuật toán đó trên tất cả các dữ liệu cùng cỡ

Trang 5

Độ phức tạp thuật toán

Đánh giá thời gian chạy thuật toán:

– T(n) = số lượng phép toán sơ cấp cần phải thực hiện (phép toán số

học, phép toán logic, phép toán so sánh) Mỗi phép toán sơ cấp được thực hiện trong một khoảng thời gian cố định

– Quan tâm đến tốc độ tăng của hàm T(n)

– Ví dụ:

T(n) = 2n2 + 3n + 10

Trang 6

Biểu diễn thời gian chạy bởi kí hiệu O

Định nghĩa Giả sử f(n) và g(n) là các hàm thực không âm của đối số nguyên không

âm n Ta nói “f(n) là ô lớn của g(n)” và viết là

f (n) = O( g(n) )

nếu tồn tại các hằng số dương c* và n0 sao cho f(n) <= c*g(n) với mọi n >= n0.

Trang 7

Biểu diễn thời gian chạy bởi kí hiệu O

Ví dụ

Giả sử f(n) = 5n 3 + 2n 2 + 13n + 6 , ta có:

f(n) = 5n 3 + 2n 2 + 13n + 6 <= 5n 3 + 2n 3 + 13n 3 + 6n 3 = 26n 3

f(n) = O(n 3 ) Tổng quát nếu f(n) là một đa thức bậc k của n:

f(n) = akn k + ak-1n k-1 + + a1n + a0 thì f(n) = O(n k )

Trang 8

Ký hiệu ô lớn Tên gọi O(1)

O(logn)

hằng logarit

Biểu diễn thời gian chạy bởi kí hiệu O

O(n) O(nlogn) O(n 2 ) O(n 3 ) O(2 n )

tuyến tính nlogn bình phương lập phương mũ

Trang 9

Thời gian chạy của các lệnh

1 Lệnh gán

X = <biểu thức>

Thời gian chạy của lệnh gán bằng thời gian thực hiện biểu thức

2 Lệnh lựa chon

if (điều kiện) → T0(n)

else

Thời gian: T0(n) + max (T1(n), T2(n))

Trang 10

Thời gian chạy của các lệnh

3 Lệnh lặp: for, while, do-while

Ví dụ:

( ) ( )

) (

0

n X

T n

T

= 1

0

i

i

X(n): Số vòng lặp

T0(n): Điều kiện lặp

Ti(n): Thời gian thực hiện vòng lặp thứ i

Trang 11

Thời gian chạy của các lệnh

4 Phân tích các hàm đệ quy

Trang 12

Ví dụ 2

Thuật toán tạo ra ma trận đơn vị A cấp n.

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

(2) for (j = 0 ; j < n ; j++)

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

(5) A[i][i] = 1;

Độ phức tạp:

Trang 13

Ví dụ 2’

Thuật toán tạo ra ma trận đơn vị A cấp n.

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

(2) for (j = 0 ; j < n ; j++)

(3) if (i == j)

Độ phức tạp:

Trang 14

Ví dụ 3

1) sum = 0;

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

3) for ( j = i + 1; j < = n; j + +)

4) for ( k = 1; k < 10; k + +)

5) sum = sum + i * j * k ;

Độ phức tạp:

Trang 15

Ví dụ 3’

1) sum = 0;

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

3) for ( j = i + 1; j < = n; j + +)

4) for ( k = 1; k < m; k + +) {

6) sum = sum + i * j * k ;

Độ phức tạp:

Trang 16

1 for (i = 0; I < n; I ++)

Trang 17

Ví dụ 4

Phân tích độ phức tạp thuật toán của tất cả các phép toán trên kiểu danh dữ liệu danh sách được cài đặt bằng mảng và danh sách liên kết

Ngày đăng: 09/07/2014, 20:20

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w