Tiểu luận môn học THIẾT KẾ VÀ PHÂN TÍCH THUẬT TOÁN CÁC THUẬT TOÁN CƠ BẢN VỀ ĐỒ THỊ

46 623 1
Tiểu luận môn học THIẾT KẾ VÀ PHÂN TÍCH THUẬT TOÁN CÁC THUẬT TOÁN CƠ BẢN VỀ ĐỒ THỊ

Đ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

CÁC THUẬT TOÁN CƠ BẢN VỀ ĐỒ THỊ CÁC THUẬT TOÁN CƠ BẢN VỀ ĐỒ THỊ Chương này giới thiệu các phương pháp để biểu diễn một đồ thị và để tìm kiếm một đồ thị. Việc tìm kiếm một đồ thị có nghĩa là chỉ ra các cạnh một cách có hệ thống của đồ thị để thăm các đỉnh của đồ thị. Một thuật toán tìm kiếm đồ thị có thể khám phá nhiều về cấu trúc của đồ thị. Một số thuật toán bắt đầu bởi việc tìm kiếm dữ liệu vào cho đồ thị của chúng để tìm được cấu trúc thông tin đó. Mặt khác các thuật toán đồ thị được tổ chức để xây dựng đơn giản các thuật toán tìm kiếm đồ thị cơ bản. Kỹ thuật để tìm kiếm một đồ thị là điểm cốt lõi trong lĩnh vực của các thuật toán đồ thị. Mục 22.1 thảo luận hai cách biểu diễn thuật toán thông thường của các đồ thị: như các danh sách kề và các ma trận kề. Mục 22.2 giới thiệu một thuật toán tìm kiếm đồ thị đơn giản gọi là tìm kiếm theo chiều rộng và chỉ ra cách khởi tạo một cây tìm kiếm theo chiều rộng là như thế nào. Mục 22.3 giới thiệu tìm kiếm theo chiều sâu và cạnh cấp một số kết quả chuẩn về thứ tự thăm các đỉnh trong tìm kiếm chiều sâu. Mục 22.4 cung cấp cho chúng ta ứng dụng thực đầu tiên của tìm kiếm theo chiều sâu: sắp xếp tôpô cho một đồ thị vô hướng có chu trình. Một ứng dụng thứ hai của tìm kiếm theo chiều sâu là việc tìm các thành phần liên thông mạnh của một đồ thị vô hướng, được trình bày trong Mục 22.5. 22.1 Biểu diễn đồ thị Đó là 2 phương pháp để biểu diễn một đồ thị G = (V,E): biểu diễn bằng danh sách lân cận (kề) hoặc bằng ma trận lân cận (kề). Cả hai phương pháp là ứng dụng của đồ thị vô hướng và đồ thị vô hướng. Sự biểu diễn bằng ma trận kề là luôn luôn được ưu tiên, bởi vì nó cung cấp một phương pháp chắc chắn để mô tả đồ thị không đầy đủ - đó là |E| ít hơn |V| 2 . Hầu hết các thuật toán biểu diễn đồ thị trong sách này cho rằng dữ liệu vào của đồ thị được biểu diễn trong danh sách kề. Sự biểu diễn một danh sách kề có thể được ưu tiên tuy nhiên khi đồ thị là đầy đủ - |E| là đúng |V| 2 - hoặc khi chúng ta cần có thể nói một cách nhanh nếu một cạnh nối bởi 2 đỉnh. Ví dụ, thuật toán tìm đường đi ngắn nhất 2 của tất cả các cặp được trình bày trong chương 25 cho rằng dữ liệu vào đồ thị được biểu diễn bởi ma trận kề. Tiểu luận Thiết kế và phân tích thuật toán - Nhóm 4 Trang 1 CÁC THUẬT TOÁN CƠ BẢN VỀ ĐỒ THỊ Hình 22.1 Hai cách biểu diễn của một đồ thị vô hướng. (a) Một đồ thị vô hướng G có 5 đỉnh và 6 cạnh. (b) Một biểu diễn danh sách kề của G. (c) Biểu diễn ma trận kề của G. Hình 22.2 Hai cách biểu diễn của một đồ thị vô hướng. (a) Một đồ thị vô hướng G có 6 đỉnh và 8 cạnh. (b) Một biểu diễn danh sách kề của G. (c) Biểu diễn ma trận kề của G. Sự biểu diễn ma trận kề của một đồ thị G = (V,E) bao gồm một mảng Adj lưu danh sách của |V|, mỗi một phần tử là một đỉnh thuộc V. Mỗi đỉnh u ∈ V, danh sách kề Adj[u] bao gồm tất cả các đỉnh v đó là một cạnh (u,v) ∈ E. Đó là, Adj[u] bao gồm tất cả danh sách đỉnh để u thuộc G. (Như một sự lựa chọn, nó bao gồm các đỉnh của các cạnh đó). Các đỉnh trong mỗi danh sách kề được lưu một cách đặc trưng bởi một thứ tự tuỳ ý. Hình 22.1 (b) là một danh sách kề biểu diễn của đồ thị vô hướng trong hình 22.1 (a). Tương tự hình 22.2 (b) là một danh sách kề biểu diễn của đồ thị vô hướng trong hình 22.2 (a). Nếu G là một đồ thị vô hướng, tổng độ dài của tất cả các danh sách kề là | E|, khi một cạnh được kết nối bởi (u,v) được biểu diễn bởi có v xuất hiện trong Adj[u]. Nếu G là một đồ thị vô hướng, tổng độ dài của tất cả các danh sách kề là 2| E|, nếu (u,v) là một cạnh vô hướng, u xuất hiện trong danh sách kề của v và ngược lại. Cả hai đồ thị vô hướng và vô hướng, sự biểu diễn danh sách kề có thuộc tính đáng mong ước rằng tổng số của bộ nhớ mà nó yêu cầu Ө(V + E). Tiểu luận Thiết kế và phân tích thuật toán - Nhóm 4 Trang 2 CÁC THUẬT TOÁN CƠ BẢN VỀ ĐỒ THỊ Các danh sách kề có thể dễ dàng thích hợp để biểu diễn các đồ thị có trọng số, nghĩa là, các đồ thị ứng với mỗi cạnh có gắn một trọng số, đặc trưng bởi một hàm trọng số w: E → R. Ví dụ, cho G = (V,E) là một đồ thị có trọng số với hàm trọng số w. Trọng số w(u,v) của cạnh (u,v) ∈ E được lưu trữ đơn giản với đỉnh v trong danh sách kề của u. Sự biểu diễn danh sách kề là khá mạnh mà nó có thể được sửa đổi để hỗ trợ nhiều phương án cho các đồ thị khác. Một khả năng bất lợi của sự biểu diễn danh sách kề là không có phương pháp nào nhanh hơn để xác định nếu một cạnh đã cho (u,v) có trong đồ thị hơn tìm kiếm v trong danh sách kề Adj[u]. Điểm bất lợi đó có thể được khắc phục bởi một sự biểu diễn ma trận kề của đồ thị, ở tại đó chi phí của sử dụng gần với bộ nhớ hơn. (Quan sát bài tập 22.1-8 cho những đề nghị của các biến đổi trên những danh sách kề mà cho phép tìm kiếm cạnh nhanh hơn). Để biểu diễn ma trận kề của một đồ thị G = (V,E), chúng ta cho các đỉnh được đánh số 1, 2, , |V| trong một số kiểu tùy ý. Vì vậy biểu diễn ma trận kề của một đồ thị G bao gồm một |V| x |V| ma trận A = (a ij ) trong đó ij 1 0 a  =   Hình 22.1 (c) và 22.2 (c) lần lượt là các ma trận kề của đồ thị vô hướng và có hướng trong hình 22.1 (a) và 22.2 (a). Ma trận kề của một đồ thị yêu cầu Ө(V 2 ) bộ nhớ, độc lập với số cạnh trong đồ thị. Quan sát tính đối xứng dọc theo đường chéo chính của ma trận kề trong Hình 22.1 (c). Chúng ta định nghĩa chuyển vị của một ma trận A = (a ij ) là ma trận A T = ( ij T a ) được cho bởi ij T a = ji a . Do trong một đồ thị vô hướng, (u,v) và (v,u) biểu diễn cùng một cạnh, ma trận kề A của một đồ thị vô hướng chính là ma trận chuyển vị của nó A = A T . Trong một vài ứng dụng, nó dành để lưu trữ chỉ các danh sách vào và trên đường chéo của ma trận kề, vì vậy việc phân chia bộ nhớ cần để lưu trữ hầu hết đồ thị trong một nửa. Giống như sự biểu diễn danh sách kề của một đồ thị, sự biểu diễn ma trận kề có thể được sử dụng cho các đồ thị có trọng số. Ví dụ, nếu G = (V,E) là một đồ thị trọng số với trọng số cạnh bởi hàm w, trọng số w(u,v) ∈ E được lưu trữ một Tiểu luận Thiết kế và phân tích thuật toán - Nhóm 4 Trang 3 nếu (i,j) ∈ E ngược lại CÁC THUẬT TOÁN CƠ BẢN VỀ ĐỒ THỊ cách đơn giản như danh sách trong dòng u và cột v của ma trận kề. Nếu một cạnh không tồn tại, một giá trị NIL có thể được lưu trữ như ma trận danh sách tương ứng của nó, mặc dù đối với một số bài toán là thuận tiện để sử dụng một giá trị là 0 hoặc ∞. Mặc dù biểu diễn danh sách kề là lân cận ít hiệu quả như biểu diễn ma trận kề, sự đơn giản của một ma trận kề có thể khiến cho nó thích hợp khi các đồ thị nhỏ vừa phải. Hơn nữa, nếu đồ thị là không có trọng số, có một thuận lợi trong việc lưu trữ để biểu diễn ma trận kề. Ngoài ra việc sử dụng một từ của bộ nhớ máy tính cho mỗi ma trận danh sách, ma trận kề chỉ dùng một bit cho mỗi danh sách. BÀI TẬP 22.1-1 Cho một biểu diễn danh sách kề của một đồ thị vô hướng, phải mất bao lâu để tính toán bậc ra của mỗi đỉnh? Phải mất bao lâu để tính toán bậc vào cho mỗi đỉnh? 22.1-2 Cho một biểu diễn danh sách kề để một cây nhị phân đầy đủ trên 7 đỉnh. Cho một biểu diễn ma trận kề tương đương. Cho các cạnh được đánh số từ 1 đến 7 như trong một đống nhị phân. 22.1-3 Chuyển vị của một đồ thị vô hướng G = (V , E) là đồ thị G T = (V , E T ), trong đó E T = { (v,u) ∈ V x V: (u,v) ∈ E}. Vì vậy, G T là G với tất cả các cạnh đối nghịch chính nó. Mô tả hiệu quả các thuật toán để tính G T từ G, cho cả hai biểu diễn danh sách kề và ma trận kề của G. Phân tích thời gian thực hiện của thuật toán đó. 22.1-4 Cho một biểu diễn danh sách kề của một đa đồ thị G = (V , E), mô tả một thuật toán với thời gian O( V+E) để tính toán biểu diễn một danh sách kề tương đương với đồ thị vô hướng G’=(V,E’), trong đó E’ bao gồm các cạnh trong E với tất cả các đa cạnh giữa hai đỉnh thay thế bằng một cạnh đơn và tất cả các cạnh lặp lại chính nó sẽ bị xóa đi. 22.1-5 Tiểu luận Thiết kế và phân tích thuật toán - Nhóm 4 Trang 4 CÁC THUẬT TOÁN CƠ BẢN VỀ ĐỒ THỊ Ngang hàng (Square) của một đồ thị vô hướng G = (V,E) là đồ thị G 2 = (V, E 2 ) trong đó (u,w) ∈ E 2 khi va chỉ khi một số v ∈ V, thì cả hai (u,v) ∈ E và (v,w) ∈ E. Nghĩa là, G 2 chứa một cạnh giữa u và v, trong khi G chứa một đường đi với hai cạnh xác định giữa u và w. Mô tả các thuật tóan hiệu quả để tính tóan G 2 từ G cho cả hai biểu diễn danh sách kề và ma trận kề của G. Phân tích thời gian thực hiện của các thuật toán đó. 22.1-6. Khi một biểu diễn ma trận kề được sử dụng, hầu hết các thuật toán đồ thị yêu cầu thời gian Ω (V 2 ) nhưng có một vài trường hợp ngoại lệ. Chỉ ra rằng việc xác định bất cứ đồ thị vô hướng G chứa một điểm tập trung (universal sink) - một đỉnh với bậc vào |V| - 1 và bậc ra 0 có thể được xác định trong thời gian O (V), được cho bởi ma trận kề của G. 22.1-7. Ma trận tác động (incident matrix) của một đồ thị vô hướng G = (V,E) là một |V| x |E|, ma trận B = (b i j ) trong đó ij 1 1 0 b −   =    Mô tả như thế nào danh sách của ma trận sản phẩm B biểu diễn B T , trong đó B T là ma trận chuyển vị của B. 22.1-8. Giả sử rằng thay thế một danh sách liên kết, mỗi mảng danh sách Adj[u] là một bảng mới chứa các đỉnh v mà (u,v) ∈ E. Nếu tất cả cạnh tìm kiếm là tương tự nhau thời gian mong đợi để xử lý bất kỳ một cạnh nào trong đồ thị là bao lâu? Lược đồ này có những bất lợi gì? Hãy đề nghị một Cấu trúc dữ liệu lần lượt cho mỗi danh sách cạnh nhằm giải quyết các vấn đề đó? Cấu trúc đó có những điểm bất lợi so với bảng mới này hay không? 22.2 Tìm kiếm theo chiều rộng (Breadth-first search=BFS): Tiểu luận Thiết kế và phân tích thuật toán - Nhóm 4 Trang 5 nếu cạnh đi từ đỉnh i đến đỉnh j nếu cạnh đi từ đỉnh j đến đỉnh i còn lại CÁC THUẬT TOÁN CƠ BẢN VỀ ĐỒ THỊ a) Tìm kiếm theo chiều rộng: là một trong những giải thuật đơn giản nhất để tìm kiếm một đường đi và là một chuẩn mực của nhiều giải thuật tìm kiếm đường đi quan trọng khác. Giải thuật tìm kiếm cây khung nhỏ nhất (trong mục 23.2) của Prim và giải thuật tìm đường đi ngắn nhất (trong mục 24.3) của Dijktra dùng các ý tưởng tương tự với các ý tưởng trong giải thuật tìm kiếm theo chiều rộng (breadth-first search). Cho một đồ thị G=(V,E) và một đỉnh gốc s, giải thuật tìm kiếm theo chiều rộng sẽ tìm kiếm một cách có hệ thống các cạnh của đồ thị G để tìm ra tất cả các đỉnh của G mà từ s có thể đến được. Giải thuật tính khoảng cách (là số nhỏ nhất của các cạnh) từ đỉnh s đến từng đỉnh đã tìm được ở trên Giải thuật xây dựng “một cây tìm kiếm theo chiều rộng ” (có gốc là đỉnh s) chứa tất cả các đỉnh có thể đến được. Với bất kỳ đỉnh v nào đó đến được từ đỉnh s, thì đường đi từ s đến v trong cây tìm kiếm theo chiều rộng tương ứng với một đường đi ngắn nhất từ s đến v trong G, đó là đường đi chứa số nhỏ nhất của các cạnh trong G. Giải thuật áp dụng được cho cả loại đồ thị có hướng lẫn đồ thị vô hướng. Được gọi là tìm kiếm theo chiều rộng bởi vì giải thuật này gia tăng giới hạn giữa các đỉnh được tìm ra và các đỉnh không được tìm ra một cách đồng bộ trong chiều rộng của giới hạn tìm kiếm. Cụ thể là, giải thuật tìm ra tất cả các đỉnh có khoảng cách từ s là k trước khi tìm ra bất kỳ đỉnh nào có khoảng cách từ s là k+1. Để lưu lại các dấu vết tìm kiếm, giải thuật tô màu trắng, xám hay đen cho từng đỉnh. Tất cả các đỉnh ban đầu là trắng, sau đó có thể là xám rồi thì thành màu đen. Trong quá trình tìm kiếm, nếu một đỉnh được gọi là được tìm thấy ở lần đầu tiên nếu như lần tìm thấy đó nó không phải tô màu trắng. Do đó, các đỉnh có màu xám và màu đen là những đỉnh được tìm thấy nhưng giải thuật phân biệt giữa chúng để bảo đảm rằng việc tìm kếm được tiến hành là theo cách tìm kiếm rộng. Nếu (u,v) ∈ E và đỉnh u có màu đen, thì đỉnh v có màu hoặc là xám hoặc là đen. Có nghĩa là tất cả các đỉnh liền kề với các đỉnh màu đen đều đã được tìm ra. Các đỉnh màu xám có thể có thể có các đỉnh kề màu trắng, các đỉnh màu trắng này là giới hạn giữa các đỉnh tìm ra và các đỉnh không tìm ra. Giải thuật tìm kiếm rộng xây dựng một cây tìm kiếm theo chiều rộng, ban đầu chỉ chứa gốc là đỉnh s. Bất cứ khi nào một đỉnh v màu trắng được tìm thấy Tiểu luận Thiết kế và phân tích thuật toán - Nhóm 4 Trang 6 CÁC THUẬT TOÁN CƠ BẢN VỀ ĐỒ THỊ trong khi đang tìm một danh sách các đỉnh kề của đỉnh u đã tìm ra tước đó, thì đỉnh u và cạnh (u,v) được thêm vào cây tìm kiếm. Chúng ta gọi đỉnh u là bố của đỉnh v trong cây tìm kiếm. Bởi vì chỉ có một đỉnh duy nhất được tìm ra nên nó cũng có một đỉnh cha duy nhất. Các mối quan hệ ông bà và con cháu trong cây tìm kiếm theo chiều rộng được định nghĩa liên quan đến đỉnh gốc s như thường lệ: nếu đỉnh u ở trên đường dẫn trong cây tìm kiếm từ đỉnh s đến đỉnh v thì u là tổ tiên của v và v là con cháu của u. Chương trình con tìm kiếm theo chiều rộng (BFS) dưới đây giả định rằng đồ thị nhập vào G=(V,E) là một danh sách các đỉnh liền kề. Nó có các cấu trúc dữ liệu thêm vào cho từng đỉnh trong đồ thị. Màu của từng đỉnh u ∈ V được chứa trong biến color[u]. Các đỉnh đứng trước đỉnh u được chứa trong biến π [u] . Nếu u=s thì π [u]=Nil. Khoảng cách từ đỉnh gốc s đến đỉnh u được xác định theo thuật toán trong d[u]. Giải thuật cũng dùng biến Q là stack vào trước – ra trước (FIFO) để xem xét bộ các đỉnh màu xám. Hình 22.3 (trang 533) chỉ ra quá trình tìm kiếm của BFS trên một đồ thị mẫu. BFS(G,s) 1 for each vertex u ∈ V[G]-{s} 2 do color[u] ← WHITE 3 d[u] ← ∞ 4 π [u] ← Nil 5 color[s] ← GRAY 6 d[s] ← 0 7 π [s] ← Nil 8 Q ← φ 9 ENQUEUE (Q,s) 10 While Q ≠ φ 11 do u ← DEQUEUE (Q) 12 for each v ∈ Adj[u] 13 do if color[v] = WHITE 14 then color[v] ← GRAY 15 d[v] ← d[u]+1 Tiểu luận Thiết kế và phân tích thuật toán - Nhóm 4 Trang 7 CÁC THUẬT TOÁN CƠ BẢN VỀ ĐỒ THỊ 16 π [v] ← u 17 ENQUEUE (Q,v) 18 color[u] ← BLACK Tiểu luận Thiết kế và phân tích thuật toán - Nhóm 4 Trang 8 CÁC THUẬT TOÁN CƠ BẢN VỀ ĐỒ THỊ Hình 22.3: Minh hoạ tiến trình của BFS trên đồ thị mẫu Hình 22.3: Quá trình xử lý của BFS trên đồ thị vô hướng. Các cạnh được tô đậm khi chúng được xác định bởi BFS. Với mỗi đỉnh u được chỉ ra là d[u]. Biến Q Tiểu luận Thiết kế và phân tích thuật toán - Nhóm 4 Trang 9 CÁC THUẬT TOÁN CƠ BẢN VỀ ĐỒ THỊ được chỉ rõ từ lúc bắt đầu mỗi chu kỳ lặp While từ dòng 10-18. Các khoảng cách từ một đỉnh đến các đỉnh kế tiếp được chỉ ra trong biến Q. Chương trình con BFS làm việc như sau: với những đỉnh u trong V mà khác đỉnh s thì đều có màu trắng, khoảng cách từ s đến từng đỉnh u là d[u]= ∞ (không xác định), đặt đỉnh cha của từng đỉnh u là bằng Nil ( π [u]=Nil). Dòng 5, tô màu đỉnh s là màu xám vì đỉnh s được xem như là tìm ra khi chương trình bắt đầu. Dòng 6, khởi tạo khoảng cách d[s]=0, dòng 7, khởi tạo đỉnh cha của s bằng Nil. ( π [s]=Nil). Dòng 8-9 khởi tạo stack Q chỉ chứa đỉnh s. Vòng lặp While trong các dòng 10-18 sẽ được thực hiện miễn là các đỉnh màu xám đang còn, các đỉnh màu xám mà có danh sách các đỉnh kề nó chưa được xem xét hết đầy đủ. Vòng While này được thực hiện nhờ một điều kiện bất biến sau: Ở dòng 10, biến Q bao gồm một tập các đỉnh có màu xám. Mặc dù, chúng tôi không dùng vòng lặp bất biến này để chứng minh tính đúng đắn, nhưng thật dễ để nhận ra rằng nó ưu tiên vòng lặp đầu tiên và rằng mỗi lần lặp lại của vòng lặp duy trì bất biến. Ưu tiên trong vòng lặp đầu tiên, chỉ với các đỉnh có màu xám, và chỉ với các đỉnh có trong Q, là đỉnh s. Dòng 11 đưa đỉnh u có màu xám vào ngay đầu danh sách Q và rồi lấy đỉnh u ra khỏi Q liền sau đó. Vòng lặp từ dòng 12-17 duyệt từng đỉnh v trong danh sách các đỉnh liền kề của đỉnh u. Nếu v có màu trắng thì nó sẽ chưa được tìm ra và thuật toán sẽ tìm ra nó khi thực hiện các dòng từ 14 đến 17. Đỉnh v lần đầu được tô màu xám và khoảng cách d[v] được gán bằng d[u]+1. Sau đó đỉnh u được lưu lại như là đỉnh cha của v. Cuối cùng đỉnh v được đưa vào cuối của danh sách Q. Khi tất cả các đỉnh trong danh sách các đỉnh kề của đỉnh u được duyệt hết thì u được tô màu đen theo như dòng 18. Biến vòng lặp vẫn được duy trì bởi vì bất cứ khi nào một đỉnh được tô màu xám (theo dòng 14) thì nó cũng được đưa vào danh sách Q (theo dòng 17) và bất cứ khi nào một đỉnh được lấy ra khỏi danh sách Q ( theo dòng 11) thì nó sẽ được tô màu đen (theo dòng 18). Các kết quả thu được của giải thuật BFS phụ thuộc vào trật tự mà theo đó, các đỉnh kề của một đỉnh cho trước đã được xét đến theo dòng 12: cây tìm kiếm theo chiều sâu có thể thay đổi khác nhau nhưng khoảng các d của đường đi ngắn nhất được tính bởi giải thuật sẽ không thay đổi. (Xem thêm bài tập 22.2-4). Tiểu luận Thiết kế và phân tích thuật toán - Nhóm 4 Trang 10 [...]... giải thuật BFS, thì có thể phụ thuộc vào thứ tự trong các danh sách các đỉnh kề 22.2-5: Cho ví dụ về một đồ thị có hướng G = (V,E), một đỉnh s ∈ V, và một bộ các cạnh Eπ ⊆ E ứng với mỗi đỉnh v ∈ V, đường đi duy nhất trong đồ thị (V, Eπ ) từ s đến v là đường đi ngắn nhất trong đồ thị G, tuy nhiên vẫn không thể tìm được Tiểu luận Thiết kế và phân tích thuật toán - Nhóm 4 Trang 16 CÁC THUẬT TOÁN CƠ BẢN VỀ... DFS-thăm(v) 8 color[u] ← màu đen {tô đen đỉnh u, u kết thúc} 9 f [u] ← time ← time +1 Hình 22.4 minh họa tiến triển của DFS trong đồ thị ở hình 22.2 Tiểu luận Thiết kế và phân tích thuật toán - Nhóm 4 Trang 19 CÁC THUẬT TOÁN CƠ BẢN VỀ ĐỒ THỊ Hình 22.4 Quá trình của thuật toán DFS tìm kiếm theo chiều sâu ở 1 đồ thị có hướng Khi các cạnh được thăm bởi thuật toán, chúng được thể hiện hoặc là tô đậm (nếu chúng... đến u; điều đó có nghĩa u và v đến được với nhau Hình 22.9 là một ví dụ Hình 22.9 Tiểu luận Thiết kế và phân tích thuật toán - Nhóm 4 Trang 33 CÁC THUẬT TOÁN CƠ BẢN VỀ ĐỒ THỊ (a) đồ thị vô hướng G Các thành phần liên thông mạnh của G được chỉ ra bằng các vùng được tô bóng Mỗi đỉnh được gán nhãn bằng thời gian tìm kiếm và kết thúc của nó Các cạnh của cây được tô bóng (b) Đồ thị GT là chuyển vị của G... khi u và v kết nối trong cùng thành phần Tiểu luận Thiết kế và phân tích thuật toán - Nhóm 4 Trang 28 CÁC THUẬT TOÁN CƠ BẢN VỀ ĐỒ THỊ 22.3-12 Đồ thị có hướng G = (V,E) là nối đơn nếu u ~> v ngụ ý rằng tại 1 đường đơn giản nhất từ u đến v cho tất cả các đỉnh u,v є V Đưa ra thuật toán hiệu quả để xác định có hoặc không có 1 đồ thị có hướng là kết nối đơn 22.4 Bài toán sắp xếp Tôpô Phần này chỉ ra phương... cạnh được thăm đầu tiên Chúng ta sẽ thấy một vài ứng dụng của các thuật toán này trong những phần sau Tiểu luận Thiết kế và phân tích thuật toán - Nhóm 4 Trang 26 CÁC THUẬT TOÁN CƠ BẢN VỀ ĐỒ THỊ Bài tập 22.3-1 Vẽ 1 đồ thị 3-3 với hàng và cột dán nhãn MÀU TRẮNG, MÀU XÁM, MÀU ĐEN Trong mỗi ô (i,j), chỉ ra tại bất kì điểm nào trong suốt tìm kiếm chiều sâu của đồ thị có hướng, có thể có 1 cạnh từ 1 đỉnh màu... (s,u) = ∞ và suy ra bất đẳng đã cho đúng Tiểu luận Thiết kế và phân tích thuật toán - Nhóm 4 Trang 11 CÁC THUẬT TOÁN CƠ BẢN VỀ ĐỒ THỊ Chúng ta muốn chỉ ra rằng: giải thuật BFS có thể xác định được d[v]= δ (s,v) với mỗi đỉnh v ∈ V Trước hết chúng ta chỉ ra được d[v] bao δ (s,v) dựa vào bổ đề trên c) Bổ đề 22.2: Cho đồ thị G=(V,E) là đồ thị có hướng hoặc vô hướng, giả sử rằng BFS được chạy với G và s ∈... trong việc giảm bậc của thời gian kết thúc mà điều đó được tính trong lần tìm kiếm theo theo chiều sâu lần đầu Đúng như bản chất chúng ta đang thăm các đỉnh của đồ thị thành phần (mà mỗi đồ thị tương ứng với một thành phần liên thông mạnh của G) trong thứ tự được sắp xếp tôpô Tiểu luận Thiết kế và phân tích thuật toán - Nhóm 4 Trang 35 CÁC THUẬT TOÁN CƠ BẢN VỀ ĐỒ THỊ Bởi vì các thành phần liên thông mạnh... chiều sâu nếu và chỉ nếu đỉnh v được tìm thấy suốt thời gian đỉnh u tô xám Tiểu luận Thiết kế và phân tích thuật toán - Nhóm 4 Trang 21 CÁC THUẬT TOÁN CƠ BẢN VỀ ĐỒ THỊ Một thuộc tính quan trọng khác của tìm kiếm chiều sâu là những thời gian tìm thấy và kết thúc có cấu trúc dấu ngoặc đơn Nếu chúng ta cho tìm thấy đỉnh u là ngoặc mở “(u” và kết thúc là ngoặc đóng “u)” thì lịch sử của tìm thấy và kết thúc... giải thuật tìm kiếm theo chiều rộng tìm được một cách chính xác khoảng cách đường đi ngắn nhất f) Định lý 22.5 (Tính đúng đắn của tìm kiếm theo chiều rộng) Tiểu luận Thiết kế và phân tích thuật toán - Nhóm 4 Trang 13 CÁC THUẬT TOÁN CƠ BẢN VỀ ĐỒ THỊ Cho đồ thị G=(V,E) là đồ thị có hướng hoặc vô hướng, giả sử rằng BFS được chạy với G và s ∈ V Ta có: * BFS tìm ra mọi đỉnh v ∈ V mà từ đỉnh s có thể đến được... 22.3-2 và 22.5-2 22.3-3 Chỉ ra cách thể hiện cấu trúc cha của tìm kiếm chiều sâu ở hình 22.4 22.3-4 Chỉ ra rằng cạnh (u,v) là a 1cạnh tree hoặc cạnh trước khi và chỉ khi d[u] < d[v] < f[v] < f[u] b 1 cạnh sau khi và chỉ khi d[v] ≤ d[u] < f[u] ≤ f[v], và c 1 cạnh chéo khi và chỉ khi d[v] < f[v] < d[u] < f[u] Tiểu luận Thiết kế và phân tích thuật toán - Nhóm 4 Trang 27 CÁC THUẬT TOÁN CƠ BẢN VỀ ĐỒ THỊ 22.3-5 . d[u]+1 Tiểu luận Thiết kế và phân tích thuật toán - Nhóm 4 Trang 7 CÁC THUẬT TOÁN CƠ BẢN VỀ ĐỒ THỊ 16 π [v] ← u 17 ENQUEUE (Q,v) 18 color[u] ← BLACK Tiểu luận Thiết kế và phân tích thuật toán. E). Tiểu luận Thiết kế và phân tích thuật toán - Nhóm 4 Trang 2 CÁC THUẬT TOÁN CƠ BẢN VỀ ĐỒ THỊ Các danh sách kề có thể dễ dàng thích hợp để biểu diễn các đồ thị có trọng số, nghĩa là, các đồ thị. CÁC THUẬT TOÁN CƠ BẢN VỀ ĐỒ THỊ CÁC THUẬT TOÁN CƠ BẢN VỀ ĐỒ THỊ Chương này giới thiệu các phương pháp để biểu diễn một đồ thị và để tìm kiếm một đồ thị. Việc tìm kiếm một đồ thị có nghĩa

Ngày đăng: 11/04/2015, 22:46

Từ khóa liên quan

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

Tài liệu liên quan