gpt4 book ai didi

java - transform 方法没有在 MAIN 方法中调用?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:48:36 24 4
gpt4 key购买 nike

package edu.uci.ics.jung.algorithms.cluster;

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.commons.collections15.Transformer;

import edu.uci.ics.jung.algorithms.scoring.BetweennessCentrality;
import edu.uci.ics.jung.graph.Graph;
import edu.uci.ics.jung.graph.util.Pair;

public class EdgeBetweennessClusterer<V, E> implements
Transformer<Graph<V, E>, Set<Set<V>>> {
private int mNumEdgesToRemove;
private Map<E, Pair<V>> edges_removed;


public EdgeBetweennessClusterer(int numEdgesToRemove) {
mNumEdgesToRemove = numEdgesToRemove;
edges_removed = new LinkedHashMap<E, Pair<V>>();


}
public Set<Set<V>> transform(Graph<V, E> graph) {

if (mNumEdgesToRemove < 0
|| mNumEdgesToRemove > graph.getEdgeCount()) {
throw new IllegalArgumentException(
"Invalid number of edges passed in.");
}

edges_removed.clear();

for (int k = 0; k < mNumEdgesToRemove; k++) {
BetweennessCentrality<V, E> bc = new BetweennessCentrality<V, E>(
graph);
E to_remove = null;
double score = 0;
for (E e : graph.getEdges())
if (bc.getEdgeScore(e) > score) {
to_remove = e;
score = bc.getEdgeScore(e);
}
edges_removed.put(to_remove, graph.getEndpoints(to_remove));
graph.removeEdge(to_remove);
}

WeakComponentClusterer<V, E> wcSearch = new WeakComponentClusterer<V, E>();
Set<Set<V>> clusterSet = wcSearch.transform(graph);

for (Map.Entry<E, Pair<V>> entry : edges_removed.entrySet()) {
Pair<V> endpoints = entry.getValue();
graph.addEdge(entry.getKey(), endpoints.getFirst(),
endpoints.getSecond());
}
Object array[];
array=new Object[500];
array=clusterSet.toArray();
System.out.println(array.length);
for(int i=0;i<array.length;i++)

{
System.out.println("hello");
System.out.println("hkj"+array[i]);
}
return clusterSet;
}

/**
* Retrieves the list of all edges that were removed
* (assuming extract(...) was previously called).
* The edges returned
* are stored in order in which they were removed.
*
* @return the edges in the original graph
*/
public List<E> getEdgesRemoved() {
return new ArrayList<E>(edges_removed.keySet());
}


public static void main(String args[])
{
new EdgeBetweennessClusterer(10);
}
}

此算法复制自here

我正在制作基于网络的社区,所以我使用了这个算法当我运行这段代码时,main 方法没有被调用。我无法理解发生了什么。如果我错了,请纠正我。我犯了什么错误?

最佳答案

如果你删除所有不执行任何操作的代码,你的程序与

public EdgeBetweennessClusterer(int numEdgesToRemove) {
mNumEdgesToRemove = numEdgesToRemove;
edges_removed = new LinkedHashMap<E, Pair<V>>();
}

public static void main(String args[]) {
new EdgeBetweennessClusterer(10);
}

如果你想让你的程序调用更多的代码,你需要告诉它这样做。也许使用调试器可以帮助您了解您的程序正在做什么以及为什么。

关于java - transform 方法没有在 MAIN 方法中调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8095104/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com