public void start() {

		initMatrices();
		
		
		// for each vertice(i,k) check,
		// whether the path over the vertice j (i->j->k) is shorter,
		// than the direct path (i->k), then update the
		// shorter distance and save this j as predecessor
		for (int j = 1; j <= this.size; j++)
			for (int i = 1; i <= this.size; i++)
				if (i != j)
					for (int k = 1; k <= this.size; k++)
						if (j != k) {
							accessCount += 4;
							// falls es cycles gibt:
							if (dist.get(i, i) < 0.0) {
								throwIfCycleDetected();
							}
							double elem_i_j_k = dist.get(i, j) + dist.get(j, k);
							if (dist.get(i, k) > elem_i_j_k) {
								dist.insert(i, k, elem_i_j_k);
								// j ist der MatrixIndex
								// des Vorgaengerknotens
								trans.insert(i, k, j);
							}
						}

	}