Bài giảng Cấu trúc dữ liệu và giải thuật (Data structures and Algorithms) - Chương 2 trang bị cho người học những kiến thức cơ bản về đồ thị. Những nội dung chính được trình bày trong chương này gồm có: Định nghĩa đồ thị, biểu diễn đồ thị, phép duyệt đồ thị, cây khung và cây khung với giá trị cực tiểu. Mời các bạn cùng tham khảo.
Chương 2: Đồ thị Các khái niệm 1.1 Định nghĩa đồ thị Đồ thị G(V,E) bao gồm tập hữu hạn V đỉnh (hay nút) tập hữu hạn E cặp đỉnh mà ta gọi cung ( hay cạnh) Ví dụ 1: Một mạng gồm máy tính kênh điện thoại nối máy tính đồ thị Ví dụ 2: Một mạng gồm thành phố, thị xã đường nối thành phố, thị xã đồ thị 1.2 Định nghĩa đồ thị vô hướng Đồ thị vô hướng G=(V,E) bao gồm V tập đỉnh E tập cặp đỉnh khơng có thứ tự gọi cung Bài giảng Cấu trúc liệu giải thuật - Chương 02 2.1 Bài giảng Cấu trúc liệu giải thuật - Chương 02 2.2 * Nếu (v1, v2) cung tập E(G) v1 v2 gọi lân cận Ví dụ 1,2 lân cân, 1,3 lân cận * Một đường từ đỉnh u đến đỉnh v đồ thị dãy đỉnh u=x0, x1, , xn-1, xn=v mà dãy cạnh (x0, x1), (x1, x2), , (xn-1, xn) cung thuộc E(G) * Số lượng cung đường gọi độ dài đường Ví dụ đường từ đến có độ dài * Đường đơn: Là đường mà đỉnh đó, trừ đỉnh đầu đỉnh cuối khác * Một chu trình đường đơn mà đỉnh đầu đỉnh cuối trùng Ví dụ: 1→ → 5→ 4→1 Bài giảng Cấu trúc liệu giải thuật - Chương 02 2.3 Bài giảng Cấu trúc liệu giải thuật - Chương 02 2.4 Bài giảng Cấu trúc liệu giải thuật - Chương 02 2.5 Bài giảng Cấu trúc liệu giải thuật - Chương 02 2.6 Bài giảng Cấu trúc liệu giải thuật - Chương 02 2.7 Bài giảng Cấu trúc liệu giải thuật - Chương 02 2.8 Bài giảng Cấu trúc liệu giải thuật - Chương 02 2.9 Bài giảng Cấu trúc liệu giải thuật - Chương 02 2.10 Bài giảng Cấu trúc liệu giải thuật - Chương 02 2.11 Bài giảng Cấu trúc liệu giải thuật - Chương 02 2.12 Phép duyệt đồ thị * Xét đồ thị vô hướng G(V,E) đỉnh v∈V Ta cần thăm tất đỉnh G mà “ với tới” từ đỉnh v ( nghĩa đồ thị liên thơng) Có cách duyệt đồ thị: - Phép tìm kiếm theo chiều sâu ( Depth first search ) - Phép tìm kiếm theo chiều rộng (Breadth first search ) 3.1 Phép tìm kiếm theo chiều sâu ( Depth first search ) Xét đồ thị vơ hướng Phép tìm kiếm theo chiều sâu thể sau: - Đỉnh xuất phát v thăm - Tiếp theo ta thăm đỉnh w đỉnh chưa thăm lân cận v Phép tìm kiếm theo chiều sâu xuất phát từ w lại thực Trong trường hợp đỉnh u thăm mà đỉnh lân cận thăm ta quay lại đỉnh cuối vừa thăm ( mà đỉnh đỉnh w lân cận chưa thăm) phép tìm kiếm theo chiều sâu xuất phát từ w lại thực Bài giảng Cấu trúc liệu giải thuật - Chương 02 2.13 Bài giảng Cấu trúc liệu giải thuật - Chương 02 2.14 Phép duyệt theo chiều sâu theo trình tự sau: v1 → v2 → v4 → v8 → v5 → v6 → v3 → v7 * Thủ tục phép duyệt theo chiều sâu sau: Cho đồ thị G(V,E) vơ hướng có n đỉnh véc tơ Visited(n) gồm n phần tử, ban đầu véc tơ có giá trị =0 Thuật giải thực thăm đỉnh “ với tới “ từ đỉnh v Procedure DFS(v) Write(v); {Thăm v} Visited(v):=1 {Đánh dấu v thăm} FOR đỉnh w lân cận với v DO If Visited(w) = then CALL DFS(w); Return * Đánh giá thuật toán: + Trường hợp biểu diễn đồ thị dùng danh sách móc nối: G có e cung, nút với tới lần, nên thời gian tìm kiếm O(e) + Trường hợp biểu diễn đồ thị dùng ma trận lân cận : thời gian xác định điểm lân cận v O(n) Có n đỉnh nên thời gian tìm kiếm O(n2) Bài giảng Cấu trúc liệu giải thuật - Chương 02 2.15 3.2 Phép tìm kiếm theo chiều rộng (Breadth first search ) Xét đồ thị vô hướng Phép tìm kiếm theo chiều rộng thể sau: - Đỉnh xuất phát v thăm - Tiếp theo đỉnh chưa thăm mà lân cận v thăm, đến đỉnh chưa thăm lân cận lượt đỉnh tương tự Ví dụ trên: Phép duyệt theo chiều rơng theo trình tự sau: v1 → v2 → v3 → v4 → v5 → v6 → v7 → v8 * Thủ tục phép duyệt theo chiều rong sau: Cho đồ thị G(V,E) vơ hướng có n đỉnh véc tơ Visited(n) gồm n phần tử, ban đầu véc tơ có giá trị =0 Thuật giải thực thăm đỉnh “ với tới “ từ đỉnh v Bắt đầu từ đỉnh v Mọi đỉnh i thăm đánh dấu Visited(i):=1 Dùng hàng đợi Q có kích thước n; F, R lối trước lối sau hàng đợi Khi thăm đình loại bỏ khỏi hàng đợi; chưa thăm bổ sung vào hàng đợi Bài giảng Cấu trúc liệu giải thuật - Chương 02 2.16 Procedure BFS(v) Khởi tạo hàng đợi Q với v đưa vào Visited(v):=1 { đánh dấu v thăm } While Q khác rỗng DO Begin Call CQDELETE(v,Q) { loại bỏ v khỏi Q} FOR đỉnh w lân cận với v DO Begin If Visited(w)=0 then Begin CALL CQINSERT(w,Q); { Bổ sung w vào Q} Visited(w):=1 End End End Return Bài giảng Cấu trúc liệu giải thuật - Chương 02 2.17 * Đánh giá giải thuật: Vòng lặp While lặp lại n lần - Nếu biểu diễn đồ thị ma trận lân cận thời gian thực O(n2) - Nếu biểu diễn đồ thị danh sách lân cận thời gian thực O(e) Cây khung khung với giá trị cực tiểu 4.1 Cây khung * Nếu G đồ thị liên thơng phép tìm kiếm theo chiều sâu theo chiều rộng xuất phát từ đỉnh thăm đỉnh Như cung G phân thành tập: - Tập T chứa cung duyệt qua - Tập b gồm cung lại * Tất cung đỉnh T tạo thành bao gồm đỉnh G Cây gọi khung G Bài giảng Cấu trúc liệu giải thuật - Chương 02 2.18 Bài giảng Cấu trúc liệu giải thuật - Chương 02 2.19 Bài giảng Cấu trúc liệu giải thuật - Chương 02 2.20 Bài giảng Cấu trúc liệu giải thuật - Chương 02 2.21 Bài giảng Cấu trúc liệu giải thuật - Chương 02 2.22 4.2 Cây khung với giá trị cực tiểu * Bài toán: Xác định khung với giá trị cực tiểu đồ thị liên thông có trọng số Gía trị khung tổng trọng số ứng với cạnh khung * Có nhiều giải thuật xác định khung với giá trị cực tiểu phần ta xét giải thuật Kruskal Với giải thuật khung T xây dựng dần cung Các cung đưa vào T thoả mãn: - Cung có giá trị cực tiểu cung cịn lại - Khơng tạo chu trình với cung có T Bài giảng Cấu trúc liệu giải thuật - Chương 02 2.23 * Giải thuật Kruskal viết sau: T=Φ { T rỗng While T chứa (n-1) cung Do Begin Chọn cung (v,w) từ E có giá trị nhỏ Loại (v,w) khỏi E If (v,w) không tạo nên chu trình T Then đưa (v,w) vào T End; Return Bài giảng Cấu trúc liệu giải thuật - Chương 02 2.24 Bài giảng Cấu trúc liệu giải thuật - Chương 02 2.25 Bài giảng Cấu trúc liệu giải thuật - Chương 02 2.26 * Đánh giá giải thuật: Thời gian thực giải thuật xác định qua thực bước Trường hợp xấu O(e.log e) e số cung đồ thị G Bài giảng Cấu trúc liệu giải thuật - Chương 02 2.27 ... Bài giảng Cấu trúc liệu giải thuật - Chương 02 2.3 Bài giảng Cấu trúc liệu giải thuật - Chương 02 2.4 Bài giảng Cấu trúc liệu giải thuật - Chương 02 2.5 Bài giảng Cấu trúc liệu giải thuật - Chương. .. 02 2.6 Bài giảng Cấu trúc liệu giải thuật - Chương 02 2.7 Bài giảng Cấu trúc liệu giải thuật - Chương 02 2.8 Bài giảng Cấu trúc liệu giải thuật - Chương 02 2.9 Bài giảng Cấu trúc liệu giải thuật. .. giải thuật - Chương 02 2.19 Bài giảng Cấu trúc liệu giải thuật - Chương 02 2 .20 Bài giảng Cấu trúc liệu giải thuật - Chương 02 2 .21 Bài giảng Cấu trúc liệu giải thuật - Chương 02 2 .22 4 .2 Cây khung