Advertisement
Guest User

Untitled

a guest
Nov 18th, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.17 KB | None | 0 0
  1. package com.company.algorithm;
  2.  
  3. import com.company.Vertex;
  4. import com.company.link.Link;
  5. import com.company.network.Network;
  6. import com.company.network.TestNetwork;
  7.  
  8. import java.util.*;
  9.  
  10. public class FloydAlgorithm implements MyAlgorithm {
  11.  
  12. private List<MyAlgorithm.InputPath> inputPaths = new ArrayList<>();
  13. private Network net;
  14.  
  15. public Network execute(Network network){
  16. int verticesAmount = network.getVerticesArray().size();
  17. int d[][]= new int [verticesAmount][verticesAmount];
  18. int p[][]= new int [verticesAmount][verticesAmount];
  19. ArrayList<Link> links = network.getLinksArray();
  20. ArrayList<Vertex> vertices = network.getVerticesArray();
  21.  
  22. //wypełniam macierz nieskończonościami
  23. for (int [] row: d)
  24. Arrays.fill(row, Integer.MAX_VALUE);
  25.  
  26. for (int [] row: p)
  27. Arrays.fill(row, -1);
  28.  
  29. int i=0, j=0, k=0;
  30.  
  31. //wypełniam przekątną zerami, bo droga A->A =0
  32. for (i=0; i<verticesAmount; i++)
  33. d[i][i]=0;
  34.  
  35. //wypełniam kolejno istniejące połączenia węzłów wagami
  36. for (i=0; i<verticesAmount; i++) {
  37. links = vertices.get(i).getLinksList();
  38. for (j = 0; j < links.size(); j++) {
  39. k = links.get(j).getEnd().getId();
  40. // d[i][k]=links.get(j).getWeigth();
  41. p[i][k]=vertices.get(i).getId(); //jeśli podają węzły w kolejności, to jest to to samo co p[i][k]=i;
  42. }
  43. }
  44.  
  45.  
  46. //k->k, u->j, v->i
  47. for (k=0; k<verticesAmount; k++) {
  48. for (j=0; j<verticesAmount; j++){
  49. for (i=0; i<verticesAmount; i++){
  50. if (d[j][i]>d[j][k]+d[k][i]) {
  51. d[j][i] = d[j][k] + d[k][i];
  52. p[j][i] = p[k][i];
  53. }
  54. }
  55. }
  56. }
  57.  
  58.  
  59. //zwracanie wyników - do network?
  60. return net;
  61. }
  62.  
  63.  
  64. public void setInputPaths(List< MyAlgorithm.InputPath > inputPaths) {
  65. this.inputPaths = inputPaths;
  66. }
  67.  
  68. public void setNetwork(Network network) {
  69. this.net = network;
  70. }
  71.  
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement