Witam,
można jakoś w prosty sposób odpowiednio rozmieścić wierzchołki grafu w taki sposób (np. waga krawędzi AB = 10, AC = 8) to wizualnie odległość punktu A do B nie jest mniejsza od A do C.
W skrócie chodzić o to, aby na odległości między wierzchołkami miała wpływ waga danej krawędzi.
Używam biblioteki jung, może zastosować coś innego? :)
Pozdrawiam
public class Testowa extends JFrame { public static void main(String[] args) throws IOException { SparseGraph<Integer, Double> g = new SparseGraph<Integer, Double>(); g.addVertex((Integer) 1); g.addVertex((Integer) 2); g.addVertex((Integer) 3); g.addVertex((Integer) 4); g.addVertex((Integer) 5); g.addVertex((Integer) 6); g.addVertex((Integer) 7); g.addVertex((Integer) 8); g.addEdge(10.0, 1, 2, EdgeType.UNDIRECTED); g.addEdge(8.0, 1, 3, EdgeType.UNDIRECTED); g.addEdge(5.0, 4, 5, EdgeType.UNDIRECTED); Layout<Integer, String> layout = new CircleLayout(g); layout.setSize(new Dimension(700, 700)); VisualizationViewer<Integer, String> vs = new VisualizationViewer<Integer, String>(layout); vs.setPreferredSize(new Dimension(750, 750)); DijkstraShortestPath<Integer, String> alg = new DijkstraShortestPath(g); java.util.List<String> lista = alg.getPath(1, 6); for (Object s : lista) { System.out.println(s); } Transformer<Integer, String> transformer2 = new Transformer<Integer, String>() { @Override public String transform(Integer i) { return i.toString(); } }; vs.getRenderContext().setLabelOffset(35); vs.getRenderContext().setVertexLabelTransformer(transformer2); vs.getRenderer().getVertexLabelRenderer().setPosition(edu.uci.ics.jung.visualization.renderers.Renderer.VertexLabel.Position.AUTO); //vs.getRenderContext().setEdgeLabelTransformer(transformer); DefaultModalGraphMouse gm = new DefaultModalGraphMouse(); gm.setMode(ModalGraphMouse.Mode.TRANSFORMING); vs.setGraphMouse(gm); JFrame frame = new JFrame("Prosta Interakcja"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(vs); frame.pack(); frame.setVisible(true); } }