báo cáo cuối kỳ toán rời rạc

47 0 0
Tài liệu đã được kiểm tra trùng lặp
báo cáo cuối kỳ toán rời rạc

Đ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

liChương trình = Thuật toán + Cấu trúc dữ liệu Chứng minh tính đúng của thuật toán: o Chiến lược chứng minh tính đúng của thuật toán: - Kiểm thử: Chạy th thuử ật toán v i các dớ ữ liệ u

Trang 2

2 | T r a n g

MỤC LỤC

1 Tóm lược một số chủ đề đã lĩnh hội được từ môn học (về lí thuyết, thuật toán và

ứng dụng) 4

1.1 Một số ế ki n thức cơ sở ề thuậ v t toán 4

1.2 Một số phương pháp thiết kế thuật toán cơ bản 5

1.2.1 Giải thuật đệ quy 5

1.2.2 Phương pháp chia để trị 6

1.2.3.Phương pháp quay lui (Back tracking) 8

1.2.4 Phương pháp nhánh cận 10

1.2.5 Phương pháp quy hoạch động (Dynamic Programing – DP) 10

1.2.6 Phương pháp tham lam 11

1.3.3 Mô hình và ng d ng cứụủa đồ thị trong bài toán thực tiễn 19

1.4 Bài toán tìm đường đi ngắn nhất 20

1.4.1 Bài toán tìm đường đi trên đồ thị 20

1.4.2 Bài toán tìm đường đi ngắn nhất trên đồ thị 21

1.6.2 Ý tưởng và lược đồ thuật toán 27

1.7 Cây nh phân 27

1.7.1 Khái niệm 27

1.7.2 M t s tính chộ ốất 28

Trang 4

4 | T r a n g

1 Tóm lược một số chủ đề đã lĩnh hội đượ ừ c t môn h c (v lí thuy t, thu t toán và ọềếậứng dụng)

1.1 Một số ế ki n thức cơ sở ề thuậ v t toán

“Giải bài toán bằng thuật toán” là quá trình thực hiện chương trình bằng cách dùng thuật toán kết hợp c u trúc d ấ ữ ệu li

Chương trình = Thuật toán + Cấu trúc dữ liệu

Chứng minh tính đúng của thuật toán:

o Chiến lược chứng minh tính đúng của thuật toán: - Kiểm thử: Chạy th thuử ật toán v i các dớ ữ liệ u vào c ụ thể- Chứng minh tính đúng: Chứng minh bằng toán học - Kết hợp kiểm thử và chứng minh tính đúng => hiệu quả hơn

Trang 5

5 | T r a n g

o Các phương pháp chứng minh tính đúng: - Đố ới v i thuật toán đệ quy: Dùng quy nạp

- Đố ới v i thuật toán không đệ quy: Tính đúng nằm các vòng lặp, sử d ng bất ở ụbi n vòng l p ế ặ

Xác định tính hiệu quả c a thuật toán: ủ

Độ phức tạp th i gian: S ờ ố lượng các bước tính toán

Độ phức tạp không gian: Tài nguyên sẽ được sử ụ d ng khi thu t toán thi hành ậ1.2 Một số phương pháp thiết kế thuật toán cơ bản

1.2.1 Giải thuật đệ quy

1.2.1.1 Các đặc trưng cơ bản

Giải thuật đệ quy

Nếu một bài toán T được th c hi n b ng gi i thu t c a mự ệ ằ ả ậ ủ ột bài toán T’ có dạng giống như T.

Tính dừng:

o T’ phải đơn giản hơn T

o T’ giải được (không cần đệ quy) trong một số trường hợp nào đó (suy biến) Đặc trưng của các bài toán có thể giải bằng đệ quy

Các bài toán ph thu c tham s ụ ộ ố

Ứng với các giá trị đặc biệt nào đó của tham số thì bài toán có giải thuật để giải (trường h p suy biến) ợ

Trong trường h p t ng quát bài toán có th quy v dợ ổ ể ề ạng tương tự với m t b giá tr ộ ộ ịmới của tham s và sau h u h n l n s d n tố ữ ạ ầ ẽ ẫ ới trường h p suy biợ ến.

Trang 6

6 | T r a n g

1.2.1.2 Lược đồ thuật toán

1.2.1.3 Xác định quan hệ truy hồi trong phép đệ quy

Gọi T(n) là độ phức tạp c a giủ ải thuậ ệt đ quy với kích thước bài toán n c = const là độ phức tạp trong trường hợp suy bi n khi n = ế 𝑛0; T(𝑛0) = c

Với f(n) là hàm biến đổi tham s n, n u gi i thuố ế ả ật được th c hi n a l n bài toán con ự ệ ầv i tham s f(n) ớ ố thì:

T(n) = a.T(f(n)) + g(n) v g(n) ới là độ phức tạ các thao tác ngoài lời gọi đệp quy Công thức truy hồi xác định độ phức tạp gi i thuả ậ ệt đ quy

𝑇(𝑛) = { 𝑐 khi n = n0

𝑎 𝑇(𝑓(𝑛))+ 𝑔(𝑛) trườ hợp ngược lạing

1.2.2 Phương pháp chia để trị

1.2.2.1 Ý tưởng:

Phương pháp thiết kế thuật toán dựa trên 2 thao tác chính:

Chia (divide): phân rã bài toán ban đầu thành các bài toán con có kích thước nhỏ hơn, có cùng cách giải

Trị (conque): giải từng bài toán con (theo cách tương tự bài toán đầu - qui) rđệ ồi t ng h p các l i giổ ợ ờ ải để nh n k t qu c a bài toáậ ế ả ủ n ban đầu

Trang 7

7 | T r a n g

Việc “Phân rã”: thực hiện trên miền dữ liệu (chia miền dữ liệu thành các miền nhỏ hơn tương đương 1 bài toán con)

1.2.2.2 Mô hình, lược đồ: Xét bài toán P trên miền d u R ữ liệ

Gọi D&C (R) là thu t giậ ải P trên miền d ữ liệu R

Nếu R có th phân rã thành n mi n con (R= R1ể ề ∪R2∪…∪Rn)

Với R0 là miền đủ nhỏ để D&C(R0) có lời giải thì lược đồ ải thuật chia để trị: gi

1.2.2.3 Phân tích và đánh giá độ phức tạp thuật toán :

Xây d ng công th c truy hự ứ ồi đánh giá độ phức tạp thu t toán ậ Giải công thức truy hồi xác định độ phức tạp thuật toán

Phép th liên ti p ế ế S dử ụng định lí chính 1.2.2.4 Bài toán

Ví dụ: Sắp x p b ng thu t toán merge sort:ế ẳ ậ

Bài toán: S d ng thuử ụ ật toán chia để trị để giải bài toán săp xếp m t dãy s b ng ộ ố ằphương pháp merge sort

Trang 8

8 | T r a n g

Ý tưởng thuật toán:

Chia m ng l n thành nh ng m ng con nhả ớ ữ ả ỏ hơn bằng cách chia đôi mảng l n và ớtiếp tục chia đôi các mảng con cho đến khi m ng con nh nh t ch còn 1 ph n t ả ỏ ấ ỉ ầ ử So sánh 2 m ng con có cùng mả ảng cơ sở (khi chia đôi mảng lớn thành 2 mảng con

thì m ng l n ả ớ đó gọi là mảng cơ sở ủ c a 2 mảng con đó).

Khi so sánh chúng v a s p x p v a ghép 2 mừ ắ ế ừ ảng con đó lại thành mảng cơ sở, tiếp t c so sánh và ghép các m ng con lụ ả ại đến khi còn l i m ng duy nhạ ả ất, đó là mảng đã được sắp xếp

Đánh giá độ phức tạp thuật toán:

T(n) = 2T(n/2) + θ(n)Suy ra, độ phức tạp thuật toán ~ O(n*log n)

1.2.3.Phương pháp quay lui (Back tracking)

Theo nguyên tắc vét cạn, nhưng chỉ xét những trường hợp “khả quan”.

Trang 9

Dùng để ả gi i bài toán li t kê các c u hình: ệ ấ

Mỗi cấu hình được xây d ng bự ằng cách xác định t ng ph n t ừ ầ ử Mỗi phần t ử được chọn b ng cách th ằ ử các khả năng có thể Độ dài cấu hình tùy thu c bài toán ộ

o Xác định trước: sinh dãy độ dài n o Không xác định trước: đường đi

1.2.3.2 Lược đồ giải thuật

1.2.3.3 Đánh giá độ phức tạp

𝑇(𝑛) = { 1 𝑘ℎ𝑖 𝑛 ≤ 1𝑑𝑇(𝑛 − 1) + 1 𝑘ℎ𝑖 𝑛 > 1

d: max (hoặc giá trị trung bình) lực lượng c a t p kh ủ ậ ả năng của các thành ph n nghiầ ệm 𝑥𝑖

Trang 10

Lược đ ồthuật toán như sau:

1.2.5 Phương pháp quy hoạch động (Dynamic Programing – DP)

Trang 11

11 | T r a n g

Cách phát bi u khác: 1 bài toán gi i bể ả ằng QHĐ được phân rã thành các bài toán con và bài toán lớn hơn sẽ được gi i quy t thông qua các bài toán con này (b ng các ả ế ằphép truy hồi).

Phương pháp QHĐ thường dùng cho các bài toán tìm giá trị (hoặc giá trị tối ưu).

1.2.5.2 Các bước giải bài toán bằng QHĐ

Bước 1: Nhận dạng bài toán giải bằng QHĐ Bước 2: Xây dựng công thức truy h i ồBước 3: Xác định cơ sở QHĐ Bước 4: Dựng bảng phương ánBước 5: Tìm kết quả tối ưu

Bước 6: Truy vết liệt kê thành phần nghiệm

1.2.5.3 Đánh giá độ phức tạp

Độ phức tạp th i gian: ờ

Thời gian tính toán, xác định giá trị các phần tử trong bảng phương án, phụ thuộc vào s ố chiều của bảng phương án.

T(n) = O(𝑛𝑘) – k là s chiều cố ủa bảng phương án

Thời gian truy vết tìm nghiệm: Độ phức tạp thuật toán quay lui Độ phức tạp không gian

Kích thước bảng phương án - thường lớn

Giảm kích thước bảng phương án trong triển khai thuật toán

1.2.6 Phương pháp tham lam 1.2.6.1 Ý tưởng

Xây d ng l i gi i c a bài toán v i vi c ch p nh n nh ng l a chự ờ ả ủ ớ ệ ấ ậ ữ ự ọn “có vẻ” tốt nhất của từng giai đoạn

Lựa chọn tối ưu cục bộ => lời giả ối ưi t u toàn cục cho bài toán

Trang 12

12 | T r a n g

Hai tính chất mang l i hi u qu c a chiạ ệ ả ủ ến lược tham

Tính ch t cấ ủa sự ự l a ch n tham lam: M t gi i pháp tọ ộ ả ối ưu toàn cục có thể đạt được b ng cách th c hi n nh ng ch n lằ ự ệ ữ ọ ựa tối ưu cục bộ

Tính ch t c u trúc con tấ ấ ối ưu: Một gi i pháp tả ối ưu của bài toán chưa trong nó các giải pháp tối ưu của bài toán con

Để đạ t đư c những hiệu quả ợ đó thì sự ựa ch l ọn mở ỗi bước cần th a mãn: ỏ Khả thi: Thỏa mãn các ràng buộc của bài toán

Tối ưu cục bộ: Là lựa ch n t t nh t trong các lọ ố ấ ựa chọn khả thi

Không thể thay đổi: Một khi đã chọn, thì lựa chọn không thể thay đổi ở các bước tiếp theo

1.2.6.2 Lược đồ thuật toán

1.2.6.3 Độ phức tạp của thuật toán

Hai giai đoạn c a thuủ ật toán tham Xử lí dữ liệ u: T o tạ ập đối tượng A

o S p x p: O(nlogn) n=|A| ắ ếo Tính toán, cắt tỉa: O(n) o

Sinh nghiệm tối ưu o O(n)

Trang 13

1.2.7.2 Độ phức tạp của thuật toán

Tuyến tính theo kích thước dữ liệ u vào do x lí lử ần lượt, liên ti p ế

1.2.8 Phương pháp ngẫu nhiên 1.2.8.1 Ý tưởng

Đưa yếu tố ngẫu nhiên vào mỗi bước thực hiện thuật toán

Trang 14

14 | T r a n g

Có 2 dạng của thuật toán ng u nhiên: ẫ

Với bài toán tối ưu: đưa ra mộ ờt l i gi i t t nh t vả ố ấ ới th i gian trung bình tờ ốt nhất Với bài toán quyết định: lời giải có thể mắc sai sót nhưng với xác suất nh ph ỏ ụ

thuộc vào th i gian thực hiện ờ

Tính th a hi p: Ch p nh n k t qu v i m c tiêu hi u quỏ ệ ấ ậ ế ả ớ ụ ệ ả thời gian th c hi n thuự ệ ật toán

1.2.8.2 Phân lo i

Thuật toán ng u nhiên Monte Carlo: ẫ

Thuật toán áp dụng đối với các bài toán quyết định

Luôn cho ra lời gi i cả ủa bài toán, nhưng kết qu ả có thể có sai sót Xác suất cho ra l i giờ ải đúng tỉ ệ ới thờ l v i gian thực hiện Thuật toán ng u nhiên Las Vegas ẫ

Thuật toán áp dụng đối với các bài toán tối ưu Lời giải nhận được là tốt nhất (chính xác)

Thời gian thực hiện trung bình c a thuủ ật toán có giới hạn (tốt)1.3 Lý thuyết đồ thị

Trang 24

24 | T r a n g

1.4.2.3.2 Thuật toán Dijkstra

procedure Dijkstra(G: weighted connected simple graph, with all weights positive) {G has vertices a = v0, v1, , vn = z and lengths w(vi, vj ) where w(vi, vj ) = ∞ if {vi, vj } is not an edge in G}

for i := 1 n toL(vi) := ∞ L(a) := 0 S := ∅

{the labels are now initialized so that the label of a is 0 and all other labels are ∞, and S is the empty set}

while z ∈ S

u := a vertex not in S with L(u) minimal S := S {u} ∪

for all vertices v not in S

if L(u) + w(u, v) < L(v) then L(v) := L(u) + w(u, v)

{this adds a vertex to S with minimal label and updates the labels of vertices not in S}

return L(z) {L(z) = length of a shortest path from a to z} 1.5 Tô màu đồ thị

1.5.1 Định nghĩa

Trong Lý thuyết đồ thị, tô màu đồ thị (graph coloring) là trường hợp đặc bi t c a gán ệ ủnhãn đồ thị, mà trong đó mỗi đỉnh hay mỗi cạnh hay mỗi miền của đồ thị có thể được gán b i m t màu hay mở ộ ột tập hợp các màu nào đó Tô màu đồ thị có th là: ể

Tô màu đỉnh (vertex coloring) là gán cho mỗi đỉnh của đồ thị một màu nào đó sao cho không có hai đỉnh nào li n k l i trùng màu nhau; ề ề ạ

Trang 26

26 | T r a n g

1.5.3 Ý tưởng và tóm tắt thuật toán: Ý tưởng: sử dụng thuật toán tham lam Tóm t t thuắ ật toán:

Các bước của thuật toán:

Bước 1: Tính giá trị bậc của các đỉnh trong V Lập danh sách V’= [v1, v2, , vn] là các đỉnh của đồ thị được sắp xếp theo thứ tự bậc giảm dần: d(v1) > d(v2) > > d(vn) Ban đầu tấ ảt c các đỉnh trong V (V’) đều chưa được tô màu

Gán i := 1;

Bước 2: Tô màu i cho đỉnh đầu tiên trong danh sách V’ Duyệ ần lượt các đỉt l nh khác trong V’(nếu có) và chỉ tô màu i cho các đỉnh không kề đỉnh đã có màu i Bước 3: Kiểm tra nếu tất cả các đỉnh trong V đã được tô màu thì thuật toán kết

thúc, đồ thị đã sử ụng i màu để tô Ngượ d c lại, nếu vẫn còn đỉnh chưa được tô thì chuyển sang bước 4.

Bước 4: Loại khỏi danh sách V’ các đỉnh đã tô màu Sắp xếp lại các đỉnh trong V’ theo thứ t bự ậc giảm dần Gán i := i + 1 và quay lại bước 2.

1.5.4 Định hướng ng d ng: ứụ

Tô màu bản đồ: Trên các bản đồ, các mi n khác nhau (mi n ề ề ở đây được hi u là các ểqu c gia trên bố ản đồ thế ớ gi i hay các t nh trong m t bỉ ộ ản đồ hành chính quốc gia) được tô màu sao cho 2 mi n có chung biên giề ới không trùng màu nhau Đố ới v i bản đồ có nhiều miền, n u ta dùng m t s ế ộ ố lượng l n màu thì s r t khó phân bi t các mi n có màu g n gi ng ớ ẽ ấ ệ ề ầ ốnhau, vì th ế người ta chỉ dùng một số lượng màu nhất định để tô màu bản đồ Một bài toán được đặt ra là: có thể dùng ít nhất bao nhiêu màu để tô màu một bản đồ sao cho các miền k nhau không cùng m t màu ề ộ

Trò chơi Sudoku: Sudoku là một loại trò chơi logic, cách chơi là điền số từ 1 đến 9 vào nh ng ô tr ng sao cho mữ ố ỗ ộ ọi c t d c, mỗi hàng ngang, m i phân vùng nh ỗ ỏ (ô 3x3) có đủ các s tố ừ 1 đến 9 mà không đượ ặ ại Trò chơi có bảng câu đốc l p l hình vuông, m i chiỗ ều có 9 ô nh , h p thành 9 cỏ ợ ột, 9 hàng và được chia thành 9 ô l n 3x3 M t vài ô nhớ ộ ỏ được

Trang 27

27 | T r a n g

đánh số trước, đó là những manh mối duy nhất để bạn tìm lời giải Tuỳ theo mức độ nhiều hay ít c a các manh mủ ối, các câu đ được xếố p loại dễ, trung bình, khó hay c c khó ự

Một số ứ ng d ng khác: bài toán s p x p lụ ắ ế ịch thi,…

1.6 Thu t toán Fleury tìm chu trình Euler trong ậđồ thị liên thông bcó ậc của mọ ỉi đ nh

là chẵn

1.6.1 Khái ni m và các y u t liên quan ệếố

Xuất phát từ 1 đỉnh bất kỳ của đồ thị (G) và tuân theo 2 quy tắc sau:

Mỗi khi đi qua m t cạnh nào đó thì xóa nó đi, sau đó xóa đỉộ nh cô l p (n u có) ậ ế Không bao giờ đi qua ầu trừ khi không c c òn cách đi nào khác.

1.6.2 Ý tưởng và lược đồ thuật toán Cho G = (V, E) là một đồ thị Euler

Bước 1: Bắt đầu với i = 0 và định nghĩa 𝑇0= 𝑣0 Bước 2:

Đặt 𝑇𝑖= 𝑣0𝑒1𝑣1𝑒2… 𝑒𝑖𝑣𝑖𝑒𝑖 là đường đi giữa 𝑣0 và 𝑣 𝑖 tại bước th i, gứ ọi 𝐸𝑖= {𝑒1, 𝑒2… 𝑒𝑖}; G’ là đồ th con sau khi xóa các cạnh thuộc ị 𝐸𝑖 trong G: G’= G – 𝐸𝑖

Chọn m t c nh ộ ạ 𝑒 + 1𝑖 nối 𝑣𝑖 với 𝑣𝑖+ 1 ừ ật t p c nh ạ E – 𝐸𝑖 Lưu ý là nếu 𝑒𝑖+ 1 là một cạnh cầu trong đồ thị con G’, chỉ chọn nó khi và ch khi không còn lỉ ựa chọn nào khác C p nhậ ật 𝑇𝑖+1= 𝑇𝑖𝑒𝑖+1𝑣𝑖+1= 𝑣0𝑒1𝑣1𝑒2… 𝑒𝑖 𝑖𝑣 𝑒𝑖+1 𝑖+1𝑣 N u không còn l a ch n nào cho ế ự ọcạnh 𝑒𝑖+1thì dừng.

Bước 3 Gán i = i + 1, quay lại bước 2 1.7 Cây nh phân

Trang 28

M t Binary Tree có L lá, s có ít nh t Log2(L) + 1 cộ ẽ ấ ấp độ (levels)

Trong m t Binary Tree mà mộ ọi node đều có 0 ho c 2 nodes con, thì sặ ố lượng các node lá (leaf nodes) s luôn nhiẽ ều hơn một đơn vị so v i sớ ố lượng các nodes có hai nodes con

1.7.3 Thuật toán duyệt cây nhị phân

Duy t cây là việ ệc thăm tất cả các nút, m i nút mỗ ột lần Phép duy t cây có thệ ể được th c hiự ện đệ quy Một số cách duy t cây: ệ

Pre-order Travesal

Kết quả: A B D H I E K C F G

In-order Travesal

Kết quả: H D I B K E A F C G

Trang 29

Phân vùng không gian nh phân - ị Được sử d ng trong h u h t mụ ầ ế ọi trò chơi video 3D để xác định đối tư ng nào cợ ần được hiển th ị

Binary Trees - Được s d ng trong h u h t các b ử ụ ầ ế ộ định tuyến băng thông cao để lưu trữ các bảng bộ định tuyến.

Cây băm - được sử dụng trong các chương trình p2p và chữ ký hình ảnh chuyên dụng trong đó hàm băm cần được xác minh, nhưng toàn bộ ệ t p không có s n ẵ Heap sort - Được sử dụng để thực hiện các hàng đợi ưu tiên hiệu quả, lần lượt được

s dử ụng để ậ ị l p l ch cho các quy trình trong nhi u h ề ệ điều hành

Cây mã hóa Huffman (Chip Uni - ) được s d ng trong các thu t toán nén, chử ụ ậ ẳng hạn như các thuật toán được sử ụ d ng bởi các định d ng t p jpeg và mp3 ạ ệ

Cây GGM - Được sử d ng trong các ng dụ ứ ụng mã hóa để t o ra m t cây s gi ngạ ộ ố ả ẫu nhiên

1.8 Cây bao trùm tối thiểu 1.8.1 Khái niệm

Cây bao trùm c a mủ ột đồ thị là cây (gồm các đỉnh, c nh c a G) có ch a t t c các ạ ủ ứ ấ ảđỉnh c a G ủ

Trang 30

Tính duy nh t ấ

Nếu m i c nh có tr ng s riêng bi t thì sỗ ạ ọ ố ệ ẽ chỉ có m t, và ch m t cây bao trùm nh ộ ỉ ộ ỏnh Có thất ể chứng minh phát bi u này b ng quy n p ho c ph n ch ngể ằ ạ ặ ả ứ Điều này đúng trong nhiều trường hợp thực tế, như ví dụ về công ty truyền hình cáp ở trên chẳng h n, khi ạđó rất hiếm khi hai con đường lại có chính xác cùng một chi phí Phát biểu này cũng được t ng quát hóa cho r ng bao trùm.ổ ừ

Đồ ị th có chi phí nh nhất ỏ

Nếu tr ng s ọ ố là số dương, thì m t cây bao trùm nh nhộ ỏ ất cũng chính là đồ thị con có chi phí nh nhỏ ất k t nế ối tấ ả đỉnh, vì các đồ thịt c con có ch a chu trình bao gi ứ ờ cũng có tổng trọng s lố ớn hơn.

Tính chất vòng

Với m t chu trình C b t k ộ ấ ỳ trong đồ thị, n u tr ng s c a c nh e ế ọ ố ủ ạ nào đó của C lớn hơn trọng s c a các cạnh còn lại của C, thì cạnh đó không thể ố ủ thuộc về cây bao trùm nhỏ nh ất Giả ử điều ngượ ạ s c l i, n u e ế thuộc v cây bao trùm nh nh t T1, khi chúng ta xóa e, ề ỏ ấnó sẽ phân T1 ra làm hai cây con mà hai đầu c a thu c v hai cây con khác nhau Các ủ e ộ ềcạnh còn lại c a sủ C ẽ gắn hai cây con này lại với nhau, do đó sẽ ồ t n tại một cạnh fthuộc C có hai đầu nằm trên hai cây con này, tức là nó sẽ kết n i hai cây con này lố ại m t cây T2 có tr ng s nh ộ ọ ố ỏ hơn T1, vì trọng s c a nhố ủ f ỏ hơn trọng s c a ố ủ e

Ngày đăng: 14/05/2024, 16:09

Tài liệu cùng người dùng

Tài liệu liên quan