Lua   发布时间:2019-10-08  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了[LUA]分布式计算中任务拓扑调度大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
local DAG = {
	vset = {}
}

function DAG.addVertex(G,v)
	assert(v ~= nil,"cAnnot add nil as vertex")
	assert(G.vset[v] == nil,"vertex already in graph")
	G.vset[v] = {};
	return G;
end

function DAG.addDirectedEdge(G,from,to)
	assert(from ~= nil and to ~= nil,"cAnnot add nil vertex to edge")
	assert(G.vset[from] ~= nil and G.vset[to] ~= nil,"vertex is not in graph.")
	G.vset[from][to] = 1;
	return G;
end

local function _topology(G,order)
	assert(order ~= nil and type(order) == "table","the parameter order is either nil or not a table");
	if next(G.vset) == nil then return order end
	local removed = {};
	for column,_ in pairs(G.vset) do
		local remove = true;
		repeat
			for _,row in pairs(G.vset) do
				if row[column] == 1 then
					remove = false;
					break;
				end
			end
		until true
		if remove then 
			table.insert(removed,column);
		end
	end
	assert(next(removed) ~= nil,"cycle found in DAG")
	table.insert(order,removed);
	for _,v in pairs(removed) do
		for column,_ in pairs(G.vset) do
			if v == column then G.vset[column] = nil end
		end
	end
	return _topology(G,order);
end

function DAG.topology(G)
	assert(next(G.vset) ~= nil,"cAnnot topology against a nil DAG")
	return _topology(G,{})
end

return DAG

大佬总结

以上是大佬教程为你收集整理的[LUA]分布式计算中任务拓扑调度全部内容,希望文章能够帮你解决[LUA]分布式计算中任务拓扑调度所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: