Giải Tin học 11 Bài 5 (Cánh diều): Đánh giá thuật toán

Với giải bài tập Tin học 11 Bài 5: Đánh giá thuật toán sách Cánh diều hay nhất, chi tiết giúp học sinh dễ dàng làm bài tập Tin học 11 Bài 5.

1 727 07/08/2023


Giải Tin học 11 Bài 5: Đánh giá thuật toán

Giải Tin học 11 trang 107

Khởi động trang 107 Tin học 11: Theo em, một thuật toán như thế nào thì được xem là chạy nhanh/ chạy chậm

Lời giải:

Thuật toán được coi là hiệu quả hơn nếu thời gian thực hiện chương trình và lượng bộ nhớ mà máy tính cần dùng là ít hơn.

3. Ví dụ về độ phức tạp thời gian hằng số và độ phức tạp thời gian tuyến tính

Giải Tin học 11 trang 108

Hoạt động trang 108 Tin học 11: Cho bài toán tính tổng dãy số : S=1+2+…+n. Hãy cho biết cách giải nào tốt hơn trong hai cách giải sau đây:

Cách thứ nhất: Tính cộng dồn từng số

Cách thứ hai: Vì dãy số là cấp số cộng nên ta có thể dùng công thức tính tổng cấp số cộngCho bài toán tính tổng dãy số trang 108 tin học 11

Lời giải:

Trong hai cách giải trên thì cách giải thứ 2 tốt hơn. Vì thời gian thực hiện thuật toán sẽ nhanh hơn cách thứ nhất, chỉ cần 3 phép toán để tính tổng S, T(n) =3.

Luyện tập

Giải Tin học 11 trang 112

Luyện tập trang 112 Tin học 11: Em hãy cho ví dụ một lời gọi hàm được tính là phép toán sơ cấp và một lời gọi hàm không được tính là phép toán sơ cấp.

Lời giải:

Phép toán sơ cấp

Ví dụ:

int number = 1990;if ((number % 2) == 0)Console.WriteLine($"{number} là số chẵn");// In ra: 1990 là số chẵnint a = 5;int b = 10;if (a >= b){Console.WriteLine("Số a lớn hơn hoặc bằng số b");}else{Console.WriteLine("Số a nhỏ hơn số b");}//In ra: Số a nhỏ hơn số b

Sau else bạn có thể bắt đầu ngay một lệnh if khác để tạo ra cấu trúc if else, kiểm tra nhiều trường hợp

int a = 10;int b = 10;if (a > b){Console.WriteLine("Số a lớn hơn hoặc bằng số b");}else if (a < b){Console.WriteLine("Số a nhỏ hơn số b");}else{Console.WriteLine("Hai số a, b bằng nhau");}pan>Console.WriteLine("Hai số a, b bằng nhau");}

Vận dụng

Vận dụng 1 trang 112 Tin học 11: Xét bài toán sắp xếp dãy số. Hãy cho biết khi nào ta có trường hợp thuận lợi nhất, số phép toán cần làm là ít nhất?

Lời giải:

Trong bài toán sắp xếp dãy số, ta cần phải sắp xếp các số trong dãy theo một thứ tự tăng dần hoặc giảm dần. Để giảm số lần so sánh và hoán vị giữa các phần tử trong quá trình sắp xếp, ta cần chọn phương pháp sắp xếp phù hợp. Trường hợp thuận lợi nhất trong bài toán sắp xếp dãy số là khi dãy đã có thứ tự tăng dần hoặc giảm dần.

Trong trường hợp này, ta không cần phải hoán vị các phần tử trong quá trình sắp xếp, do đó số phép toán cần làm là ít nhất.

Ngược lại, khi dãy số ban đầu là một dãy không có thứ tự, ta cần thực hiện một số lần hoán vị để sắp xếp dãy theo thứ tự mong muốn. Trong trường hợp này, số phép toán cần làm sẽ nhiều hơn so với trường hợp dãy đã có thứ tự. Do đó, để có trường hợp thuận lợi nhất và số phép toán cần làm ít nhất, ta nên sắp xếp dãy số theo thứ tự tăng dần hoặc giảm dần trước khi thực hiện các phép toán sắp xếp khác.

Vận dụng 2 trang 112 Tin học 11: Ước lượng số phép toán sơ cấp cần thực hiện để tìm số lớn nhất trong dãy số:

a) Đâu vào là dãy ngẫu nhiên.

b) Đầu vào là dãy giảm dần.

Lời giải:

Ước lượng số phép toán sơ cấp cần thực hiện

Câu hỏi tự kiểm tra

Câu 1 trang 112 Tin học 11: Tại sao không thể đánh giá thuật toán qua chương trình cài đặt thuật toán?

Lời giải:

Không thể đánh giá thuật toán chỉ dựa trên chương trình cài đặt thuật toán vì việc đánh giá thuật toán yêu cầu xem xét các khía cạnh khác nhau của thuật toán, chứ không chỉ là chương trình cài đặt của nó. Chương trình cài đặt thuật toán chỉ là một trong những bước để triển khai thuật toán, nhưng để đánh giá thuật toán, chúng ta cần xem xét các khía cạnh khác nhau như hiệu suất, tốc độ, độ chính xác, bộ nhớ cần thiết, độ phức tạp tính toán, và tính ổn định của thuật toán khi được áp dụng trong các trường hợp khác nhau.

Vì vậy, để đánh giá hiệu quả của một thuật toán, chúng ta cần thực hiện các thí nghiệm và kiểm tra kết quả của thuật toán trên các bộ dữ liệu khác nhau, thay vì chỉ dựa trên chương trình cài đặt của nó. Các thí nghiệm này thường được thiết kế để đánh giá khả năng của thuật toán xử lý các tình huống khác nhau và đo lường các chỉ số hiệu suất khác nhau.

Câu 2 trang 112 Tin học 11: Khi nào thì áp dụng quy tắc lấy max

Lời giải:

Trong Python, quy tắc lấy max được áp dụng để tìm giá trị lớn nhất trong một danh sách (list) hoặc một tập hợp (set). Nó được sử dụng khi bạn muốn tìm ra giá trị lớn nhất trong một tập dữ liệu cụ thể, ví dụ như tìm giá trị lớn nhất trong một danh sách các số hoặc tìm phần tử có giá trị lớn nhất trong một tập hợp.

Quy tắc lấy max rất hữu ích khi xử lý các tập dữ liệu lớn và cần tìm ra giá trị lớn nhất trong tập dữ liệu đó.

Câu 3 trang 112 Tin học 11: Quy tắc nhân áp dụng cho cấu trúc vòng lặp là gì?

Lời giải:

Quy tắc nhân là một kỹ thuật tối ưu mã hóa được sử dụng trong lập trình để cải thiện hiệu suất của các vòng lặp. Quy tắc này áp dụng cho cấu trúc vòng lặp for và while trong Python. Các quy tắc nhân áp sẽ giảm số lần lặp của vòng lặp bằng cách thay thế vòng lặp bằng một chuỗi các lệnh tương ứng.

Kỹ thuật nhân áp có thể giúp tăng tốc độ của chương trình bằng cách giảm số lần lặp của vòng lặp, giảm thời gian thực thi và tối ưu bộ nhớ sử dụng. Tuy nhiên, việc áp dụng quy tắc nhân áp cần cân nhắc kỹ vì nó có thể làm mã của chương trình trở nên khó đọc và khó bảo trì nếu không được thực hiện đúng cách.

Xem thêm Lời giải bài tập Tin học 11 Cánh diều hay, chi tiết khác: 

Bài 4: Làm mịn dần từng bước từ thuật toán đến chương trình máy tính

Bài 6: Kiểm thử và sửa lỗi chương trình

Bài 7: Lập trình giải bài toán tìm kiếm

Bài 8: Lập trình một số thuật toán sắp xếp

Bài 9: Lập trình thuật toán sắp xếp nhanh

1 727 07/08/2023


Xem thêm các chương trình khác: