我正在尝试使用JGraphT来检查图是否为欧拉。我看到给出了功能isEulerian()。我正在使用JGraphTs演示之一中的UndirectedGraph,所以我确定代码的这一部分是正确的。而且,我检查了该函数是否返回布尔值。不过,我仍然收到错误消息。怎么了?

另外我看到isEulerian()是静态的,因此我不需要此类的对象来使用该功能。

有用的链接:http://jgrapht.org/javadoc/org/jgrapht/alg/EulerianCircuit.html

package org.jgrapht.alg;
import java.util.List;
import org.jgrapht.alg.*;
import org.jgrapht.*;
import org.jgrapht.graph.*;

public class testowa{

    public static void main(String args[]) {
        UndirectedGraph<String, DefaultEdge> stringGraph = createStringGraph();
        // note undirected edges are printed as: {<v1>,<v2>}
        System.out.println(stringGraph.toString());
        boolean check = isEulerian(stringGraph);
    }



    private static UndirectedGraph<String, DefaultEdge> createStringGraph()
    {
        UndirectedGraph<String, DefaultEdge> g =
            new SimpleGraph<String, DefaultEdge>(DefaultEdge.class);

        String v1 = "v1";
        String v2 = "v2";
        String v3 = "v3";
        String v4 = "v4";

        // add the vertices
        g.addVertex(v1);
        g.addVertex(v2);
        g.addVertex(v3);
        g.addVertex(v4);

        // add edges to create a circuit
        g.addEdge(v1, v2);
        g.addEdge(v2, v3);
        g.addEdge(v3, v4);
        g.addEdge(v4, v1);

        return g;
    }
}


我不断收到的错误:

testowa.java:14: error: cannot find symbol
        boolean check = isEulerian(stringGraph);
                        ^
  symbol:   method isEulerian(UndirectedGraph<String,DefaultEdge>)
  location: class testowa
1 error

最佳答案

您尚未定义任何名为isEulerian();的方法

根据文档docs

您必须传递一些参数。

public static <V,E> boolean isEulerian(UndirectedGraph<V,E> g)
此方法将检查传入的图是否为欧拉图。

另外,您需要导入类EulerianCircuit。然后您可以使用EulerianCircuit.isEulerian(stringGraph)

07-28 13:13