THUẬT TOÁN – PHẦN 2
Số trang: 10
Loại file: pdf
Dung lượng: 138.73 KB
Lượt xem: 20
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Thước đo hiệu quả của một thuật toán là thời gian mà máy tính sử dụng để giải bài toán theo thuật toán đang xét, khi các giá trị đầu vào có một kích thước xác định. Một thước đo thứ hai là dung lượng bộ nhớ đòi hỏi để thực hiện thuật toán khi các giá trị đầu vào có kích thước xác định. Các vấn đề như thế liên quan đến độ phức tạp tính toán của một thuật toán. Sự phân tích thời gian cần thiết để giải một bài toán có kích thước đặc biệt...
Nội dung trích xuất từ tài liệu:
THUẬT TOÁN – PHẦN 2 THUẬT TOÁN – PHẦN 2ĐỘ PHỨC TẠP CỦA THUẬT TOÁN.1.3.1. Khái niệm về độ phức tạp của một thuật toán: Thước đo hiệu quả của một thuật toán là thời gian mà máy tính sử dụng đểgiải bài toán theo thuật toán đang xét, khi các giá trị đầu vào có một kích thướcxác định. Một thước đo thứ hai là dung lượng bộ nhớ đòi hỏi để thực hiện thuậttoán khi các giá trị đầu vào có kích thước xác định. Các vấn đề nh ư thế liên quanđến độ phức tạp tính toán của một thuật toán. Sự phân tích thời gian cần thiết đểgiải một bài toán có kích thước đặc biệt nào đó liên quan đến độ phức tạp thời giancủa thuật toán. Sự phân tích bộ nhớ cần thiết của máy tính li ên quan đến độ phứctạp không gian của thuật toán. Vệc xem xét độ phức tạp thời gian và không giancủa một thuật toán là một vấn đề rất thiết yếu khi các thuật toán được thực hiện.Biết một thuật toán sẽ đưa ra đáp số trong một micro giây, trong một phút hoặctrong một tỉ năm, hiển nhiên là hết sức quan trọng. Tương tự như vậy, dung lượngbộ nhớ đòi hỏi phải là khả dụng để giải một bài toán,vì vậy độ phức tạp khônggian cũng cần phải tính đến.Vì việc xem xét độ phức tạp không gian gắn liền vớicác cấu trúc dữ liệu đặc biệt được dùng để thực hiện thuật toán nên ở đây ta sẽ tậptrung xem xét độ phức tạp thời gian. Độ phức tạp thời gian của một thuật toán có thể được biểu diễn qua số cácphép toán được dùng bởi thuật toán đó khi các giá trị đầu vào có một kích thướcxác định. Sở dĩ độ phức tạp thời gian được mô tả thông qua số các phép toán đòihỏi thay vì thời gian thực của máy tính là bởi vì các máy tính khác nhau th ực hiệncác phép tính sơ cấp trong những khoảng thời gian khác nhau. Hơn nữa, phân tíchtất cả các phép toán thành các phép tính bit sơ cấp mà máy tính sử dụng là điều rấtphức tạp.Thí dụ 3: Xét thuật toán tìm số lớn nhất trong dãy n số a1, a2, ..., an. Có thể coikích thước của dữ liệu nhập là số lượng phần tử của dãy số, tức là n. Nếu coi mỗilần so sánh hai số của thuật toán đòi hỏi một đơn vị thời gian (giây chẳng hạn) thìthời gian thực hiện thuật toán trong trường hợp xấu nhất là n-1 giây. Với dãy 64số, thời gian thực hiện thuật toán nhiều lắm là 63 giây.Thí dụ 4:Thuật toán về trò chơi “Tháp Hà Nội” Trò chơi “Tháp Hà Nội” như sau: Có ba cọc A, B, C và 64 cái đĩa (có lỗ đểđặt vào cọc), các đĩa có đường kính đôi một khác nhau. Nguyên tắc đặt đĩa vàocọc là: mỗi đĩa chỉ được chồng lên đĩa lớn hơn nó. Ban đầu, cả 64 đĩa được đặtchồng lên nhau ở cột A; hai cột B, C trống. Vấn đề là phải chuyển cả 64 đĩa đósang cột B hay C, mỗi lần chỉ được di chuyển một đĩa. Xét trò chơi với n đĩa ban đầu ở cọc A (cọc B và C trống). Gọi Sn là số lầnchuyển đĩa để chơi xong trò chơi với n đĩa. Nếu n=1 thì rõ ràng là S1=1. Nếu n>1 thì trước hết ta chuyển n-1 đĩa bên trên sang cọc B (giữ yên đĩathứ n ở dưới cùng của cọc A). Số lần chuyển n-1 đĩa là Sn-1. Sau đó ta chuyển đĩathứ n từ cọc A sang cọc C. Cuối cùng, ta chuyển n-1 đĩa từ cọc B sang cọc C (sốlần chuyển là Sn-1). Như vậy, số lần chuyển n đĩa từ A sang C là: Sn=Sn-1+1+Sn=2Sn-1+1=2(2Sn-2+1)+1=22Sn-2+2+1=.....=2n-1S1+2n-2 +...+2+1=2n1. Thuật toán về trò chơi “Tháp Hà Nội” đòi hỏi 2641 lần chuyển đĩa (xấp xỉ18,4 tỉ tỉ lần). Nếu mỗi lần chuyển đĩa mất 1 giây thì thời gian thực hiện thuật toánxấp xỉ 585 tỉ năm! Hai thí dụ trên cho thấy rằng: một thuật toán phải kết thúc sau một số hữuhạn bước, nhưng nếu số hữu hạn này quá lớn thì thuật toán không thể thực hiệnđược trong thực tế. Ta nói: thuật toán trong Thí dụ 3 có độ phức tạp là n-1 và là một thuật toánhữu hiệu (hay thuật toán nhanh); thuật toán trong Thí dụ 4 có độ phức tạp là 2n1và đó là một thuật toán không hữu hiệu (hay thuật toán chậm).1.3.2. So sánh độ phức tạp của các thuật toán: Một bài toán thường có nhiều cách giải, có nhiều thuật toán để giải, cácthuật toán đó có độ phức tạp khác nhau. Xét bài toán: Tính giá trị của đa thức P(x)=anxn+an-1xn-1+ ... +a1x+a0 tại x0.Thuật toán 1:Procedure tính giá trị của đa thức (a0, a1, ..., an, x0: các số thực) sum:=a0 for i:=1 to n sum:=sum+aix0i{sum là giá trị của đa thức P(x) tại x0} Chú ý rằng đa thức P(x) có thể viết dưới dạng: P(x)=(...((anx+an-1)x+an-2)x...)x+a0. Ta có thể tính P(x) theo thuật toán sau:Thuật toán 2:Procedure tính giá trị của đa thức (a0, a1, ..., an, x0: các số thực) P:=an for i:=1 to n P:=P.x0+an-i{P là giá trị của đa thức P(x) tại x0} Ta hãy xét độ phức tạp của hai thuật toán trên. Đối với thuật toán 1: ở bước 2, phải thực hiện 1 phép nhân và 1 phép cộngvới i=1; 2 phép nhân và 1 phép cộng với i=2, ..., n phép nhân và 1 phép cộng vớii=n. Vậy số phép tính (nhân và cộng) mà thuật toán 1 đòi hỏi là: ...
Nội dung trích xuất từ tài liệu:
THUẬT TOÁN – PHẦN 2 THUẬT TOÁN – PHẦN 2ĐỘ PHỨC TẠP CỦA THUẬT TOÁN.1.3.1. Khái niệm về độ phức tạp của một thuật toán: Thước đo hiệu quả của một thuật toán là thời gian mà máy tính sử dụng đểgiải bài toán theo thuật toán đang xét, khi các giá trị đầu vào có một kích thướcxác định. Một thước đo thứ hai là dung lượng bộ nhớ đòi hỏi để thực hiện thuậttoán khi các giá trị đầu vào có kích thước xác định. Các vấn đề nh ư thế liên quanđến độ phức tạp tính toán của một thuật toán. Sự phân tích thời gian cần thiết đểgiải một bài toán có kích thước đặc biệt nào đó liên quan đến độ phức tạp thời giancủa thuật toán. Sự phân tích bộ nhớ cần thiết của máy tính li ên quan đến độ phứctạp không gian của thuật toán. Vệc xem xét độ phức tạp thời gian và không giancủa một thuật toán là một vấn đề rất thiết yếu khi các thuật toán được thực hiện.Biết một thuật toán sẽ đưa ra đáp số trong một micro giây, trong một phút hoặctrong một tỉ năm, hiển nhiên là hết sức quan trọng. Tương tự như vậy, dung lượngbộ nhớ đòi hỏi phải là khả dụng để giải một bài toán,vì vậy độ phức tạp khônggian cũng cần phải tính đến.Vì việc xem xét độ phức tạp không gian gắn liền vớicác cấu trúc dữ liệu đặc biệt được dùng để thực hiện thuật toán nên ở đây ta sẽ tậptrung xem xét độ phức tạp thời gian. Độ phức tạp thời gian của một thuật toán có thể được biểu diễn qua số cácphép toán được dùng bởi thuật toán đó khi các giá trị đầu vào có một kích thướcxác định. Sở dĩ độ phức tạp thời gian được mô tả thông qua số các phép toán đòihỏi thay vì thời gian thực của máy tính là bởi vì các máy tính khác nhau th ực hiệncác phép tính sơ cấp trong những khoảng thời gian khác nhau. Hơn nữa, phân tíchtất cả các phép toán thành các phép tính bit sơ cấp mà máy tính sử dụng là điều rấtphức tạp.Thí dụ 3: Xét thuật toán tìm số lớn nhất trong dãy n số a1, a2, ..., an. Có thể coikích thước của dữ liệu nhập là số lượng phần tử của dãy số, tức là n. Nếu coi mỗilần so sánh hai số của thuật toán đòi hỏi một đơn vị thời gian (giây chẳng hạn) thìthời gian thực hiện thuật toán trong trường hợp xấu nhất là n-1 giây. Với dãy 64số, thời gian thực hiện thuật toán nhiều lắm là 63 giây.Thí dụ 4:Thuật toán về trò chơi “Tháp Hà Nội” Trò chơi “Tháp Hà Nội” như sau: Có ba cọc A, B, C và 64 cái đĩa (có lỗ đểđặt vào cọc), các đĩa có đường kính đôi một khác nhau. Nguyên tắc đặt đĩa vàocọc là: mỗi đĩa chỉ được chồng lên đĩa lớn hơn nó. Ban đầu, cả 64 đĩa được đặtchồng lên nhau ở cột A; hai cột B, C trống. Vấn đề là phải chuyển cả 64 đĩa đósang cột B hay C, mỗi lần chỉ được di chuyển một đĩa. Xét trò chơi với n đĩa ban đầu ở cọc A (cọc B và C trống). Gọi Sn là số lầnchuyển đĩa để chơi xong trò chơi với n đĩa. Nếu n=1 thì rõ ràng là S1=1. Nếu n>1 thì trước hết ta chuyển n-1 đĩa bên trên sang cọc B (giữ yên đĩathứ n ở dưới cùng của cọc A). Số lần chuyển n-1 đĩa là Sn-1. Sau đó ta chuyển đĩathứ n từ cọc A sang cọc C. Cuối cùng, ta chuyển n-1 đĩa từ cọc B sang cọc C (sốlần chuyển là Sn-1). Như vậy, số lần chuyển n đĩa từ A sang C là: Sn=Sn-1+1+Sn=2Sn-1+1=2(2Sn-2+1)+1=22Sn-2+2+1=.....=2n-1S1+2n-2 +...+2+1=2n1. Thuật toán về trò chơi “Tháp Hà Nội” đòi hỏi 2641 lần chuyển đĩa (xấp xỉ18,4 tỉ tỉ lần). Nếu mỗi lần chuyển đĩa mất 1 giây thì thời gian thực hiện thuật toánxấp xỉ 585 tỉ năm! Hai thí dụ trên cho thấy rằng: một thuật toán phải kết thúc sau một số hữuhạn bước, nhưng nếu số hữu hạn này quá lớn thì thuật toán không thể thực hiệnđược trong thực tế. Ta nói: thuật toán trong Thí dụ 3 có độ phức tạp là n-1 và là một thuật toánhữu hiệu (hay thuật toán nhanh); thuật toán trong Thí dụ 4 có độ phức tạp là 2n1và đó là một thuật toán không hữu hiệu (hay thuật toán chậm).1.3.2. So sánh độ phức tạp của các thuật toán: Một bài toán thường có nhiều cách giải, có nhiều thuật toán để giải, cácthuật toán đó có độ phức tạp khác nhau. Xét bài toán: Tính giá trị của đa thức P(x)=anxn+an-1xn-1+ ... +a1x+a0 tại x0.Thuật toán 1:Procedure tính giá trị của đa thức (a0, a1, ..., an, x0: các số thực) sum:=a0 for i:=1 to n sum:=sum+aix0i{sum là giá trị của đa thức P(x) tại x0} Chú ý rằng đa thức P(x) có thể viết dưới dạng: P(x)=(...((anx+an-1)x+an-2)x...)x+a0. Ta có thể tính P(x) theo thuật toán sau:Thuật toán 2:Procedure tính giá trị của đa thức (a0, a1, ..., an, x0: các số thực) P:=an for i:=1 to n P:=P.x0+an-i{P là giá trị của đa thức P(x) tại x0} Ta hãy xét độ phức tạp của hai thuật toán trên. Đối với thuật toán 1: ở bước 2, phải thực hiện 1 phép nhân và 1 phép cộngvới i=1; 2 phép nhân và 1 phép cộng với i=2, ..., n phép nhân và 1 phép cộng vớii=n. Vậy số phép tính (nhân và cộng) mà thuật toán 1 đòi hỏi là: ...
Tìm kiếm theo từ khóa liên quan:
toán cao cấp tài liệu toán cao cấp giáo trình toán cao cấp lý thuyết toán cao cấp tự học toán cao cấpGợi ý tài liệu liên quan:
-
Hướng dẫn giải bài tập Đại số tuyến tính: Phần 1
106 trang 209 0 0 -
Hình thành hệ thống điều khiển trình tự xử lý các toán tử trong một biểu thức logic
50 trang 157 0 0 -
4 trang 101 0 0
-
Giáo trình Toán học cao cấp (tập 2) - NXB Giáo dục
213 trang 90 0 0 -
Bài giảng Toán cao cấp - Chương 1: Các khái niệm cơ bản của lý thuyết xác suất
16 trang 77 0 0 -
Giáo trình Toán kinh tế: Phần 2
60 trang 65 0 0 -
BÀI TẬP TỔNG HỢP - QUY HOẠCH TUYẾN TÍNH
3 trang 62 0 0 -
Đề thi và đáp án môn: Toán cao cấp A1
3 trang 54 0 0 -
Bài giảng Toán cao cấp - Nguyễn Quốc Tiến
54 trang 52 0 0 -
Đề thi kết thúc môn Toán cao cấp năm 2020-2021
8 trang 52 0 0