Skip to content

Trang Học trực tuyến

  • Môn Toán

Trang Học trực tuyến

  • Home » 
  • Tin học lớp 11

Giải SGK Tin học 11 Bài 24 (Kết nối tri thức): Đánh giá độ phức tạp thời gian thuật toán

By admin 11/10/2023 0

Giải bài tập Tin học lớp 11 Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Khởi động trang 111 Tin học 11: Quan sát và ước lượng thời gian thực hiện các đoạn chương trình 1 và 2 trong Hình 24.2. Chương trình nào chạy nhanh hơn? Vì sao?

Quan sát và ước lượng thời gian thực hiện các đoạn chương trình 1 và 2 trong Hình 24.2

Lời giải:

Chương trình 1 chạy nhanh hơn, vì chương trình 1 có 1 vòng lặp, chương trình 2 có 2 vòng lặp.

1. Đánh giá thời gian thực hiện chương trình

Hoạt động 1 trang 112 Tin học 11: Quan sát và thực hiện đánh giá thời gian chạy của các chương trình 1 và 2 trong Hình 24.2. Từ đó biết và hiểu được cách đánh giá thời gian thực hiện chương trình.

Lời giải:

Chương trình 1: Thời gian thực hiện chương trình là T1=T1(n)=2+n+1=n+3 (đơn vị thời gian)

Chương trình 2: Thời gian thực hiện chương trình là T2=T1(n)=2+n2+1=n2+3 (đơn vị thời gian)

Câu hỏi 1 trang 113 Tin học 11: Các lệnh và đoạn chương tình sau cần chạy trong bao nhiêu đơn vị thời gian?

Các lệnh và đoạn chương tình sau cần chạy trong bao nhiêu đơn vị thời gian?

Lời giải:

a) T1=1+n//3=1+1000000//3 đơn vị thời gian

b) T2=1+1+(n//3)=2+1000000//3 đơn vị thời gian

Câu hỏi 2 trang 113 Tin học 11: Khẳng định “Trong mọi chương trình chỉ có đúng một phép toán tích cực” là đúng hay sai?

Lời giải:

Sai. Trong một chương trình máy tính, có thể có nhiều phép toán tích cực (positive operations), cũng như các phép toán khác nhau, chẳng hạn phép toán cộng, trừ, nhân, chia, so sánh, gán giá trị, và các phép toán logic, v.v… Các phép toán tích cực là các phép toán thực hiện các tính chất tích cực của chương trình, như tính toán dữ liệu, xử lý logic, và đưa ra kết quả mong đợi.

2. Phân tích độ phức tạp thời gian thuật toán

Hoạt động 2 trang 113 Tin học 11: Cùng trao đổi và tìm hiểu cách phân loại thuật toán dựa trên độ phức tạp thời gian thuật toán.

Lời giải:

Thuật toán là một chuỗi các bước được thiết kế để giải quyết một vấn đề cụ thể. Một trong những yếu tố quan trọng để đánh giá hiệu suất của một thuật toán là độ phức tạp thời gian, tức là thời gian mà thuật toán mất để thực thi dựa trên kích thước đầu vào của vấn đề. Phân loại thuật toán dựa trên độ phức tạp thời gian là một phương pháp được sử dụng phổ biến để đánh giá và so sánh hiệu suất của các thuật toán khác nhau. Dưới đây là một số phân loại chính dựa trên độ phức tạp thời gian của thuật toán:

-O(1) (độ phức tạp thời gian hằng số): Đây là loại thuật toán có thời gian thực thi không thay đổi theo kích thước đầu vào. Thời gian thực thi của thuật toán này là cố định, vì vậy độ phức tạp thời gian là hằng số. Ví dụ: Truy cập vào phần tử trong mảng có kích thước cố định.

-O(log n) (độ phức tạp thời gian logarithmic): Đây là loại thuật toán có thời gian thực thi tăng theo logarit của kích thước đầu vào. Thuật toán này thường được sử dụng trong các bài toán tìm kiếm nhị phân, các thuật toán chia để trị, hoặc các thuật toán sắp xếp hiệu quả như QuickSort hoặc MergeSort.

-O(n) (độ phức tạp thời gian tuyến tính): Đây là loại thuật toán có thời gian thực thi tăng tỷ lệ trực tiếp với kích thước đầu vào. Ví dụ: Duyệt qua từng phần tử trong mảng một lần.

-O(n^2) (độ phức tạp thời gian bậc hai): Đây là loại thuật toán có thời gian thực thi tăng theo bình phương của kích thước đầu vào. Ví dụ: Thuật toán sắp xếp Bubble Sort, các thuật toán tìm kiếm không hiệu quả như Linear Search trong một mảng lồng nhau.

-O(n^k) (độ phức tạp thời gian bậc k): Đây là loại thuật toán có thời gian thực thi tăng theo lũy thừa của kích thước đầu

Câu hỏi trang 114 Tin học 11: Tính độ phức tạp của các hàm thời gian sau:

a) T(n) = 2n(n – 2) + 4.

b) T(n) = n3 + 5n – 3.

Lời giải:

a) T(n) = 2n(n – 2) + 4 = 2n2 – 4n + 4 = O(n2)

b) T(n) = n3 + 5n – 3 = O(n3)

3. Một số quy tắc thực hành tính độ phức tạp thời gian thuật toán

Hoạt động 3 trang 114 Tin học 11: Đọc, quan sát, thảo luận để biết một số quy tắc đơn giản tính độ phức tạp thời gian thuật toán.

Lời giải:

QT1. Quy tắc cộng: O(f(n)+g(n))=O(max(f(n),g(n)))

QT2. Quy tắc nhân:

– Với hằng sô: O(C.f(n))=O(f(n))

– Với hàm số: O(f(n).g(n))=O(f(n)).O(g(n))

Câu hỏi trang 114 Tin học 11: Áp dụng các quy tác trên để tính độ phức tạp của các hàm thời gian sau:

a) T(n) = n3 + nlogn + 2n + 1.

b) T(n) = 3n4 + 2n2logn + 10.

Lời giải:

a)T(n) = O(n3)

a)T(n) = O(n4)

Luyện tập

Luyện tập 1 trang 114 Tin học 11: Xác định độ phức tạp thời gian cho chương trình sau:

n = 1000

s = 0

for i in range (n);

   s = s + i*(i+1)

print (s)

Lời giải:

Chương trình trên tính tổng các giá trị i*(i+1) trong khoảng từ 0 đến n-1 và lưu kết quả vào biến s. Để xác định độ phức tạp thời gian của chương trình này, ta cần xem xét số lần lặp của vòng for và các phép toán trong vòng lặp.

Vòng for: Vòng lặp này chạy từ 0 đến n-1, với n là 1.000. Vậy số lần lặp là n, hay 1.000 lần.

Các phép toán trong vòng lặp:

Phép gán s = s + i*(i+1): Đây là phép gán giá trị vào biến s, có độ phức tạp là O(1).

Phép toán i*(i+1): Đây là phép nhân và cộng, có độ phức tạp là O(1).

Vậy tổng độ phức tạp thời gian của chương trình là O(n), hay O(1.000)

Luyện tập 2 trang 114 Tin học 11: Xác định độ phức tạp thời gian tính toán cho chương trình sau:

n = 1000

sum = 0

i = 1

while i <n;

  i = i*2

  sum = sum + 1

print (sum)

Lời giải:

Chương trình trên tính số lần lặp cần thiết để i lớn hơn n bằng cách nhân i với 2 trong mỗi lần lặp, sau đó tăng biến sum lên 1. Để xác định độ phức tạp thời gian của chương trình này, ta cần xem xét số lần lặp của vòng while và các phép toán trong vòng lặp.

Vòng while: Vòng lặp này chạy cho đến khi i >= n, và giá trị ban đầu của i là 1. Trong mỗi lần lặp, i được nhân với 2, vậy số lần lặp là log2(n) (vì sau mỗi lần nhân i với 2, giá trị của i sẽ gấp đôi). Ví dụ, nếu n = 1000 thì số lần lặp là log2(1000) ≈ 10.

Các phép toán trong vòng lặp:

Phép gán i = i * 2: Đây là phép nhân, có độ phức tạp là O(1).

Phép gán sum = sum + 1: Đây là phép gán giá trị vào biến sum, có độ phức tạp là O(1).

Vậy tổng độ phức tạp thời gian của chương trình là O(log n), hay O(log2(1000)) ≈ O(10)

Vận dụng

Vận dụng 1 trang 114 Tin học 11: Xác định độ phức tạp thời gian của thuật toán sắp xếp chọn đã được học trong bài 21.

Lời giải:

Số lần so sánh giữa các phần tử: Trong thuật toán sắp xếp chọn, số lần so sánh giữa các phần tử là cố định, không phụ thuộc vào dữ liệu đầu vào. Cụ thể, số lần so sánh trong thuật toán sắp xếp chọn là n(n-1)/2, với n là số  tử trong mảng hoặc danh sách.

Số lần hoán đổi giữa các phần tử: Trong thuật toán sắp xếp chọn, số lần hoán đổi giữa các phần tử có thể đạt đến tối đa n-1 lần, với n là số phần tử trong mảng hoặc danh sách.

Vậy độ phức tạp thời gian của thuật toán sắp xếp chọn là O(n^2), hay n(n-1)/2 lần so sánh và tối đa n-1 lần hoán đổi giữa các phần tử.

Vận dụng 2 trang 114 Tin học 11: Em hãy thiết lập chương trình và tính thời gian chạy thực tế trên máy tính của các chương trình 1 và 2 ở Hình 24.2 với các giá trị n khác nhau từ đó thấy được ý nghĩa sự khác biệt độ phức tạp thời gian của hai chương trình này.

Lời giải:

*Chương trình 1:

from collections import Counter

import time

n = 1000

c = 0

# Ghi lại thời điểm bắt đầu

start_time = time.time()

for k in range(n):

  c = c + 1

# Ghi lại thời điểm kết thúc

end_time = time.time()

# Tính thời gian hoàn thành

elapsed_time = end_time – start_time

# Sử dụng hàm Counter để đếm số lần lặp

counter = Counter(range(n))

# In số lần lặp

print(“Số lần lặp: {}”.format(counter))

# In thời gian thực thi

print(“Thời gian thực thi của chương trình: {:.6f} giây”.format(elapsed_time))

*Chương trình 2:

import time

n = 1000

c = 0

# Ghi lại thời điểm bắt đầu

start_time = time.perf_counter()

for k in range(n):

 for j in range(n):

  c = c + 1

# Ghi lại thời điểm kết thúc

end_time = time.perf_counter()

# Tính thời gian hoàn thành

elapsed_time = end_time – start_time

# In số lần lặp

print(“Số lần lặp: {}”.format(c))

# In thời gian thực thi

print(“Thời gian thực thi của chương trình: {:.6f} giây”.format(elapsed_time))

→Sự khác biệt độ phức tạp thời gian của 2 chương trình trên:

Độ phức tạp thời gian của chương trình 1 là O(1), còn độ phức tạp thời gian của chương trình 2 là O(n2).

Xem thêm các bài giải SGK Tin học lớp 11 Kết nối tri thức hay, chi tiết khác:

Bài 23: Kiểm thử và đánh giá chương trình

Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Bài 25: Thực hành xác định độ phức tạp thời gian thuật toán

Bài 26: Phương pháp làm mịn dần trong thiết kế chương trình

Bài 27: Thực hành thiết kế chương trình theo phương pháp làm mịn dần

Tags : Tags Giải bài tập   Tin học 11
Share
facebookShare on FacebooktwitterShare on TwitteremailShare on Email
Post navigation
Previous post

Giải Sách bài tập Tiếng Anh 11 Unit 6: Preserving our heritage | Giải SBT Tiếng Anh 11 Global Success

Next post

Giải SBT Địa Lí 11 Bài 9 (Kết nối tri thức): Liên minh Châu Âu một liên kết kinh tế khu vực lớn

Bài liên quan:

Giải SBT Tin học 11 Kết nối tri thức | Sách bài tập Tin học 11 Kết nối tri thức (hay, chi tiết)

Giải sgk Tin học 11 (KNTT, CD) | Giải bài tập Tin học 11 (hay, chi tiết) | Giải Tin 11 (sách mới)

Giải sgk Tin học 11 Kết nối tri thức | Giải bài tập Tin học 11 KNTT (hay, ngắn gọn) | Soạn Tin 11 KNTT

Giải SGK Tin học 11 Bài 4 (Kết nối tri thức): Bên trong máy tính

Giải SGK Tin học 11 Bài 5 (Kết nối tri thức): Kết nối máy tính với các thiết bị số

Giải SGK Tin học 11 Bài 6 (Kết nối tri thức): Lưu trữ và chia sẻ tệp tin trên internet

Giải SGK Tin học 11 Bài 7 (Kết nối tri thức): Thực hành tìm kiếm thông tin trên Internet

Giải SGK Tin học 11 Bài 8 (Kết nối tri thức): Thực hành nâng cao sử dụng thư điện tử và mạng xã hội

Leave a Comment Hủy

Mục lục

  1. Giải SBT Tin học 11 Kết nối tri thức | Sách bài tập Tin học 11 Kết nối tri thức (hay, chi tiết)
  2. Giải sgk Tin học 11 (KNTT, CD) | Giải bài tập Tin học 11 (hay, chi tiết) | Giải Tin 11 (sách mới)
  3. Giải sgk Tin học 11 Kết nối tri thức | Giải bài tập Tin học 11 KNTT (hay, ngắn gọn) | Soạn Tin 11 KNTT
  4. Giải SGK Tin học 11 Bài 4 (Kết nối tri thức): Bên trong máy tính
  5. Giải SGK Tin học 11 Bài 5 (Kết nối tri thức): Kết nối máy tính với các thiết bị số
  6. Giải SGK Tin học 11 Bài 6 (Kết nối tri thức): Lưu trữ và chia sẻ tệp tin trên internet
  7. Giải SGK Tin học 11 Bài 7 (Kết nối tri thức): Thực hành tìm kiếm thông tin trên Internet
  8. Giải SGK Tin học 11 Bài 8 (Kết nối tri thức): Thực hành nâng cao sử dụng thư điện tử và mạng xã hội
  9. Giải SGK Tin học 11 Bài 9 (Kết nối tri thức): Giao tiếp an toàn trên internet
  10. Giải SGK Tin học 11 Bài 10 (Kết nối tri thức): Lưu trữ dữ liệu và khai thác thông tin phục vụ quản lí
  11. Giải SGK Tin học 11 Bài 11 (Kết nối tri thức): Cơ sở dữ liệu
  12. Giải SGK Tin học 11 Bài 12 (Kết nối tri thức): Hệ quản trị cơ sở dữ liệu và hệ cơ sở dữ liệu
  13. Giải SGK Tin học 11 Bài 13 (Kết nối tri thức): Cơ sở dữ liệu quan hệ
  14. Giải SGK Tin học 11 Bài 14 (Kết nối tri thức): SQL – Ngôn ngữ truy vấn có cấu trúc
  15. Giải SGK Tin học 11 Bài 15 (Kết nối tri thức): Bảo mật và an toàn hệ cơ sở dữ liệu
  16. Giải SGK Tin học 11 Bài 16 (Kết nối tri thức): Công việc quản trị cơ sở dữ liệu
  17. Giải SGK Tin học 11 Bài 17 (Kết nối tri thức): Dữ liệu mảng một chiều và hai chiều
  18. Giải SGK Tin học 11 Bài 18 (Kết nối tri thức): Thực hành dữ liệu mảng một chiều và hai chiều
  19. Giải SGK Tin học 11 Bài 19 (Kết nối tri thức): Bài toán tìm kiếm
  20. Giải SGK Tin học 11 Bài 20 (Kết nối tri thức): Thực hành bài toán tìm kiếm
  21. Giải SGK Tin học 11 Bài 21 (Kết nối tri thức): Các thuật toán sắp xếp đơn giản
  22. Giải SGK Tin học 11 Bài 22 (Kết nối tri thức): Thực hành bài toán sắp xếp
  23. Giải SGK Tin học 11 Bài 23 (Kết nối tri thức): Kiểm thử và đánh giá chương trình
  24. Giải SGK Tin học 11 Bài 25 (Kết nối tri thức): Thực hành xác định độ phức tạp thời gian thuật toán
  25. Giải SGK Tin học 11 Bài 26 (Kết nối tri thức): Phương pháp làm mịn dần trong thiết kế chương trình
  26. Giải SGK Tin học 11 Bài 27 (Kết nối tri thức): Thực hành thiết kế chương trình theo phương pháp làm mịn dần
  27. Giải SGK Tin học 11 Bài 28 (Kết nối tri thức): Thiết kế chương trình theo mô đun
  28. Giải SGK Tin học 11 Bài 29 (Kết nối tri thức): Thực hành thiết kế chương trình theo mô đun
  29. Giải SGK Tin học 11 Bài 30 (Kết nối tri thức): Thiết lập thư viện cho chương trình
  30. Giải SGK Tin học 11 Bài 31 (Kết nối tri thức): Thực hành thiết lập thư viện chương trình
  31. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 5: Thực hành thiết kế thuật toán theo kĩ thuật đệ quy
  32. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 4: Tháp Hà Nội
  33. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 3: Thực hành giải toán theo kĩ thuật đệ quy
  34. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 2: Thiết kế thuật toán đệ quy
  35. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 1: Đệ quy và hàm đệ quy
  36. Chuyên đề Tin học 11 Kết nối tri thức | Giải Chuyên đề học tập Tin học 11 KNTT (hay, ngắn gọn)
  37. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 10: Thực hành giải toán bằng kĩ thuật chia để trị
  38. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 9: Sắp xếp trộn
  39. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 8: Thực hành thiết thuật toán tìm kiếm theo kĩ thuật chia để trị
  40. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 7: Thiết kế thuật toán theo kĩ thuật chia để trị
  41. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 6: Ý tưởng và kĩ thuật chia để trị
  42. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 16: Thực hành thiết kế thuật toán theo kĩ thuật quay lui
  43. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 15: Bài toán xếp hậu
  44. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 14: Thực hành kĩ thuật duyệt quay lui
  45. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 13: Kĩ thuật duyệt quay lui
  46. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 12: Thực hành kĩ thuật duyệt cho bài toán tìm kiếm
  47. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 11: Bài toán tìm kiếm theo kĩ thuật duyệt
  48. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 5: Thiết kế sản phẩm trang trí hoàn chỉnh
  49. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 4: Chỉnh sửa, ghép nối, kết nối các đối tượng đồ họa
  50. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 3: Làm việc với đối tượng đường
  51. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 2: Làm việc với đối tượng hình khối
  52. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 1: Giới thiệu phần mềm vẽ trang trí

Copyright © 2025 Trang Học trực tuyến
  • Sach toan
  • Giới thiệu
  • LOP 12
  • Liên hệ
  • Sitemap
  • Chính sách
Back to Top
Menu
  • Môn Toán