【问题标题】:Java Library with subgraph isomorphism problem support?具有子图同构问题支持的 Java 库?
【发布时间】:2009-04-10 19:52:51
【问题描述】:

我正在尝试分析“#include”在 C 文件中的用法(首先包含什么,依赖项...)。

为此,我从 C 文件中提取“#include”并构建图表。我想找出这张图中的常见模式...

到目前为止,我使用 JGraphT 作为图形引擎(不确定这是不是正确的表达式)和 JGraph 进行渲染(但是使用 jgraph 有点问题,因为免费版本中不再包含布局)。

我一直无法在 jgrapht 中找到任何同构支持。你知道提供这种支持的任何解决方案吗(类似于 igraph,但用于 java)..?

我使用的是 java 1.5,建议的解决方案必须是免费的...

【问题讨论】:

    标签: java


    【解决方案1】:

    不确定其中一个可以做同构,但我在我的博客中收集了几个图形布局引擎的链接:http://blog.pdark.de/2009/02/11/graph-layout-in-java/

    您可能也想查看graphviz。它不是 Java,但有一个非常强大的布局引擎。

    至于同构:您可能只需要检查级别 0 的模式(即直接包含),因为低于该级别的任何内容根据定义必须是同构的(某些包含文件包含的所有文件将始终相同,除非有人使用包含部分中有很多#if 魔法)。

    【讨论】:

      【解决方案2】:

      你看过Parsemis吗?

      这是一个 Java 图挖掘库,(子)图同构是这个过程的基础,所以我猜他们正在以某种方式解决这个问题。

      虽然不确定许可证,但我相信它是开源的,因为它是出于学术原因而开发的。

      【讨论】:

        【解决方案3】:

        我自己最近一直在思考这个问题(在我的例子中,我正在寻找将 JSP 分解为标签的通用标记结构)。

        为此的图书馆会很棒。我还没有找到一个。同时,这里有几个问题可能与您的问题有关(同构?)。

        • 我正计划研究数学软件用于分析评估微积分问题中的积分的技术。在这种情况下,有一堆已知的结构模式,并且所讨论的问题必须与其中一个已知模式相匹配。做到这一点的最佳方法并不总是显而易见的,因为这取决于将哪些术语组合在一起等。

        • 生物学中用于在两个复杂分子中找到对应结构的算法也可能适用于这个问题。

        【讨论】:

        • 你对生物学的看法是对的......你知道这个软件cytoscape.org 吗?有一个插件可以找到小分子的同构:drugviz
        • 不,我没有看到。谢谢指点! GINY 是一个有点不幸的名字,不过……
        【解决方案4】:

        看起来几个月前 JGraphT 的“实验”包中有一个 mention of isomorphism,但显然没有文档。

        同构比较是化学信息学软件中的一项基本要求(技术上使用的是monomorphism)。原子是“节点”,键是“边”。分子图是无向的,可以是循环的。一些用 Java 编写的开源化学信息学库是可用的。通过查看这些库,您或许可以找到一些解决问题的线索。

        例如,我编写了一个 BSD 许可的化学信息学库 MX,它实现了基于 VF 的单态算法。我写了一个 high-level overview 来说明算法是如何实现的,你可以在我的 GitHub 存储库中 browse the source for the mapping package。大部分工作都在DefaultState 类中完成。

        MX 还包括一个快速的exhaustive ring detector 和其他可能适用于您的问题的图形操作。

        【讨论】:

          【解决方案5】:

          我当然不知道具有子图同构代码的特定图形库 - 因为它是已知的 NP 完全的,所以除了搜索之外你不能做很多事情。它在图形重写方案中出现了很多,所以AGG 可能会有所帮助。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-04-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-11-18
            相关资源
            最近更新 更多