1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bài giảng Bài 6: Các thuật toán tìm kiếm trên đồ thị và một số ứng dụng - Trường Đại học Công nghiệp Thực phẩm Tp. Hồ Chí Minh

7 35 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 7
Dung lượng 486,79 KB

Nội dung

Như vậy, việc thăm theo chiều rộng chỉ xác định thứ tự theo mức các đỉnh, còn thứ tự theo các đỉnh cùng mức là không duy nhất, tùy theo từng cài đặt xử lý thứ tự này.  Mức cao nhất đ[r]

(1)

Bài 6: Các thuật tốn tìm kiếm đồ thị sốứng dụng BÀI 6: CÁC THUT TỐN TÌM KIM TRÊN ĐỒ TH

VÀ MT S NG DNG

Nội dung

 Giới thiệu tốn tìm kiếm đồ thị  Thuật tốn tìm kiếm theo chiều rộng

 Thuật tốn tìm kiếm theo chiều sâu

 Một sốứng dụng

Giới thiệu

Bài tốn tìm kiếm đồ thịđược phát biểu chung cho cảđồ thị có hướng hay vô hướng với ý nghĩa cạnh vô hướng xem theo chiều Có thể nói, việc giải nhiều tốn ứng dụng đồ thị, thao tác tìm kiếm dùng thao tác bản, đến mức vai trị ứng dụng đồ thị giống vai trò phép cộng, trừ, tính tốn số học

Mục tiêu

Sau học này, bạn có thể:

 Hiểu tốn tìm kiếm đồ thị

 Sử dụng thuật toán:

 Tìm kiếm theo chiều rộng  Tìm kiếm theo chiều sâu

vào việc giải toán tìm kiếm đồ thị

 Minh họa số kết ứng dụng tốn tìm kiếm đồ thị qua việc nghiên cứu sốứng dụng cụ thể

Thời lượng

(2)

Bài 6: Các thuật tốn tìm kiếm đồ thị sốứng dụng TÌNH HUỐNG DẪN NHẬP

Tình huống: Truyền tin

Một lớp gồm N học viên, học viên cho biết bạn mà học viên liên lạc (chú ý liên lạc liên lạc chiều, ví dụ : Bạn An gửi tin tới Bạn Vinh Bạn Vinh chưa gửi tin tới Bạn An)

Thầy chủ nhiệm có thơng tin quan trọng cần thơng báo tới tất học viên lớp (tin phải truyền trực tiếp) Để tiết kiệm thời gian, thầy nhắn tin tới số học viên sau nhờ học viên nhắn lại cho tất bạn mà học viên liên lạc được, cho tất học viên lớp nhận tin

Câu hỏi

(3)

Bài 6: Các thuật tốn tìm kiếm đồ thị sốứng dụng 6.1. Phát biểu tốn tìm kiếm đồ thị

Cho trước đồ thị đỉnh s cho trước, cần duyệt tất đỉnh, có đường từ s đến nó, cho đỉnh duyệt lần Thao tác vừa nói, gọi thao tác tìm kiếm đỉnh đồ thị bắt đầu từđỉnh s

Có thể nói, nhiều lời giải ứng dụng đồ thị, thao tác tìm kiếm

được dùng thao tác bản, đến mức vai trị ứng dụng đồ thị giống vai trò phép cộng, trừ, tính tốn số học Chú ý rằng, phát biểu vừa nêu, hai điều kiện thao tác tìm kiếm

khơng bỏ sót khơng trùng lặp cịn thứ tự tìm kiếm khơng tính đến Chúng khác tùy chiến lược tìm kiếm khác mục tiêu ứng dụng khác

Bài tốn tìm kiếm đồ thị phát biểu chung cho đồ thị có hướng hay vơ hướng với ý nghĩa cạnh vô hướng xem nhưđi theo chiều Ngồi ra, việc có nhiều cạnh nối cặp đỉnh khơng có khác có cạnh nối cặp đỉnh này, tốn tìm kiếm, đa đồ thị giống

đơn đồ thị

Thao tác tìm kiếm đỉnh đồ thị bắt đầu từđỉnh s gọi thao tác duyệt các đỉnh hay đi thăm đỉnh bắt đầu từđỉnh s Các đỉnh tìm kiếm gọi đỉnh được duyệt hay được thăm từđỉnh s

Có hai thuật tốn thực việc tìm kiếm đỉnh đồ thị

đỉnh tìm kiếm theo chiều rộng tìm kiếm theo chiều sâuđược trình bày mục

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

Việc tìm kiếm theo chiều rộng đỉnh s, tiến hành đồng thời theo hướng phát triển theo mức: “gần” s thăm trước, “xa” s thăm sau Để đo độ

gần, xa đỉnh thăm so với s, ta đánh “mức” đỉnh sau Đỉnh s đỉnh có mức (đỉnh xuất phát) Những đỉnh kề với s đánh mức Những đỉnh kề với đỉnh mức mà chưa xét đánh mức 2,

Chú ý: đỉnh đánh mức lần trình đánh mức kết thúc, đỉnh đánh mức đỉnh thăm,

đỉnh có mức thấp thăm trước, đỉnh có mức cao thăm sau, đỉnh mức xem nhưđược thăm đồng thời với ý nghĩa theo thứ tự

được Từ quy tắc đánh mức ta thấy rằng, mức đỉnh thăm độ dài (tính theo số cạnh) đường ngắn từđỉnh s đến đỉnh Về trực giác, ta

hình dung rằng, việc tìm kiếm đỉnh theo chiều rộng tiến hành theo vòng tròn đồng tâm (với tâm điểm đỉnh xuất phát) với bán kính tăng dần (các đỉnh vòng tròn đỉnh mức) không tăng nữa, giống việc nhỏ giọt dầu mặt nước, vết dầu loang rộng xung quanh Cũng vậy, tên gọi thuật tốn tìm kiếm theo chiều rộng có tên gọi khác vết dầu loang

Để tổ chức việc tìm kiếm theo chiều rộng, đỉnh xét thăm cần lưu trữ

(4)

Bài 6: Các thuật tốn tìm kiếm đồ thị sốứng dụng nhưđã xét), đồng thời đỉnh kề với đỉnh chưa xét thăm, sẽđược nạp vào danh sách Vì việc thăm phải tuân theo thứ tự “gần” trước, “xa” sau nên

đỉnh lấy phải đầu danh sách (gọi đầu danh sách), đỉnh

được nạp vào phải đầu danh sách (gọi cuối danh sách) Một danh sách hoạt động theo chế vào trước, trước gọi hàng đợi (queue – xem giáo trình cấu trúc liệu giải thuật) Rõ ràng lúc ban đầu, hàng

đợi cần chứa phần tử đỉnh xuất phát Quá trình tìm kiếm theo chiều rộng xuất phát từđỉnh s, nhờ hàng đợi Q, mơ tả qua sơđồ khối sau:

Để cài đặt, hàng đợi Q tổ chức mảng (đánh số từ 1) với số phần tử tối

đa sốđỉnh giá trị khởi động Q1 = s Để kiểm sốt vị trí đầu, cuối Q, có

thể dùng hai biến nguyên dau, cuoi với giá trị khởi động Phần tử u lấy Qdau lấy cần tăng biến dau lên đơn vị Mỗi nạp v vào Q cần tăng

biến cuoi lên đơn vị gán Qcuoi v Để kiểm soát đỉnh xét thăm

hay chưa, cần tổ chức mảng lơgic B có số chạy tập đỉnh Ban đầu B

được khởi gán Bu := TRUE với đỉnh u, trừ Bs := FALSE (đỉnh xuất phát

thăm đầu tiên, đỉnh lại chưa thăm) Điều kiện nạp v vào Q v kề với u Bv Mỗi nạp v vào Q cần gán lại Bv := FALSE (đỉnh v xét

thăm) để đảm bảo không xét lại v lần thứ hai Dấu hiệu Q rỗng (cũng dấu hiệu kết thúc vòng lặp) biến dau, cuoi lần thỏa mãn bất đẳng thức dau > cuoi Khi kết thúc, đỉnh thăm từ s theo thứ tự Q1, Q2, , Qcuoi

Ví dụ. Cho đồ thị (có hướng) đây:

(5)

Bài 6: Các thuật tốn tìm kiếm đồ thị sốứng dụng

Giải. Bảng cho biết trạng thái hàng đợi Q, đỉnh lấy ra, đỉnh đưa vào bước theo thuật toán nêu:

Hàng đợi Q Đỉnh lấy Đỉnh đưa vào

A A B, C

B, C B

C C D, E

D, E D F

E, F E

F F

rỗng

Kết cho thấy đỉnh thăm A theo thứ tự A, B, C, D, E, F Có thể giải lại thí dụ với đỉnh xuất phát khác nhau, chẳng hạn xuất phát từ C, đỉnh thăm ngoại trừ đỉnh A (D, E có mức 1, B, F có mức 2), cịn xuất phát từ F khơng có đỉnh thăm cả, ngoại trừ

Chú ý

 Các đỉnh thăm theo thứ tự mức: mức thấp thăm trước, mức cao thăm sau Trong thí dụ trên, A (đỉnh xuất phát) có mức thăm đầu tiên, đỉnh B, C có mức 1, sau đỉnh D, E có mức cuối đỉnh F có mức

 Các đỉnh mức thăm theo thứ tự Như vậy, việc thăm theo chiều rộng xác định thứ tự theo mức đỉnh, thứ tự theo đỉnh mức không nhất, tùy theo cài đặt xử lý thứ tự Trong thí dụ trên, đỉnh mức xử lý theo thứ tự từ điển tên đỉnh, xử lý theo thứ tự ngược từ điển, trình tự thăm A, C, B, E, D, F (vẫn đảm bảo thứ tự theo mức)

 Mức cao đạt độ dài đường ngắn (tính theo số cạnh) từ đỉnh xuất phát đến đỉnh “xa” (những đỉnh “xa” đỉnh xuất phát đỉnh đạt mức cao này) Trong thí dụ trên, đỉnh F có mức đỉnh “xa” A nhất, độ dài đường ngắn từ A đến F

6.3. Tìm kiếm theo chiều sâu

Quá trình tìm kiếm theo chiều sâu tiến hành theo hướng: từđỉnh xuất phát s (xem nhưđã thăm), chọn đỉnh u kề với s để thăm u, sau từđỉnh u, chọn đỉnh v kề với u chưa thăm để thăm v, Quá trình thăm phát triển theo hướng không phát triển (chú ý không thăm đỉnh thăm rồi), cần lùi lại đỉnh trước để phát triển theo hướng khác Chính việc tìm kiếm phát triển theo hướng tận vậy, nên thuật tốn có tên gọi tìm kiếm theo chiều sâu

(6)

Bài 6: Các thuật tốn tìm kiếm đồ thị sốứng dụng Thuật tốn tìm kiếm theo chiều sâu dễ dàng phát biểu cách đệ quy (giống thuật tốn quay lui), tiện dùng ngôn ngữ đệ quy để cài đặt (chẳng hạn C hay Pascal) Với cách ta lợi dụng chế ngăn xếp lời gọi

đệ quy mà không cần phải tổ chức ngăn xếp cách tường minh

Giả sử đỉnh đồ thị đánh số số ngun Việc tìm kiếm theo chiều sâu thực nhờ thủ tục đệ quy (mô Pascal) đây:

PROCEDURE VISIT (u: INTEGER);

{đi thăm đỉnh theo chiều sâu bắt đầu từ đỉnh u} VAR v: INTEGER;

BEGIN

(đánh dấu thăm u);

FOR (v kề với u v chưa thăm) DO VISIT(v); END;

Trong chương trình chính, sau khởi gán đỉnh chưa thăm, thủ tục VISIT khởi động lời gọi VISIT(s) với s đỉnh xuất phát

Trở lại thí dụđã xét mục trên, với đỉnh xuất phát A (xem A số nguyên) Lời gọi VISIT(A) sẽđánh dấu thăm A duyệt đỉnh kề với A chưa thăm, sau chọn đỉnh để thăm tiếp Việc chọn đỉnh trước tùy thuộc thứ tự duyệt vòng FOR Để xác định, giả sử vòng FOR duyệt đỉnh theo thứ

tự từđiển, VISIT(B) gọi, vậy, lời gọi đệ quy VISIT(C), VISIT(D), VISIT(F) Đến đây, đỉnh thỏa mãn điều kiện thăm, lời gọi VISIT(F) kết thúc trình lùi lại VISIT(C) thủ tục VISIT(E) gọi, sau q trình lùi dần đến VISIT(A) kết thúc Cuối ta nhận kết quảđi thăm theo thứ tự A, B, C, D, F, E

Như vậy, thứ tự thăm theo chiều sâu khơng xác định, tùy thuộc vào thứ tự

duyệt đỉnh thỏa mãn điều kiện thăm bước tìm kiếm, khơng thỏa mãn điều kiện “gần” thăm trước, “xa” thăm sau tìm kiếm theo chiều rộng Bạn đọc cài thứ tự duyệt ngẫu nhiên vòng FOR thủ

tục VISIT để thấy rằng, lần chạy lại chương trình (với liệu), thứ

tự đỉnh thăm khác Cuối cần ý rằng, dù thứ tự thăm khác nhau, việc tìm kiếm theo chiều rộng hay theo chiều sâu đảm bảo điều kiện đỉnh thăm khơng bỏ sót khơng trùng lặp

Việc viết chương trình cụ thể minh họa thuật tốn tìm kiếm theo chiều rộng theo chiều sâu dành cho bạn đọc tập

6.4. Một sốứng dụng thuật toán tìm kiếm

Thuật tốn tìm kiếm dùng nhiều ứng dụng đồ thị Dưới ta

(7)

Bài 6: Các thuật tốn tìm kiếm đồ thị sốứng dụng 6.4.1. Xác định tính liên thơng đồ thị

Điều kiện liên thông đồ thị thường yêu cầu tất yếu nhiều ứng dụng, chẳng hạn mạng giao thông hay mạng thông tin không liên thơng xem

bị hỏng, cần sửa chữa Vì thế, việc kiểm tra đồ thị có liên thông hay không thao tác cần thiết nhiều ứng dụng khác đồ thị Dưới ta xét tình đơn giản (nhưng bản) xác định tính liên thơng đồ thị vô hướng với nội dung cụ thể sau: “cho trước đồ thị vô hướng, hỏi có liên thơng hay khơng?”

Để trả lời toán, xuất phát từ đỉnh tùy ý, ta bắt đầu thao tác tìm kiếm từđỉnh (có thể chọn hai thuật tốn tìm kiếm nêu) Khi kết thúc tìm kiếm, xảy hai tình huống: tất đỉnh đồ thị thăm đồ thị cho liên thơng, có đỉnh khơng thăm đồ thịđã cho không liên thông Như vậy, câu trả lời toán xem hệ trực tiếp thao tác tìm kiếm

Để kiểm tra xem có phải tất đỉnh đồ thị có thăm hay khơng, ta cần thêm thao tác nhỏ q trình tìm kiếm, dùng biến đếm để đếm số đỉnh thăm Khi kết thúc tìm kiếm, câu trả lời toán phụ thuộc vào việc so sánh giá trị biến đếm với sốđỉnh đồ thị: giá trị biến đếm số đỉnh đồ thị liên thơng, trái lại đồ thị không liên thông

Trong trường hợp đồ thị khơng liên thơng, kết tìm kiếm xác định thành phần liên thông chứa đỉnh xuất phát Bằng cách lặp lại thao tác tìm kiếm với đỉnh xuất phát khác, không thuộc thành phần liên thông vừa tìm, ta nhận thành phần liên thơng thứ hai, , ta giải toán tổng quát xác định thành phần liên thông đồ thị vô hướng bất kỳ

Ví dụ. Xác định thành phần liên thông đồ thị vô hướng cho ma trận kề

dưới (chỉ ghi nửa ma trận đối xứng): A B C D E F A 0 1 B 0 0 C 0

D 0

E 0

F

Giải. Xuất phát từ A, kết tìm kiếm A, D, F Xuất phát từ B, kết tìm kiếm

được B Xuất phát từ C, kết tìm kiếm C, E Đến đây, tất đỉnh đồ

thịđều xét Kết nhận đồ thịđã cho gồm thành phần liên thông {A, D, F}, {B}, {C, E}

Đối với đồ thị có hướng, để xác định tính liên thơng mạnh, ta lặp lại thao tác trình bày với đỉnh xuất phát đỉnh đồ thị Nếu với đỉnh xuất phát, tất cá đỉnh đồ thịđều thăm đồ thịđang xét liên thơng mạnh, trái lại,

đồ thị không liên thông mạnh Để xác định tính liên thơng có cách làm hiệu

Ngày đăng: 01/04/2021, 18:26

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w