1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bài giảng Phân tích thiết kế giải thuật: Chương 3 - Trịnh Huy Hoàng

21 1 0

Đ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

Tiêu đề Chương 3: Kỹ thuật tối ưu hóa chương trình
Tác giả Trịnh Huy Hoàng
Trường học Đại học Sư phạm Thành phố Hồ Chí Minh
Chuyên ngành Kỹ thuật tối ưu hóa chương trình
Thể loại Bài giảng
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 21
Dung lượng 193,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trong lĩnh vực Công Nghệ Thông Tin nói riêng, yêu cầu quan trọng nhất của người học đó chính là thực hành. Có thực hành thì người học mới có thể tự mình lĩnh hội và hiểu biết sâu sắc với lý thuyết. Với ngành mạng máy tính, nhu cầu thực hành được đặt lên hàng đầu. Tuy nhiên, trong điều kiện còn thiếu thốn về trang bị như hiện nay, người học đặc biệt là sinh viên ít có điều kiện thực hành. Đặc biệt là với các thiết bị đắt tiền như Router, Switch chuyên dụng

Trang 1

Chương 3:

Kỹ thuật tối ưu hóa chương trình

Trịnh Huy HoàngKhoa Công nghệ thông tinĐại học Sư phạm TPHCM

Trang 2

Nội dung

 Các mức thiết kế một chương trình

 Các kỹ thuật tối ưu hóa chương trình

– Kỹ thuật tinh chế mã

– Kỹ thuật tối ưu hóa rẽ nhánh

– Kỹ thuật tối ưu hóa các vòng lặp

– Tối ưu hóa chương trình bằng bảng truy cập

– Tối ưu bằng cách giảm thiểu gọi chương trình con

Trang 3

Các mức thiết kế một chương trình

1. Đặc tả bài toán

2. Thiết kế cấu trúc hệ thống

3. Cấu trúc dữ liệu và thuật toán

4. Tinh chế mã (tối ưu hóa chương trình)

5. Tính độ phức tạp của thuật toán

Trang 4

Lưu ý

+ Không nên mã hóa 1 chương trình ngay khi chỉ mới có ý tưởng đầu tiên mà phải xem xét tất cả các mức thiết kế có thể để chọn ra 1 thiết kế làm tăng tốc nhanh nhất với phí tổn ít nhất

+ Nên thử nhiều mức thiết kế khác nhau bằng

cách giải quyết bài toán trên nhiều mặt từ đó

chọn được 1 thiết kế tối ưu về không gian và thời gian

Trang 5

Kỹ thuật tinh chế mã

gian hoặc không gian (rất khó thực hiện

được cả hai), nếu muốn tối ưu cả hai khía

cạnh trên thì ta phải thay đổi thuật toán Ở

chương này ta xét các kỹ thuật tối ưu

chương trình về mặt cấu trúc, tìm 1 thuật giải

có độ phức tạp tốt nhất có thể

Trang 6

Ví dụ 1: Viết chương trình tính tổng S=1+x/1!+x2/2!+…+xn/n!

Trang 7

Kỹ thuật tối ưu hóa rẽ nhánh

A1 and A2 and …An theo xác suất sai của các điều kiện Aigiảm dần

A1 or A2 or …An theo xác suất đúng của các điều kiện Ai giảm dần

Trang 8

Ví dụ: Cho 2 dãy số nguyên A, B lần lượt có số phần tử là m và n A=B?

 if ((m=n)&& Chua(a,b) && Chua(b,a)

 printf(“Hai day bang nhau”);

 else

Trang 9

Ví dụ: Nhập số tự nhiên n, nếu n là số có 1 trong các tính chất (lẻ, nguyên tố, chính phương,

hoàn hảo) thì thực hiện S1, ngược lại S2

 if (le(n)||nguyento(n)||chinhphuong(n)||hoanhao(n))

 printf(“Thuc hien S1”);

 else

 printf(“Thuc hien S2”);

Trang 10

Kỹ thuật tối ưu hóa các vòng lặp

hiện nhiều hơn cho mỗi vòng lặp và chú ý vòng lặp ít hơn thì đặt ở ngoài

Trang 11

Ví dụ: Giải bài toán cổ (gà - chó…)

Trang 12

Kỹ thuật tối ưu hóa các vòng lặp

vào chỉ số lặp ra khỏi vòng lặp

Trang 14

Kỹ thuật tối ưu hóa các vòng lặp

Trang 16

Kỹ thuật tối ưu hóa các vòng lặp

Trang 17

Ví dụ:Cải tiến phương pháp sắp xếp

Trang 18

Tối ưu hóa chương trình bằng bảng truy cập

Newton ta có thể thiết kế đoạn chương trình sau:

 Int ckn(int k,int n)

 { if((k==0)||(k==n)) return 1;

 }

Trang 20

Tối ưu bằng cách giảm thiểu gọi

chương trình con

Trang 21

Ví dụ: tính (sinx+cosx)+ (sin2x+cos2x) +…+ (sinnx+cosnx)

Ngày đăng: 02/07/2023, 11:15

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm