bubble: die laufzeit einer rekrusiven methode fixen

Beitrag lesen

for(int i=0; i<startvec.size(); i++)
p(map,startvec.get(i), 0, T);

Funktionsaufrufe kosten Zeit.  
  
~~~php
for(ElementType item: startvec.toArray(new ElementType[startvec.size()]) {  
	p(map, item, 0, T);  
}

hat deutlich weniger Funktionsaufrufe, kannst du aber auch nur verwenden, falls sich die Größe von startvec nicht ändert.

Deine p()-Funktion kann man auch noch verbessern, da wird pro Iteration mindestens 3x nachfolger.get(n) aufgerufen.

private static HashMap<Integer,Double[]> p(HashMap<Integer,Double[]> map, Integer stationID, int t, int T) {  
	if(T == t+1) {  
		return map;  
	}  
	  
	NodeDataIterator graph = new NodeDataIterator();  
	graph.selectStation(stationID);  
	ArrayList<NodeData> nachfolger = graph.getNexts();  
	  
	for(NodeData node: nachfolger.toArray(new NodeData[nachfolger.size()]) {  
		Double[] d = map.get(node.id);  
		if(d == null) {  
			d = new Double[T];  
			for(int i=0; i<T; i++) {  
				d[i] = 0.0;  
			}  
		}  
		  
		WasAuchImmer edgeWK0 = Controller.edgesWK.get(String.valueOf(StochastischeMatrix.kombi(stationID,node.id)));  
		WasAuchImmer edgeWK1 = edgeWK0 == null ? null : Controller.edgesWK.get(String.valueOf(StochastischeMatrix.kombi(stationID,stationID)));  
		if(edgeWK0 != null && edgeWK1.zahl[0] != 0) {  
			d[t] = edgeWK0.zahl[0]/edgeWK1.zahl[1];  
		}  
		else {  
			d[t] = 0.0;  
		}  
		map.put(node.id, d);  
		if(d[t] != 0) {  
			return p(map, node.id, t+1, T);  
		}  
	}  
	return map;  
}

edgeWK0 und edgeWK1 sollten wohl noch sinnvolle Namen bekommen ;P Ob man da einen String-Key benutzen sollte ist an sich auch noch fraglich, wenn Controller.edgesWK eine HashMap/ein HashSet ist sollte es reichen für StochastischeMatrix die hashCode()-Funktion zu überschreiben.

Auf das containsKey hab ich verzichtet, da dir ja relativ egal ist, ob der Schlüssel nicht vorhanden ist, oder der Wert null ist.

Und der doppelte Code ist weg.

MfG
bubble

--
If "god" had intended us to drink beer, he would have given us stomachs. - David Daye