- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在 JUNG 中创建了一个二分图,并且我希望对其中一组节点进行单模投影。在投影中,如果同一集合的两个节点有共同的属于另一个集合的节点,则它们将被链接。 JUNG 中是否有一个函数已经可以做到这一点?到目前为止我的代码(对于 1600 个节点的二分网络来说非常慢,其中只有 400 个属于我想要投影的集合)是:
public static void perform(UndirectedSparseGraph<Node, Edge> g, List<Node> companies) throws Exception {
//
UndirectedSparseGraph<Node, Edge> oneMode = new UndirectedSparseGraph<>();
//
for (Node n : companies) {
// take my concepts
Collection<Node> myConcepts = g.getNeighbors(n);
// for each of my concepts
for (Node m : myConcepts) {
// take its companies
Collection<Node> itsCompanies = g.getNeighbors(m);
// for each of the companies that use this concept
for (Node nn : itsCompanies) {
// if company is not myself
if (!nn.equals(n)) {
// if at least one of these is not in the graph, go straight to add a link
if (!oneMode.containsVertex(nn) || !oneMode.containsVertex(n)) {
// add a new link
Edge edge = new Edge(1);
// set edge name
edge.setName(findEdgeLabel(n, nn));
edge.setFrom(nn);
edge.setTo(n);
// add a link between myself and this company
oneMode.addEdge(edge, n, nn, EdgeType.UNDIRECTED);
} else {
if (oneMode.isNeighbor(n, nn)) {
// retrieve edge based on the label
boolean incrementWeight = incrementWeight(oneMode.getEdges(), findEdgeLabel(n, nn));
if (!incrementWeight) {
throw new Exception("doesn't work");
}
} else {
// add a new link
Edge edge = new Edge(1);
// set edge name
edge.setName(findEdgeLabel(n, nn));
edge.setFrom(nn);
edge.setTo(n);
// add a link between myself and this company
oneMode.addEdge(edge, n, nn, EdgeType.UNDIRECTED);
}
}
}
}
}
}
// now write result to file
try (PrintWriter writer = new PrintWriter("icleantech-one-mode.csv", "UTF-8")) {
// iterate
for (Edge e : oneMode.getEdges()) {
writer.println(e.getFrom().getName() + ";" + e.getTo().getName() + ";" + String.valueOf(e.getWeight()));
}
} catch (FileNotFoundException | UnsupportedEncodingException ex) {
Logger.getLogger(BipartiteProjection.class.getName()).log(Level.SEVERE, null, ex);
}
}
private static String findEdgeLabel(Node n, Node nn) {
if (n.getId() < nn.getId()) {
return String.valueOf(n.getId() + "-" + nn.getId());
} else {
return String.valueOf(nn.getId() + "-" + n.getId());
}
}
private static boolean incrementWeight(Collection<Edge> edges, String findEdgeLabel) {
for (Edge e : edges) {
if (e.getName().equals(findEdgeLabel)) {
// increase weight
e.setWeight(e.getWeight() + 1);
return true;
}
}
return false;
}
代码中的瓶颈是当我想要更新链接权重时...没有它,代码真的很快...我不知道我错在哪里...非常欢迎任何帮助。
最佳答案
到目前为止,最有效的方法是使用超图而不是二分图。 (一个分区成为超图顶点,另一个成为超边,每个超边连接与原始图中相应顶点相连的顶点。)然后您只需向一个顶点询问其在超图中的邻居,就完成了。
关于java - 如何使用 JUNG 进行二部图的投影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21880291/
我正在实现一个用于创建图形节点并使用 连接它们的接口(interface)郑 . 我想使用 edge 创建一些可以从一个现有节点移动到另一个节点的节点。两个节点之间作为它们的路径 (它将用于显示一些
我必须创建一个具有其自定义节点类型的图形,并且节点和连接是从 txt 文件中一一读取的。 文件格式是这样的:startNode 属性endNode。 每次阅读一行,我都会创建 2 个节点对象:star
目前,我正在做的是: WeakComponentClusterer wcc = new WeakComponentClusterer(); Collection> ccs = FilterUtils.
我使用 JUNG 来可视化我的图形/网络。 现在我想将图形(如 VisualizationViewer 中所见)保存在图像文件中。我使用 VisualizationViewer(扩展 JPanel)的
我可以做已选 顶点标签红色使用 vertexLabelRenderer 声明如下: DefaultVertexLabelRenderer vertexLabelRenderer=new Default
是否可以更改 JUNG 中的边缘形状?例如,我想让边缘以类似于进度条的方式逐渐改变它的颜色。边缘标签字体大小呢? 谢谢。 最佳答案 是的,有点......另外 - 我不确定你使用的是哪个版本的 JUN
我正在寻找 JUNG 来可视化有向图。 JUNG 2.0.1 下载附带 17 个不同的 jar 文件,其中一些似乎是示例和演示。 有谁知道如果你想使用JUNG,需要哪些真正的库? 最佳答案 没关系,它
我正在尝试对 JUNG 图包中的图进行顶点切割。下面的图片可以最好地解释这一点: 现在,我将从图中删除顶点“c1”: 正如您所看到的,顶点“c1”已从图中删除,但顶点“c2”和“c3”也已删除 当我剪
我在数据库中存储了邻接矩阵,我想使用 Java Jung 以交互方式编辑它们图形包。交互式图形编辑可以在示例GraphEditorDemo中看到。我已经完成了一种方法,该方法将从邻接矩阵中的信息创建图
我正在尝试从 Java Jung Graph 包构建以下内容:EdmondsKarp Object EdmondsKarpMaxFlow alg = new EdmondsKarpMaxFlow(g,
我有一个包含多个组件的未连接图。如何获取每个子图组件的 Graph 实例?例如,考虑以下图表: 我想要的是能够返回这些子图组件。子图组件的示例是具有顶点的图:{c0, c1, c2, c3} 我想要这
我想知道是否有可能/我将如何在 JUNG 中创建这样的东西: 最佳答案 取决于你所说的“类似的事情”是什么意思。如果您想要一个漂亮、整洁的固定图表,那么您最好手工绘制它。 如果您想要一个更通用的图解决
所以我正在使用 JUNG,这对我来说是新事物。我已经实现了一个简单的 GUI,它显示顶点和边,并且通过使用 Transformer 我可以更改形状等。但是我该如何沿着边缘制作图像动画呢? 如果边缘是直
首先,我是 JUNG 的新手。我试图使用 TreeLayout 在 JUNG 中可视化树,但我总是面临顶点标签重叠的问题。当节点和路径数量很多时更是如此。关于如何防止这种重叠有什么想法吗? 我知道顶点
我们用 jung 开发了一个小型图形编辑器,您可以在其中用鼠标绘制图形/网络。我们使用 VisualizationViewer 作为我们绘制的面板。 VisualizationViewer 保存它必须
我想可视化我的 Java 应用程序中的图形,为此我使用 JUNG。问题是我的图形包含大量节点和边,JUNG 提供的哪些布局可以给我最小的交叉边缘?以便图形看起来更好? 最佳答案 JUNG 布局本身并不
我目前正在开发一种使用图形可视化宏基因组数据的工具,因此开发了 Java JUNG 图形可视化库。 当显示大约 1000 个节点时,我遇到了延迟,无论是通过移动相机还是拖动一些节点。 是否有任何黑客可
您好!我的程序有问题。 我在 java 中使用 JUNG 库,当我编译程序时,出现以下两个错误: Error:(43, 61) java: incompatible types: org.apache
我创建了一个 java 程序,该程序从 1 个顶点开始,从那里开始每个周期添加 1 个顶点和 2 条边。它使用静态布局 Layout staticLayout = new StaticLayout(g
我有一组子图,我需要在从中提取它们的图上匹配它们。我还需要计算每个子图在此类图中出现的次数(我需要存储所有可能的匹配项)。考虑到子图和图的边标签必须完美匹配,但是顶点标签不需要相互匹配。我使用 JUN
我是一名优秀的程序员,十分优秀!