Menu
×

Được chứng nhận

Ghi lại kiến ​​thức của bạn

Đăng nhập Đăng ký

Tạo Tài khoản Example.com.vn miễn phí để cải thiện trải nghiệm học tập của bạn

Người tìm đường và việc học của tôi

Theo dõi tiến độ học tập của bạn tại Example.com.vn và thu thập phần thưởng

Nâng cấp

Trở thành người dùng PLUS và mở khóa các tính năng mạnh mẽ (không có quảng cáo, lưu trữ, hỗ trợ, ..)

Bắt đầu từ đâu

Bạn không chắc chắn muốn bắt đầu từ đâu? Đi theo con đường được hướng dẫn của chúng tôi

Trình chỉnh sửa mã (Dùng thử)

Với trình chỉnh sửa mã trực tuyến của chúng tôi, bạn có thể chỉnh sửa mã và xem kết quả trong trình duyệt của mình

Video

Tìm hiểu những điều cơ bản về HTML qua video hướng dẫn thú vị và hấp dẫn

Mẫu

Chúng tôi đã tạo một loạt mẫu trang web đáp ứng mà bạn có thể sử dụng - miễn phí!

Web hosting

Lưu trữ trang web của riêng bạn và chia sẻ nó với mọi người với Example.com.vn Spaces

Tạo một máy chủ

Tạo máy chủ của riêng bạn bằng Python, PHP, React.js, Node.js, Java, C#, v.v.

Làm thế nào để

Bộ sưu tập lớn các đoạn mã cho HTML, CSS và JavaScript

Khung CSS

Xây dựng các trang web nhanh và phản hồi bằng cách sử dụng khung W3.CSS miễn phí của chúng tôi

Thống kê trình duyệt

Đọc xu hướng dài hạn của việc sử dụng trình duyệt

Tốc độ gõ

Kiểm tra tốc độ đánh máy của bạn

Đào tạo AWS

Tìm hiểu dịch vụ web của Amazon

Bộ chọn màu

Sử dụng công cụ chọn màu của chúng tôi để tìm các màu RGB, HEX và HSL khác nhau. Bánh xe màu hình tròn thể hiện sự chuyển màu trong quang phổ

Trò chơi mã

Trò chơi mã hóa W3Schools! Giúp linh miêu thu thập nón thông Logo Lynx

Đặt mục tiêu

Nhận hành trình học tập được cá nhân hóa dựa trên các kỹ năng và mục tiêu hiện tại của bạn

Bản tin

Tham gia bản tin của chúng tôi và có quyền truy cập vào nội dung độc quyền mỗi tháng

Việc làm

Thuê những tài năng công nghệ hàng đầu. Hợp lý hóa quy trình tuyển dụng của bạn để có đội ngũ phù hợp hoàn hảo

Lớp học

Hãy liên hệ để sử dụng Example.com.vn Plus và các chứng chỉ với tư cách là một tổ chức giáo dục

×
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP CÁCH W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS AN NINH MẠNG DỮ LIỆU KHOA HỌC

Hướng dẫn DSA

DSA TRANG CHỦ DSA Giới thiệu Thuật toán đơn giản DSA

Mảng

Mảng DSA Sắp xếp bong bóng DSA Sắp xếp lựa chọn DSA Sắp xếp chèn DSA Sắp xếp nhanh DSA Sắp xếp đếm DSA Sắp xếp cơ số DSA Sắp xếp hợp nhất DSA Tìm kiếm tuyến tính DSA Tìm kiếm nhị phân DSA

Danh sách liên kết

Danh sách liên kết DSA Danh sách liên kết DSA trong bộ nhớ Danh sách liên kết DSA Các loại Danh sách liên kết Hoạt động

Ngăn xếp & hàng đợi

Ngăn xếp DSA Hàng đợi DSA

Bảng băm

Bảng băm DSA Bộ hàm băm DSA Bản đồ hàm băm DSA

Cây

Cây DSA Cây nhị phân DSA DSA Traversal đặt hàng trước DSA Traversal theo thứ tự DSA Traversal DSA sau thực hiện mảng DSA Cây tìm kiếm nhị phân DSA Cây AVL DSA

Đồ thị

Đồ thị DSA Thực hiện đồ thị Đồ thị DSA Phát hiện chu trình DSA truyền tải

Con đường ngắn nhất

Đường đi ngắn nhất DSA DSA Bellman-Ford của DSA Dijkstra

Cây bao trùm tối thiểu

Cây khung tối thiểu DSA Prim's DSA Kruskal's

Lưu lượng cực đại

DSA Lưu lượng tối đa DSA Ford-Fulkerson DSA Edmonds-Karp

Độ phức tạp thời gian

Giới thiệu Sắp xếp bong bóng Lựa chọn Sắp xếp Chèn Sắp xếp Sắp xếp nhanh Đếm Sắp xếp Cơ số Sắp xếp Hợp nhất Sắp xếp Tìm kiếm tuyến tính Tìm kiếm nhị phân

Tham chiếu DSA

Thuật toán Euclide DSA Thuật toán tham lam DSA Ghi nhớ DSA DSA Người bán hàng du lịch

Ví dụ về DSA

Ví dụ về DSA Bài tập DSA Câu hỏi DSA Chứng chỉ DSA

Đường dẫn ngắn nhất DSA


Bài toán đường đi ngắn nhất

Bài toán đường đi ngắn nhất nổi tiếng trong lĩnh vực khoa học máy tính.

Để giải bài toán đường đi ngắn nhất có nghĩa là tìm đường đi hoặc đường đi ngắn nhất có thể giữa hai đỉnh (hoặc nút) trong Đồ thị.

Trong bài toán đường đi ngắn nhất, Biểu đồ có thể biểu thị bất kỳ thứ gì từ mạng đường bộ đến mạng truyền thông, trong đó các đỉnh có thể là giao lộ, thành phố hoặc bộ định tuyến và các cạnh có thể là đường, đường bay hoặc liên kết dữ liệu.

F 2 4 3 4 5 2 B C 5 5 3 MỘT 4 4 E D G

Đường đi ngắn nhất từ ​​đỉnh D đến đỉnh F trong Biểu đồ trên là D->E->C->F, với tổng trọng lượng đường đi là 2+4+4=10. Các đường đi khác từ D đến F cũng có thể, nhưng chúng có tổng trọng số cao hơn nên không thể coi là đường đi ngắn nhất.


Lời giải cho bài toán đường đi ngắn nhất

Thuật toán Dijkstrathuật toán Bellman-Ford tìm đường đi ngắn nhất từ ​​một đỉnh bắt đầu đến tất cả các đỉnh khác.

Để giải bài toán đường đi ngắn nhất có nghĩa là kiểm tra các cạnh bên trong Biểu đồ cho đến khi chúng ta tìm thấy đường dẫn mà chúng ta có thể di chuyển từ đỉnh này sang đỉnh khác bằng cách sử dụng trọng số kết hợp thấp nhất có thể dọc theo các cạnh.

Tổng trọng số dọc theo các cạnh tạo nên đường dẫn được gọi là chi phí đường dẫn hoặc trọng số đường dẫn .

Các thuật toán tìm đường đi ngắn nhất, như thuật toán Dijkstra hoặc thuật toán Bellman-Ford , tìm đường đi ngắn nhất từ ​​một đỉnh bắt đầu đến tất cả các đỉnh khác.

Để bắt đầu, các thuật toán đặt khoảng cách từ đỉnh bắt đầu đến tất cả các đỉnh là dài vô hạn. Và khi thuật toán chạy, các cạnh giữa các đỉnh được kiểm tra lặp đi lặp lại và các đường đi ngắn hơn có thể được tìm thấy nhiều lần cho đến khi tìm thấy đường đi ngắn nhất ở cuối.

Mỗi khi một cạnh được kiểm tra và dẫn đến khoảng cách ngắn hơn đến một đỉnh được tìm thấy và cập nhật, nó được gọi là thư giãn hoặc thư giãn một cạnh.


Trọng số cạnh dương và âm

Một số thuật toán tìm đường đi ngắn nhất, như thuật toán Dijkstra , chỉ có thể tìm đường đi ngắn nhất trong đồ thị có tất cả các cạnh đều dương. Những đồ thị có khoảng cách dương như vậy cũng dễ hiểu nhất vì chúng ta có thể coi các cạnh giữa các đỉnh là khoảng cách giữa các vị trí.

4 3 3 3 B C 2 3 4 7 5 MỘT E D

Nếu chúng ta hiểu trọng số cạnh là số tiền bị mất khi đi từ đỉnh này sang đỉnh khác, thì trọng số cạnh dương là 4 từ đỉnh A đến C trong biểu đồ trên có nghĩa là chúng ta phải chi 4 USD để đi từ A đến C.

Nhưng đồ thị cũng có thể có các cạnh âm và đối với những đồ thị như vậy , thuật toán Bellman-Ford có thể được sử dụng để tìm đường đi ngắn nhất.

4 -3 3 3 B C -4 2 4 7 5 MỘT E D

Và tương tự, nếu trọng số của cạnh biểu thị số tiền bị mất thì trọng số cạnh âm -3 từ đỉnh C đến A trong biểu đồ trên có thể được hiểu là cạnh có thể kiếm được nhiều tiền hơn số tiền bị mất khi đi từ C đến A. Vì vậy, ví dụ: nếu chi phí nhiên liệu là 5 đô la khi đi từ C đến A và chúng tôi được trả 8 đô la để nhận các gói hàng ở C và giao chúng ở A, thì số tiền lỗ là -3, nghĩa là chúng tôi thực sự kiếm được tổng cộng 3 đô la.


Chu kỳ âm trong bài toán đường đi ngắn nhất

Việc tìm đường đi ngắn nhất trở nên bất khả thi nếu đồ thị có chu trình âm.

Có một chu trình âm có nghĩa là có một đường đi mà bạn có thể đi theo vòng tròn và các cạnh tạo nên đường tròn này có tổng trọng số đường đi là âm.

Trong biểu đồ bên dưới, đường dẫn A->E->B->C->A là một chu trình âm vì tổng trọng số đường dẫn là 5+2-4-4=-1.

5 -4 3 3 B 5 C 1 -4 2 4 7 5 MỘT -2 E 3 D 0

Lý do tại sao không thể tìm được đường đi ngắn nhất trong đồ thị có chu kỳ âm là vì luôn có thể tiếp tục chạy thuật toán để tìm những đường đi ngắn hơn nữa.

Ví dụ: giả sử chúng ta đang tìm khoảng cách ngắn nhất từ ​​đỉnh D trong biểu đồ trên đến tất cả các đỉnh khác. Đầu tiên chúng ta tìm được khoảng cách từ D đến E là 3, chỉ bằng cách đi theo cạnh D->E. Nhưng sau đó, nếu chúng ta đi một vòng theo chu kỳ âm E->B->C->A->E thì khoảng cách đến E sẽ là 2. Sau khi đi thêm một vòng nữa khoảng cách sẽ trở thành 1, thậm chí còn ngắn hơn, và như thế. Chúng ta luôn có thể đi thêm một vòng nữa trong chu trình âm để tìm khoảng cách ngắn hơn đến E, nghĩa là không bao giờ tìm được khoảng cách ngắn nhất.

May mắn thay, thuật toán Bellman-Ford , chạy trên đồ thị có cạnh âm, có thể được triển khai bằng cách phát hiện các chu kỳ âm.



×

Liên hệ bán hàng

Nếu bạn muốn sử dụng dịch vụ của Example.com.vn với tư cách là một tổ chức giáo dục, nhóm hoặc doanh nghiệp, hãy gửi email cho chúng tôi:
[email được bảo vệ]

Báo cáo lỗi

Nếu bạn muốn báo cáo lỗi hoặc nếu bạn muốn đưa ra đề xuất, hãy gửi email cho chúng tôi:
[email được bảo vệ]

Example.com.vn được tối ưu hóa cho việc học tập và đào tạo. Các ví dụ có thể được đơn giản hóa để cải thiện khả năng đọc và học. Các hướng dẫn, tài liệu tham khảo và ví dụ liên tục được xem xét để tránh sai sót, nhưng chúng tôi không thể đảm bảo tính chính xác hoàn toàn của mọi nội dung. Khi sử dụng W3Schools, bạn đồng ý đã đọc và chấp nhận các điều khoản sử dụng , chính sách cookie và quyền riêng tư của chúng tôi.

Bản quyền 1999-2024 của Refsnes Data. Đã đăng ký Bản quyền. Example.com.vn được cung cấp bởi W3.CSS .