'How can I add node and Edge in a different way so that I can add a large file
public static void main(String[] args){
Node A = new Node("A");
Node B = new Node("B");
Node C = new Node("C");
Node D = new Node("D");
Node E = new Node("E");
Node F = new Node("F");
Node G = new Node("G");
Node N = new Node("N");
A.adjacencies = new Edge[]{
new Edge(B,1),
new Edge(C,2),
new Edge(D,5)
};
B.adjacencies = new Edge[]{
new Edge(F,2),
new Edge(A,1)
};
C.adjacencies = new Edge[]{
new Edge(E,1),
new Edge(A,2)
};
//Sibiu
E.adjacencies = new Edge[]{
new Edge(F,1),
new Edge(D,1),
new Edge(C,1)
};
D.adjacencies = new Edge[]{
new Edge(N,4),
new Edge(E,1),
new Edge(A,5),
};
F.adjacencies = new Edge[]{
new Edge(G,7),
new Edge(B,2),
new Edge(E,1)
};
N.adjacencies = new Edge[]{
new Edge(G,1),
new Edge(D,4)
};
G.adjacencies = new Edge[]{
new Edge(N,1),
new Edge(F,7)
};
AstarSearch(A,G);
List<Node> path = printPath(G);
System.out.println("Path: " + path);
}
How can I add node and Edge in a different way so that I can add a large file for example: HashMap<String, Node> nodes;
public AstarSearchAlgo() {
nodes = new HashMap<String, Node>();
}
public void addNode(String name) {
if (nodes.get(name) == null) {
nodes.put(name, new Node(name));
}
}
public void addEdge(String source, String dest, double cost) {
Node n1 = nodes.get(source);
Node n2 = nodes.get(dest);
if (n1 != null && n2 != null) {
if (!n1.hasEdge(dest))
n1.edges.add(new Edge(dest, cost));
if (!n2.hasEdge(source))
n2.edges.add(new Edge(source, cost));
}
}
whereas the main method
public static void main(String[] args){
AstarSearchAlgo g = new AstarSearchAlgo();
g.addNode("A");
g.addNode("B");
//..
g.addEdge("A", "B", 1);
g.addEdge("A", "C", 2);
//..
}
}
If there is a method more effective than this
Edge Class
public class Edge{
public final double cost;
public final Node target;
public Edge(Node targetNode, double costVal){
target = targetNode;
cost = costVal;
}
}
Node Class
class Node{
String value;
public double g_scores;
public final double h_scores;
public double f_scores = 0;
Edge[] adjacencies;
public Node parent;
public Node(String val){
this.h_scores = 0;
value = val;
}
public String toString(){
return value;
}
}
Where I made the file read data from a file that contains at least 100 lines and I want to enter a line by line that accepts all the data and that I can follow it
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|