Thuật toán đồ thị cơ bản

22 521 0
Thuật toán đồ thị cơ bản

Đ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

Thuật toán đồ thị Thuật toán đồ thị Bởi: Đại Học Phương Đông Biểu diễn đồ thị Các phương pháp biểu diễn đồ thị Có hai chuẩn dùng để biểu diễn đồ thị G = (V, E): Sử dụng tập hợp danh sách kề: Danh sách kề biểu diễn đỉnh kề nhau, thường hay sử dụng biểu diễn cách tối ưu đồ thị thưa (đồ thị thưa đồ thị có số cạnh |E| bình phương số đỉnh |V|2 ) Hầu hết thuật toán đồ thị trình bày phần sau sử dụng danh sách kề để biểu diễn đồ thị Sử dụng ma trận kề: Nên sử dụng cách biểu diễn đồ thị dày, có nghĩa |E| gần |V|2, cần biết hai đỉnh có cạnh nối hay không Một số thuật toán tìm đường ngắn sử dụng cách biểu diễn đồ thị đầu vào G qua ma trận kề Danh sách kề Danh sách kề (là danh sách đỉnh kề đồ thị G = (V, E)) mô tả mảng Adj |V| danh sách, danh sách tương ứng với đỉnh thuộc V Với đỉnh u ∈ V, danh sách kề Adj[u] chứa (hay nói trỏ tới) tất đỉnh v mà từ v có cạnh nối tới u (có nghĩa (u,v) ∈ E) Điều có nghĩa Adj[u] chứa tất đỉnh kề với u đồ thị G Các đỉnh danh sách kề thông thường lưu theo trật tự tùy ý Nếu G đồ thị có hướng, tổng chiều dài tất danh sách kề |E|, có cạnh nối (u,v) đỉnh v xuất Adj[u] Nếu G đồ thị vô hướng, tổng độ dài tất danh sách kề 2|E|, tồn cạnh vô hướng (u,v) đỉnh u xuất danh sách đỉnh kề v đỉnh v xuất danh sách đỉnh kề u Dù đồ thị có hướng hay vô hướng, việc biểu diễn qua danh sách kề chiếm vùng nhớ có kích thước O(max(V,E)) = O(V + E) 1/22 Thuật toán đồ thị Các danh sách đỉnh kề dễ dàng sử dụng để biểu diễn đồ thị có trọng số Đó đồ thị mà cạnh có trọng số riêng, tính hàm trọng số w: E → R Cho G = (V,E) đồ thị trọng số với hàm trọng số w Trọng số w(u,v) cạnh (u,v) ∈ E chứa với đỉnh v danh sách đỉnh kề với đỉnh u Biểu diễn danh sách đỉnh kề mạnh, xét từ khía cạnh biến đổi để hỗ trợ nhiều đồ thị đa dạng khác Một nhược điểm cách biểu diễn đồ thị qua danh sách đỉnh kề để xác nhận cạnh (u,v) cho có tồn đồ thị G(V,E) không, cách nhanh tiến hành tìm kiếm đỉnh v danh sách đỉnh Adj[u] Có thể khắc phục nhược điểm cách chuyển sang biểu diễn đồ thị qua ma trận kề, nhiên, việc dòi hỏi phải sử dụng nhiều nhớ Ma trận kề Với cách biểu diễn đồ thị G = (V, E) qua ma trận kề, quy ước đỉnh đánh tùy ý từ 1, 2, |V| Biểu diễn qua ma trận kề mô tả qua ma trận A = (aij) có kích thước |V| x |V| sau: aij = (i,f )∈ E = trường hợp khác Hình 23.1(c) hình 23.2(c) ma trận kề đồ thị vô hướng có hướng cho hình 23.1(a) 23.2(a) tương ứng Ma trận kề đồ thị yêu cầu Ρ(V2) nhớ, không phụ thuộc vào số cạnh đồ thị Nếu để ý quan sát tính đối xứng qua đường chéo ma trận kề hình 23.1(c) Định nghĩa hoán vị ma trận A = (aij) ma trận AT = (aijT) với aijT = aij Do với đồ thị vô hướng (u,v) (v,u) biểu diễn cạnh, nên ma trận kề A đồ thị vô hướng hoán vị nó: A = AT Trong vài ứng dụng, cần lưu toàn liệu đường chéo ma trận (tạo thành hình tam giác trên), nhớ giảm nửa Giống cách biểu diễn qua danh sách đỉnh kề, cách biểu diễn qua ma trận kề sử dung cho đồ thị có trọng số Ví dụ, G = (V, E) đồ thị trọng số với hàm w, trọng số w(u,v) cạnh (u,v) lưu trữ tương ứng với hàng v cột u ma trận kề Nếu cạnh không tồn tại, giá trị rỗng (NIL) lưu trưữ tưng ứng ma trận Nhiều toán thông thường sử dụng giá trị ∞ 2/22 Thuật toán đồ thị Mặc dù cách biểu diễn đồ thị danh sách đỉnh kề gần có hiệu gần cách biểu diễn ma trận kề, tính đơn giản cách biểu diễn ma trậnkề nên cách biểu diễn hay sử dụng đới với đồ thị nhỏ Hơn nữa, đồ thị không trọng số, lợi ích việc sử dụng ma trận kề lại rõ ràng hơn:thay sử dụng word nhớ cho phần tử ma trận, ma trận kề cần sử dụng đến bit tướng ứng với phần tử ma trận Tìm kiếm theo chiều rộng Khái niệm Duyệt theo chiều rộng (Breadth – first search, BFS) thuật toán đơn giản sử dụng việc duyệt tím kiếm đồ thị Trên sở thuậttoán mà nhiều thuật toán đồ thị quan trọng khác đời, là: • Thuật toán Dijkstra giải toán đường ngắn • Thuật toán Prim giải toán khung nhỏ Giả sử cho đồ thị G=(V,E) vô hướng có hướng đỉnh xuất phát s Thuật toán duyệt theo chiều sâu tiến hành: • Duyệt cạnh đồ thị G để tìm từ đỉnh xuất phát s đến đỉnh Các đỉnh còng gọi đỉnh “thăm” • Tính toán khoảng cách (là số cạnh) từ s tới tất đỉnh đến từ s • Xây dựng (breath-first tree) có gốc s chứa tất đỉnh đến từ s.Với đỉnh v thăm bất kỳ, tồn đường từ gốc s tới nút tương ứng với đỉnh v Đường đường nhắn từ s tới v đồ thị G, có nghĩa số cạnh đường Hoạt động giải thuật Nguyên tắc tô màu Sở dĩ thuật toán BFS có tên gọi bước thuật toán, mở rộng biên giới đỉnh thăm chưa thăm theo quy tắc định: thuật toán thăm đỉnh co khoảng cách từ đỉnh xuất phát k (có nghĩa số cạnh tự s tới đỉnh k) trước thăm đỉnh co khoảng cách từ đỉnh s tới k+1 Trong trình hoạt động, thuật toán tiến hành bôi màu đỉnh với màu màu trắng, xám đen theo nguyên tắc sau: 3/22 Thuật toán đồ thị • Tại bước khởi động tất đỉnh đồ thị có màu trắng • Tất đỉnh thăm có màu xám đen • Thuật toán BFS phân biệt đỉnh có màu xám màu đen để đảm bảo tính chất duyệt theo chiều rộng • Khi đỉnh v thăm lần đầu tiên, bôi màu xám Các đỉnh biểu biên giới đỉnh thăm chưa thăm Sau thuật toán tiến hành duyệt đỉnh kề với đỉnh v • Đỉnh v bôi màu đen duyệt xong (thăm) tất đỉnh kề với v Như có cạnh (u,v)∈E đỉnh u có màu den, đỉnh v xám đen Điều có nghĩa tất đỉnh kề với đỉnh có màu đen chưa thăm Cây Breadth–First Tree Thuật toán BFS cho phép xây dựng T (breadth – first tree) sau: • Ban đầu có gốc đỉnh s • Trong trình duyệt, giả sử thuật toán duyệt đến đỉnh chưa thăm u Khi u trở thành đỉnh thăm thuật toán tiến hành duyệt danh sách đỉnh kề với đỉnh u Nếu gặp phải đỉnh v kề với u, mà đỉnh v lại có màu trắng (chưa dược thăm lần cả), đỉnh v cạnh (u,v) bổ sung vào Điều có nghĩa nút tương ứng với đỉnh u nút cha nút tương ứng với đỉnh v, đỉnh u gọi đỉnh trước đỉnh v thứ tự duyệ theo chiều rộng Do đỉnh thăm nhiều lần, nên nút T tương ứng với đỉnh có cha Mô tả thuật toán Thuât toán BFS mô tả sau: Đầu vào: • Cho đồ thị vô hướng có hướng G=(V,E) biểu diễn danh sách kề • Màu đỉnh u∈V lưu mảng color[u] • Đỉnh trước đỉnh u lưu mảng π[u] Nếu đỉnh u đỉnh trước, π[u]=NIL • Khoảng cách từ đỉnh xuất phát s tới dỉnh u lưu mảng d[u] • Thuật toán sử dụng hàng đợi Q (theo nguyên tắc FIFO – vào trước trước) để quản lý tập đỉnh có màu xám 4/22 Thuật toán đồ thị Mô thuật toán BFS ngôn ngữ giả Pascal: BFS (G,s) for each vertex u [...]... Cho đồ thị sau: Hãy biểu diễn đồ thị bằng a) Ma trận kề b) Danh sách kề 20/22 Thuật toán đồ thị cơ bản Dành cho độc giả Cho đồ thị sau Hãy biểu diễn đồ thị bằng c) Ma trận trọng số d) Danh sách kề 3.Cho các đồ thị Hãy minh họa các bước của thuật toán a) Tìm kiếm theo chiều sâu b) Tìm kiếm theo chiều rộng Dành cho độc giả Cho đồ thị 21/22 Thuật toán đồ thị cơ bản Nêu cách sắp xếp thứ tự các đỉnh do thuật. . .Thuật toán đồ thị cơ bản Nghiã là tổng số phép toán cần thực hiện tại các dòng 2-5 của thủ tục DFS-Visit là θ (E) Vì vậy độ phức tạp tính toán của thủ tục DFS sẽ là θ (V+E) Một số định lý của thuật toán tìm kiếm theo chiều sâu Quá trình tìm kiếm theo chiều sâu trên đồ thị mô tả nhiều thông tin về cấu trúc của đồ thị Một trong các thuộc tính cơ bản nhất của tìm kiếm sâu là đồ thị con trước... chiều sâu trên GT c) ồ thị thành phần GSCC được thu được bằng cách co mỗi thành phần của G thành một đỉnh đơn 17/22 Thuật toán đồ thị cơ bản Thuật toán với thời gian tính tuyến tính sau tính toán các thành phần liên thông của đồ thị có hướng G= (V, E) bằng cách sử dụng 2 lần tìm kiếm theo chiều sâu, một trên G và một trên GT STRONGLY-CONNECTED-COMPONENTS(G) 1 gọi DFS(G) để tính toán thời gian kết thúc... thể đánh giá độ phức tạp tính toán của giải thuật là Q(V+E) vì: tìm kiếm theo chiều sâu mất Q(V+E) và để chèn một đỉnh (trong số |V| đỉnh) vào trước danh sách liên kết mất O(1) Chúng ta chứng minh tính đúng đắn của giải thuật này bằng cách sử dụng một bổ đề quan trọng nêu lên đặc tính của các đồ thị không chu trình có hướng 14/22 Thuật toán đồ thị cơ bản Bổ đề 5 Một đồ thị có hướng G là không có chu... liên thông mạnh của một đồ thị có hướng G=(V, E) là tập cực đại các đỉnh U ⊆ V sao cho mỗi cặp đỉnh u và v thuộc U ta có uv và vu có nghĩa là u và v đều có thể được đi tới từ các đỉnh khác Thuật toán tìm kiếm các thành phần liên thông mạnh của một đồ thị G=(V, E) sử dụng đồ thị đảo của G, đồ thị này gọi là GT = (V, ET), trong đó ET = {(u,v): (v,u) ∈ E} ET bao gồm các cung của đồ thị G với chiều đảo ngược... bất kỳ cạnh (u,v) nào trong đồ thị dag, chúng ta đều có f[v] ... search, BFS) thuật toán đơn giản sử dụng việc duyệt tím kiếm đồ thị Trên sở thuậttoán mà nhiều thuật toán đồ thị quan trọng khác đời, là: • Thuật toán Dijkstra giải toán đường ngắn • Thuật toán Prim... Cho đồ thị sau: Hãy biểu diễn đồ thị a) Ma trận kề b) Danh sách kề 20/22 Thuật toán đồ thị Dành cho độc giả Cho đồ thị sau Hãy biểu diễn đồ thị c) Ma trận trọng số d) Danh sách kề 3.Cho đồ thị. .. tạp tính toán thuật toán BFS O(V+E) Từ suy thời gian tính toán BFS tỷ lệ tuyến tính với kích thước danh sách kề đồ thị G 7/22 Thuật toán đồ thị Tìm kiếm theo chiều sâu Khái niệm Thuật toán tìm

Ngày đăng: 30/12/2015, 09:41

Từ khóa liên quan

Mục lục

  • Thuật toán đồ thị cơ bản

  • Biểu diễn đồ thị

    • Các phương pháp biểu diễn đồ thị

    • Danh sách kề

    • Ma trận kề

    • Tìm kiếm theo chiều rộng

      • Khái niệm

      • Hoạt động của giải thuật

      • Tìm kiếm theo chiều sâu

        • Khái niệm

        • Độ phức tạp tính toán

        • Một số định lý của thuật toán tìm kiếm theo chiều sâu

        • Phân loại cạnh

        • Sắp xếp Topo

          • Giải thuật sắp xếp Topo

          • Độ phức tạp tính toán

          • Độ phức tạp tính toán

          • Các thành phần liên thông mạnh

            • Giới thiệu

            • Các bổ đề và định lý cơ bản

            • Bài tập chương

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

  • Đang cập nhật ...

Tài liệu liên quan