package lab;
import java.util.ArrayList;
import java.util.PriorityQueue;
public class GR {
ArrayList<Node> NodesList = new ArrayList<Node>();
PriorityQueue<Node> QR = null;
ArrayList<Node> Pfad = new ArrayList<Node>();
public GR(ArrayList<Node> N) {
this.NodesList = N;
}
public PriorityQueue<Node> getQ(){
return this.QR;
}
public void init(ArrayList<Node> NListe, Node Start) {
for(Node N: NListe) {
N.setDistanz(Double.POSITIVE_INFINITY);
N.setVorgänger(null);
}
Start.setDistanz(0);
this.QR = new PriorityQueue<Node>(NListe.size(), new Compi());
QR.addAll(NListe);
}
public double distanzUp(Node u, Node v) {
double alt = 0;
alt = u.getDistanz() + u.getStrecke(v);
if(alt < v.getDistanz()) {
v.setDistanz(alt);
v.setVorgänger(u);
}
return alt;
}
public void Dijktstra(ArrayList<Node> gr, Node start) {
init(gr, start);
while(getQ().isEmpty() != true ) {
Node u = getQ().poll();
for(Node v : u.getNachbarn()) {
distanzUp(u, v);
}}
}
public Node searchNode(ArrayList<Node> NL, String s) {
for(Node n : NL) {
if(n.Name.equals(s)) {
return n;
}
}
return null;}
public ArrayList<String> getKürzesteRoute(ArrayList<String> A, ArrayList<String>B, ArrayList<String> Data){
String s = "[style=bold]";
ArrayList<String> as = new ArrayList<String>();
for(int i = 0; i <= Data.size()-1; i++) {
for(int u = 0; u <= A.size()-1; u++)
if(Data.get(i).contains(A.get(u)) && Data.get(i).contains(B.get(u))) {
StringBuilder sb = new StringBuilder();
sb.append(Data.get(i));
sb.append(s);
String sa = sb.toString();
as.add(sa);
}
as.add(Data.get(i));
}
return as;
}