私は基本的な概念を理解していますが、独自のシステムを構築している誰かのために、使用されている特別なアルゴリズムや、テーマに関するブログ、論文、さらには書籍はありますか? このようなシステムの実際の実装に関する情報はほとんどないようです。
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 に答える