local basegraph = {"2-5","2-3","2-8","5-4","3-4","4-3","3-8","8-7","7-10"}
function name2node(graph,name)
if not graph[name] then
graph[name] = {name = name,obj = {}}
end
return graph[name]
end
function makegraph()
local graph = {}
for k,v in pairs(basegraph) do
local namefrom,nameend = string.match(v,"(%S+)-(%S+)")
local formNode = name2node(graph,namefrom)
local endNode = name2node(graph,nameend)
formNode.obj[endNode] = true
end
return graph
end
function findpath(curr,to,path,visited)
path = path or {}
visited = visited or {}
if visited[curr] then
return nil
end
visited[curr] = true
path[#path+1] = curr
if curr == to then
return path
end
for node in pairs(curr.obj) do
local p = findpath(node,to,path,visited)
if p then return p end
end
path[#path] = nil
end
function printpath(path)
local s = ""
for i=1,#path do
if i ~= #path then
s = s .. path[i].name .. "->"
else
s = s .. path[i].name
end
end
print(s)
end
lua 图
最新推荐文章于 2022-05-22 23:19:00 发布