Trang chủ
Bài viết mới
Diễn đàn
Bài mới trên hồ sơ
Hoạt động mới nhất
VIDEO
Mùa Tết
Văn Học Trẻ
Văn Học News
Media
New media
New comments
Search media
Đại Học
Đại cương
Chuyên ngành
Triết học
Kinh tế
KHXH & NV
Công nghệ thông tin
Khoa học kĩ thuật
Luận văn, tiểu luận
Phổ Thông
Lớp 12
Ngữ văn 12
Lớp 11
Ngữ văn 11
Lớp 10
Ngữ văn 10
LỚP 9
Ngữ văn 9
Lớp 8
Ngữ văn 8
Lớp 7
Ngữ văn 7
Lớp 6
Ngữ văn 6
Tiểu học
Thành viên
Thành viên trực tuyến
Bài mới trên hồ sơ
Tìm trong hồ sơ cá nhân
Credits
Transactions
Xu: 0
Đăng nhập
Đăng ký
Có gì mới?
Tìm kiếm
Tìm kiếm
Chỉ tìm trong tiêu đề
Bởi:
Hoạt động mới nhất
Đăng ký
Menu
Đăng nhập
Đăng ký
Install the app
Cài đặt
Chào mừng Bạn tham gia Diễn Đàn VNKienThuc.com -
Định hướng Forum
Kiến Thức
- HÃY TẠO CHỦ ĐỀ KIẾN THỨC HỮU ÍCH VÀ CÙNG NHAU THẢO LUẬN Kết nối:
VNK X
-
VNK groups
| Nhà Tài Trợ:
BhnongFood X
-
Bhnong groups
-
Đặt mua Bánh Bhnong
CÔNG NGHỆ
Công Nghệ Thông Tin
Code
Ứng dụng thuật toán BFS tìm đường đi ngắn nhất giữa 2 đỉnh của một đồ thị.
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser
.
Trả lời chủ đề
Nội dung
<blockquote data-quote="Aries_VnK" data-source="post: 169098" data-attributes="member: 313350"><p><strong>Ở <a href="https://vnkienthuc.com/mot-so-kha-nang-ung-dung-cua-thuat-toan-tim-kiem-theo-chieu-sau-dfs-va-theo-chieu-rong-bfs.t68171/" target="_blank">phần trước</a> mình đã chia sẻ một số khả năng ứng dụng của 2 thuật toán tìm kiếm BFS và DFS, ở phần này mình xin nêu ra một ví dụ cụ thể về bài toán tìm đường đi ngắn nhất giửa 2 đỉnh trong cùng một tập đồ thị liên thông.</strong></p><p>Ví dụ về một <em><strong>bài toán lan bom</strong>:</em></p><p>Cho một thành phố (đồ thị) biểu diễn bởi một ma trận 2 chiều MxN gồm các giá trị 0 và 1 (ma trận kề của đồ thị). Tọa độ của bom sẽ được cho trước, bom sẽ lan theo 4 hướng(trên - dưới - trái - phải). Bom chỉ lan khi gặp 1 và thời gian để lan tới 1 điểm bên cạnh là 1s. Bài toán yêu cầu tính thời gian để quả lan toàn bộ các điểm cạnh nó.</p><p></p><p>ví dụ input là một ma trận 7x8 và bom ở vị trí 2 5</p><p>0 0 1 1 0 0 0 </p><p>1 1 1 1 0 1 0</p><p>0 0 1 1 1 1 1</p><p>0 1 1 1 1 1 1 </p><p>0 1 0 0 1 1 0</p><p>0 1 1 1 1 0 0</p><p>0 0 1 0 1 1 1</p><p>0 0 0 0 1 0 0</p><p></p><p>khi bom lan hết sẽ được biểu diễn như ma trận như dưới đây</p><p>0 0 6 7 0 0 0 0</p><p>7 6 5 6 0 8 0 0</p><p>0 0 4 5 6 7 8 0</p><p>0 2 3 4 5 6 7 0</p><p>0 1 0 0 6 7 0 0</p><p>0 2 3 4 5 0 0 0</p><p>0 0 4 0 6 7 8 0</p><p>Nhìn ma trân trên ta thấy rằng thời gian để bom lan hết có thể là 8s, kết quả sẽ là 8.</p><p></p><p>Phân tích: ở bài toán này, chúng ta sẽ sử dụng thuật toán BFS, sẽ duyệt rộng dần từ điểm thả bom, khi bom lan đến điểm nào thì giá trị của điểm đó sẽ tăng lên 1 giá trị (giá trị sẽ bằng giá trị điểm lan + 1), ta cần một biến max để lưu giá trị lớn nhất, và kết quả sẽ là giá trị lớn nhất khi ta duyệt hết các điểm. Lưu ý rằng ta cần check để mỗi điểm chi được duyệt một lần.</p><p></p><p>***<u>Nếu quy bài toán này về bài toán tìm đường đi ngắn nhất giữa 2 điểm thì điểm xuất phát chính là điểm thả bom còn độ dài đường đi ngắn nhất chính là thời gian bom lan đến điểm đích.</u></p><p><u></u></p><p></p><p><em>chi tiết cài đặt bài toán và file input được đính kèm, các bạn có thể tham khảo.</em></p></blockquote><p></p>
[QUOTE="Aries_VnK, post: 169098, member: 313350"] [B]Ở [URL='https://vnkienthuc.com/mot-so-kha-nang-ung-dung-cua-thuat-toan-tim-kiem-theo-chieu-sau-dfs-va-theo-chieu-rong-bfs.t68171/']phần trước[/URL] mình đã chia sẻ một số khả năng ứng dụng của 2 thuật toán tìm kiếm BFS và DFS, ở phần này mình xin nêu ra một ví dụ cụ thể về bài toán tìm đường đi ngắn nhất giửa 2 đỉnh trong cùng một tập đồ thị liên thông.[/B] Ví dụ về một[B] [/B][I][B]bài toán lan bom[/B]:[/I] Cho một thành phố (đồ thị) biểu diễn bởi một ma trận 2 chiều MxN gồm các giá trị 0 và 1 (ma trận kề của đồ thị). Tọa độ của bom sẽ được cho trước, bom sẽ lan theo 4 hướng(trên - dưới - trái - phải). Bom chỉ lan khi gặp 1 và thời gian để lan tới 1 điểm bên cạnh là 1s. Bài toán yêu cầu tính thời gian để quả lan toàn bộ các điểm cạnh nó. ví dụ input là một ma trận 7x8 và bom ở vị trí 2 5 0 0 1 1 0 0 0 1 1 1 1 0 1 0 0 0 1 1 1 1 1 0 1 1 1 1 1 1 0 1 0 0 1 1 0 0 1 1 1 1 0 0 0 0 1 0 1 1 1 0 0 0 0 1 0 0 khi bom lan hết sẽ được biểu diễn như ma trận như dưới đây 0 0 6 7 0 0 0 0 7 6 5 6 0 8 0 0 0 0 4 5 6 7 8 0 0 2 3 4 5 6 7 0 0 1 0 0 6 7 0 0 0 2 3 4 5 0 0 0 0 0 4 0 6 7 8 0 Nhìn ma trân trên ta thấy rằng thời gian để bom lan hết có thể là 8s, kết quả sẽ là 8. Phân tích: ở bài toán này, chúng ta sẽ sử dụng thuật toán BFS, sẽ duyệt rộng dần từ điểm thả bom, khi bom lan đến điểm nào thì giá trị của điểm đó sẽ tăng lên 1 giá trị (giá trị sẽ bằng giá trị điểm lan + 1), ta cần một biến max để lưu giá trị lớn nhất, và kết quả sẽ là giá trị lớn nhất khi ta duyệt hết các điểm. Lưu ý rằng ta cần check để mỗi điểm chi được duyệt một lần. ***[U]Nếu quy bài toán này về bài toán tìm đường đi ngắn nhất giữa 2 điểm thì điểm xuất phát chính là điểm thả bom còn độ dài đường đi ngắn nhất chính là thời gian bom lan đến điểm đích. [/U] [I]chi tiết cài đặt bài toán và file input được đính kèm, các bạn có thể tham khảo.[/I] [/QUOTE]
Tên
Mã xác nhận
Gửi trả lời
CÔNG NGHỆ
Công Nghệ Thông Tin
Code
Ứng dụng thuật toán BFS tìm đường đi ngắn nhất giữa 2 đỉnh của một đồ thị.
Top