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

14 20 0
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

Đ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

Thông qua 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 người học hiểu thế nào là bài toán tìm kiếm trên đồ thị; sử dụng các 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 quyết bài toán tìm kiếm trên đồ thị.

Bài 6: Các thuật tốn tìm kiếm đồ thị số ứng dụng BÀI 6: CÁC THUẬT TOÁN TÌM KIẾM TRÊN ĐỒ THỊ VÀ MỘT SỐ ỨNG DỤNG 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ị phát biểu chung cho đồ 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 tố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 tố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  tiết v1.0 133 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 Có phương án giúp thầy chủ nhiệm với số học viên mà thầy chủ nhiệm cần nhắn? 134 v1.0 Bài 6: Các thuật tốn tìm kiếm đồ thị số ứng dụng 6.1 Phát biểu toá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ị đỉnh s Có thể nói, nhiều lời giải ứ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 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 theo chiều Ngoà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ị đỉnh s gọi thao tác duyệt đỉnh hay thăm đỉnh đỉnh s Các đỉnh tìm kiếm gọi đỉnh duyệt hay 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 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 q 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 thăm đồng thời với ý nghĩa theo thứ tự 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ữ dần danh sách, đỉnh thăm lấy khỏi danh sách (xem v1.0 135 Bài 6: Các thuật tốn tìm kiếm đồ thị số ứng dụng xét), đồng thời đỉnh kề với đỉnh chưa xét thăm, 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 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, 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 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: Hãy thăm đỉnh A 136 v1.0 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ú ý 6.3  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 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 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 Để tiến hành tìm kiếm theo chiều sâu, đỉnh thăm cần lưu trữ vào danh sách cho đỉnh nạp sau lùi Với chế vào sau, trước vậy, danh sách có đầu, vừa nơi lấy vừa nơi nạp vào phần tử Một danh sách gọi ngăn xếp (stack – xem giáo trình cấu trúc liệu giải thuật) v1.0 137 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 toá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ố nguyên 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 đỉ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) đá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, khơng có đỉ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 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 xét ứng dụng đơn giản mà kết chúng dường hệ trực tiếp thao tác tìm kiếm 138 v1.0 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 Ví dụ Xác định thành phần liên thông đồ thị vô hướng cho ma trận kề (chỉ ghi nửa ma trận đối xứng): A B C D E F A B C D E F 0 1 0 0 0 0 0 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 B Xuất phát từ C, kết tìm kiếm C, E Đến đây, tất đỉnh đồ thị 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ị thăm đồ thị 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 đòi hỏi lần DFS: v1.0 139 Bài 6: Các thuật tốn tìm kiếm đồ thị số ứng dụng 6.4.2  Lần 1: DFS G  Lần 2: DFS GT (là đồ thị thu từ G việc đảo ngược hướng tất cung) Tìm đường Việc tìm đường từ đỉnh đến đỉnh đồ thị thao tác thường gặp nhiều ứng dụng Trong mục này, ta giải tốn tìm đường với nội dung sau: “Cho đồ thị (có hướng vô hướng) hai đỉnh s, t (s ≠ t) Hỏi có đường từ s đến t hay không? Trong trường hợp tồn tại, xác định đường từ s đến t qua cạnh nhất” Bài toán vừa phát biểu bao hàm hai nội dung: 1) Thuộc toán tồn 2) Thuộc toán tối ưu Gợi ý: Lời giải toán sau: xuất phát từ s, tiến hành thao tác tìm kiếm Trong trình tìm kiếm, để ý hai tình huống: có lúc đỉnh t thăm, khẳng định có đường từ s đến t, trái lại, kết thúc tìm kiếm mà đỉnh t chưa thăm khẳng định khơng có đường từ s đến t Trong trường hợp có đường từ s đến t, thuật tốn tìm kiếm thực theo chiều rộng đường tìm đường ngắn (theo số cạnh) từ s đến t (xem lại nội dung thuật tốn tìm kiếm theo chiều rộng, mục 6.2) Chú ý: Trong thao tác tìm kiếm, ta quan tâm đến trạng thái đỉnh thăm hay chưa mà không quan tâm đến “vết” đường đi, để xác định đường này, lúc tìm kiếm ta phải lưu lại “vết” chúng thủ thuật hay dùng việc giải toán tối ưu đồ thị, kỹ thuật “gán nhãn” cho đỉnh (“nhãn” đỉnh thông tin trung gian, phụ thuộc vào đỉnh, phục vụ cho việc tìm kiếm, ý nghĩa cụ thể chúng tùy thuộc vào toán, ta thấy rõ điều 8) Ở đây, “nhãn” đỉnh v ghi nhận đỉnh trước v đường từ s đến v Giá trị chúng xác định lồng vào bước sơ đồ mơ tả thuật tốn tìm kiếm theo chiều rộng (xem mục 6.2) sau:  Đầu tiên, nhãn đỉnh khởi gán rỗng (với ý nghĩa chúng chưa thăm)  Khi khởi gán hàng đợi Q gồm đỉnh xuất phát s, ta khởi gán nhãn s s (xem s thăm)  Trong vòng lặp xử lý hàng đợi Q, lấy u ra, ta kết nạp đỉnh v vào Q với điều kiện v kề với u nhãn v rỗng (chưa xét thăm), sau gán nhãn đỉnh v u  Khi kết thúc tìm kiếm, đỉnh thăm đỉnh gán nhãn (nghĩa có giá trị khác rỗng) Nhờ nhãn này, ta xác định đường ngắn từ s đến đỉnh t gán nhãn theo kỹ thuật “lần ngược” sau: t ← u1 = nhãn(t) ← u2 = nhãn(u1) ← ← s = nhãn(uk) 140 v1.0 Bài 6: Các thuật tốn tìm kiếm đồ thị số ứng dụng Ví dụ Tìm đường cạnh từ đỉnh A đến tất đỉnh thăm thí dụ mục 6.2 Giải Ta cần thêm vào thao tác gán nhãn cho đỉnh bảng tìm kiếm thí dụ xét (nhãn đỉnh viết cặp ngoặc vuông): Hàng đợi Q đỉnh lấy đỉnh đưa vào A [A] A B [A], C [A] B, C B C C D [C], E [C] D, E D F [D] E, F E F F rỗng Trong ví dụ này, tất đỉnh thăm ta nhận kết đường cạnh từ A đến đỉnh theo kỹ thuật “lần ngược”: Từ A đến B: B ← A (1 cạnh) Từ A đến C: C ← A (1 cạnh) Từ A đến D: D ← C ← A (2 cạnh) Từ A đến E: E ← C ← A (2 cạnh) Từ A đến F: F ← D ← C ← A (3 cạnh) Chú ý:  Nếu cần tìm đường từ đỉnh xuất phát đến đỉnh q trình dừng lần đỉnh gán nhãn mà không cần xử lý hết hàng đợi  Nếu thực tìm kiếm theo chiều sâu, ta xác định đường từ đỉnh xuất phát đến đỉnh kết thúc mà khơng đảm bảo đường ngắn Bài tốn tìm đường ngắn (theo nghĩa số cạnh) có nhiều mơ hình ứng dụng thực tế Chẳng hạn, xét toán mạng hàng khơng: “Có mạng hàng khơng (chẳng hạn Vietnam Airlines), bao gồm số sân bay số tuyến bay nối sân bay Một hành khách muốn từ sân bay s đến sân bay t Câu hỏi đặt cho hệ thống mạng: 1) Khách khơng? (kể chấp nhận dừng lại số sân bay trung gian để đổi tuyến) 2) Trong trường hợp được, khách cần để số lần đổi tuyến nhất?” Bài tốn dẫn việc tìm đường cạnh từ s đến t đồ thị mơ tả mạng Một tốn khác phát biểu mạng truyền tin: “Có mạng truyền tin bao gồm số trạm số cạnh nối trạm Một trạm truyền tin đến trạm khác theo đường truyền tin bao gồm hay nhiều cạnh nối Giả sử độ thất thơng tin cạnh nối Hỏi phải truyền tin từ trạm s đến trạm t theo đường để độ thất thơng tin nhất?” Rõ ràng toán dẫn việc tìm đường cạnh từ s đến t đồ thị mơ tả mạng Bạn đọc tìm thêm nhiều thí dụ thực tế v1.0 141 Bài 6: Các thuật tốn tìm kiếm đồ thị số ứng dụng Trong Bài 8, ta đề cập đến tốn tìm đường ngắn theo trọng số mà tốn tìm đường ngắn theo nghĩa cạnh mục này, xem trường hợp riêng 6.4.3 Liệt kê (đếm) đường Trong trường hợp tổng qt tốn tìm đường đi, người ta chưa có giải pháp hữu hiệu ngồi việc phải lựa chọn toàn (nghĩa phải liệt kê tất đường có) Bài tốn liệt kê đường phát biểu sau: “Cho đồ thị (có hướng vô hướng) hai đỉnh s, t (s ≠ t) Hãy liệt kê (và đếm) tất đường đơn từ s đến t” Đây toán thuộc lĩnh vực liệt kê tổ hợp, đường đơn từ s đến t xem cấu hình bao gồm dãy đỉnh liên tiếp kề (không lặp) x1, x2, , xk với x1 đỉnh xuất phát s xk đỉnh kết thúc t Để giải tốn, ta dùng mơ hình quay lui trình bày Bài mà thuật tốn tìm kiếm theo chiều sâu xem biến thể Ví dụ Liệt kê tất đường đơn từ đỉnh A đến đỉnh F thí dụ mục 6.2 Giải Bằng quay lui (với trình tự duyệt đỉnh theo thứ tự từ điển tên đỉnh), ta nhận đường đơn từ A đến F sau: 1) A → B → C → D → F 2) A → B → C → E → D → F 3) A → B → C → E → F 4) A → C → D → F 5) A → C → E → D → F 6) A → C → E → F Bài tập 10 phần tập cho thấy số đường đơn nối hai đỉnh đồ thị nói chung lớn Điều cho thấy toán phải liệt kê tất đường không khả thi 142 v1.0 Bài 6: Các thuật tốn tìm kiếm đồ thị số ứng dụng TÓM LƯỢC CUỐI BÀI Sau học xong học này, bạn cần ghi nhớ vấn đề sau:  u cầu tốn tìm kiếm đồ thị  Các thuật tốn: tìm kiếm theo chiều rộng (sử dụng hàng đợi); tìm kiếm theo chiều sâu (sử dụng ngăn xếp đệ quy)  Một số ứng dụng cụ thể như: xác định tính liên thơng; tìm, liệt kê đường v1.0 143 Bài 6: Các thuật tốn tìm kiếm đồ thị số ứng dụng BÀI TẬP Các tập lập trình nhằm minh họa thuật tốn tìm kiếm ứng dụng chúng Dữ liệu nhập vào tổ chức từ bàn phím từ file Viết chương trình, nhập đồ thị dạng ma trận kề đỉnh xuất phát, sau đưa kết tìm kiếm đỉnh Yêu cầu chương trình cho phép hai lựa chọn: tìm kiếm theo chiều rộng tìm kiếm theo chiều sâu Viết chương trình, nhập đồ thị vô hướng dạng danh sách cạnh, sau dùng thuật tốn tìm kiếm (theo chiều rộng theo chiều sâu), xác định thành phần liên thông đồ thị Viết chương trình, nhập đồ thị vơ hướng dạng danh sách cạnh, sau dùng thuật tốn tìm kiếm (theo chiều rộng theo chiều sâu), xác định cạnh cầu đồ thị cho Một mạng hàng không bao gồm số sân bay số tuyến bay nối sân bay Viết chương trình nhập thơng tin mạng dạng ma trận kề, sau lần nhập sân bay xuất phát s sân bay kết thúc t, chương trình lại đưa hành trình bay từ s đến t (nếu có) cho số lần phải chuyển tuyến Xét lớp học sinh, học sinh lớp giữ địa số học sinh khác Giả thiết rằng, người nhận tin đó, gửi tin cho tất bạn mà biết địa Viết chương trình nhập thơng tin giữ địa dạng danh sách kề, sau xác định người cần gửi tin để số người lớp nhận tin nhiều Viết chương trình, nhập đồ thị dạng ma trận kề, hai đỉnh s ≠ t, sau liệt kê (và đếm) tất đường đơn từ s đến t Một mạng giao thông gồm số thành phố số đoạn đường (hai chiều) nối thành phố Một khách du lịch từ thành phố s đến thành phố t Trên đường khách muốn qua để tham quan thành phố khác, nhiều tốt (mỗi thành phố qua lần) Viết chương trình nhập thơng tin mạng dạng ma trận kề (đối xứng), thành phố s t (s ≠ t), sau đưa hành trình tốt thỏa mãn u cầu khách Trên bàn cờ Vua kích thước n × n, người ta đánh số cột từ đến n theo chiều từ trái sang phải đánh số dòng từ đến n theo chiều từ xuống Mỗi ô bàn cờ xác định tọa độ (x, y) x số cột y số dòng, ≤ x, y ≤ n Một quân Mã đứng ô (u, v) muốn di chuyển đến ô (s, t) Viết chương trình nhập kích thước n, (u, v) – ô xuất phát, (s, t) – ô cần đến, sau đưa hành trình Mã dạng dãy ô hành trình (bắt đầu từ xuất phát kết thúc ô cần đến) cho số bước Mã hành trình (chú ý có nhiều hành trình, cần đưa một) Thí dụ với n = 8, (u, v) = (3, 2), (s, t) = (7, 8), hành trình tìm (3, 2), (4, 4), (6, 5), (5, 7), (7, 8) với số bước Cho bảng vng gồm m × n ơ, ô nằm dòng i, cột j gọi ô (i, j), ≤ i ≤ m, ≤ j ≤ n Trong ô (i, j) người ta ghi số (gọi giá trị ơ) với ý nghĩa có 144 v1.0 Bài 6: Các thuật tốn tìm kiếm đồ thị số ứng dụng giá trị cấm vào, cịn có giá trị cho phép vào Từ cho phép vào bước sang cho phép vào khác có chung cạnh với (theo phía) Viết chương trình, nhập giá trị bảng dạng ma trận m dịng, n cột, sau tìm đường ngắn (ít bước nhất) có, từ mép trái bảng (nằm cột 1) đến ô mép phải bảng (nằm cột n) Chương trình thơng báo không tồn đường này, đưa dãy ô theo thứ tự đường Ví dụ với bảng: 1 1 1 1 1 1 1 đường tìm (4, 1), (4, 2), (5, 2), (5, 3), (5, 4) (chú ý có nhiều đường ngắn nhất, cần tìm một) Bài tập toán đếm đường đi, kết cho thấy việc duyệt tất đường tốn có độ phức tạp khơng khả thi 10 Gọi Sn số đường đơn hai đỉnh khác đồ thị đầy đủ Kn a) Tìm cơng thức truy hồi cho Sn, từ tính S9 b) Khử cơng thức truy hồi tìm để nhận cơng thức tường minh tính Sn c) Từ cơng thức tường minh này, chứng minh Sn vô lớn tương đương với e(n−2)! n → ∞ d) Dùng chương trình viết tập (với liệu vào đồ thị đầy đủ) để kiểm tra kết tính Sn tập v1.0 145 Bài 6: Các thuật tốn tìm kiếm đồ thị số ứng dụng CÂU HỎI THƯỜNG GẶP Phân biệt khác định nghĩa liên thông đồ thị vơ hướng đồ thị có hướng? Phân biệt thuật tốn tìm kiếm theo chiều rộng tìm kiếm theo chiều sâu? Hai điều kiện thuật tốn tìm kiếm gì? 146 v1.0 ... tập 6.4 Một số ứng dụng thuật tốn tìm kiếm Thuật tốn tìm kiếm dùng nhiều ứng dụng đồ thị Dưới ta xét ứng dụng đơn giản mà kết chúng dường hệ trực tiếp thao tác tìm kiếm 138 v1.0 Bài 6: Các thuật. .. Một số ứng dụng cụ thể như: xác định tính liên thơng; tìm, liệt kê đường v1.0 143 Bài 6: Các thuật tốn tìm kiếm đồ thị số ứng dụng BÀI TẬP Các tập lập trình nhằm minh họa thuật tốn tìm kiếm ứng. .. liệu vào đồ thị đầy đủ) để kiểm tra kết tính Sn tập v1.0 145 Bài 6: Các thuật tốn tìm kiếm đồ thị số ứng dụng CÂU HỎI THƯỜNG GẶP Phân biệt khác định nghĩa liên thông đồ thị vô hướng đồ thị có

Ngày đăng: 27/02/2021, 09:38

Từ khóa liên quan

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

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

Tài liệu liên quan