我了解基本概念,但是是否有使用任何特殊算法或一些博客、论文甚至书籍供构建自己的系统的人使用?关于实际实施这样的系统的信息似乎很少。
问问题
736 次
2 回答
2
依赖树本身很容易加载,您所需要的只是从键(例如名称)到对象的一些映射。
你没有指定任何语言,所以我选择了 Python。预期的输入是格式为“[名称]:[空格分隔的依赖项]”的行文件。
def load_depends(file):
depends = {}
for line in file:
line = line.strip()
if not line or line.startswith("#"): # allow blanks and comments
continue
name, _, deps = line.partition(":")
deps = deps.strip()
assert deps, "invalid input" # most basic input error-checking
depends[name] = set(deps.split())
return depends
此代码假定任何未列出的项目具有零依赖性,如果需要,您可以遍历树以添加空条目。至少你应该检查递归依赖。
例子:
>>> input = """\
... a: b c
... b: c
... c: d
... e: a
... """.split("\n")
>>> from pprint import pprint
>>> pprint(load_depends(input))
{'a': set(['b', 'c']),
'b': set(['c']),
'c': set(['d']),
'e': set(['a'])}
[注意:我采取了捷径,因为我真的不需要行文件,而是需要可迭代的行(文件遇到),所以我将行列表传递给函数。]
您可以在此基本结构之上构建各种功能,并将其和这些概念(如依赖、推荐、建议,甚至冲突与替换等)封装到特定于您的系统的各种对象中。
于 2010-02-22T11:40:20.603 回答
0
许多其他概念也涉及依赖树,例如 SNMP MIB 解析、C/C++ 源代码编译。所以你可以参考任何其他谈论这个的材料:)
于 2009-11-30T08:28:06.063 回答