diff options
author | Jonas Smedegaard <dr@jones.dk> | 2025-04-26 19:32:53 +0200 |
---|---|---|
committer | Jonas Smedegaard <dr@jones.dk> | 2025-04-26 19:32:53 +0200 |
commit | e4a0762c7a2ac3afb8e33bf24fd7495553b5819f (patch) | |
tree | 83d738e242670a4171cd20727f697744d05eaec8 /com/example/portfolio3/MatrixGraph.java | |
parent | 7f93e18b6424b292d4f54fb746aeb6e10b62e76d (diff) |
use Maven idiomatic root path src/main/java
Diffstat (limited to 'com/example/portfolio3/MatrixGraph.java')
-rw-r--r-- | com/example/portfolio3/MatrixGraph.java | 77 |
1 files changed, 0 insertions, 77 deletions
diff --git a/com/example/portfolio3/MatrixGraph.java b/com/example/portfolio3/MatrixGraph.java deleted file mode 100644 index 29005b7..0000000 --- a/com/example/portfolio3/MatrixGraph.java +++ /dev/null @@ -1,77 +0,0 @@ -package com.example.portfolio3; - -// origin: <https://moodle.ruc.dk/course/section.php?id=211877> - -import java.util.*; - -/// Matrix Graph: weights are stored in a twodimensional array -public class MatrixGraph extends AbstractGraph { - - /// foo - private Integer[][] matrix=null; // made in constructor - - /// foo - // We must be able to map vertices to index in matrix and back again - private Vertex[] index2vertex; // made in constructor - - /// foo - private Map<Vertex,Integer> vertex2index=new HashMap<>(); - - /// foo - private int numVertex; // maximum number of vertices - - /// foo - /// @param numVertex maximum number of vertices allowed - public MatrixGraph(int numVertex){ - this.numVertex=numVertex; - matrix =new Integer[numVertex][numVertex]; - index2vertex=new Vertex[numVertex]; - } - - /// foo - /// @param v vertex - /// @return int - private int getIndex(Vertex v){ - if(vertex2index.containsKey(v)) return vertex2index.get(v); - int index=vertex2index.size(); - if(index>=index2vertex.length)throw new RuntimeException("Too many vertices in graph"); - vertex2index.put(v,index); - index2vertex[index]=v; - return index; - } - - /// foo - public void insertEdge(Vertex v1,Vertex v2,int w){ - matrix[getIndex(v1)][getIndex(v2)] = w; - } - - /// foo - public Collection<Edge> edges(){ - HashSet<Edge> edges=new HashSet<>(); - for(int i=0;i<numVertex;i++){ - for(int j=0;j<numVertex;j++){ - Integer weight=matrix[i][j]; // may be null - if(weight==null)continue; - edges.add(new Edge(index2vertex[i],index2vertex[j],weight)); - } - } - return edges; - } - - /// foo - public Collection<Edge> outEdge(Vertex v1){ - HashSet<Edge> edges=new HashSet<>(); - int i=vertex2index.get(v1); - for(int j=0;j<numVertex;j++){ - Integer weight=matrix[i][j]; // may be null - if(weight==null)continue; - edges.add(new Edge(v1,index2vertex[j],weight)); - } - return edges; - } - - /// foo - public Integer getWeight(Vertex v1,Vertex v2){ - // constant time operation - return matrix[vertex2index.get(v1)][vertex2index.get(v2)];} -} |