【发布时间】:2012-01-20 23:27:52
【问题描述】:
我搜索了类似的主题,但答案对于我的理解和理解水平来说太模糊了,而且我认为它们对我的问题不够具体。
类似线程:
Tree (directed acyclic graph) implementation
Representing a DAG (directed acyclic graph)
问题:
我已经格式化了一个包含以下格式数据的文本文件...
示例数据集:
GO:0000109#is_a: GO:0000110#is_a: GO:0000111#is_a: GO:0000112#is_a: GO:0000113#is_a: GO:0070312#is_a: GO:0070522#is_a: GO:0070912#is_a: GO: 0070913#is_a: GO:0071942#part_of: GO:0008622
GO:0000112#part_of: GO:0000442
GO:0000118#is_a: GO:0016581#is_a: GO:0034967#is_a: GO:0070210#is_a: GO:0070211#is_a: GO:0070822#is_a: GO:0070823#is_a: GO:0070824
GO:0000120#is_a: GO:0000500#is_a: GO:0005668#is_a: GO:0070860
GO:0000123#is_a: GO:0005671#is_a: GO:0043189#is_a: GO:0070461#is_a: GO:0070775#is_a: GO:0072487
去:0000126#is_a:去:0034732#is_a:去:0034733
GO:0000127#part_of: GO:0034734#part_of: GO:0034735
GO:0000133#is_a: GO:0031560#is_a: GO:0031561#is_a: GO:0031562#is_a: GO:0031563#part_of: GO:0031500
GO:0000137#part_of: GO:0000136
我希望从这些数据中构建一个加权的有向 DAG(上面只是一个 sn-p)。 106kb的整个数据集在这里:Source
---------------------------------------------- ---
逐行考虑,每行数据解释如下...
以第一行为例:
GO:0000109#is_a: GO:0000110#is_a: GO:0000111#is_a: GO:0000112#is_a: GO:0000113#is_a: GO:0070312#is_a: GO:0070522#is_a: GO:0070912#is_a: GO: 0070913#is_a: GO:0071942#part_of: GO:0008622
'#' 是行数据的分隔符/标记器。
第一项,GO:0000109 是节点名。
is_a: GO:xxxxxxx OR part_of: GO:xxxxxxx 后面的项是连接到 GO:0000109 的节点。
如数据集中所示,随后的一些术语也有联系。
为is_a时,边的权重为0.8。
为part_of时,边的权重为0.6。
---------------------------------------------- ---
我有关于 DAG 的 Google-d,我理解这个概念。但是,我仍然不知道如何将其放入代码中。我正在使用 Java。
据我了解,图通常由节点和弧组成。这个图是否需要邻接表来确定连接的方向?如果是这样,我不确定如何结合图形和邻接表来相互通信。
构建完图后,我的次要目标是从根节点中找出每个节点的度数。数据集中有一个根节点。
为了说明,我在下面画出了第一行数据的连接示例:
Image Link
我希望你们理解我在这里想要实现的目标。感谢您浏览我的问题。 :)
【问题讨论】:
标签: java directed-acyclic-graphs weighted