Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,65 @@
|
|||
function printResult(dist, nxt)
|
||||
print("pair dist path")
|
||||
for i=0, #nxt do
|
||||
for j=0, #nxt do
|
||||
if i ~= j then
|
||||
u = i + 1
|
||||
v = j + 1
|
||||
path = string.format("%d -> %d %2d %s", u, v, dist[i][j], u)
|
||||
repeat
|
||||
u = nxt[u-1][v-1]
|
||||
path = path .. " -> " .. u
|
||||
until (u == v)
|
||||
print(path)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function floydWarshall(weights, numVertices)
|
||||
dist = {}
|
||||
for i=0, numVertices-1 do
|
||||
dist[i] = {}
|
||||
for j=0, numVertices-1 do
|
||||
dist[i][j] = math.huge
|
||||
end
|
||||
end
|
||||
|
||||
for _,w in pairs(weights) do
|
||||
-- the weights array is one based
|
||||
dist[w[1]-1][w[2]-1] = w[3]
|
||||
end
|
||||
|
||||
nxt = {}
|
||||
for i=0, numVertices-1 do
|
||||
nxt[i] = {}
|
||||
for j=0, numVertices-1 do
|
||||
if i ~= j then
|
||||
nxt[i][j] = j+1
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
for k=0, numVertices-1 do
|
||||
for i=0, numVertices-1 do
|
||||
for j=0, numVertices-1 do
|
||||
if dist[i][k] + dist[k][j] < dist[i][j] then
|
||||
dist[i][j] = dist[i][k] + dist[k][j]
|
||||
nxt[i][j] = nxt[i][k]
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
printResult(dist, nxt)
|
||||
end
|
||||
|
||||
weights = {
|
||||
{1, 3, -2},
|
||||
{2, 1, 4},
|
||||
{2, 3, 3},
|
||||
{3, 4, 2},
|
||||
{4, 2, -1}
|
||||
}
|
||||
numVertices = 4
|
||||
floydWarshall(weights, numVertices)
|
||||
Loading…
Add table
Add a link
Reference in a new issue