

11_Lesson_độ phức tạp
Presentation
•
Computers
•
1st Grade
•
Medium
Phong Thanh
Used 6+ times
FREE Resource
11 Slides • 27 Questions
1
1. Đánh giá thời gian thực hiện của chương trình
Đánh giá thời gian thực hiện của chương trình thực hiện bằng nhiều cách triển khai và chạy thuật toán, tuy nhiên cách tiếp cận này có một số vấn đề:
Triển khai thuật toán không phù hợp với các chương trình phức tạp.
Lãng phí thời gian triển khai nếu chương trình không được sử dụng.
Thời gian chạy chương trình trên các thiết bị thông minh là khác nhau.
Ngôn ngữ lập trình hoặc trình biên dịch có thể ảnh hưởng đến thời gian.
Đánh giá độ phức tạp thời gian của thuật toán
2
1. Đánh giá thời gian thực hiện của chương trình
Giải pháp: Ước lượng thời gian chạy dựa trên việc tính tổng thời gian các phép tính đơn và các lệnh đơn của chương trình.
Nhận định: Không chính xác hoàn toàn như thời gian thực nhưng có thể dùng để so sánh và ước lượng thời gian chạy chương trình khá chính xác.
Khung nguyên tắc đánh giá
Thời gian thực hiện của chương trình đang xét bằng:
1. Một đơn vị thời gian: phép so sánh, logic cơ bản, tính số học, lệnh đơn,...
2. Tổng đơn vị thời gian thực hiện mỗi lần lặp: vòng for, while.
3. Đơn vị thời gian lớn nhất của các lệnh rẽ nhánh: lệnh if nhiều nhánh rẽ.
Đánh giá độ phức tạp thời gian của thuật toán
3
2. Phân tích độ phức tạp thời gian của thuật toán
Một bài toán có thể được giải bằng nhiều thuật toán, mỗi thuật toán sẽ có hàm thời gian T(n) khác nhau. Để lựa chọn thuật toán phù hợp nhất, ta phân tích bậc của hàm T(n) khi n tăng lên vô cùng thông qua O-lớn.
Đánh giá độ phức tạp thời gian của thuật toán
4
2. Phân tích độ phức tạp thời gian của thuật toán
Bảng so sánh thời gian thực hiện của một số hàm chuẩn
Đánh giá độ phức tạp thời gian của thuật toán
5
2. Phân tích độ phức tạp thời gian của thuật toán
Các quy tắc ước lượng thời gian thực hiện
a) Quy tắc chung
Khi tính đếm số phép toán cần thực hiện, các quy tắc ước lượng cho phép bỏ bớt những phần có bậc lớn thấp hơn, chỉ giữ lại những phần có bậc lớn cao nhất và các hằng số nhân C đều coi là 1.
b) Lời gọi hàm
Một lời gọi hàm được chia làm hai trường hợp:
Lời gọi các hàm toán học sơ cấp, các hàm thư viện,... với đầu vào là giá trị cụ thể không phụ thuộc n → T(n)=O(1)
Trường hợp còn lại sẽ được ước lượng độ phức tạp như với một thuật toán.
Đánh giá độ phức tạp thời gian của thuật toán
6
2. Phân tích độ phức tạp thời gian của thuật toán
Đánh giá độ phức tạp thời gian của thuật toán
7
Các quy tắc ước lượng thời gian thực hiện
c) Cấu trúc tuần tự và quy tắc lấy max
Cấu trúc tuần tự là một dãy gồm CC phép toán; CC là số xác định, không phụ thuộc nn.
Nếu tất cả CC phép toán là sơ cấp → T(n)=O(1)
Thời gian thực hiện bằng ước lượng lớn nhất trong số các ước lượng của các phép toán có trong dãy.
d) Cấu trúc rẽ nhánh và quy tắc lấy max
Kiểm tra điều kiện là tính giá trị biểu thức logic gồm biểu thức số học và một phép so sánh → T(n)=O(1)
Độ phức tạp thời gian của cấu trúc rẽ nhánh là độ phức tạp thời gian lớn nhất trong các độ phức tạp thời gian của các nhánh.
e) Cấu trúc vòng lặp và quy tắc nhân
Thời gian thực hiện cấu trúc vòng lặp được tính bằng số lần lặp nhân với tổng thời gian kiểm tra điều kiện lặp và thời gian thực hiện thân vòng lặp.
Đánh giá độ phức tạp thời gian của thuật toán
8
Đánh giá độ phức tạp thời gian của thuật toán
9
Đánh giá độ phức tạp thời gian của thuật toán
10
Đánh giá độ phức tạp thời gian của thuật toán
11
Multiple Choice
Chương trình sau có hàm thời gian gần đúng là
12
Multiple Choice
Thuật toán tìm kiếm nhị phân có độ phức tạp là
13
Đánh giá độ phức tạp thời gian của thuật toán
Xác định độ phức tạp của thuật toán tìm kiếm tuần tự
Bước 1. Phân tích thời gian tính toán của thuật toán.
n là kích thước của mảng đầu vào.
T(n)là thời gian thực hiện thuật toán.
Với mỗi bước lặp sẽ kiểm tra phần tử thứ i có bằng với phần tử cần tìm kiếm (dòng 3):
Nếu bằng thì trả về chỉ số của phần tử tìm thấy và kết thúc (dòng 4) → có thể kết thúc khi chưa duyệt hết mảng (trường hợp đã tìm thấy phần tử)
Trường hợp tồi nhất vòng lặp ở dòng 2 sẽ thực hiện n bước lặp, mỗi bước lặp sẽ thực hiện lệnh so sánh ở dòng 3 tốn 1 đơn vị thời gian.
Tìm thấy phần tử (thực hiện một lần ở dòng 4) hoặc không tìm thấy phần tử (thực hiện dòng 5) mất 1 đơn vị thời gian.
Tổng số phép tính cơ bản của chương trình trong trường hợp tồi nhất là T(n) = n+1.
Bước 2. Xác định độ phức tạp O-lớn của thuật toán
T(n) = n+1 = O(n+1) = O(max(n, 1)) = O(n)
14
Multiple Choice
Phương án nào sau đây là độ phức tạp thuật toán khi tìm kiếm được phần tử ngay lần đầu lặp?
O(k).
O(0).
O(1).
O(n).
15
Multiple Choice
Cho chương trình được viết như sau:
1. for i in range(0, n):
2. s = s + i
3. print(s)
Phương án nào sau đây nêu đúng độ phức tạp của chương trình trên?
O(n2).
O(1).
O(n).
O(s+n).
16
Multiple Choice
Phương án nào sau đây là cụm từ điền đúng vào vị trí trống trong đoạn văn sau: "Khi xác định độ phức tạp thời gian của một chương trình, cần dựa trên cơ sở ước lượng [ ] trong chương trình đó"?
loại thiết bị sử dụng để chạy chương trình.
tài nguyên máy tính cần sử dụng.
xung nhịp của CPU trong một đơn vị thời gian.
thời gian thực hiện của mỗi câu lệnh.
17
Multiple Choice
Phương án nào sau đây là hàm đo độ phức tạp thời gian của thuật toán?
T(n)
f(n)
lamda(x)
time(x)
18
Multiple Choice
Phương án nào sau đây nêu đúng hàm thời gian KHÔNG phụ thuộc vào nn?
T(n)=10
f(n)=n2+3
T(n)=n
f(n)=O(g(n))
19
Multiple Choice
Phương án nào sau đây nêu đúng độ phức tạp đối với phép toán là sơ cấp?
O(n)
O(1)
O(C)
O(2)
20
Multiple Choice
Phương pháp nào sau đây dùng để đánh giá độ phức tạp của chương trình?
Đếm số câu lệnh trong chương trình.
Tính toán độ phức tạp của thuật toán.
Kiểm tra lượng dữ liệu đã tiêu hao.
Chạy chương trình với các bộ dữ liệu.
21
Multiple Choice
Phương án nào sau đây nêu đúng độ phức tạp của chương trình?
22
Multiple Choice
Độ phức tạp nào sau đây dùng để đánh giá thuật toán?
Độ phức tạp lưu trữ.
Độ phức tạp không gian.
Độ phức tạp thời gian.
Độ phức tạp máy tính.
23
Multiple Choice
Kí hiệu trong hình bên là hàm chuẩn nào sau đây?
Đa thức.
Tuyến tính.
Lũy thừa.
Hằng số.
24
Multiple Choice
Kí hiệu nào sau đây là hàm thời gian tuyến tính?
O(1).
O(n)
25
Multiple Choice
Một thuật toán được coi là hiệu quả khi đạt được điều nào sau đây?
Số lần thực hiện các câu lệnh là tối ưu.
Thuật toán đơn giản, dễ cài đặt lên máy tính.
Trả ra kết quả đúng với mọi dữ liệu vào.
Lượng dữ liệu cần lưu trữ ở mức cao.
26
Multiple Choice
Phương án nào sau đây là độ phức tạp của hàm thời gian như hình
O(2).
O(n).
27
Multiple Choice
Hàm thời gian nào sau đây có độ phức tạp thời gian là bình phương?
28
Multiple Choice
Thời gian thực hiện thuật toán phụ thuộc vào yếu tố nào sau đây?
Tốc độ xử lí dữ liệu của bộ xử lí trong máy.
Loại máy tính được sử dụng để tính toán.
Khối lượng dữ liệu trong quá trình tính toán.
Số lượng câu lệnh có trong chương trình.
29
Multiple Choice
Ký hiệu O(n)O(n)O(n) trong phân tích độ phức tạp thời gian biểu thị điều gì?
Chương trình có độ phức tạp tuyến tính
Chương trình có độ phức tạp bình phương
Chương trình có độ phức tạp mũ
Chương trình có độ phức tạp hàng số
30
Multiple Choice
Quy tắc cộng trong tính độ phức tạp thời gian của thuật toán được áp dụng trong trường hợp nào?
Khi có vòng lặp lồng nhau
Khi thực hiện hai chương trình nối tiếp nhau
Khi thực hiện phép toán nhân
Khi thực hiện phép toán chia
31
Multiple Choice
Nếu chương trình có độ phức tạp thời gian T(n)=n2+3n+1T(n) = n^2 + 3n + 1T(n)=n2+3n+1, độ phức tạp thời gian của nó là gì?
O(n2)O(n^2)O(n2)
O(n)O(n)O(n)
O(logn)O(\log n)O(logn)
O(n3)O(n^3)O(n3)
32
Multiple Choice
Trong trường hợp nào độ phức tạp thời gian của chương trình là O(1)O(1)O(1)?
Khi chương trình có vòng lặp lồng nhau
Khi chương trình có độ phức tạp tuyến tính
Khi chương trình có độ phức tạp lũy thừa
Khi chương trình chỉ có các phép toán đơn và không phụ thuộc vào nnn
33
Multiple Choice
Ký hiệu O(logn)O(\log n)O(logn) được dùng khi độ phức tạp thời gian của thuật toán là gì?
Tuyến tính
Logarit
Đa thức
Mũ
34
Multiple Choice
Để tính độ phức tạp thời gian của chương trình với các phép toán lồng nhau, ta áp dụng quy tắc nào?
Quy tắc cộng
Quy tắc nhân
Quy tắc chia
Quy tắc cộng và chia
35
Multiple Choice
Độ phức tạp thời gian của thuật toán tìm kiếm tuần tự LinearSearch(A, K) là:
O(1)
O(n)
O(log n)
O(n^2)
36
Multiple Choice
Độ phức tạp thời gian của thuật toán sắp xếp nổi bọt BubbleSort(A) là:
O(n)
O(n^2)
O(n log n)
O(log n)
37
Multiple Choice
Độ phức tạp thời gian của BubbleSort trong trường hợp tốt nhất khi mảng đã sắp xếp là:
O(n)
O(n^2)
O(n log n)
O(1)
38
Fill in the Blanks
Type answer...
1. Đánh giá thời gian thực hiện của chương trình
Đánh giá thời gian thực hiện của chương trình thực hiện bằng nhiều cách triển khai và chạy thuật toán, tuy nhiên cách tiếp cận này có một số vấn đề:
Triển khai thuật toán không phù hợp với các chương trình phức tạp.
Lãng phí thời gian triển khai nếu chương trình không được sử dụng.
Thời gian chạy chương trình trên các thiết bị thông minh là khác nhau.
Ngôn ngữ lập trình hoặc trình biên dịch có thể ảnh hưởng đến thời gian.
Đánh giá độ phức tạp thời gian của thuật toán
Show answer
Auto Play
Slide 1 / 38
SLIDE
Similar Resources on Wayground
28 questions
Giới thiệu môn Khoa học
Presentation
•
2nd Grade
33 questions
tin11-bai2
Presentation
•
KG
36 questions
11_Lesson3.cdfcs
Presentation
•
1st Grade
30 questions
Cuộc thi “Học tập và làm theo tư tưởng, đạo đức, phong cách HCM
Presentation
•
1st Grade
33 questions
Pagbabawas ng Bilang
Presentation
•
1st Grade
32 questions
3.1 The Number Line
Presentation
•
KG
30 questions
Bài 3. Máy tính trong hoạt động thông tin
Presentation
•
1st Grade
26 questions
Xử trí phản vệ- Lạc Thuỷ Hoà Bình
Presentation
•
KG
Popular Resources on Wayground
20 questions
STAAR Review Quiz #3
Quiz
•
8th Grade
20 questions
Equivalent Fractions
Quiz
•
3rd Grade
6 questions
Marshmallow Farm Quiz
Quiz
•
2nd - 5th Grade
20 questions
Main Idea and Details
Quiz
•
5th Grade
20 questions
Context Clues
Quiz
•
6th Grade
20 questions
Inferences
Quiz
•
4th Grade
19 questions
Classifying Quadrilaterals
Quiz
•
3rd Grade
12 questions
What makes Nebraska's government unique?
Quiz
•
4th - 5th Grade
Discover more resources for Computers
20 questions
Telling Time to the Hour and Half hour
Quiz
•
1st Grade
16 questions
Counting Coins counting money
Quiz
•
1st - 2nd Grade
20 questions
Halves and Fourths
Quiz
•
1st Grade
10 questions
CA4 Math Review
Presentation
•
1st - 5th Grade
15 questions
Reading Comprehension
Quiz
•
1st - 5th Grade
31 questions
Easter Trivia
Quiz
•
KG - 12th Grade
20 questions
Addition and Subtraction facts
Quiz
•
1st - 3rd Grade
16 questions
3D shapes (1st grade)
Quiz
•
1st Grade