1. Trang chủ
  2. » Giáo Dục - Đào Tạo

đề cương ôn tập môn phân tích, thiết kế và đánh giá thuật toán

30 3,1K 14
Tài liệu đã được kiểm tra trùng lặp

Đ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

Định dạng
Số trang 30
Dung lượng 1,76 MB

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

Nội dung

Trình bày thuật toán tìm kiếm tuyến tính các bước, sơ đồ thuật toán, độ phức tạp, … Các bước: - Duyệt qua các phần tử của mảng - Nếu tìm thấy phần tử có khóa bằng khóa tìm kiếm thì trả v

Trang 1

1 Đề cương ôn tập môn Phân tích, thiết kế và đánh giá thuật toán

Lý thuyết:

1 Thuật toán là gì? Tính chất, cách biểu diễn, độ phức tạp?

a Thuật toán là cách thức, quy trình để hoàn thành 1 công việc cụ thể xác định nào đó

b Tính chất:

- Tính đúng đắn: Thuật toán cần phải đảm bảo cho một kết quả đúng sau khi thực hiện đốivới các bộ dữ liệu đầu vào

- Tính dừng: Thuật toán cần phải đảm bảo sẽ dừng sau 1 số bước hữu hạn bước

- Tính xác định: Các bước của thuật toán phải được hiểu rõ ràng, cụ thể, tránh gây nhậpnhằng hoặc nhầm lẫn đối với người đọc và hiểu, cài đặt thuật toán

- Tính hiệu quả: thuật toán được xem là hiệu quả nếu như nó có khả năng giải quyets hiệuquả bài toán đặt ra trong thời gian hoặc các điều kiện cho phép trên thực tế đáp ứng đượcyêu cầu của người dùng

- Tính phổ quát: thuật toán có thể giải quyết được 1 lớp các bài toán tương tự

c Cách biểu diễn: có 2 cách biểu diễn thuật toán:

- Mô tả các bước thực hiện của thuật toán

- Sử dụng sơ đồ giải thuật

d Độ phức tạp:

Các tiêu chí đánh giá thuật toán:

+ Thuật toán đơn giản, dễ hiểu, dễ cài đặt

+ Dựa vào thời gian thực hiện và tài nguyên mà thuật toán sử dụng để thực hiện trêncác bộ dữ liệu

2 Thế nào là bài toán tìm kiếm? (định nghĩa, đầu vào, đầu ra, mục đích, …)

Tìm kiếm là 1 trong những vấn đề thuộc lĩnh vực nghiên cứu của ngành khoa học máy tính và đượcứng dụng rộng rãi trên thực tế

Chúng ta quan tâm đến bài toán tìm kiếm trên 1 mảng, hoặc 1 danh sách các phần tử cùng kiểuKết quả tìm kiếm là vị trí của phần tử thỏa mãn điều kiện tìm kiếm: có trường khóa bằng với 1 giá trịkhóa cho trước Từ vị trí này chúng ta có thể truy cập tới các thông tin khác được chứa trong trường

dữ liệu của phần tử tìm thấy Nếu kết quả là không tìm thấy thì giá trị trả về sẽ được gán cho một giátrị đặc biệt nào đó tương đương với việc không tồn tại phần tử nào có vị trí đó: chẳng hạn – 1 vớimảng và NULL với danh sách liên kết

Có nhiều thuật toán tìm kiếm như: tìm kiếm vét cạn, tìm kiếm tuần tự, tìm kiếm nhị phân, v.v.v v

3 Trình bày thuật toán tìm kiếm tuyến tính (các bước, sơ đồ thuật toán, độ phức tạp, …)

Các bước:

- Duyệt qua các phần tử của mảng

- Nếu tìm thấy phần tử có khóa bằng khóa tìm kiếm thì trả về vị trí của phần tử đó Ngược lạikhông tìm thấy thì trả về -1

Sơ đồ thuật toán:

Trang 2

2 Đề cương ôn tập môn Phân tích, thiết kế và đánh giá thuật toán

Độ phức tạp thuật toán trong trường hợp trung bình và tồi nhất: O(n).

Trong trường hợp tốt nhất thuật toán có độ phức tạp O(1).

4 Bài toán sắp xếp là gì? (định nghĩa, đầu vào, đầu ra, mục đích, …)

Sắp xếp là 1 quá trình xếp đặt các bản ghi của 1 file theo một thứ tự nào đó Việc xếp đặt đựợc thựchiện dựa trên một hay nhiều trường nào đó, và các thông tin này được gọi là khóa sắp xếp (key) Hầu hếtcác thuật toán sắp xếp được gòi là các thuật toán sắp xếp so sánh: chúng sử dụng 2 thao tác cơ bản là

so sánh và đổi chỗ (swap) các phần tử cần sắp xếp

Các bài toán sắp xếp đơn giản được chia thành: sắp xếp trong (dữ liệu cần sắp xếp được lưu đầy đủtrong bộ nhớ trong để thực hiện thuật toán sắp xếp), sắp xếp ngoài (Dữ liệu sắp xếp có kích thướcquá lớn và không thể lưu vào bộ nhớ trong để sắp xếp, các thao tác truy cập dữ liệu cũng mất nhiềuthời gian hơn), sắp xếp gián tiếp (khi kích thước các bản ghi lớn và việc hoán đổi các bản ghi là rấttốn kém)

5 Trình bày thuật toán sắp xếp chọn trực tiếp (mô tả thuật toán, cài đặt, độ phức tạp, ví dụ)

Mô tả thuật toán: Tìm phần tử lớn nhất (nhỏ nhất), đặt nó vào đúng vị trí và sau đó sắp xếp phầncòn lại của mảng

Sơ đồ thuật toán:

Trang 3

3 Đề cương ôn tập môn Phân tích, thiết kế và đánh giá thuật toán

Trang 4

4 Đề cương ôn tập môn Phân tích, thiết kế và đánh giá thuật toán

6 Trình bày thuật toán sắp xếp chèn (mô tả thuật toán, cài đặt, độ phức tạp, ví dụ)

Thuật toán dựa vào thao tác chính là chèn mỗi khóa vào một dãy con đã được sắp xếp của dãy cầnsắp xếp Phương pháp này thường được sử dụng trong việc sắp xếp các cây bài trong quá trình chơibài

Sơ đồ thuật toán:

Trang 5

5 Đề cương ôn tập môn Phân tích, thiết kế và đánh giá thuật toán

Cài đặt thuật toán bằng C:

Ví dụ:

Độ phức tạp: O(n2)

7 Trình bày thuật toán sắp xếp nổi bọt (mô tả thuật toán, cài đặt, độ phức tạp, ví dụ)

Thuật toán dựa trên việc so sánh và đổi chỗ 2 phần tử ở kề nhau:

- Duyệt qua danh sách các bản ghi cần sắp xếp theo thứ tự, đổi chỗ 2 phần tử kề nhau nếuchúng không có thứ tự

- Lặp lại điều này cho tới khi không có 2 bản ghi nào sai thứ tự

Sơ đồ thuật toán:

void insertion_sort(int a[],int n)

Trang 6

6 Đề cương ôn tập môn Phân tích, thiết kế và đánh giá thuật toán

Độ phức tạp:O(n2)

Ví dụ:

Trang 7

7 Đề cương ôn tập môn Phân tích, thiết kế và đánh giá thuật toán

Cài đặt bằng C:

8 Trình bày thuật toán sắp xếp đổi chỗ (mô tả thuật toán, cài đặt, độ

9 ttphức tạp, ví dụ)

Mô tả thuật toán: Bắt đầu xét phần tử đầu tiên a[i] với i=0, ta xét tất cả các phần tử đứng sau a[i] gọi

là a[j] với j nằm trong đoạn [i+1; n-1] Với mỗi cặp a[i], a[j] đó, nếu có sự sai khác giữa a[i] và a[j]thì đổi chỗ a[i] và a[j]

Cài đặt thuật toán:

Sơ đồ thuật toán:

void bubble_sort(int a[],int n)

Trang 8

8 Đề cương ôn tập môn Phân tích, thiết kế và đánh giá thuật toán

Ví dụ: Giả sử mảng ban đầu là int a[]={2, 6, 1, 19, 3, 12} thì thuật toán sẽ thực hiện như sau:

10.Trình bày thuật toán sắp xếp vun đống (heap-sort) (mô tả thuật toán, cài đặt, độ phức tạp, ví dụ)

Mô tả thuật toán:

và coi như mảng bây giờ có kích thước là n-1 và quay trở lại xem xét phần đầu của mảng đã không là 1heap nữa

Trang 9

9 Đề cương ôn tập môn Phân tích, thiết kế và đánh giá thuật toán

11 Thế nào là giải thuật đệ quy? Ưu, nhược điểm của đệ quy? Cách khử đệ quy Ví dụ

- Đệ quy là cách định nghĩa một đối tượng dựa trên chính nó, hay cụ thể hơn là trên các thểhiện cụ thể, đơn giản của nó 1 hàm đệ quy là 1 hàm mà trong thân hàm có lời gọi tới chính nó (số lượng

và vị trí không hạn chế)

Ưu điểm của đệ quy: Chương trình ngắn gọn và đẹp hơn

Nhược điểm của đệ quy: Tốn vùng nhớ, thời gian truyền đối mục, thiết lập vùng nhớ trung gian vàtrả về kết quả

Cách khử đệ quy:

- Khử đệ quy bằng vòng lặp

- Khử đệ quy bằng đệ quy arsac

Ví dụ: Hàm tính số fibonaci thứ n

12 Thế nào là chiến lược vét cạn? Ưu, nhược điểm của vét cạn? Ví dụ

Chiến lược vét cạn là thử tất cả các khả năng xem khả năng nào là nghiệm đúng của bài toán cần giảiquyết

Ví dụ giải bài toán in ra tất cả các số nguyên tố 4 chữ số abcd sao cho ab=cd được thực hiện bằngthuật toán vét cạn như sau:

void heapsort(int *A, int n)

Trang 10

10 Đề cương ôn tập môn Phân tích, thiết kế và đánh giá thuật toán

Ưu điểm: Tìm ra nghiệm 1 cách chắc chắn đầy đủ, có thể áp dụng cho mọi loại bài toán

Nhược điểm: Số bước tính toán lớn và do vậy sẽ tốn thời gian để tìm nghiệm bài toán

13 Thế nào là chiến lược quay lui? Ưu, nhược điểm của quay lui? Ví dụ

Chiến thuật quay lui tương tự như chiến lược vét cạn song có 1 điểm khác: nó lưu lại các trạng tháitrên con đường đi tìm nghiệm của bài toán, nếu tới 1 bước nào đó không thể tiến hành tiếp, thuật toán

sẽ quay lui về trạng thái trước đó và lựa chọn các khả năng khác

Ưu điểm: Thuật toán tìm ra được tất cả các nghiệm của bài toán 1 cách dễ dàng, có thể áp dụng chocác bài toán với kích thước input nhỏ

Nhược điểm: Tốn nhiều thời gian cho phép thử nghiệm

Ví dụ: Sinh các dãy nhị phân độ dài N (N<=20)

14 Thế nào là chiến lược chia để trị? Ưu, nhược điểm của chia để trị? Ví dụ

Thuật toán chia để trị thực hiện chia bài toán thành các bài toán nhỏ hơn, giải các bài toán nhỏ hơn

đó, sau đó kết hợp nghiệm của các bài toán nhỏ hơn đó lại thành nghiệm của bài toán ban đầu

Ưu điểm: Số lượng công việc để tìm nghiệm bài toán sẽ giảm đi nên tốc độ thực hiện thuật toánnhanh

Nhược điểm: Khó tách hợp lý bài toán thành các bài toán con và việc kết hợp lời giải của các bài toáncon sẽ khó thực hiện

Trang 11

11 Đề cương ôn tập môn Phân tích, thiết kế và đánh giá thuật toán

Mô tả thuật toán: thuật toán được thực hiện qua 3 bước:

- Selection: Chọn 1 phần tử gọi là phần tử quay (pivot)

- Partition (phân hoạch): đặt tất cả các phần tử của mảng < phần tử quay sang bên trái vàngược lại là sang bên phải phần tử quay Phần tử quay trở thành phần tử có vị trí đúngtrong mảng

- Đệ quy: gọi tới chính thủ tục sắp xếp nhanh đối với 2 nửa mảng nằm 2 bên phần tử quay

Do ngẫu nhiên, phần tử chốt a[4] = 7 là phần tử lớn nhất trong dãy, ta tìm từ trái sang phải không có

phần tử nào lớn hơn phần tử chốt, do đó ta đổi phần tử chốt với phần tử cuối cùng, danh sách được

chia thành hai danh sách con a[1 6] và a[7 7]

Trang 12

12 Đề cương ôn tập môn Phân tích, thiết kế và đánh giá thuật toán

Tiếp tục phân chia a[3 4] với phần tử chốt a[4] = 4 và a[5 6] với phần tử chốt a[6] = 5 ta được

1 2 3 4 5 6 7

Độ phức tạp: O(n*log(n))

Cài đặt:

16 Trình bày thuật toán tìm kiếm nhị phân?(mô tả thuật toán, cài đặt, độ phức tạp, ví dụ)

Mô tả thuật toán:

- Input: mảng a[] đã được sắp xếp, có khóa tìm kiếm k

- Output: vị trí của phần tử có khóa bằng k

void quicksort(int *A, int l, int r)

Trang 13

13 Đề cương ôn tập môn Phân tích, thiết kế và đánh giá thuật toán

Cài đặt:

Độ phức tạp:O(log(n))

17 Trình bày chiến lược quy hoạch động?Ưu, nhược điểm? Ví dụ

Quy hoạch động là 1 phương pháp giải bài toán bằng cách kết hợp các lời giải cho các bài toán concủa nó giống như phương pháp chia để trị Quy hoạc động được áp dụng khi các bài toán con của bàitoán ban đầu không độc lập với nhau, chúng có chung các bài toán con nhỏ hơn Trong trường hợpnhư vậy 1 thuật toán chia để trị sẽ thực hiện nhiều việc hơn những gì thực sự cần thiết, nó sẽ lặp lạiviệc giải quyết các bài toán con nhỏ hơn đó 1 thuật toán quy hoạch động sẽ chỉ giải quyết tất cả cácbài toán con nhỏ 1 lần duy nhất sau đó lưu kết quả vào 1 bản ghi và điều này giúp nó tránh khôngphải tính toán lại các kết quả mỗi khi gặp 1 bài toán con nhỏ nào đó

Quy hoạch động thường được áp dụng cho các bài toán tối ưu, trong các bài toán đó thường có nhiềunghiệm, mỗi nghiệm có 1 giá trị được lượng giá bằng cách sử dụng 1 hàm đánh giá tùy thuộc vào cácbài toán cụ thể và yêu cầu của bài toán là tìm ra 1 nghiệm có giá trị của hàm đánh giá là tối ưu

Ưu điểm: Dễ cài đặt, tốc độ thực hiện bài toán nhanh

Nhược điểm: Tốn bộ nhớ do cần lưu lại kết quả của bài toán con

18 Trình bày bài toán tìm dãy con chung dài nhất

Dãy con là dãy được định nghĩa là 1 tập con các ký tự của dãy (giữ nguyên thứ tự)

Giả sử ta có 2 dãy ký tự X[n] và Y[m]

Bước 1: Xác định đặc điểm của dãy con chung dài nhất:

- Giả sử chúng ta đã có lời giải Z[1 k]

- Nếu 2 ký tự cuối cùng của X và Y trùng nhau thì đó cũng là ký tự cuối cùng của Z

- Phần còn lại của Z khi đó sẽ là xâu con chung dài nhất của X[1 n-1] và Y[1 m-1]

- Nếu 2 ký tự cuối cùng của X và Y không trùng nhau thì một trong số chúng sẽ không nằm trong

Bước 2: Xây dựng công thức truy hồi tính độ dài lớn nhất của dãy con của 2 dãy

- Gọi C[i][j] là độ dài dãy con lớn nhất của 2 dãy X[1 i] và Y[1 j]

int binary_search(int a[], int left, int right, int key)

Trang 14

14 Đề cương ôn tập môn Phân tích, thiết kế và đánh giá thuật toán

- C[i][0] = C[0][j] với mọi i, j

- Lời giải của bài toán chính là C[n][m]

- Công thức truy hồi

[ 1][ 1] 1(1)[ ][ ]

- Trường hợp 1 là khi X[i] = Y[j], ngược lại là trường hợp 2

Bước 3: Xây dựng thuật toán tìm dãy con chung dài nhất của 2 dãy X[1 n] và Y[1 m]

Bước 4: Tìm dãy con dài nhất của X[1 n] và Y[1 m]

Ta dùng 1 mảng D[i][j] trỏ ngược tới (i, j-1) hoặc (i-1, j) hoặc (i-1, j-1) và lần ngược từ D[m][n] D[i][j] = 1 (Trên trái) nếu C[i][j] = 1 + C[i-1][j-1]

D[i][j] = 2 (Trên) nếu C[i][j] = C[i-1][j]

Trang 15

15 Đề cương ôn tập môn Phân tích, thiết kế và đánh giá thuật toán

D[i][j] = 3 (Trái) nếu C[i][j] = C[i][j-1]

19 Trình bày bài toán nhân ma trận

Để giảm số phép nhân cần dùng chúng ta sẽ tránh tạo ra các ma trận trung gian có kích thước lớn và

do phép nhân ma trận có tính kết hợp nên có thể đạt được điều này bằng cách sử dụng các dấu đóng

mở ngoặc để chỉ ra thứ tự phép nhân giữa các ma trận Bên cạnh đó phép nhân ma trận không đốixứng nên không thể hoán vị thứ tự của chúng mà không làm thay đổi kết quả

Nếu có n ma trận thì sẽ có n+1 số nguyên là kích thước của chúng và sẽ có tổ hợp chập 2 của n phần

tử các xâu con (mỗi xâu tương ứng với mỗi thứ tự của các dấu ngoặc) giữa 1 và n nên chỉ cần dùng

O(n2) không gian nhớ để lưu kết quả các bài toán con

Chiến lược tham lam cũng giống như các thuật toán quy hoạch động thường được sử dụng để giải cácbài toán tối ưu (tìm nghiệm của bài toán tốt nhất theo 1 tiêu chí nào đó) Các thuật toán quy hoạchđộng luôn cho 1 nghiệm tối ưu Các thuật toán tham lam thực hiện các lựa chọn tối ưu cục bộ với hyvọng các lựa chọn đó sẽ dẫn đến 1 nghiệm tối ưu toàn cục cho bài toán cần giải quyết

Ưu điểm: dễ cài đặt (độ phức tạp thời gian thường là hàm tuyến tính hoặc cùng lắm là bậc 2) Dễ gỡlỗi và sử dụng ít bộ nhớ

Nhược điểm: Không phải lúc nào chúng cũng cho các lời giải tối ưu

Ví dụ: Dãy số (3, 4, 5, 17, 7, 8, 9) cần chọn ra dãy con của nó sao cho dãy con đó là một dãy đơnđiệu tăng Dễ dàng thấy kết quả đúng là (3, 4, 5, 7, 8, 9) Tuy nhiên theo cách chọn tham ăn sau khichọn xong 3 phần tử đầu là 3, 4, 5 sẽ chọn tiếp phần tử 17, phần tử hợp thành 1 dãy tăng dài hơn đốivới các phần tử được chọn trước đó và kết quả là 3, 4, 5, 17 Nhưng kết quả này không phải là đúng

21.Trình bày bài toán sắp lịch các sự kiện

Trang 16

16 Đề cương ôn tập môn Phân tích, thiết kế và đánh giá thuật toán

Một phòng học chỉ có thể sử dụng cho 1 lớp học tại 1 thời điểm Có n lớp học muốn sử dụng phònghọc, mỗi lớp học có 1 lịch học được cho bởi 1 khoảng thời gian Ij=[sj, fj] Mục đích của bài toán làtìm một lịch học sao cho số lượng lớp học có thể sử dụng phòng học là lớn nhất có thể được vàkhông có 2 lớp nào cùng sử dụng phòng học tại 1 thời điểm

Gọi Si, j là tập các lớp học bắt đầu sau thời điểm fi và kết thúc trước thời điểm Sj, có nghĩa là các lớpnày có thể được sắp xếp giữa các lớp Ci và Cj

Chúng ta có thể thêm vào 2 lớp giả định C0 và Cn+1 với f0= −∞ và Sn+1 =+∞ Khi đó giá trị S0, n+1 sẽ làtập chứa tất cả các lớp

Giả sử lớp Ck là 1 phần của lịch học tối ưu của các lớp nằm trong Si, j khi đó i < k < j và lịch học tối

ưu bao gồm tập con lớn nhất của Si, k, {Ck}, và 1 tập con lớn nhất của Sk, j

Thực hiện 1 lựa chọn tham lam:

Bổ đề 1: Tồn tại 1 lịch học (thời khóa biểu) tối ưu cho tập Si, j chứa lớp Ck trong Si, j kết thúc đầu tiên,

có nghĩa là lớp Ck trong Si, j với giá trị chỉ số k nhỏ nhất

Bổ đề 2: Nếu chọn lớp Ck như bổ đề 1 thì tập Si, k sẽ là tập rỗng

Bài tập:

1 Cho cấu trúc sinh viên gồm các trường: tên, tuổi, địa chỉ, … Khai báo cấu trúc trên để có thể lưuđược danh sách sinh viên theo mảng Cài đặt hàm sắp xếp mảng sinh viên tăng dần (hoặc giảm dần)theo tuổi, cùng tuổi theo tên Áp dụng giải thuật sắp xếp chọn (hoặc chèn, hoặc nổi bọt, hoặc đổi chỗ,

Trang 17

17 Đề cương ôn tập môn Phân tích, thiết kế và đánh giá thuật toán

}

//sap xep theo chieu tang dan

void xep(svien sv[], int n)

typedef struct node *listnode;

//Cap phat bo nho

listnode getnode()

{

listnode p;

p=(listnode)malloc(sizeof(struct node));

Trang 18

18 Đề cương ôn tập môn Phân tích, thiết kế và đánh giá thuật toán

p->next=NULL;

return p;

}

//Chen 1 phan tu vao dau ds

void them(nhanvien nv,listnode *list)

printf("\nNhap nhan vien thu %d:\n",i+1);

printf("Ten nhan vien: ");

Ngày đăng: 03/02/2015, 15:43

HÌNH ẢNH LIÊN QUAN

Sơ đồ thuật toán: - đề cương ôn tập môn phân tích, thiết kế và đánh giá thuật toán
Sơ đồ thu ật toán: (Trang 2)
Sơ đồ thuật toán: - đề cương ôn tập môn phân tích, thiết kế và đánh giá thuật toán
Sơ đồ thu ật toán: (Trang 4)
Sơ đồ thuật toán: - đề cương ôn tập môn phân tích, thiết kế và đánh giá thuật toán
Sơ đồ thu ật toán: (Trang 5)
Sơ đồ thuật toán: - đề cương ôn tập môn phân tích, thiết kế và đánh giá thuật toán
Sơ đồ thu ật toán: (Trang 7)

TỪ KHÓA LIÊN QUAN

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

w