我对类似的主题进行了搜索,但是对于我的理解和理解水平而言,答案太模糊了,而且我认为它们对我的问题不够具体。
类似的线程:
树(有向无环图)实现
表示一个DAG(有向无环图)
问题:
我已经格式化了一个文本文件,其中包含以下格式的数据...
示例数据集:
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:00000168#is_a: GO: #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
GO:0000126#is_a: GO#0 is_a: GO: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(上面只是一个片段)。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。
据我了解,图通常由节点和弧组成。这个图是否需要邻接表来确定连接的方向?如果是这样,我不确定如何结合图形和邻接表来相互通信。构建完图后,我的次要目标是从根节点中找出每个节点的度数。数据集中有一个根节点。
为了说明,我画了下面第一行数据的连接示例:
图片链接
我希望你们能理解我在这里想要达到的目标。感谢您浏览我的问题。:)