Tôi cố gắng để sử dụng logic này để hiểu những gì đang xảy ra với adjacency matrix, nhưng tôi massivley bối rối nơi nó nói về interspacing cho abcd .....Floyd-Warshall thuật toán logic - Stuck
Có thể bất cứ ai giải thích những gì đang xảy ra ở đây?
Cảm ơn bạn (gắn thẻ như java là ngôn ngữ của nó này đã được chứng minh cho chúng ta trong, vì vậy nếu có ai gửi bất kỳ ví dụ mã họ có thể thấy đó là trong ngôn ngữ đó)
http://compprog.wordpress.com/2007/11/15/all-sources-shortest-path-the-floyd-warshall-algorithm/
Đây là mã:
for (k = 0; k < n; ++k) {
for (i = 0; i < n; ++i)
for (j = 0; j < n; ++j)
/* If i and j are different nodes and if
the paths between i and k and between
k and j exist, do */
if ((dist[i][k] * dist[k][j] != 0) && (i != j))
/* See if you can't get a shorter path
between i and j by interspacing
k somewhere along the current
path */
if ((dist[i][k] + dist[k][j] < dist[i][j]) ||
(dist[i][j] == 0))
dist[i][j] = dist[i][k] + dist[k][j];
@stan: Floyd-Warshall là một trong những "DP algo" điển hình, cùng với Khoảng cách chỉnh sửa của Levenhstein và "0-1 Knapsack". Để hiểu nó, bạn cần hiểu "Lập trình động" là gì (hầu hết các lập trình viên không có bằng cấp CS không biết gì về DP). Các mục Wikipedia về chủ đề là tốt: http://en.wikipedia.org/wiki/Dynamic_programming và nếu không bạn có thể thử tham gia vào một vài cuộc thi trực tuyến (như TopCoder), nơi thường khá nhiều vấn đề cần một DP dung dịch. – SyntaxT3rr0r