Bài Giảng Cấu Trúc Dữ Liệu Và Giải ThuậtChương 5

9 270 2
Bài Giảng Cấu Trúc Dữ Liệu Và Giải ThuậtChương 5

Đang tải... (xem toàn văn)

Thông tin tài liệu

bài giảng chi tiết và đầy đủ nhất cấu trúc dữ liệu và giải thuật giúp bạn làm quen cũng như thành thạo khả năng giải quyết các vấn đề về giải thuật trong thời gian nhanh nhất. bài giảng với những ngôn từ dễ hiểu được sắp xếp một cách logic để bạn có thể tiếp thu nhanh nhất.

Chương 5: Đồ 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 thứ tự gọi cung * 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 3 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 Phép duyệt theo chiều sâu theo trình tự sau: v1 → v2 → v4 → v8 → v5 → v8 → 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) Visited(v):=1 { đánh dấu v thăm } FOR đỉnh w lân cận với v DO If Visited(w)=0 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) 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 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ông 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 * Đá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 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 lại - Không tạo chu trình với cung có T * 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 * Đá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 toán tìm đường ngắn ( Bài toán nguồn đích) ( Single source all destination ) * Cho đồ thị có hướng G(V,E), hàm trọng số w(e) cho cung e G đỉnh nguồn v0 Bài toán đặt là: Xác định đường ngắn từ v0 đến đỉnh lại G ( độ dài đường tổng trọng số cung đường trọng số dương ) * Gọi S tập đỉnh kể v0 mà đường ngắn xác lập Đối với đỉnh w ∈ S, gọi Dist(w) độ dài đường ngắn từ v0 qua đỉnh S kết thúc w có số nhận xét sau: Nếu đường ngắn tới w đường v0 kết thúc w qua đỉnh thuộc S Đích đường sinh phải đỉnh w ∉ S mà có Dist(w) ngắn so với đỉnh ∉S Nếu chọn đỉnh w nhận xét sinh đường ngắn từ v0 đến w w trở thành phần tử S * Giải thuật: Procedure Shortest_Path(v,Cost,Dist,n) { Dist(j) 1

Ngày đăng: 21/06/2016, 23:25

Từ khóa liên quan

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

Tài liệu liên quan