2013-02-27, 11:22
#1
Hej!
Behöver hjälp med att räkna ut avstånden mellan olika noder med hjälp av att vikta bågarna.
Hur ska en generel kod se ut för att få ut avstånden?
Nedanför är koden för algoritmen, jag har skrivit in "här ska båglängderna vara" i koden för att markera ut vart den nya koden ska in.
Om någon vet hur man löser detta är jag tacksam för lite hjälp.
Mvh
Behöver hjälp med att räkna ut avstånden mellan olika noder med hjälp av att vikta bågarna.
Hur ska en generel kod se ut för att få ut avstånden?
Nedanför är koden för algoritmen, jag har skrivit in "här ska båglängderna vara" i koden för att markera ut vart den nya koden ska in.
Om någon vet hur man löser detta är jag tacksam för lite hjälp.
Mvh
Citat:
package robotcontrol;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class OptPan {
private List<Vertex> nodes;
private List<Edge> edges;
private DataStore ds;
public OptPan(DataStore ds) {
this.ds = ds;
}
public void createPan() {
nodes = new ArrayList<Vertex>();
edges = new ArrayList<Edge>();
// Set up network
for (int i = 0; i < ds.nodes; i++) {
Vertex location = new Vertex("" + (i + 1), "Nod #" + (i + 1));
nodes.add(location);
}
for (int i = 0; i < ds.arcs; i++) {
// här ska båglängderna vara
Edge lane = new Edge("" + (i + 1), nodes.get(ds.arcStart[i] - 1), nodes.get(ds.arcEnd[i] - 1), 1);
edges.add(lane);
}
Graph graph = new Graph(nodes, edges);
DijkstraAlgorithm dijkstra = new DijkstraAlgorithm(graph);
// Compute shortest path
dijkstra.execute(nodes.get(13));
LinkedList<Vertex> path = dijkstra.getPath(nodes.get(23));
// Get shortest path
for (int i = 0; i < path.size();
i++) {
System.out.println(path.get(i));
}
// Arcs in the shortest path
for (int i = 0; i < path.size() - 1; i++) {
for (int j = 0; j < ds.arcs; j++) {
if (ds.arcStart[j] == Integer.parseInt(path.get(i).getId()) && ds.arcEnd[j] == Integer.parseInt(path.get(i + 1).getId())) {
System.out.println("Arc: " + j);
ds.arcColor[j] = 1;
}
}
}
}
}
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class OptPan {
private List<Vertex> nodes;
private List<Edge> edges;
private DataStore ds;
public OptPan(DataStore ds) {
this.ds = ds;
}
public void createPan() {
nodes = new ArrayList<Vertex>();
edges = new ArrayList<Edge>();
// Set up network
for (int i = 0; i < ds.nodes; i++) {
Vertex location = new Vertex("" + (i + 1), "Nod #" + (i + 1));
nodes.add(location);
}
for (int i = 0; i < ds.arcs; i++) {
// här ska båglängderna vara
Edge lane = new Edge("" + (i + 1), nodes.get(ds.arcStart[i] - 1), nodes.get(ds.arcEnd[i] - 1), 1);
edges.add(lane);
}
Graph graph = new Graph(nodes, edges);
DijkstraAlgorithm dijkstra = new DijkstraAlgorithm(graph);
// Compute shortest path
dijkstra.execute(nodes.get(13));
LinkedList<Vertex> path = dijkstra.getPath(nodes.get(23));
// Get shortest path
for (int i = 0; i < path.size();
i++) {
System.out.println(path.get(i));
}
// Arcs in the shortest path
for (int i = 0; i < path.size() - 1; i++) {
for (int j = 0; j < ds.arcs; j++) {
if (ds.arcStart[j] == Integer.parseInt(path.get(i).getId()) && ds.arcEnd[j] == Integer.parseInt(path.get(i + 1).getId())) {
System.out.println("Arc: " + j);
ds.arcColor[j] = 1;
}
}
}
}
}