标签: jgrapht

从 jgrapht 中的节点获取所有边

我试图随机遍历 jgrapht 中的图形(直到找到一些目标节点)。为此,我需要从 sourceNode 开始,随机选择任何出来的边缘并跟随它。

我知道有一种方法getAllEdges(sourceVertex, targetVertex)可以返回两个给定节点之间的所有边。但是如何在只有 sourceNode 而没有目标的情况下获得所有边?

java graph jgrapht jgraph

7
推荐指数
1
解决办法
4409
查看次数

在JgraphT中显示权重

我已经实现了这个图:

ListenableDirectedWeightedGraph<String, MyWeightedEdge> g = 
    new ListenableDirectedWeightedGraph<String, MyWeightedEdge>(MyWeightedEdge.class); 
Run Code Online (Sandbox Code Playgroud)

为了表明班级名称的内容; 一个简单的可听的定向加权图.我想改变边缘的标签而不是格式

return "(" + source + " : " + target + ")"; 
Run Code Online (Sandbox Code Playgroud)

我希望它能显示边缘的重量.我意识到节点上的所有动作,例如getEdgesWeight()方法,都是从图形而不是边缘委托的.如何显示边缘的重量?我是否必须以某种方式将图表传递到边缘?

任何帮助表示赞赏.

java graphing jgrapht

5
推荐指数
1
解决办法
3572
查看次数

如何通过 JGraphT 可视化表示边缘权重?

我尝试创建一个带有权重的 Java JGraphT 可视化,例如:

http://i.stack.imgur.com/KXRrc.png

现在我想将边缘标签(例如:(a:b)更改为其边缘重量(例如:2)。我尝试在Javadoc中搜索但没有看到任何内容。请帮助我谢谢!

java jgrapht

5
推荐指数
1
解决办法
2654
查看次数

如何在 JGraphT 中复制图形?

我需要复制一个简单的图表。

我在图形生成器中没有看到图形复制器,并且 UndirectedGraph 没有实现克隆方法。

那一年,我可以用手抄一张图。但我想用一行来做这件事。

java graph jgrapht

5
推荐指数
1
解决办法
3543
查看次数

如何使用DepthFirstSearchIterator类使用JGraphT在图形上运行深度优先搜索

我正在试验JGraphT并试图使用JGraphT API实现深度优先搜索.我创建了一个包含节点和顶点的简单图形,如下所示:

DirectedGraph <Integer, DefaultEdge> graph = new 
    DefaultDirectedGraph <Integer, DefaultEdge>(DefaultEdge.class);

graph.addVertex(7);
graph.addVertex(4);
graph.addVertex(9);
graph.addVertex(3);
graph.addVertex(2);
graph.addVertex(5);


graph.addEdge(7, 4);
graph.addEdge(7, 9);
graph.addEdge(9, 3);
graph.addEdge(3, 2);
graph.addEdge(3, 5);
Run Code Online (Sandbox Code Playgroud)

我如何使用DepthFirstSearchIterator在此图表上运行DFS?亲切的问候

java algorithm graph jgrapht depth-first-search

5
推荐指数
1
解决办法
4295
查看次数

通过传递闭包计算DAG中最近的顶点邻居

考虑有向图,如下所示:

在此输入图像描述

其中,(A)最初,实体黑边被断言:

  • 0→{1,3}
  • 1→{2}
  • 3→{4}
  • 4→{2}

然后(B)计算传递闭包以添加以下(虚线)边:

  • 0→{2,4}
  • 3→{2}

对于最终图形中的任何顶点,如何有效地计算某些边缘可访问的"直接"邻居,这些邻居无法通过不同的更长路径访问?我想要的输出显示在(A)中.我没有区分断言(粗体)或推断(虚线)的边缘.

这个问题是否有一个众所周知的名称,有没有一种直接的方法来实现这个JGraphT


思考:

也许这可以通过使用拓扑排序的顶点来实现,例如TS = [0,1,3,4,2].

for(i=0, i<TS.len; i++) {
  var v0 = TS[i]
  for (j=i+1; i<TS.len; j++) {
    var v1 = TS[j]
    if (edge exists v0 -> v1) {
      var otherPath = false
      for (k=i+1; k<j; k++) {
        var v2 = TS[k]
        if (path exists v0 -> v2 && path exists v2 -> v1) {
          otherPath = true 
          break
        } …
Run Code Online (Sandbox Code Playgroud)

java graph-theory directed-graph jgrapht

5
推荐指数
1
解决办法
536
查看次数

无法在null对象上调用方法version()

我正在尝试使用Jgrapht库,但它需要lambda ...

这是我的代码:

    // Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        maven {
            url "https://plugins.gradle.org/m2/"
        }
        jcenter()
    }
    dependencies {
        classpath "gradle.plugin.me.tatarka:gradle-retrolambda:3.3.0"
        classpath 'com.android.tools.build:gradle:2.2.1'
    }
}
allprojects {
    repositories {
        jcenter()
        mavenCentral()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
Run Code Online (Sandbox Code Playgroud)

而且:app

apply plugin: "me.tatarka.retrolambda" version "3.3.0"
apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "24.0.3"
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    defaultConfig {
        applicationId "it.univpm.gruppoids.iotforemergencyandnavigation"
        minSdkVersion 16
        targetSdkVersion …
Run Code Online (Sandbox Code Playgroud)

android jgrapht gradle

5
推荐指数
1
解决办法
5506
查看次数

如何使用 Java 进行拓扑排序(依赖解析)

描述

该问题的目的是实现一个接口,该接口将根据任务的依赖关系信息对任务列表进行排序。例如,如果任务 A 依赖于任务 B 和 C,则这意味着要开始处理任务 A,必须首先完成任务 B 和 C。我认为它应该像有向图结构。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * The task class represents a certain activities that must be done as the part of the project planning
 */
class Task {

    /**
     * Unique name of the activity
     */
    private String name;

    /**
     * A list of names of the activities that must be completed in order to be able to start the current activity
     */
    private List<String> predecessors;

    public …
Run Code Online (Sandbox Code Playgroud)

java graph directed-graph jgrapht guava

5
推荐指数
1
解决办法
3959
查看次数

合并JGraphT中的图形

我正在使用JGraphT,我有两个DirectedGraph:g1g2.

我该如何合并g1g2第三图形g3?我需要g3是一个普通的图形,并能够添加新的边和顶点.

java jgrapht

4
推荐指数
1
解决办法
1580
查看次数

jgrapht的自定义边缘

我想定义一个自定义边

public class Connection extends DefaultWeightedEdge
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用时,super()这可能吗?创建图形时应为EdgeFactory使用什么?

new SimpleWeightedGraph<Sensor, Connection>(EdgeFactory.class);
Run Code Online (Sandbox Code Playgroud)

这样就足够了吗?还是我应该创建一个新的扩展类EdgeFactory

java jgrapht

4
推荐指数
1
解决办法
3055
查看次数