Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public double[] prim(Graph G, Node u) {
- final double[] store = new double[numberOfVertices];
- final double[] minWeight = new double[numberOfVertices];
- final boolean[] visited = new boolean[numberOfVertices];
- // set all values in store to the largest value (infinity)
- for (int i = 0; i < store.length; i++) {
- store[i] = Integer.MAX_VALUE;
- }
- // set boolean values in visited as false
- for (int i = 0; i < visited.length; i++) {
- visited[i] = false;
- }
- //store[start] = 0;
- // just in case put "int start" into the paramater
- // if you want to start at a specific place
- minWeight[0] = 0;
- for (int i = 0; i < numberOfVertices - 1; i++) {
- int next = minVertex(store, visited);
- visited[next] = true;
- for (int j = 0; j < numberOfVertices; j++) {
- if (weightHolder[next][j] != 0 && visited[j] == false
- && weightHolder[next][j] < store[j]) {
- minWeight[j] = next;
- store[j] = weightHolder[next][j];
- }
- }
- }
- System.out.println(store);
- return store;
- }
- private static int minVertex(double[] store, boolean[] v) {
- double x = Double.MAX_VALUE;
- int y = -1;
- for (int i = 0; i < store.length; i++) {
- if (!v[i] && store[i] < x) {
- y = i;
- x = store[i];
- }
- }
- return y;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement