Tải bản đầy đủ (.pdf) (47 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (5.15 MB, 47 trang )

<span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

2 | T r a n g

<b>MỤC LỤC </b>

<b>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à </b>

<b>ứng dụng) ... 4 </b>

1.1. M<i><b>ột số ế</b></i> ki n th<i><b>ức cơ sở ề thuậ</b></i> v t toán ... 4

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

1.2.1. <i>Giả</i>i thu<i>ật đệ</i> quy ... 5

<i>1.2.2. Phương pháp chia để trị ... 6 </i>

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

<i>1.2.4. Phương pháp nhánh cận ... 10 </i>

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

<i>1.2.6. Phương pháp tham lam ... 11 </i>

1.3.3. Mơ hình và ng d ng c<i>ứụủa đồ thị</i> trong bài tốn th<i>ực tiễn ... 19 </i>

<i><b>1.4. Bài tốn tìm đường đi ngắn nhất ... 20 </b></i>

<i>1.4.1. Bài tốn tìm đường đi trên đồ thị ... 20 </i>

1.4.2. Bài tốn <i>tìm đường đi ngắ</i>n nh<i>ất trên đồ thị ... 21 </i>

<i>1.6.2. Ý tưởng và lược đồ thuật toán ... 27 </i>

1.7. Cây nh phân<i><b>ị</b></i> ... 27

<i>1.7.1. Khái niệm ... 27 </i>

1.7.2. M t s tính ch<i>ộ ốất ... 28 </i>

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

4 | T r a n g

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

1.1. M<i><b>ột số ế</b></i> ki n th<i><b>ức cơ sở ề thuậ</b></i> v t toán

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

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

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

o Chiến lược chứng minh tính đúng của thuật tố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 tốn học - Kết hợp kiểm thử và chứng minh tính đúng => hiệu quả hơn

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="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 tố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 tốn: ủ

Độ phức tạp th i gian: S ờ ố lượng các bước tính tố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<i><b>ột số phương pháp thiết kế thuật toán cơ bả</b></i>n

1.2.1. <i>Giả</i>i thu<i>ật đệ</i> quy

<i>1.2.1.1. Các đặc trưng cơ bản </i>

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 tố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 tố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 tốn có giải thuật để giải (trường h p suy biến) ợ

Trong trường h p t ng qt bài tố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.

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

6 | T r a n g

<i>1.2.1.2. Lược đồ thuật toán </i>

<i>1.2.1.3. Xác định quan hệ truy hồi trong phép đệ</i> 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 tốn n c = const là độ phức tạp trong trường hợp suy bi n khi n = ế 𝑛<small>0</small>; T(𝑛<sub>0</sub>) = 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

𝑇(𝑛) = { <sup>𝑐 khi n = n</sup><sup>0</sup>

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

<i>1.2.2. Phương pháp chia để trị </i>

1.2.2.1. <i>Ý tưở</i>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 tốn ban đầu thành các bài tố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.

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="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 tốn con)

1.2.2.2. <i>Mơ hình, lược đồ</i>: 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. <i>Phân tích và đánh giá độ</i> ph<i>ức tạ</i>p thu<i>ật tốn :</i>

Xây d ng cơng th c truy hự ứ ồi đánh giá độ phức tạp thu t tố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 tố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

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="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)

<i>1.2.3.Phương pháp quay lui (Back tracking) </i>

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

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="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 tốn ộ

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

<i>1.2.3.2. Lược đồ giải thuật </i>

<i>1.2.3.3. Đánh giá độ phức tạp </i>

𝑇(𝑛) = { 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 𝑥<small>𝑖</small>

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

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

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

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="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 tố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 tốn tìm giá trị (hoặc giá trị tối ưu).

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

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

<i>1.2.5.3. Đánh giá độ phức tạp </i>

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

Thời gian tính tố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(𝑛<small>𝑘</small>) – 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 tố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

<i>1.2.6. Phương pháp tham lam 1.2.6.1. Ý tưởng </i>

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 tồn cục cho bài tốn

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="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 tồ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 tố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

<i>1.2.6.2. Lược đồ thuật toán </i>

<i>1.2.6.3. Độ phức tạp của thuật toán </i>

Hai giai đoạn c a thuủ ật tố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)

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

<i>1.2.7.2. Độ phức tạp của thuật tốn </i>

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. ế

<i>1.2.8. Phương pháp ngẫu nhiên 1.2.8.1. Ý tưởng </i>

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

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

14 | T r a n g

Có 2 dạng của thuật tố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 tố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 <i>ạ</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

Ln cho ra lời gi i cả ủa bài tố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 tốn có giới hạn (tốt)1.3. Lý thuy<i><b>ết đồ thị</b></i>

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

24 | T r a n g

1.4<i>.2.3.2. Thuật toán Dijkstra</i>

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<i><b>. Tô màu đồ thị</b></i>

1.5<i>.1. Định nghĩa</i>

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; ề ề ạ

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">

26 | T r a n g

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

<i>Các bước của thuật toán: </i>

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 tố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<i>.4. Định hướ</i>ng ng d ng: <i>ứụ</i>

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 tố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 vng, 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

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="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 tốn Fleury tìm chu trình Euler trong <i><b>ậđồ thị</b></i> liên thơng b<i><b>có ậc củ</b></i>a m<i><b>ọ ỉi đ nh </b></i>

<i><b>là chẵn </b></i>

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

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<i>.2. Ý tưởng và lược đồ thuậ</i>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 𝑇<small>0</small>= 𝑣<sub>0</sub>. Bước 2:

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

Chọn m t c nh ộ ạ 𝑒 + 1<sub>𝑖</sub> nối 𝑣<sub>𝑖</sub> với 𝑣<sub>𝑖</sub>+ 1 ừ ật t p c nh ạ E – 𝐸<sub>𝑖</sub>. Lưu ý là nếu 𝑒<sub>𝑖</sub>+ 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 𝑇<sub>𝑖+1</sub>= 𝑇<sub>𝑖</sub>𝑒<sub>𝑖+1</sub>𝑣<sub>𝑖+1</sub>= 𝑣<sub>0</sub>𝑒<sub>1</sub>𝑣<sub>1</sub>𝑒<sub>2</sub>… 𝑒<sub>𝑖 𝑖</sub>𝑣 𝑒<sub>𝑖+1 𝑖+1</sub>𝑣 . N u khơng cịn l a ch n nào cho ế ự ọcạnh 𝑒<small>𝑖+1</small>thì dừng.

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

</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="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<i>.3. Thuật toán duyệt cây nhị phân</i>

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

</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="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 tồ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><b>ối thiể</b></i>u 1.8.1. Khá<i>i niệ</i>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. ủ

</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="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

</div>

×