public FloydWarshallImpl (AIGraph graph, String edgeDistAttrName){
		this.graph = graph;
		this.edgeDistAttrName = edgeDistAttrName;
		this.listOfVertices = graph.getVertexes();
		this.numberOfVertices = listOfVertices.size();
		//Die beiden Matrizen
		this.D = new int[this.numberOfVertices][this.numberOfVertices];
		this.T = new int[this.numberOfVertices][this.numberOfVertices];

		long beforeAcc = this.graph.getCountGraphAccesses();
		for (int i = 0; i < this.numberOfVertices; i++){
			List<String>edgesOfCurrentVertex = graph.getIncident(this.listOfVertices.get(i));
			//Initialisierung der Matrizen
			for (int j = 0; j < this.numberOfVertices; j++){
				T[i][j] = -1; //-1, da 0 ein gültiger Matrix-Index ist
				if (i == j){
					D[i][j] = 0;
				}else{
					int dist = Integer.MAX_VALUE;
					for(String edge : edgesOfCurrentVertex){
						if(graph.getTarget(edge) == this.listOfVertices.get(j)){
							dist = graph.getValE(edge, this.edgeDistAttrName);
							break;
						}
						
						int isDirectedEdge = graph.getValE(edge, "isDirectedEdge");
						if (isDirectedEdge == 0) {
							if(graph.getSource(edge) == listOfVertices.get(j)){
								dist = graph.getValE(edge, this.edgeDistAttrName);
								break;
							}
						}
					}
					D[i][j]	= dist;		
				}
					
			}
		}
		
		//this.printVariableVals();
		//System.out.println("-------");
		//this.printMatrices();
		doAlgorithm();
		this.countAccessGraph = this.graph.getCountGraphAccesses() - beforeAcc; 
	}