diff --git a/1_hintergrund/1_hintergrund.odt b/1_hintergrund/1_hintergrund.odt new file mode 100644 index 0000000..cfb569b Binary files /dev/null and b/1_hintergrund/1_hintergrund.odt differ diff --git a/1_hintergrund/2_unterrichtsverlauf.odt b/1_hintergrund/2_unterrichtsverlauf.odt new file mode 100644 index 0000000..5d11844 Binary files /dev/null and b/1_hintergrund/2_unterrichtsverlauf.odt differ diff --git a/1_hintergrund/3_stoffverteilungsplan.odt b/1_hintergrund/3_stoffverteilungsplan.odt new file mode 100644 index 0000000..9f11e25 Binary files /dev/null and b/1_hintergrund/3_stoffverteilungsplan.odt differ diff --git a/1_hintergrund/4_installation_graphentester.odt b/1_hintergrund/4_installation_graphentester.odt new file mode 100644 index 0000000..9791490 Binary files /dev/null and b/1_hintergrund/4_installation_graphentester.odt differ diff --git a/2_kopiervorlagen/00_graphen_unplugged.odt b/2_kopiervorlagen/00_graphen_unplugged.odt new file mode 100644 index 0000000..39313e2 Binary files /dev/null and b/2_kopiervorlagen/00_graphen_unplugged.odt differ diff --git a/2_kopiervorlagen/01_eulerzug.odt b/2_kopiervorlagen/01_eulerzug.odt new file mode 100644 index 0000000..ea867be Binary files /dev/null and b/2_kopiervorlagen/01_eulerzug.odt differ diff --git a/2_kopiervorlagen/01_eulerzug.pdf b/2_kopiervorlagen/01_eulerzug.pdf new file mode 100644 index 0000000..873b819 Binary files /dev/null and b/2_kopiervorlagen/01_eulerzug.pdf differ diff --git a/2_kopiervorlagen/02_topologischesortierung.odt b/2_kopiervorlagen/02_topologischesortierung.odt new file mode 100644 index 0000000..32432e6 Binary files /dev/null and b/2_kopiervorlagen/02_topologischesortierung.odt differ diff --git a/2_kopiervorlagen/02_topologischesortierung.pdf b/2_kopiervorlagen/02_topologischesortierung.pdf new file mode 100644 index 0000000..f80d209 Binary files /dev/null and b/2_kopiervorlagen/02_topologischesortierung.pdf differ diff --git a/2_kopiervorlagen/03_kuerzesterpfad.odt b/2_kopiervorlagen/03_kuerzesterpfad.odt new file mode 100644 index 0000000..03532b6 Binary files /dev/null and b/2_kopiervorlagen/03_kuerzesterpfad.odt differ diff --git a/2_kopiervorlagen/03_kuerzesterpfad.pdf b/2_kopiervorlagen/03_kuerzesterpfad.pdf new file mode 100644 index 0000000..b066483 Binary files /dev/null and b/2_kopiervorlagen/03_kuerzesterpfad.pdf differ diff --git a/2_kopiervorlagen/04_kuerzesterpfad2.odt b/2_kopiervorlagen/04_kuerzesterpfad2.odt new file mode 100644 index 0000000..5ca32b1 Binary files /dev/null and b/2_kopiervorlagen/04_kuerzesterpfad2.odt differ diff --git a/2_kopiervorlagen/04_kuerzesterpfad2.pdf b/2_kopiervorlagen/04_kuerzesterpfad2.pdf new file mode 100644 index 0000000..d8becdc Binary files /dev/null and b/2_kopiervorlagen/04_kuerzesterpfad2.pdf differ diff --git a/2_kopiervorlagen/05_dominierendemenge.odt b/2_kopiervorlagen/05_dominierendemenge.odt new file mode 100644 index 0000000..09fc956 Binary files /dev/null and b/2_kopiervorlagen/05_dominierendemenge.odt differ diff --git a/2_kopiervorlagen/05_dominierendemenge.pdf b/2_kopiervorlagen/05_dominierendemenge.pdf new file mode 100644 index 0000000..9fef20e Binary files /dev/null and b/2_kopiervorlagen/05_dominierendemenge.pdf differ diff --git a/2_kopiervorlagen/06_repraesentation.odt b/2_kopiervorlagen/06_repraesentation.odt new file mode 100644 index 0000000..3c2833c Binary files /dev/null and b/2_kopiervorlagen/06_repraesentation.odt differ diff --git a/2_kopiervorlagen/06_repraesentation.pdf b/2_kopiervorlagen/06_repraesentation.pdf new file mode 100644 index 0000000..5297750 Binary files /dev/null and b/2_kopiervorlagen/06_repraesentation.pdf differ diff --git a/2_kopiervorlagen/07_kartenfaerben.odt b/2_kopiervorlagen/07_kartenfaerben.odt new file mode 100644 index 0000000..ecbb6b3 Binary files /dev/null and b/2_kopiervorlagen/07_kartenfaerben.odt differ diff --git a/2_kopiervorlagen/07_kartenfaerben.pdf b/2_kopiervorlagen/07_kartenfaerben.pdf new file mode 100644 index 0000000..e664143 Binary files /dev/null and b/2_kopiervorlagen/07_kartenfaerben.pdf differ diff --git a/2_kopiervorlagen/08_minimalspanningtree.odt b/2_kopiervorlagen/08_minimalspanningtree.odt new file mode 100644 index 0000000..b236cc1 Binary files /dev/null and b/2_kopiervorlagen/08_minimalspanningtree.odt differ diff --git a/2_kopiervorlagen/08_minimalspanningtree.pdf b/2_kopiervorlagen/08_minimalspanningtree.pdf new file mode 100644 index 0000000..240170c Binary files /dev/null and b/2_kopiervorlagen/08_minimalspanningtree.pdf differ diff --git a/2_kopiervorlagen/09_graphen_glossar.odt b/2_kopiervorlagen/09_graphen_glossar.odt new file mode 100644 index 0000000..bd74896 Binary files /dev/null and b/2_kopiervorlagen/09_graphen_glossar.odt differ diff --git a/2_kopiervorlagen/11_1_biber_domino.odt b/2_kopiervorlagen/11_1_biber_domino.odt new file mode 100644 index 0000000..faf894a Binary files /dev/null and b/2_kopiervorlagen/11_1_biber_domino.odt differ diff --git a/2_kopiervorlagen/11_1_biber_domino.pdf b/2_kopiervorlagen/11_1_biber_domino.pdf new file mode 100644 index 0000000..64afcc2 Binary files /dev/null and b/2_kopiervorlagen/11_1_biber_domino.pdf differ diff --git a/2_kopiervorlagen/11_2_biber_woerterkette.pdf b/2_kopiervorlagen/11_2_biber_woerterkette.pdf new file mode 100644 index 0000000..f30aef8 Binary files /dev/null and b/2_kopiervorlagen/11_2_biber_woerterkette.pdf differ diff --git a/2_kopiervorlagen/12_1_biber_kochen.odt b/2_kopiervorlagen/12_1_biber_kochen.odt new file mode 100644 index 0000000..80eb9b3 Binary files /dev/null and b/2_kopiervorlagen/12_1_biber_kochen.odt differ diff --git a/2_kopiervorlagen/12_1_biber_kochen.pdf b/2_kopiervorlagen/12_1_biber_kochen.pdf new file mode 100644 index 0000000..71333db Binary files /dev/null and b/2_kopiervorlagen/12_1_biber_kochen.pdf differ diff --git a/2_kopiervorlagen/12_2_turnier.odt b/2_kopiervorlagen/12_2_turnier.odt new file mode 100644 index 0000000..209d871 Binary files /dev/null and b/2_kopiervorlagen/12_2_turnier.odt differ diff --git a/2_kopiervorlagen/12_2_turnier.pdf b/2_kopiervorlagen/12_2_turnier.pdf new file mode 100644 index 0000000..f3b81e8 Binary files /dev/null and b/2_kopiervorlagen/12_2_turnier.pdf differ diff --git a/2_kopiervorlagen/12_3_biber_gruppenarbeit.pdf b/2_kopiervorlagen/12_3_biber_gruppenarbeit.pdf new file mode 100644 index 0000000..4719780 Binary files /dev/null and b/2_kopiervorlagen/12_3_biber_gruppenarbeit.pdf differ diff --git a/2_kopiervorlagen/12_4_biber_partygaeste.pdf b/2_kopiervorlagen/12_4_biber_partygaeste.pdf new file mode 100644 index 0000000..fcdeda0 Binary files /dev/null and b/2_kopiervorlagen/12_4_biber_partygaeste.pdf differ diff --git a/2_kopiervorlagen/13_1_kevinbaconzahl.odt b/2_kopiervorlagen/13_1_kevinbaconzahl.odt new file mode 100644 index 0000000..6d14b11 Binary files /dev/null and b/2_kopiervorlagen/13_1_kevinbaconzahl.odt differ diff --git a/2_kopiervorlagen/13_1_kevinbaconzahl.pdf b/2_kopiervorlagen/13_1_kevinbaconzahl.pdf new file mode 100644 index 0000000..dfeeadb Binary files /dev/null and b/2_kopiervorlagen/13_1_kevinbaconzahl.pdf differ diff --git a/2_kopiervorlagen/13_2_scotlandyard.odt b/2_kopiervorlagen/13_2_scotlandyard.odt new file mode 100644 index 0000000..dba7456 Binary files /dev/null and b/2_kopiervorlagen/13_2_scotlandyard.odt differ diff --git a/2_kopiervorlagen/13_2_scotlandyard.pdf b/2_kopiervorlagen/13_2_scotlandyard.pdf new file mode 100644 index 0000000..1f4cf10 Binary files /dev/null and b/2_kopiervorlagen/13_2_scotlandyard.pdf differ diff --git a/2_kopiervorlagen/14_1_biber_postkutschen.odt b/2_kopiervorlagen/14_1_biber_postkutschen.odt new file mode 100644 index 0000000..9a45c47 Binary files /dev/null and b/2_kopiervorlagen/14_1_biber_postkutschen.odt differ diff --git a/2_kopiervorlagen/14_1_biber_postkutschen.pdf b/2_kopiervorlagen/14_1_biber_postkutschen.pdf new file mode 100644 index 0000000..6d2e9a4 Binary files /dev/null and b/2_kopiervorlagen/14_1_biber_postkutschen.pdf differ diff --git a/2_kopiervorlagen/16_1_biber_inselnundbruecken.pdf b/2_kopiervorlagen/16_1_biber_inselnundbruecken.pdf new file mode 100644 index 0000000..55a7ee6 Binary files /dev/null and b/2_kopiervorlagen/16_1_biber_inselnundbruecken.pdf differ diff --git a/2_kopiervorlagen/16_2_biber_knettierchen.pdf b/2_kopiervorlagen/16_2_biber_knettierchen.pdf new file mode 100644 index 0000000..93e0295 Binary files /dev/null and b/2_kopiervorlagen/16_2_biber_knettierchen.pdf differ diff --git a/2_kopiervorlagen/16_3_biber_schatzkarte.pdf b/2_kopiervorlagen/16_3_biber_schatzkarte.pdf new file mode 100644 index 0000000..e3b8b11 Binary files /dev/null and b/2_kopiervorlagen/16_3_biber_schatzkarte.pdf differ diff --git a/2_kopiervorlagen/16_4_biber_verbunden.pdf b/2_kopiervorlagen/16_4_biber_verbunden.pdf new file mode 100644 index 0000000..003996e Binary files /dev/null and b/2_kopiervorlagen/16_4_biber_verbunden.pdf differ diff --git a/2_kopiervorlagen/17_1_hochzeitsplanung.odt b/2_kopiervorlagen/17_1_hochzeitsplanung.odt new file mode 100644 index 0000000..d32821a Binary files /dev/null and b/2_kopiervorlagen/17_1_hochzeitsplanung.odt differ diff --git a/2_kopiervorlagen/17_1_hochzeitsplanung.pdf b/2_kopiervorlagen/17_1_hochzeitsplanung.pdf new file mode 100644 index 0000000..5057dcb Binary files /dev/null and b/2_kopiervorlagen/17_1_hochzeitsplanung.pdf differ diff --git a/2_kopiervorlagen/17_2_oberstufenplanung.odt b/2_kopiervorlagen/17_2_oberstufenplanung.odt new file mode 100644 index 0000000..ab80d54 Binary files /dev/null and b/2_kopiervorlagen/17_2_oberstufenplanung.odt differ diff --git a/2_kopiervorlagen/17_2_oberstufenplanung.pdf b/2_kopiervorlagen/17_2_oberstufenplanung.pdf new file mode 100644 index 0000000..b016982 Binary files /dev/null and b/2_kopiervorlagen/17_2_oberstufenplanung.pdf differ diff --git a/2_kopiervorlagen/18_1_biber_brueckenbau.odt b/2_kopiervorlagen/18_1_biber_brueckenbau.odt new file mode 100644 index 0000000..db3d77d Binary files /dev/null and b/2_kopiervorlagen/18_1_biber_brueckenbau.odt differ diff --git a/2_kopiervorlagen/18_1_biber_brueckenbau.pdf b/2_kopiervorlagen/18_1_biber_brueckenbau.pdf new file mode 100644 index 0000000..d40bb78 Binary files /dev/null and b/2_kopiervorlagen/18_1_biber_brueckenbau.pdf differ diff --git a/2_kopiervorlagen/18_2_gefaengnisausbruch.odt b/2_kopiervorlagen/18_2_gefaengnisausbruch.odt new file mode 100644 index 0000000..a3404d2 Binary files /dev/null and b/2_kopiervorlagen/18_2_gefaengnisausbruch.odt differ diff --git a/2_kopiervorlagen/18_2_gefaengnisausbruch.pdf b/2_kopiervorlagen/18_2_gefaengnisausbruch.pdf new file mode 100644 index 0000000..1e9b90a Binary files /dev/null and b/2_kopiervorlagen/18_2_gefaengnisausbruch.pdf differ diff --git a/2_kopiervorlagen/19_1_biber_hobbiber.odt b/2_kopiervorlagen/19_1_biber_hobbiber.odt new file mode 100644 index 0000000..5e9da40 Binary files /dev/null and b/2_kopiervorlagen/19_1_biber_hobbiber.odt differ diff --git a/2_kopiervorlagen/19_1_biber_hobbiber.pdf b/2_kopiervorlagen/19_1_biber_hobbiber.pdf new file mode 100644 index 0000000..a2791b5 Binary files /dev/null and b/2_kopiervorlagen/19_1_biber_hobbiber.pdf differ diff --git a/3_vorlagen_tauschordner/1_graphentester/Im Verzeichnis Quellcodes die aktuelle Version holen.txt b/3_vorlagen_tauschordner/1_graphentester/Im Verzeichnis Quellcodes die aktuelle Version holen.txt new file mode 100644 index 0000000..e69de29 diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo.java b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo.java new file mode 100644 index 0000000..e62b804 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo.java @@ -0,0 +1,172 @@ +package algorithmen; + +import java.lang.Thread; +import java.nio.file.*; +import graph.*; +import java.util.List; +import javafx.scene.control.Alert; +import javafx.scene.control.Alert.AlertType; +import javafx.scene.control.ButtonType; +import javafx.application.Platform; + + +/** + * + * description + * + * @version 1.0 from 26.04.2019 + * @author + */ + +public abstract class GraphAlgo extends Thread { + + // Anfang Attribute + private boolean stepping; + private boolean waitforrepaint; + private boolean waitforclick; + protected boolean inArbeit; + private GraphPlotter gp; + private Knoten startKnoten; + private int speed =100; + private Hilfe hilfe; + protected Graph g; + private List aktuellerZustand; + // Ende Attribute + + // Anfang Methoden + public GraphAlgo() { + stepping = true; + waitforrepaint = false; + waitforclick = false; + aktuellerZustand = null; + setDaemon(true); + } + + public void setGUIElemente(GraphPlotter graphPlotter, Hilfe hilfe) { + gp = graphPlotter; + g = gp.getGraph(); + this.hilfe = hilfe; + if (hilfe != null) hilfe.setGraphPlotter(gp); + } + + public void setGraph(Graph g) { + this.g = g; + gp = null; + hilfe = null; + } + + public void step() { + if(gp == null) return; + try{ + gp.updateImage(); + aktuellerZustand = g.getStatus(); + waitforclick = true; + if (hilfe != null) hilfe.setReviewAllowed(true); + int i = 0; + while((waitforclick && (stepping || i*10 < speed)) && !isInterrupted()){ + Thread.sleep(10); + i++; + } + if (hilfe != null) hilfe.setReviewAllowed(false); + g.setStatus(aktuellerZustand); + aktuellerZustand = null; + }catch(Exception e) { + // Erneutes Stop, damit nicht stop während des Sleeps hier abgefangen wird. + stop(); + } + } + + public boolean getWaitforrepaint() { + return waitforrepaint; + } + + public void setWaitforrepaint(boolean waitforrepaintNeu) { + waitforrepaint = waitforrepaintNeu; + } + + public boolean getWaitforclick() { + return waitforclick; + } + + public void setWaitforclick(boolean waitforclickNeu) { + waitforclick = waitforclickNeu; + } + + public void setStepping(boolean stepping) { + this.stepping = stepping; + } + + public void setSpeed(int delay) { + this.speed = delay; + } + + public void run() + { + if(!inArbeit && gp != null) + { + // System.out.println("Algorithmus gestartet"); + inArbeit = true; + try{ + if (hilfe != null) hilfe.setReviewAllowed(false); + fuehreAlgorithmusAus(); + // System.out.println("Algorithmus beendet"); + } catch( ThreadDeath e){ + // System.out.println("Algorithmus vorzeitig beendet."); + } + if (hilfe != null) hilfe.setReviewAllowed(true); + inArbeit = false; + return; + } + else + { + return; + } + } + // Ende Methoden + + public void setStartKnoten(Knoten k) { + startKnoten = k; + } + + public Knoten getStartKnoten() { + if (startKnoten != null) { + return startKnoten; + } else { + return g.getKnoten(0); + } // end of if-else + } + + public abstract void fuehreAlgorithmusAus(); + + public abstract String getBezeichnung(); + + public void melde(String s) { + info(s); + Platform.runLater(() -> { + Alert meldung = new Alert(AlertType.INFORMATION, s, ButtonType.OK); + meldung.setTitle("Information"); + meldung.setHeaderText(null); + meldung.showAndWait(); + }); + } + + public void info(String s) { + if(hilfe != null) hilfe.append(s+"\n"); + } + + public void resetInfo() { + if(hilfe != null) hilfe.loescheAlles(); + } + + public void infoIndentMore() { + if(hilfe != null) hilfe.indentMore(); + + } + + public void infoIndentLess() { + if(hilfe != null) hilfe.indentLess(); + + } + + +} diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_BellmanFord.java b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_BellmanFord.java new file mode 100644 index 0000000..2319f4b --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_BellmanFord.java @@ -0,0 +1,83 @@ +package algorithmen; + +import java.util.List; +import java.util.Collections; +import java.nio.file.*; + +import graph.*; +/** + * Dieser Algorithmus findet die kürzesten Pfade in einem gewichteten Graphen. + * Algorithmus: Bellman-Ford + * + * @version 1.0 from 10.12.2020 + * @author Thomas Schaller + */ + +public class GraphAlgo_BellmanFord extends GraphAlgo { + + // Anfang Attribute + + public String getBezeichnung() { + return "Kürzester Pfad (Bellman-Ford)"; + } + + private String knoteninfo(Knoten k) { + if (!k.getInfotext().equals("")) { + return k.getInfotext()+" (Wert "+k.getDoubleWert()+")"; + } else { + return "Knoten Nr. "+g.getNummer(k)+" (Wert "+k.getDoubleWert()+")"; + } + } + + // Anfang Methoden + public void fuehreAlgorithmusAus() { + if (g.getAnzahlKnoten()==0) { + return; + } + for(Knoten k : g.getAlleKnoten()) { + k.setWert(1000); + } + info("Setze alle Entfernungen auf unendlich (1000)"); + getStartKnoten().setWert(0); + info("Setze Startknoten auf Entfernung 0"); + step(); + for(int i = 0; i < g.getAnzahlKnoten()-1; i++) { + info(""+i+". Durchgang"); + infoIndentMore(); + for(Kante k: g.getAlleKanten()) { + info("Kante von "+knoteninfo(k.getStart())+" nach "+knoteninfo(k.getZiel())); + Knoten von = k.getStart(); + Knoten nach = k.getZiel(); + if(von.getDoubleWert()+k.getGewicht() < nach.getDoubleWert()){ + nach.setWert(von.getDoubleWert()+k.getGewicht()); + List alterWeg = g.getEingehendeKanten(nach, ka -> ka.isMarkiert()); + if(alterWeg.size()>0) alterWeg.get(0).setMarkiert(false); + info("Neue Entfernung für "+knoteninfo(nach)+":"+nach.getDoubleWert()); + k.setMarkiert(true); + } + if(!g.isGerichtet() && nach.getDoubleWert()+k.getGewicht() < von.getDoubleWert()){ + von.setWert(nach.getDoubleWert()+k.getGewicht()); + info("Neue Entfernung für "+knoteninfo(von)+":"+von.getDoubleWert()); + List alterWeg = g.getEingehendeKanten(von, ka -> ka.isMarkiert()); + if(alterWeg.size()>0) alterWeg.get(0).setMarkiert(false); + k.setMarkiert(true); + } + step(); + } + infoIndentLess(); + step(); + } + info("Zyklenkontrolle"); + for(Kante k: g.getAlleKanten()) { + if(k.getStart().getDoubleWert()+k.getGewicht() < k.getZiel().getDoubleWert()){ + melde("Es gibt einen Zyklus negativen Gewichts"); + info("Es gibt einen Zyklus negativen Gewichts"); + g.initialisiereAlleKnoten(); + return; + } + } + step(); + } // end of for + + // Ende Methoden +} diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_Breitensuche.java b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_Breitensuche.java new file mode 100644 index 0000000..d9c992e --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_Breitensuche.java @@ -0,0 +1,72 @@ +package algorithmen; + +import java.util.List; +import java.util.ArrayList; +import java.util.Collections; +import java.nio.file.*; + +import graph.*; +/** + * Dieser Algorithmus nummeriert alle Knoten des Graphen. + * Algorithmus: Breitensuche mit ToDo-Liste (Schlange) + * + * @version 1.0 from 10.12.2020 + * @author Thomas Schaller + */ + +public class GraphAlgo_Breitensuche extends GraphAlgo { + + // Anfang Attribute + + public String getBezeichnung() { + return "Nummerierung (Breitensuche)"; + } + +// Anfang Methoden + public void fuehreAlgorithmusAus() { + if (g.getAnzahlKnoten()==0) { + return; + } + int nr = 0; + info("Erzeuge leere toDo-Liste und füge Startknoten hinzu"); + List toDo = new ArrayList(); + toDo.add(getStartKnoten()); + + while(toDo.size()>0) { + info("Nimm ersten Knoten aus der toDo-Liste (momentan "+toDo.size()+" Elemente) heraus"); + Knoten k = toDo.remove(0); + nr++; + infoIndentMore(); + k.setBesucht(false); + k.setMarkiert(true); + k.setWert(nr); + info("Markiere den Knoten und gib ihm die Nummer "+nr); + info("Für jeden Nachbarknoten"); + infoIndentMore(); + for(Knoten n : g.getNachbarknoten(k)) { + if(!n.isMarkiert()){ + if( !toDo.contains(n)) { + toDo.add(n); + g.getKante(k,n).setMarkiert(true); + n.setBesucht(true); + info("- ist noch nicht markiert, füge der ToDo-Liste am Ende hinzu.\n" + +" toDo-Liste hat jetzt "+toDo.size()+" Elemente"); + } else { + info("- ist schon in ToDo-Liste"); + } + } else { + info("- ist schon markiert"); + } + } + infoIndentLess(); + infoIndentLess(); + step(); + } + info("ToDo-Liste fertig abgearbeitet"); + + } // end + + // Ende Methoden + +} + diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_ColoringBacktracking.java b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_ColoringBacktracking.java new file mode 100644 index 0000000..e2d7cec --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_ColoringBacktracking.java @@ -0,0 +1,93 @@ +package algorithmen; + +import java.util.List; +import java.util.Collections; +import java.nio.file.*; + +import graph.*; +/** + * Dieser Algorithmus färbt einen Graphen, so dass keine benachbarten Knoten + * die gleiche Farbe haben und möglichst wenige Farben benutzt werden. + * Algorithmus: Backtracking + * + * @version 1.0 from 10.12.2020 + * @author Thomas Schaller + */ + +public class GraphAlgo_ColoringBacktracking extends GraphAlgo { + + // Anfang Attribute + int besteAnzahl; + List beste; + + public String getBezeichnung() { + return "Map Coloring (Vollständing)"; + } + + // Anfang Methoden + public void fuehreAlgorithmusAus() { + if (g.getAnzahlKnoten()==0) { + return; + } + besteAnzahl = Integer.MAX_VALUE; + bestimmeColoring(0); + g.setStatus(beste); + step(); + } + + private void bestimmeColoring(int benutzteFarben) { + int min = Integer.MAX_VALUE; + + List knoten = g.getAlleKnoten(k->k.getFarbe()<=0); + List status = g.getStatus(); + if(knoten.size() == 0) { + if(benutzteFarben < besteAnzahl) { + besteAnzahl = benutzteFarben; + beste = status; + info("Neue beste Lösung: "+besteAnzahl+" Farben"); + } + else { + info("Keine neue beste Lösung"); + } + step(); + return; + } + + Knoten aktuellerKnoten = knoten.get(0); + info("Bearbeite einen noch nicht gefärbten Knoten: Knoten Nr. "+g.getNummer(aktuellerKnoten)); + infoIndentMore(); + + boolean[] farbenliste = new boolean[g.getAnzahlKnoten()+1]; + List nachbarn = g.getNachbarknoten(aktuellerKnoten); + info("Setze alle Farbe der Farbenliste auf unbenutzt und prüfe alle Nachbarknoten"); + infoIndentMore(); + // speichere alle Farben in dem Array farbenliste[], die in der Adjazenzliste vom Knoten k als Wert vorkommen + for (Knoten k : nachbarn){ + info("Knoten "+g.getNummer(k)+": Setze Farbe "+k.getFarbe()+" auf benutzt"); + farbenliste[k.getFarbe()]=true; + } + infoIndentLess(); + + info("Teste alle zulässigen Farben"); + infoIndentMore(); + for(int i=1; i<5; i++) { + if(!farbenliste[i]){ + aktuellerKnoten.setFarbe(i); + info("Setze Knoten "+g.getNummer(aktuellerKnoten)+" auf Farbe "+i); + if(knoten.size()>1) step(); + infoIndentMore(); + bestimmeColoring(Math.max(i, benutzteFarben)); + info("Kehre zu Knoten Nr. "+g.getNummer(aktuellerKnoten)+" zurück"); + infoIndentLess(); + } else { + info("Farbe "+i+" ist benutzt"); + } + } + infoIndentLess(); + + aktuellerKnoten.setFarbe(0); + infoIndentLess(); + } + + // Ende Methoden +} diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_ColoringGreedy.java b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_ColoringGreedy.java new file mode 100644 index 0000000..d8e0980 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_ColoringGreedy.java @@ -0,0 +1,71 @@ +package algorithmen; + +import java.util.List; +import java.nio.file.*; + +import graph.*; +/** + * Dieser Algorithmus färbt einen Graphen, so dass keine benachbarten Knoten + * die gleiche Farbe haben und möglichst wenige Farben benutzt werden. + * Algorithmus: Näherungslösung mit Greedy-Algorithmus + * + * @version 1.0 from 10.12.2020 + * @author Thomas Schaller + */ +public class GraphAlgo_ColoringGreedy extends GraphAlgo { + + // Anfang Attribute + + + + public String getBezeichnung() { + return "Map-Coloring (Greedy)"; + } + + + // Ende Attribute + + // Anfang Methoden + public void fuehreAlgorithmusAus() { + List knoten = g.getAlleKnoten(); + info("Wiederhole für jeden Knoten"); + for (Knoten aktuellerKnoten: knoten ) { + // Liste in der die Farben der adjazenten Knoten abgehakt werden. Die Farben + // sind von 1 bis n (# Knoten) kodiert und werden spaeter in Farben decodiert + boolean[] farbenliste = new boolean[g.getAnzahlKnoten()+1]; + List nachbarn = g.getNachbarknoten(aktuellerKnoten); + + info("Bearbeite Knoten "+g.getNummer(aktuellerKnoten)); + infoIndentMore(); + info("Setze alle Farbe der Farbenliste auf unbenutzt"); + info("Wiederhole für jeden Nachbarknoten"); + infoIndentMore(); + // speichere alle Farben in dem Array farbenliste[], die in der Adjazenzliste vom Knoten k als Wert vorkommen + for (Knoten k : nachbarn){ + info("Knoten "+g.getNummer(k)+": Setze Farbe "+k.getFarbe()+" auf benutzt"); + farbenliste[k.getFarbe()]=true; + } + infoIndentLess(); + + info("Suche in Farbenliste nach unbenutzer Farbe"); + infoIndentMore(); + // faerbe den Knoten k (setze den Farbwert des Knotens) mit der niedrigst-moeglichen Farbe (kleinster Index > 0 in der farbenliste) + for (int i=1; i knoten = g.getAlleKnoten(); + Collections.shuffle(knoten); + info("Wiederhole für jeden Knoten"); + for (Knoten aktuellerKnoten: knoten ) { + // Liste in der die Farben der adjazenten Knoten abgehakt werden. Die Farben + // sind von 1 bis n (# Knoten) kodiert und werden spaeter in Farben decodiert + boolean[] farbenliste = new boolean[g.getAnzahlKnoten()+1]; + List nachbarn = g.getNachbarknoten(aktuellerKnoten); + + info("Bearbeite Knoten "+g.getNummer(aktuellerKnoten)); + infoIndentMore(); + info("Setze alle Farbe der Farbenliste auf unbenutzt"); + info("Wiederhole für jeden Nachbarknoten"); + infoIndentMore(); + // speichere alle Farben in dem Array farbenliste[], die in der Adjazenzliste vom Knoten k als Wert vorkommen + for (Knoten k : nachbarn){ + info("Knoten "+g.getNummer(k)+": Setze Farbe "+k.getFarbe()+" auf benutzt"); + farbenliste[k.getFarbe()]=true; + } + infoIndentLess(); + + info("Suche in Farbenliste nach unbenutzer Farbe"); + infoIndentMore(); + // faerbe den Knoten k (setze den Farbwert des Knotens) mit der niedrigst-moeglichen Farbe (kleinster Index > 0 in der farbenliste) + for (int i=1; i toDo = new ArrayList(); + getStartKnoten().setBesucht(true); + getStartKnoten().setWert(0); + toDo.add(getStartKnoten()); + + while(toDo.size()>0) { + info("Sortiere toDo-Liste"); + Collections.sort(toDo); + info("Nimm ersten Knoten aus der toDo-Liste (momentan "+toDo.size()+" Elemente) heraus"); + Knoten k = toDo.remove(0); + infoIndentMore(); + k.setMarkiert(true); + info("Markiere den Knoten"); + info("Er hat Entfernung "+k.getIntWert()); + info("Für jeden Nachbarknoten"); + infoIndentMore(); + for(Knoten n : g.getNachbarknoten(k)) { + if(!n.isMarkiert()){ + info("- ist noch nicht markiert"); + Kante ka = g.getKante(k, n); + if(!n.isBesucht() || n.getDoubleWert() > k.getDoubleWert()+ka.getGewicht()){ + if(n.isBesucht()) { + List eingehend = g.getEingehendeKanten(n, ka2 -> !ka2.isGeloescht() && ka2.isMarkiert()); + Kante alterWeg = eingehend.get(0); + // Kante alterWeg = g.beschraenkeKantenAuf(g.getEingehendeKanten(n), Graph.MARKIERT, Graph.NICHTGELOESCHT).get(0); + // alterWeg.setGeloescht(true); + // alterWeg.setMarkiert(false); + alterWeg.setGeloescht(true); + alterWeg.setMarkiert(false); + + info(" loesche bisherigen Weg dorthin"); + } + n.setWert(k.getIntWert()+ka.getGewicht()); + if(!toDo.contains(n)) toDo.add(n); + ka.setMarkiert(true); + n.setBesucht(true); + info(" setze Entfernung "+(n.getDoubleWert())+" und füge ggf. ToDo-Liste hinzu."); + info(" toDo-Liste hat jetzt "+toDo.size()+" Elemente"); + } else { + info(" keine neue beste Entfernung"); + ka.setGeloescht(true); + } + } + } + infoIndentLess(); + infoIndentLess(); + step(); + } + info("ToDo-Liste fertig abgearbeitet"); + + } // end + // Ende Methoden + +} + diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_DominatingSetBacktracking.java b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_DominatingSetBacktracking.java new file mode 100644 index 0000000..181f52e --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_DominatingSetBacktracking.java @@ -0,0 +1,78 @@ +package algorithmen; + +import java.util.List; +import java.util.Collections; +import java.nio.file.*; + +import graph.*; +/** + * Dieser Algorithmus bestimmt die kleinste dominierende Menge in einem Graphen + * und bestimmt den Zeitbedarf. + * Algorithmus: Backtracking + * + * @version 1.0 from 10.12.2020 + * @author Thomas Schaller + */ + +public class GraphAlgo_DominatingSetBacktracking extends GraphAlgo { + + // Anfang Attribute + int besteAnzahl; + List beste; + + public String getBezeichnung() { + return "Dominierende Menge (Vollständig)"; + } + + + // Anfang Methoden + public void fuehreAlgorithmusAus() { + long starttime = System.currentTimeMillis(); + if (g.getAnzahlKnoten()==0) { + return; + } + besteAnzahl = Integer.MAX_VALUE; + bestimmeDominierendeMenge(0); + g.setStatus(beste); + long endtime = System.currentTimeMillis(); + melde("Minimale dominierende Menge in "+((endtime-starttime)/1000)+" Sekunden gefunden."); + step(); + } + + + + private void bestimmeDominierendeMenge(int knoten) { + List status = g.getStatus(); + + List markierte = g.getAlleKnoten(kn->kn.isMarkiert()); + List nichtbesucht = g.getAlleKnoten(kn->!kn.isBesucht() && !kn.isMarkiert()); + + // Verbessert die Laufzeit deutlich, aber verhindert das exponentielle Wachstum nicht + // if(markierte.size() >=besteAnzahl) return; + + Knoten k = g.getKnoten(knoten); + if(k != null && nichtbesucht.size()>0) { + bestimmeDominierendeMenge(knoten+1); + g.setStatus(status); + k.setMarkiert(true); + k.setBesucht(false); + for(Knoten n: g.getNachbarknoten(k, kn->!kn.isBesucht() && !kn.isMarkiert())) { + n.setBesucht(true); + } + bestimmeDominierendeMenge(knoten+1); + g.setStatus(status); + } else { + step(); + + if(nichtbesucht.size()==0){ + if(markierte.size() < besteAnzahl) { + besteAnzahl = markierte.size(); + beste = status; + } + } + + } + } + + // Ende Methoden +} diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_DominatingSetGenetisch.java b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_DominatingSetGenetisch.java new file mode 100644 index 0000000..a4dd669 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_DominatingSetGenetisch.java @@ -0,0 +1,149 @@ +package algorithmen; + +import java.util.List; +import java.nio.file.*; +import java.util.Random; +import java.util.Arrays; + +import graph.*; + +/** + * Dieser Algorithmus bestimmt die kleinste dominierende Menge in einem Graphen + * und bestimmt den Zeitbedarf. + * Algorithmus: Genetischer Algorithmus + * @version 1.0 from 10.12.2020 + * @author Thomas Schaller + */ + +public class GraphAlgo_DominatingSetGenetisch extends GraphAlgo { + + private int popGroesse=500; + private int fitGroesse=80; + private int[][] population; + private int[][] fittest; + private int generation; + + // Anfang Attribute + + public String getBezeichnung() { + return "Dominierende Menge (Genetisch)"; + } + + + // Anfang Methoden + public void fuehreAlgorithmusAus() { + population = new int[popGroesse][g.getAnzahlKnoten()]; + double[] bewertungen = new double[popGroesse]; + for(int i=0; i bewertungen[beste]) { + beste = j; + } + } + fittest[i] = population[beste]; + bewertungen[beste] = Double.MIN_VALUE; + } + showTeilmenge(fittest[0]); + + Random r = new Random(); + for(generation = 0; generation < 100; generation++) { + for(int j=0; j bewertungen[beste]) { + beste = j; + } + } + fittest[i] = population[beste]; + bewertungen[beste] = Double.MIN_VALUE; + } + showTeilmenge(fittest[0]); + this.info("Bisher beste dominierende Menge (Generation "+generation+"): "+(g.getAnzahlKnoten()-getBewertung(fittest[0]))+" Knoten."); + step(); + } + + step(); + } + + public int[] erzeugeZufaelligeTeilmenge(){ + Random r = new Random(); + int[] teilmenge = new int[g.getAnzahlKnoten()]; + + for(int i=0; i< g.getAnzahlKnoten(); i++) { + teilmenge[i] = r.nextInt(2); + } + return teilmenge; + } + + public int[] kreuze(int[] tm1, int[] tm2) { + Random r = new Random(); + int crossover = r.nextInt(tm1.length); + int[] new_tm = Arrays.copyOf(tm1, tm1.length); + for(int j = crossover; j< tm2.length; j++) { + new_tm[j] = tm2[j]; + } + return new_tm; + } + + public int[] mutiere(int[] tm) { + Random r = new Random(); + int anz_mut = r.nextInt(3); + int[] new_tm = Arrays.copyOf(tm, tm.length); + for(int z =0; z knoten = g.getAlleKnoten(k->!k.isMarkiert()); + + info("Wiederhole für jeden noch nicht markierten Knoten"); + infoIndentMore(); + for(Knoten k : knoten) { + List nachbarn = g.getNachbarknoten(k); + k.setWert(nachbarn.size()); + info("Setze Wert von Knoten Nr. "+g.getNummer(k)+" auf "+nachbarn.size()+" Nachbarn"); + } + infoIndentLess(); + info("Sortiere die Liste"); + knoten.sort(Comparator.comparing(Knoten::getIntWert).reversed()); + Knoten bester = knoten.get(0); + info("Nimm den Knoten mit den meisten Nachbarn => Knoten Nr. "+g.getNummer(bester)); + return bester; + } + + // Anfang Methoden + public void fuehreAlgorithmusAus() { + if (g.getAnzahlKnoten()==0) { + return; + } + List knoten = g.getAlleKnoten(k->!k.isMarkiert() && !k.isBesucht()); + info("Solange es noch nicht überdeckte Knoten gibt, wiederhole..."); + int nr = 1; + while(knoten.size() > 0) { + info("Bestimme "+(nr++)+". hinzuzufügenden Knoten"); + infoIndentMore(); + Knoten bester = bestimmeBesten(); + bester.setMarkiert(true); + bester.setBesucht(false); + info("Markiere diesen Knoten ..."); + List nachbarn = g.getNachbarknoten(bester,kn->!kn.isMarkiert() && !kn.isBesucht()); + for(Knoten k : nachbarn) { + k.setBesucht(true); + } + info("... und setze alle bisher nicht überdeckten Nachbarn auf besucht"); + knoten = g.getAlleKnoten(kn->!kn.isMarkiert() && !kn.isBesucht()); + step(); + infoIndentLess(); + }// end of while + + } + + // Ende Methoden +} diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_DominatingSetGreedyB.java b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_DominatingSetGreedyB.java new file mode 100644 index 0000000..3f0bff9 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_DominatingSetGreedyB.java @@ -0,0 +1,77 @@ +package algorithmen; + +import java.util.List; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.nio.file.*; +import java.util.Random; + +import graph.*; +/** + * Dieser Algorithmus bestimmt die kleinste dominierende Menge in einem Graphen + * und bestimmt den Zeitbedarf. + * Algorithmus: Greedy mit Strategie: + * Nimm den Knoten mit den wenigsten Nachbarn + * @version 1.0 from 10.12.2020 + * @author Thomas Schaller + */ + +public class GraphAlgo_DominatingSetGreedyB extends GraphAlgo { + + // Anfang Attribute + + public String getBezeichnung() { + return "Dominierende Menge (Greedy (b))"; + } + + /** Bestimmt besten Knoten nach Strategie: + * Nimm den Knoten mit den wenigsten Nachbarn + */ + private Knoten bestimmeBesten() { + List knoten = g.getAlleKnoten(k->!k.isMarkiert()); + + info("Wiederhole für jeden noch nicht markierten Knoten"); + infoIndentMore(); + for(Knoten k : knoten) { + List nachbarn = g.getNachbarknoten(k); + k.setWert(nachbarn.size()); + info("Setze Wert von Knoten Nr. "+g.getNummer(k)+" auf "+nachbarn.size()+" Nachbarn"); + } + infoIndentLess(); + info("Sortiere die Liste"); + knoten.sort(Comparator.comparing(Knoten::getIntWert)); + Knoten bester = knoten.get(0); + info("Nimm den Knoten mit den wenigsten Nachbarn => Knoten Nr. "+g.getNummer(bester)); + return bester; + } + + // Anfang Methoden + public void fuehreAlgorithmusAus() { + if (g.getAnzahlKnoten()==0) { + return; + } + List knoten = g.getAlleKnoten(k->!k.isMarkiert() && !k.isBesucht()); + info("Solange es noch nicht überdeckte Knoten gibt, wiederhole..."); + int nr = 1; + while(knoten.size() > 0) { + info("Bestimme "+(nr++)+". hinzuzufügenden Knoten"); + infoIndentMore(); + Knoten bester = bestimmeBesten(); + bester.setMarkiert(true); + bester.setBesucht(false); + info("Markiere diesen Knoten ..."); + List nachbarn = g.getNachbarknoten(bester,kn->!kn.isMarkiert() && !kn.isBesucht()); + for(Knoten k : nachbarn) { + k.setBesucht(true); + } + info("... und setze alle bisher nicht überdeckten Nachbarn auf besucht"); + knoten = g.getAlleKnoten(kn->!kn.isMarkiert() && !kn.isBesucht()); + step(); + infoIndentLess(); + }// end of while + + } + + // Ende Methoden +} diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_DominatingSetGreedyC.java b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_DominatingSetGreedyC.java new file mode 100644 index 0000000..31dda8b --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_DominatingSetGreedyC.java @@ -0,0 +1,79 @@ +package algorithmen; + +import java.util.List; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.nio.file.*; +import java.util.Random; + +import graph.*; +/** + * Dieser Algorithmus bestimmt die kleinste dominierende Menge in einem Graphen + * und bestimmt den Zeitbedarf. + * Algorithmus: Greedy mit Strategie: + * Nimm den Knoten mit den meisten Nachbarn + * + * @version 1.0 from 10.12.2020 + * @author Thomas Schaller + */ + +public class GraphAlgo_DominatingSetGreedyC extends GraphAlgo { + + // Anfang Attribute + + public String getBezeichnung() { + return "Dominierende Menge (Greedy (c))"; + } + + /** Bestimmt besten Knoten nach Strategie: + * Nimm den Knoten mit den meisten Nachbarn + */ + private Knoten bestimmeBesten() { + List knoten = g.getAlleKnoten(k->!k.isMarkiert()); + + info("Wiederhole für jeden noch nicht markierten Knoten"); + infoIndentMore(); + for(Knoten k : knoten) { + List nachbarn = g.getNachbarknoten(k, kn -> !kn.isMarkiert() && !kn.isBesucht()); + k.setWert(nachbarn.size()); + if(!k.isMarkiert() && !k.isBesucht()) k.setWert(k.getIntWert()+1); + info("Setze Wert von Knoten Nr. "+g.getNummer(k)+" auf "+nachbarn.size()+" neu überdeckte Knoten"); + } + infoIndentLess(); + info("Sortiere die Liste"); + knoten.sort(Comparator.comparing(Knoten::getIntWert).reversed()); + Knoten bester = knoten.get(0); + info("Nimm den Knoten mit den meisten neu überdeckten Knoten => Knoten Nr. "+g.getNummer(bester)); + return bester; + } + + // Anfang Methoden + public void fuehreAlgorithmusAus() { + if (g.getAnzahlKnoten()==0) { + return; + } + List knoten = g.getAlleKnoten(k->!k.isMarkiert() && !k.isBesucht()); + info("Solange es noch nicht überdeckte Knoten gibt, wiederhole..."); + int nr = 1; + while(knoten.size() > 0) { + info("Bestimme "+(nr++)+". hinzuzufügenden Knoten"); + infoIndentMore(); + Knoten bester = bestimmeBesten(); + bester.setMarkiert(true); + bester.setBesucht(false); + info("Markiere diesen Knoten ..."); + List nachbarn = g.getNachbarknoten(bester,kn->!kn.isMarkiert() && !kn.isBesucht()); + for(Knoten k : nachbarn) { + k.setBesucht(true); + } + info("... und setze alle bisher nicht überdeckten Nachbarn auf besucht"); + knoten = g.getAlleKnoten(kn->!kn.isMarkiert() && !kn.isBesucht()); + step(); + infoIndentLess(); + }// end of while + + } + + // Ende Methoden +} diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_DominatingSetGreedyD.java b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_DominatingSetGreedyD.java new file mode 100644 index 0000000..fdb1a3c --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_DominatingSetGreedyD.java @@ -0,0 +1,79 @@ +package algorithmen; + +import java.util.List; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.nio.file.*; +import java.util.Random; + +import graph.*; +/** + * Dieser Algorithmus bestimmt die kleinste dominierende Menge in einem Graphen + * und bestimmt den Zeitbedarf. + * Algorithmus: Greedy mit Strategie: + * Nimm den Knoten mit den meisten Nachbarn + * + * @version 1.0 from 10.12.2020 + * @author Thomas Schaller + */ + +public class GraphAlgo_DominatingSetGreedyD extends GraphAlgo { + + // Anfang Attribute + + public String getBezeichnung() { + return "Dominierende Menge (Greedy (d))"; + } + + /** Bestimmt besten Knoten nach Strategie: + * Nimm den Knoten mit den meisten Nachbarn + */ + private Knoten bestimmeBesten() { + List knoten = g.getAlleKnoten(k->!k.isMarkiert()); + + info("Wiederhole für jeden noch nicht markierten Knoten"); + infoIndentMore(); + for(Knoten k : knoten) { + List nachbarn = g.getNachbarknoten(k, kn -> !kn.isMarkiert() && !kn.isBesucht()); + k.setWert(nachbarn.size()); + if(!k.isMarkiert() && !k.isBesucht()) k.setWert(k.getIntWert()+1); + info("Setze Wert von Knoten Nr. "+g.getNummer(k)+" auf "+nachbarn.size()+" neu überdeckte Knoten"); + } + infoIndentLess(); + info("Sortiere die Liste"); + knoten.sort(Comparator.comparing(Knoten::getIntWert)); + Knoten bester = knoten.get(0); + info("Nimm den Knoten mit den wenigsten neu überdeckten Knoten => Knoten Nr. "+g.getNummer(bester)); + return bester; + } + + // Anfang Methoden + public void fuehreAlgorithmusAus() { + if (g.getAnzahlKnoten()==0) { + return; + } + List knoten = g.getAlleKnoten(k->!k.isMarkiert() && !k.isBesucht()); + info("Solange es noch nicht überdeckte Knoten gibt, wiederhole..."); + int nr = 1; + while(knoten.size() > 0) { + info("Bestimme "+(nr++)+". hinzuzufügenden Knoten"); + infoIndentMore(); + Knoten bester = bestimmeBesten(); + bester.setMarkiert(true); + bester.setBesucht(false); + info("Markiere diesen Knoten ..."); + List nachbarn = g.getNachbarknoten(bester,kn->!kn.isMarkiert() && !kn.isBesucht()); + for(Knoten k : nachbarn) { + k.setBesucht(true); + } + info("... und setze alle bisher nicht überdeckten Nachbarn auf besucht"); + knoten = g.getAlleKnoten(kn->!kn.isMarkiert() && !kn.isBesucht()); + step(); + infoIndentLess(); + }// end of while + + } + + // Ende Methoden +} diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_DominatingSetGreedyE.java b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_DominatingSetGreedyE.java new file mode 100644 index 0000000..67b250f --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_DominatingSetGreedyE.java @@ -0,0 +1,98 @@ +package algorithmen; + +import java.util.List; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.nio.file.*; +import java.util.Random; + +import graph.*; +/** + * Dieser Algorithmus bestimmt die kleinste dominierende Menge in einem Graphen + * und bestimmt den Zeitbedarf. + * Algorithmus: Greedy mit Strategie: + * ein nicht abgedeckten Knoten, der von einem beliebigen schon ausgewählten Knoten die Entfernung 3 hat + * + * @version 1.0 from 10.12.2020 + * @author Thomas Schaller + */ + +public class GraphAlgo_DominatingSetGreedyE extends GraphAlgo { + + // Anfang Attribute + + public String getBezeichnung() { + return "Dominierende Menge (Greedy (e))"; + } + + /** Bestimmt besten Knoten nach Strategie: + * ein nicht abgedeckten Knoten, der von einem beliebigen schon ausgewählten Knoten die Entfernung 3 hat + */ + + private Knoten bestimmeBesten() { + Random r= new Random(); + + List markierte = g.getAlleKnoten(k->k.isMarkiert() ); + List nichtabgedeckte = g.getAlleKnoten(k->!k.isMarkiert() ); + if(markierte.size()==0) return g.getKnoten(r.nextInt(g.getAnzahlKnoten())); + + List entfernung3 = new ArrayList(); + List status = g.getStatus(); + for(Knoten start: markierte) { + info("Bestimme Entfernung von Knoten "+g.getKnoteninfo(start,false)+" zu allen anderen Knoten"); + + g.initialisiereAlleKnoten(); + GraphAlgo moore = new GraphAlgo_Moore(); + moore.setGraph(g); + moore.setStartKnoten(start); + moore.fuehreAlgorithmusAus(); + + entfernung3 = g.getAlleKnoten(k->k.getIntWert()==3); + entfernung3.retainAll(nichtabgedeckte); + info("Habe "+entfernung3.size()+" Knoten mit Entfernung 3 gefunden."); + if(entfernung3.size()>0) break; + } + Knoten bester; + if(entfernung3.size()>0) { + info("Wähle zufällig einen von diesen"); + bester = entfernung3.get(r.nextInt(entfernung3.size())); + } else { + info("Wählen einen zufälligen Knoten aus"); + bester = nichtabgedeckte.get(r.nextInt(nichtabgedeckte.size())); + } + bester.setFarbe(5); + step(); + g.setStatus(status); + return bester; + } + + // Anfang Methoden + public void fuehreAlgorithmusAus() { + if (g.getAnzahlKnoten()==0) { + return; + } + List knoten = g.getAlleKnoten(k->!k.isMarkiert() && !k.isBesucht()); + info("Solange es noch nicht überdeckte Knoten gibt, wiederhole..."); + int nr = 1; + while(knoten.size() > 0) { + info("Bestimme "+(nr++)+". hinzuzufügenden Knoten"); + infoIndentMore(); + Knoten bester = bestimmeBesten(); + bester.setMarkiert(true); + bester.setBesucht(false); + info("Markiere diesen Knoten ..."); + List nachbarn = g.getNachbarknoten(bester,kn->!kn.isMarkiert() && !kn.isBesucht()); + for(Knoten k : nachbarn) { + k.setBesucht(true); + } + info("... und setze alle bisher nicht überdeckten Nachbarn auf besucht"); + knoten = g.getAlleKnoten(kn->!kn.isMarkiert() && !kn.isBesucht()); + step(); + infoIndentLess(); + }// end of while + + } + + // Ende Methoden +} diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_DominatingSetGreedyF.java b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_DominatingSetGreedyF.java new file mode 100644 index 0000000..21673c2 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_DominatingSetGreedyF.java @@ -0,0 +1,98 @@ +package algorithmen; + +import java.util.List; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.nio.file.*; +import java.util.Random; + +import graph.*; +/** + * Dieser Algorithmus bestimmt die kleinste dominierende Menge in einem Graphen + * und bestimmt den Zeitbedarf. + * Algorithmus: Greedy mit Strategie: + * ein nicht abgedeckten Knoten, der von einem beliebigen schon ausgewählten Knoten die Entfernung 3 hat + * + * @version 1.0 from 10.12.2020 + * @author Thomas Schaller + */ + +public class GraphAlgo_DominatingSetGreedyF extends GraphAlgo { + + // Anfang Attribute + + public String getBezeichnung() { + return "Dominierende Menge (Greedy (f))"; + } + + /** Bestimmt besten Knoten nach Strategie: + * ein nicht abgedeckten Knoten, der von einem beliebigen schon ausgewählten Knoten die Entfernung 3 hat + */ + + private Knoten bestimmeBesten() { + Random r= new Random(); + + List markierte = g.getAlleKnoten(k->k.isMarkiert() ); + List nichtabgedeckte = g.getAlleKnoten(k->!k.isMarkiert() && !k.isBesucht() ); + if(markierte.size()==0) return g.getKnoten(r.nextInt(g.getAnzahlKnoten())); + + List entfernung2 = new ArrayList(); + List status = g.getStatus(); + for(Knoten start: markierte) { + info("Bestimme Entfernung von Knoten "+g.getKnoteninfo(start,false)+" zu allen anderen Knoten"); + + g.initialisiereAlleKnoten(); + GraphAlgo moore = new GraphAlgo_Moore(); + moore.setGraph(g); + moore.setStartKnoten(start); + moore.fuehreAlgorithmusAus(); + + entfernung2 = g.getAlleKnoten(k->k.getIntWert()==2); + entfernung2.retainAll(nichtabgedeckte); + info("Habe "+entfernung2.size()+" noch nicht überdeckte Knoten mit Entfernung 2 gefunden."); + if(entfernung2.size()>0) break; + } + Knoten bester; + if(entfernung2.size()>0) { + info("Wähle zufällig einen von diesen"); + bester = entfernung2.get(r.nextInt(entfernung2.size())); + } else { + info("Wählen einen zufälligen Knoten aus"); + bester = nichtabgedeckte.get(r.nextInt(nichtabgedeckte.size())); + } + bester.setFarbe(5); + step(); + g.setStatus(status); + return bester; + } + + // Anfang Methoden + public void fuehreAlgorithmusAus() { + if (g.getAnzahlKnoten()==0) { + return; + } + List knoten = g.getAlleKnoten(k->!k.isMarkiert() && !k.isBesucht()); + info("Solange es noch nicht überdeckte Knoten gibt, wiederhole..."); + int nr = 1; + while(knoten.size() > 0) { + info("Bestimme "+(nr++)+". hinzuzufügenden Knoten"); + infoIndentMore(); + Knoten bester = bestimmeBesten(); + bester.setMarkiert(true); + bester.setBesucht(false); + info("Markiere diesen Knoten ..."); + List nachbarn = g.getNachbarknoten(bester,kn->!kn.isMarkiert() && !kn.isBesucht()); + for(Knoten k : nachbarn) { + k.setBesucht(true); + } + info("... und setze alle bisher nicht überdeckten Nachbarn auf besucht"); + knoten = g.getAlleKnoten(kn->!kn.isMarkiert() && !kn.isBesucht()); + step(); + infoIndentLess(); + }// end of while + + } + + // Ende Methoden +} diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_DominatingSetGreedyG.java b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_DominatingSetGreedyG.java new file mode 100644 index 0000000..cb4e7cf --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_DominatingSetGreedyG.java @@ -0,0 +1,98 @@ +package algorithmen; + +import java.util.List; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.nio.file.*; +import java.util.Random; + +import graph.*; +/** + * Dieser Algorithmus bestimmt die kleinste dominierende Menge in einem Graphen + * und bestimmt den Zeitbedarf. + * Algorithmus: Greedy mit Strategie: + * ein nicht abgedeckten Knoten, der von einem beliebigen schon ausgewählten Knoten die Entfernung 3 hat + * + * @version 1.0 from 10.12.2020 + * @author Thomas Schaller + */ + +public class GraphAlgo_DominatingSetGreedyG extends GraphAlgo { + + // Anfang Attribute + + public String getBezeichnung() { + return "Dominierende Menge (Greedy (g))"; + } + + /** Bestimmt besten Knoten nach Strategie: + * ein nicht abgedeckten Knoten, der von einem beliebigen schon ausgewählten Knoten die Entfernung 3 hat + */ + + private Knoten bestimmeBesten() { + Random r= new Random(); + + List markierte = g.getAlleKnoten(k->k.isMarkiert() ); + List nichtabgedeckte = g.getAlleKnoten(k->!k.isMarkiert() && !k.isBesucht() ); + if(markierte.size()==0) return g.getKnoten(r.nextInt(g.getAnzahlKnoten())); + + List entfernung3 = new ArrayList(); + List status = g.getStatus(); + for(Knoten start: markierte) { + info("Bestimme Entfernung von Knoten "+g.getKnoteninfo(start,false)+" zu allen anderen Knoten"); + + g.initialisiereAlleKnoten(); + GraphAlgo moore = new GraphAlgo_Moore(); + moore.setGraph(g); + moore.setStartKnoten(start); + moore.fuehreAlgorithmusAus(); + + entfernung3 = g.getAlleKnoten(k->k.getIntWert()==3); + entfernung3.retainAll(nichtabgedeckte); + info("Habe "+entfernung3.size()+" noch nicht überdeckte Knoten mit Entfernung 3 gefunden."); + if(entfernung3.size()>0) break; + } + Knoten bester; + if(entfernung3.size()>0) { + info("Wähle zufällig einen von diesen"); + bester = entfernung3.get(r.nextInt(entfernung3.size())); + } else { + info("Wählen einen zufälligen Knoten aus"); + bester = nichtabgedeckte.get(r.nextInt(nichtabgedeckte.size())); + } + bester.setFarbe(5); + step(); + g.setStatus(status); + return bester; + } + + // Anfang Methoden + public void fuehreAlgorithmusAus() { + if (g.getAnzahlKnoten()==0) { + return; + } + List knoten = g.getAlleKnoten(k->!k.isMarkiert() && !k.isBesucht()); + info("Solange es noch nicht überdeckte Knoten gibt, wiederhole..."); + int nr = 1; + while(knoten.size() > 0) { + info("Bestimme "+(nr++)+". hinzuzufügenden Knoten"); + infoIndentMore(); + Knoten bester = bestimmeBesten(); + bester.setMarkiert(true); + bester.setBesucht(false); + info("Markiere diesen Knoten ..."); + List nachbarn = g.getNachbarknoten(bester,kn->!kn.isMarkiert() && !kn.isBesucht()); + for(Knoten k : nachbarn) { + k.setBesucht(true); + } + info("... und setze alle bisher nicht überdeckten Nachbarn auf besucht"); + knoten = g.getAlleKnoten(kn->!kn.isMarkiert() && !kn.isBesucht()); + step(); + infoIndentLess(); + }// end of while + + } + + // Ende Methoden +} diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_DominatingSetGreedyH.java b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_DominatingSetGreedyH.java new file mode 100644 index 0000000..b1d7c8d --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_DominatingSetGreedyH.java @@ -0,0 +1,101 @@ +package algorithmen; + +import java.util.List; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.nio.file.*; +import java.util.Random; + +import graph.*; +/** + * Dieser Algorithmus bestimmt die kleinste dominierende Menge in einem Graphen + * und bestimmt den Zeitbedarf. + * Algorithmus: Greedy mit Strategie: + * ein nicht abgedeckten Knoten, der von möglichst vielen schon ausgewählten Knoten die Entfernung 3 hat + * + * @version 1.0 from 10.12.2020 + * @author Thomas Schaller + */ + +public class GraphAlgo_DominatingSetGreedyH extends GraphAlgo { + + // Anfang Attribute + + public String getBezeichnung() { + return "Dominierende Menge (Greedy (h))"; + } + + /** Bestimmt besten Knoten nach Strategie: + * ein nicht abgedeckten Knoten, der von möglichst vielen schon ausgewählten Knoten die Entfernung 3 hat + */ + private Knoten bestimmeBesten() { + Random r = new Random(); + List markierte = g.getAlleKnoten(k->k.isMarkiert() ); + List nichtabgedeckte = g.getAlleKnoten(k->!k.isMarkiert() && !k.isBesucht() ); + if(markierte.size()==0) return g.getKnoten(r.nextInt(g.getAnzahlKnoten())); + + List entfernung3 = new ArrayList(); + List status = g.getStatus(); + g.initialisiereAlleKnoten(); + List zaehlstatus = g.getStatus(); + + for(Knoten start: markierte) { + info("Bestimme Entfernung von Knoten "+g.getKnoteninfo(start,false)+" zu allen anderen Knoten"); + g.initialisiereAlleKnoten(); + GraphAlgo moore = new GraphAlgo_Moore(); + moore.setGraph(g); + moore.setStartKnoten(start); + moore.fuehreAlgorithmusAus(); + + entfernung3 = g.getAlleKnoten(k->k.getIntWert()==3); + entfernung3.retainAll(nichtabgedeckte); + info("Habe "+entfernung3.size()+" noch nicht überdeckte Knoten mit Entfernung 3 gefunden "); + g.setStatus(zaehlstatus); + for(Knoten kandidat: entfernung3) { + kandidat.setWert(kandidat.getIntWert()+1); + } + info("... und erhöher die Anzahl bei diesen Knoten"); + zaehlstatus= g.getStatus(); + + } + info("Sortiere die Knoten nach der Anzahl der ausgewählten Knoten mit Abstand 3"); + nichtabgedeckte.sort(Comparator.comparing(Knoten::getIntWert).reversed()); + + Knoten bester = nichtabgedeckte.get(0); + bester.setFarbe(5); + info("Nehme den besten"); + step(); + g.setStatus(status); + return bester; + } + + // Anfang Methoden + public void fuehreAlgorithmusAus() { + if (g.getAnzahlKnoten()==0) { + return; + } + List knoten = g.getAlleKnoten(k->!k.isMarkiert() && !k.isBesucht()); + info("Solange es noch nicht überdeckte Knoten gibt, wiederhole..."); + int nr = 1; + while(knoten.size() > 0) { + info("Bestimme "+(nr++)+". hinzuzufügenden Knoten"); + infoIndentMore(); + Knoten bester = bestimmeBesten(); + bester.setMarkiert(true); + bester.setBesucht(false); + info("Markiere diesen Knoten ..."); + List nachbarn = g.getNachbarknoten(bester,kn->!kn.isMarkiert() && !kn.isBesucht()); + for(Knoten k : nachbarn) { + k.setBesucht(true); + } + info("... und setze alle bisher nicht überdeckten Nachbarn auf besucht"); + knoten = g.getAlleKnoten(kn->!kn.isMarkiert() && !kn.isBesucht()); + step(); + infoIndentLess(); + }// end of while + + } + + // Ende Methoden +} diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_DominatingSetGreedyI.java b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_DominatingSetGreedyI.java new file mode 100644 index 0000000..cdcf6d9 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_DominatingSetGreedyI.java @@ -0,0 +1,114 @@ +package algorithmen; + +import java.util.List; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.nio.file.*; +import java.util.Random; + +import graph.*; +/** + * Dieser Algorithmus bestimmt die kleinste dominierende Menge in einem Graphen + * und bestimmt den Zeitbedarf. + * Algorithmus: Greedy mit Strategie: + * ein nicht abgedeckten Knoten, der von den ausgewählten Knoten eine möglichst große Entfernung hat + * + * @version 1.0 from 10.12.2020 + * @author Thomas Schaller + */ + +public class GraphAlgo_DominatingSetGreedyI extends GraphAlgo { + + // Anfang Attribute + + public String getBezeichnung() { + return "Dominierende Menge (Greedy (i))"; + } + + /** Bestimmt besten Knoten nach Strategie: + * ein nicht abgedeckten Knoten, der von den ausgewählten Knoten eine möglichst große Entfernung hat + */ + + private Knoten bestimmeBesten() { + Random r = new Random(); + List markierte = g.getAlleKnoten(k->k.isMarkiert() ); + List nichtabgedeckte = g.getAlleKnoten(k->!k.isMarkiert() && !k.isBesucht() ); + if(markierte.size()==0) return g.getKnoten(r.nextInt(g.getAnzahlKnoten())); + + List status = g.getStatus(); + g.initialisiereAlleKnoten(); + for(Knoten k : g.getAlleKnoten()) { + k.setWert(Integer.MAX_VALUE); + k.setMarkiert(false); + } + info("Setze alle Entfernungen auf unendlich"); + List toDo = new ArrayList(); + + for(Knoten start: markierte) { + for(Knoten k : g.getAlleKnoten()) { + k.setBesucht(false); + k.setMarkiert(false); + } + info("Bestimme Entfernung von Knoten "+g.getKnoteninfo(start,false)+" zu allen anderen Knoten"); + + start.setBesucht(true); + start.setWert(0); + toDo.add(start); + + while(toDo.size()>0) { + Knoten k = toDo.remove(0); + k.setMarkiert(true); + for(Knoten n : g.getNachbarknoten(k)) { + if(!n.isBesucht() && n.getIntWert()>k.getIntWert()+1){ + n.setWert(k.getIntWert()+1); + toDo.add(n); + g.getKante(k,n).setMarkiert(true); + n.setBesucht(true); + } + } + } + info("... und reduziere Entfernung, wenn nötig."); + + } + info("Sortiere Knoten nach Entfernung"); + nichtabgedeckte.sort(Comparator.comparing(Knoten::getIntWert).reversed()); + + Knoten bester = nichtabgedeckte.get(0); + bester.setFarbe(5); + info("... und nimm den am weitesten entfernten"); + step(); + g.setStatus(status); + return bester; + } + + + // Anfang Methoden + public void fuehreAlgorithmusAus() { + if (g.getAnzahlKnoten()==0) { + return; + } + List knoten = g.getAlleKnoten(k->!k.isMarkiert() && !k.isBesucht()); + info("Solange es noch nicht überdeckte Knoten gibt, wiederhole..."); + int nr = 1; + while(knoten.size() > 0) { + info("Bestimme "+(nr++)+". hinzuzufügenden Knoten"); + infoIndentMore(); + Knoten bester = bestimmeBesten(); + bester.setMarkiert(true); + bester.setBesucht(false); + info("Markiere diesen Knoten ..."); + List nachbarn = g.getNachbarknoten(bester,kn->!kn.isMarkiert() && !kn.isBesucht()); + for(Knoten k : nachbarn) { + k.setBesucht(true); + } + info("... und setze alle bisher nicht überdeckten Nachbarn auf besucht"); + knoten = g.getAlleKnoten(kn->!kn.isMarkiert() && !kn.isBesucht()); + step(); + infoIndentLess(); + }// end of while + + } + + // Ende Methoden +} diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_EulerkreisExistenz.java b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_EulerkreisExistenz.java new file mode 100644 index 0000000..a14d026 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_EulerkreisExistenz.java @@ -0,0 +1,84 @@ +package algorithmen; + +import java.util.ArrayList; +import java.util.List; +import graph.*; +/** + * Dieser Algorithmus testet, ob ein Eulerkreis existiert. + * Algorithmus: Zunächst wird auf geraden Grad der Knoten getestet, danach + * mit Tiefensuche der Zusammenhang des Graphen überprüft. + * + * @version 1.0 from 10.12.2020 + * @author Thomas Schaller + */ + +public class GraphAlgo_EulerkreisExistenz extends GraphAlgo { + + public String getBezeichnung() { + return "Eulerkreis (Existenz)"; + } + + public void fuehreAlgorithmusAus() { + if (g.getAnzahlKnoten()==0) { + return; + } + + boolean gradOk = true; + info("Setze gradOK auf true"); + for(Knoten k: g.getAlleKnoten()) { + info("Knoten "+g.getNummer(k)+" hat Grad "+g.getNachbarknoten(k).size()); + if(g.getNachbarknoten(k).size() % 2 != 0) { + gradOk = false; + info("Setze gradOK auf false"); + } + } + info("Alle Knoten untersucht"); + step(); + + if(!gradOk) { + melde("Es gibt keinen Euler-Kreis, da der Grad nicht immer gerade ist"); + return; + } + + List toDo = new ArrayList(); + getStartKnoten().setBesucht(true); + toDo.add(getStartKnoten()); + info("Erzeuge leere toDo-Liste und füge Startknoten hinzu"); + + int nr=0; + while(toDo.size()>0) { + info("Nimm ersten Knoten aus der toDo-Liste (momentan "+toDo.size()+" Elemente) heraus"); + Knoten k = toDo.remove(0); + nr++; + infoIndentMore(); + k.setMarkiert(true); + k.setWert(nr); + info("Markiere den Knoten und gib ihm die Nummer "+nr); + info("Für jeden Nachbarknoten"); + infoIndentMore(); + for(Knoten n : g.getNachbarknoten(k)) { + if(!n.isBesucht()){ + info("- kennzeichne als besucht, füge der ToDo-Liste am Anfang hinzu."); + toDo.add(0, n); + g.getKante(k,n).setMarkiert(true); + n.setBesucht(true); + info(" toDo-Liste hat jetzt "+toDo.size()+" Elemente"); + } else { + info("- ist schon als besucht gekennzeichnet."); + } + } + infoIndentLess(); + infoIndentLess(); + step(); + } + if(nr == g.getAnzahlKnoten()) { + melde("Es gibt einen Euler-Kreis"); + } else + { + melde("Es gibt keinen Euler-Kreis, da der Graph nicht zusammenhängend ist."); + } + + } // end + +} + diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_MST_Kruskal.java b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_MST_Kruskal.java new file mode 100644 index 0000000..48d8c33 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_MST_Kruskal.java @@ -0,0 +1,85 @@ +package algorithmen; + +import java.util.List; +import java.util.Collections; +import java.nio.file.*; + +import graph.*; + +/** + * + * Dieser Algorithmus sucht einen minimal Spanning Tree + * Algorithmus: Kruskal + * + * @version 1.0 from 11.12.2020 + * @author Thomas Schaller + */ + +public class GraphAlgo_MST_Kruskal extends GraphAlgo { + + // Anfang Attribute + + public String getBezeichnung() { + return "MST (Kruskal)"; + } + + + // Anfang Methoden + public void fuehreAlgorithmusAus() { + int farbe = 1; + List kanten = g.getAlleKanten(); + List knoten = g.getAlleKnoten(); + info("Hole eine Liste aller Kanten und eine aller Knoten"); + Collections.sort(kanten); + info("Sortiere Kanten aufsteigend"); + info("Wiederhole für alle Kanten:"); + for (Kante k: kanten) { + info("Bearbeite Kante mit Gewicht: "+k.getGewicht()); + infoIndentMore(); + int f1 = k.getStart().getFarbe(); + int f2 = k.getZiel().getFarbe(); + if(f1 == 0 && f2 == 0) { + info("Beide Knoten gehören noch zu keinem Teilgraphen"); + k.getStart().setFarbe(farbe); + k.getZiel().setFarbe(farbe); + k.setMarkiert(true); + info("=> setze beide auf Farbe "+farbe+" und markiere die Kante"); + farbe++; + } else + if(f1 == 0) { + info("Der Knoten Nr. "+g.getNummer(k.getStart())+" gehört noch zu keinem Teilgraphen"); + k.getStart().setFarbe(f2); + k.setMarkiert(true); + info("=> setze ihn auf die Farbe des Knotens Nr. "+g.getNummer(k.getZiel())+" und markiere die Kante"); + } else + if(f2 == 0) { + info("Der Knoten Nr. "+g.getNummer(k.getZiel())+" gehört noch zu keinem Teilgraphen"); + k.getZiel().setFarbe(f1); + k.setMarkiert(true); + info("=> setze ihn auf die Farbe des Knotens Nr. "+g.getNummer(k.getStart())+" und markiere die Kante"); + } else + if(f1 == f2) { + info("Beide Knoten gehören zum gleichen Teilgraphen"); + k.setGeloescht(true); + info("lösche die Kante"); + } else + { + info("Beide Knoten gehören zu unterschiedlichen Teilgraphen"); + int min = Math.min(f1,f2); + int max = Math.max(f1,f2); + for(Knoten k1 : knoten) { + if(k1.getFarbe() == max) k1.setFarbe(min); + } + info("=> färbe alle Knoten mit Farbe "+max+" mit der Farbe "+min); + k.setMarkiert(true); + info(" und markiere die Kante"); + } + infoIndentLess(); + step(); + } + } // end of for + + // Ende Methoden + +} + diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_MST_Prim.java b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_MST_Prim.java new file mode 100644 index 0000000..df91cac --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_MST_Prim.java @@ -0,0 +1,85 @@ +package algorithmen; + +import java.util.List; +import java.util.Collections; +import java.nio.file.*; + +import graph.*; + +/** + * + * Dieser Algorithmus sucht einen minimal Spanning Tree + * Algorithmus: Prim + * + * @version 1.0 from 11.12.2020 + * @author Thomas Schaller + */ + +public class GraphAlgo_MST_Prim extends GraphAlgo { + + // Anfang Attribute + + // Ende Attribute + public String getBezeichnung() { + return "MST (Prim)"; + } + + public void fuehreAlgorithmusAus() { + int markiert = 0; + List knoten; + List kanten; + knoten = g.getAlleKnoten(); + kanten = g.getAlleKanten(); + + if(knoten.size()==0) return; + + Collections.sort(kanten); + info("Sortiere die Kanten nach ihrem Gewicht:"); + infoIndentMore(); + for(Kante ka2 : kanten) { + info("Kante ("+g.getNummer(ka2.getStart())+"-"+g.getNummer(ka2.getZiel())+") mit Gewicht "+ka2.getGewicht()); + } + infoIndentLess(); + if(getStartKnoten()!= null) { + getStartKnoten().setMarkiert(true); + info("Setze Startknoten auf markiert"); + } else { + + knoten.get(0).setMarkiert(true); + info("Setze einen beliebigen Knoten auf markiert"); + } + markiert++; + step(); + + while(knoten.size() > markiert) { + info("Suche Kante mit dem geringsten Gewicht von markiertem Teilbaum zu unmarkiertem Teilbaum"); + infoIndentMore(); + Kante ka=null; + for(Kante ka2 : kanten) { + if(ka2.getStart().isMarkiert() != ka2.getZiel().isMarkiert()) { + ka = ka2; + break; + } + if(ka2.getStart().isMarkiert() && ka2.getZiel().isMarkiert()) { + info("Kante ("+g.getNummer(ka2.getStart())+"-"+g.getNummer(ka2.getZiel())+") mit Gewicht "+ka2.getGewicht()+": Beide Knoten schon markiert."); + } else { + info("Kante ("+g.getNummer(ka2.getStart())+"-"+g.getNummer(ka2.getZiel())+") mit Gewicht "+ka2.getGewicht()+": Beide Knoten noch nicht markiert."); + } + + } + infoIndentLess(); + if(ka != null) { + ka.setMarkiert(true); + kanten.remove(ka); + info("Kante ("+g.getNummer(ka.getStart())+"-"+g.getNummer(ka.getZiel())+") mit Gewicht "+ka.getGewicht()+" gefunden. Markiere sie."); + ka.getStart().setMarkiert(true); + ka.getZiel().setMarkiert(true); + markiert++; + info("Markiere die angrenzenden Knoten."); + } + step(); + } + + } + +} diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_Moore.java b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_Moore.java new file mode 100644 index 0000000..cad7715 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_Moore.java @@ -0,0 +1,69 @@ +package algorithmen; + +import java.util.List; +import java.util.ArrayList; +import java.util.Collections; +import java.nio.file.*; + +import graph.*; +/** + * Dieser Algorithmus findet die kürzesten Pfade in einem ungewichteten Graphen. + * Algorithmus: Algorithmus A von Moore + * + * @version 1.0 from 10.12.2020 + * @author Thomas Schaller + */ + +public class GraphAlgo_Moore extends GraphAlgo { + + // Anfang Attribute + + public String getBezeichnung() { + return "Kürzester Pfad (Moore)"; + } + +// Anfang Methoden + public void fuehreAlgorithmusAus() { + if (g.getAnzahlKnoten()==0) { + return; + } + + info("Erzeuge leere toDo-Liste und füge Startknoten hinzu"); + List toDo = new ArrayList(); + getStartKnoten().setBesucht(true); + getStartKnoten().setWert(0); + toDo.add(getStartKnoten()); + + while(toDo.size()>0) { + info("Nimm ersten Knoten aus der toDo-Liste (momentan "+toDo.size()+" Elemente) heraus"); + Knoten k = toDo.remove(0); + infoIndentMore(); + k.setMarkiert(true); + info("Markiere den Knoten"); + info("Er hat Entfernung "+k.getIntWert()); + info("Für jeden Nachbarknoten"); + infoIndentMore(); + for(Knoten n : g.getNachbarknoten(k)) { + if(!n.isBesucht()){ + n.setWert(k.getIntWert()+1); + toDo.add(n); + info("- ist noch nicht markiert, setze Entfernung "+(k.getIntWert()+1)+" und füge der ToDo-Liste am Ende hinzu."); + g.getKante(k,n).setMarkiert(true); + n.setBesucht(true); + info(" toDo-Liste hat jetzt "+toDo.size()+" Elemente"); + } else { + info("- ist schon markiert"); + } + } + infoIndentLess(); + infoIndentLess(); + step(); + } + info("ToDo-Liste fertig abgearbeitet"); + + } // end + + // Ende Methoden + +} + diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_TSPBacktracking.java b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_TSPBacktracking.java new file mode 100644 index 0000000..c484856 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_TSPBacktracking.java @@ -0,0 +1,112 @@ +package algorithmen; + +import java.util.List; +import java.nio.file.*; + +import graph.*; + +/** + * + * Dieser Algorithmus sucht einen möglichst kurzen Hamilton-Kreis (Traveling + * Salesman Problem). + * Algorithmus: Backtracking + * + * @version 1.0 from 11.12.2020 + * @author Thomas Schaller + */ + +public class GraphAlgo_TSPBacktracking extends GraphAlgo { + + private List besteLoesung = null; + private double besteStrecke = Double.MAX_VALUE; + private Knoten start; + + // Anfang Attribute + + + public String getBezeichnung() { + return "TSP (Vollständig)"; + } + + + + + // Anfang Methoden + public void fuehreAlgorithmusAus() { + start = this.getStartKnoten(); + probiere(start); + g.setStatus(besteLoesung); + step(); + melde("beste Route gefunden:" +getInfo()); + } // end of for + + public void probiere(Knoten akt) { + boolean fertig = true; + infoIndentMore(); + akt.setMarkiert(true); + info("Markiere Knoten Nr."+g.getNummer(akt)); + step(); + + List nochNichtBesucht = g.getAlleKnoten(kn->!kn.isMarkiert()); + if(nochNichtBesucht.isEmpty()) { + info("Keine weiteren nicht besuchten Knoten übrig"); + g.getKante(akt,start).setMarkiert(true); + info("Markiere Kante zum Startpunkt"); + List gewaehlteKanten = g.getAlleKanten(ka->ka.isMarkiert()); + double laenge = 0; + for(Kante k:gewaehlteKanten) { + laenge+=k.getGewicht(); + } + info("Summiere alle Streckenlängen: Gesamtlänge ist "+laenge); + if(laenge < besteStrecke) { + info("Neue beste Strecke => merke diese Strecke"); + besteStrecke = laenge; + besteLoesung = g.getStatus();; + } + step(); + infoIndentLess(); + g.getKante(akt,start).setMarkiert(false); + akt.setMarkiert(false); + info("Kehre zum vorherigen Knoten zurück"); + step(); + return; + } + + info("untersuche alle ausgehenden Kanten:"); + List kanten = g.getAusgehendeKanten(akt); + for(Kante k: kanten) { + if(!k.getAnderesEnde(akt).isMarkiert()) { + k.setMarkiert(true); + info("Kante zu Knoten Nr. "+g.getNummer(k.getAnderesEnde(akt))+"=> nicht markiert, probiere diesen Weg"); + probiere(k.getAnderesEnde(akt)); + k.setMarkiert(false); + } else { + info("Kante zu Knoten Nr. "+g.getNummer(k.getAnderesEnde(akt))+"=> schon markiert, kein sinnvoller Weg"); + } + } + + akt.setMarkiert(false); + info("kehre zu vorherigem Knoten zurück"); + infoIndentLess(); + step(); + } + + public String getInfo() { + List kanten = g.getAlleKanten(); + double laenge = 0; + int anz =0; + for(Kante k:kanten) { + if(k.isMarkiert()) { + laenge+=k.getGewicht(); + anz++; + } + } + + return "Weglänge ("+anz+" von "+g.getAnzahlKnoten()+" Kanten): "+laenge+" km. Bisher beste Gesamtlösung "+this.besteStrecke+" km"; +} + + + // Ende Methoden + +} + diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_TSPGenetisch.java b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_TSPGenetisch.java new file mode 100644 index 0000000..527a2ef --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_TSPGenetisch.java @@ -0,0 +1,182 @@ +package algorithmen; + +import java.util.List; +import java.nio.file.*; +import java.util.Random; +import java.util.Arrays; + +import graph.*; + +/** + * + * description + * + * @version 1.0 from 26.04.2019 + * @author + */ + +public class GraphAlgo_TSPGenetisch extends GraphAlgo { + + private int popGroesse=500; + private int fitGroesse=80; + private int[][] population; + private int[][] fittest; + private int generation; + + // Anfang Attribute + + public String getBezeichnung() { + return "TSP (Genetisch)"; + } + + // Anfang Methoden + public void fuehreAlgorithmusAus() { + population = new int[popGroesse][g.getAnzahlKnoten()+1]; + double[] rundreiseLaenge = new double[popGroesse]; + for(int i=0; i kanten = g.getAlleKanten(); + double laenge = 0; + int anz =0; + for(Kante k:kanten) { + if(k.isMarkiert()) { + laenge+=k.getGewicht(); + anz++; + } + } + + //return ""+generation+";"+laenge; + return "Bisher beste Weglänge (Generation "+generation+"): "+laenge+" km."; + } + + // Ende Methoden +} diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_TSPGreedy.java b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_TSPGreedy.java new file mode 100644 index 0000000..d3cf87a --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_TSPGreedy.java @@ -0,0 +1,81 @@ +package algorithmen; + +import java.util.List; +import java.nio.file.*; +import java.util.Collections; + +import graph.*; + +/** + * + * Dieser Algorithmus sucht einen möglichst kurzen Hamilton-Kreis (Traveling + * Salesman Problem). + * Algorithmus: Greedy + * Strategie: Verlängere den Weg immer mit der kürzesten Kante, die vom aktuellen Ende der Route ausgeht. + * vlg. Minimal Spanning Tree (Prim) + * + * @version 1.0 from 11.12.2020 + * @author Thomas Schaller + */ + +public class GraphAlgo_TSPGreedy extends GraphAlgo { + + // Anfang Attribute + + public String getBezeichnung() { + return "TSP (Greedy: Knoten)"; + } + + + // Anfang Methoden + public void fuehreAlgorithmusAus() { + Knoten start = this.getStartKnoten(); + Knoten akt = start; + Kante min; + int anz = 0; + int laenge = 0; + info("Starte mit Knoten Nr. "+g.getNummer(start)); + do{ + akt.setMarkiert(true); + info("Markiere diesen Knoten"); + final Knoten aktK = akt; + min = null; + List kanten = g.getAusgehendeKanten(akt, ka -> !ka.getAnderesEnde(aktK).isMarkiert()); + info("Betrachte alle ausgehenden Kanten zu unmarkierten Knoten.\n und sortiere diese Kanten nach Gewicht."); + if(kanten.size() > 0) { + Collections.sort(kanten); + min = kanten.get(0); + info("Kürzeste Kante geht zu Knoten "+g.getNummer(min.getAnderesEnde(akt))); + laenge += min.getGewicht(); + anz++; + min.setMarkiert(true); + info("Markiere diese Kante (Länge "+laenge+" nach "+anz+" von "+g.getAlleKnoten().size()+" Knoten)"); + akt = min.getAnderesEnde(akt); + info("mache mit diesem Knoten weiter"); + } + step(); + }while (min!=null); + g.getKante(akt,start).setMarkiert(true); + info("Markiere die Kante vom letzten Knoten zum Startknoten"); + step(); + melde("Route gefunden: "+getInfo()); + } // end of for + + public String getInfo() { + List kanten = g.getAlleKanten(); + double laenge = 0; + int anz =0; + for(Kante k:kanten) { + if(k.isMarkiert()) { + laenge+=k.getGewicht(); + anz++; + } + } + + return "Weglänge ("+anz+" von "+g.getAnzahlKnoten()+" Kanten): "+laenge+" km."; + } + + // Ende Methoden + +} + diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_TSPGreedy2.java b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_TSPGreedy2.java new file mode 100644 index 0000000..78a47d1 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_TSPGreedy2.java @@ -0,0 +1,172 @@ +package algorithmen; + +import java.util.List; +import java.nio.file.*; +import java.util.Comparator; +import java.util.Collections; + +import graph.*; + +/** + * + * Dieser Algorithmus sucht einen möglichst kurzen Hamilton-Kreis (Traveling + * Salesman Problem). + * Algorithmus: Greedy + * Strategie: Sortiere Kanten der Länge nach. Füge sie der Reihe nach der Route hinzu, wenn nicht schon ein + * Weg zwischen den beiden Knoten vorhanden ist und die Knoten nicht schon Grad zwei erreicht haben. + * vgl. Minimal Spanning Tree (Kruskal) + * + * @version 1.0 from 11.12.2020 + * @author Thomas Schaller + */ + +public class GraphAlgo_TSPGreedy2 extends GraphAlgo { + + // Anfang Attribute + + public String getBezeichnung() { + return "TSP (Greedy: kürzeste Kante)"; + } + + // Anfang Methoden + public void fuehreAlgorithmusAus() { + int farbe = 1; + int anzkanten = 0; + List kanten = g.getAlleKanten(); + List knoten = g.getAlleKnoten(); + info("Hole eine Liste aller Kanten und eine aller Knoten"); + Collections.sort(kanten); + info("Sortiere Kanten aufsteigend"); + info("Wiederhole für jede Kante"); + for (Kante k: kanten) { + info("Bearbeite Kante mit Gewicht: "+k.getGewicht()); + infoIndentMore(); + int f1 = k.getStart().getFarbe(); + int f2 = k.getZiel().getFarbe(); + if(f1 == 0 && f2 == 0) { + info("Beide Knoten gehören noch zu keinem Teilgraphen"); + k.getStart().setFarbe(farbe); + k.getZiel().setFarbe(farbe); + k.setMarkiert(true); + anzkanten++; + info("=> setze beide auf Farbe "+farbe+" und markiere die Kante"); + farbe++; + } else + if(f1 == 0 && g.getAusgehendeKanten(k.getZiel(), k2->k2.isMarkiert()).size()==1) { + info("Der Knoten Nr. "+g.getNummer(k.getStart())+" gehört noch zu keinem Teilgraphen und verlängert eine Route"); + k.getStart().setFarbe(f2); + k.setMarkiert(true); + anzkanten++; + info("=> setze ihn auf die Farbe des Knotens Nr. "+g.getNummer(k.getZiel())+" und markiere die Kante"); + } else + if(f2 == 0 && g.getAusgehendeKanten(k.getStart(), k2->k2.isMarkiert()).size()==1) { + info("Der Knoten Nr. "+g.getNummer(k.getZiel())+" gehört noch zu keinem Teilgraphen und verlängert eine Route"); + k.getZiel().setFarbe(f1); + k.setMarkiert(true); + anzkanten++; + info("=> setze ihn auf die Farbe des Knotens Nr. "+g.getNummer(k.getStart())+" und markiere die Kante"); + } else + if(f1 == f2) { + if(anzkanten == g.getAnzahlKnoten()-1 && istRoutenende(k.getZiel()) && istRoutenende(k.getStart())){ + k.setMarkiert(true); + info("=> markiere die Kante und schließe damit die Rundreise"); + infoIndentLess(); + step(); + break; + } else { + info("Beide Knoten gehören zum gleichen Teilgraphen"); + } + } else + if(istRoutenende(k.getZiel()) && istRoutenende(k.getStart())){ + info("Beide Knoten gehören zu unterschiedlichen Teilgraphen, die vereinigt werden können."); + int min = Math.min(f1,f2); + int max = Math.max(f1,f2); + for(Knoten k1 : knoten) { + if(k1.getFarbe() == max) k1.setFarbe(min); + } + info("=> färbe alle Knoten mit Farbe "+max+" mit der Farbe "+min); + k.setMarkiert(true); + anzkanten++; + info(" und markiere die Kante"); + } + infoIndentLess(); + step(); + } + melde("Rundreise gefunden:"+ getInfo()); + } + + private boolean istRoutenende(Knoten k) { + return g.getAusgehendeKanten(k, k2->k2.isMarkiert()).size()==1; + } + // Knoten start = this.getStartKnoten(); + + // List kanten = g.getAlleKanten(); + // kanten.sort(Comparator.comparingDouble(Kante::getGewicht)); + + // for(Kante k: kanten) { + // for (Knoten v: g.getAlleKnoten()) v.setBesucht(false); + // if(!findeWeg(k.getStart(), k.getZiel()) && bestimmeGrad(k.getStart())!=2 && bestimmeGrad(k.getZiel())!=2) { + // k.setMarkiert(true); + // } else { + // k.setMarkiert(true); + // boolean alleZwei=true; + // for(Knoten v: g.getAlleKnoten()) { + // if(bestimmeGrad(v) != 2) { + // alleZwei = false; + // } + // } + // if(alleZwei) { + // break; + // } + // k.setMarkiert(false); + // } + // step(); + // } // end of for + // step(); + // melde("Rundreise gefunden:"+ getInfo()); + // } + + private int bestimmeGrad(Knoten k) { + List kantenV = g.getAusgehendeKanten(k, k2->k2.isMarkiert()); + return kantenV.size(); + } + + // /** + // * Hilfsmethode zum kurzsichtigen Algorithmus. + // * Findet die minimale Kante von einem gegebenen StartKnoten. + // * + // * @param Knoten startKnoten Der StartKnoten, von dem aus die Adjazenzliste durchlaufen wird + // * @return Kante Die gesuchte minimale Kante + // */ + // public boolean findeWeg(Knoten s, Knoten z) { + // if(s==z) return true; + + // boolean gefunden = false; + // s.setBesucht(true); + // List kanten = g.getAusgehendeKanten(s); + // for (Kante k: kanten) { + // if(k.isMarkiert()) { // Nur markierte Kanten zaehlen als Weg + // if(!k.getAnderesEnde(s).isBesucht()) { + // if(findeWeg(k.getAnderesEnde(s), z)) return true; + // } + // } + // } // end of for + // return false; + // } + + public String getInfo() { + List kanten = g.getAlleKanten(); + double laenge = 0; + int anz =0; + for(Kante k:kanten) { + if(k.isMarkiert()) { + laenge+=k.getGewicht(); + anz++; + } + } + + return "Weglänge ("+anz+" von "+g.getAnzahlKnoten()+" Kanten): "+laenge+" km."; + } + + // Ende Methoden +} diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_TSPGreedyOpt.java b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_TSPGreedyOpt.java new file mode 100644 index 0000000..c56e7fb --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_TSPGreedyOpt.java @@ -0,0 +1,112 @@ +package algorithmen; + +import java.util.List; +import java.util.ArrayList; +import java.nio.file.*; + +import graph.*; + +/** + * + * Dieser Algorithmus sucht einen möglichst kurzen Hamilton-Kreis (Traveling + * Salesman Problem). + * Algorithmus: Greedy mit anschließender Optimierung: + * Jeder Knoten wird der Reihe nach aus der Rundreise entfernt und dort wieder eingefügt, wo die Rundreise + * sich am wenigsten verlängert. Diese Optimierung wird 5x wiederholt. + * + * @version 1.0 from 11.12.2020 + * @author Thomas Schaller + */ + +public class GraphAlgo_TSPGreedyOpt extends GraphAlgo { + + // Anfang Attribute + + public String getBezeichnung() { + return "TSP (Greedy: Knoten + Optimierung)"; + } + + // Anfang Methoden + public void fuehreAlgorithmusAus() { + Knoten start = this.getStartKnoten(); + Knoten akt = start; + List reihung = new ArrayList(); + reihung.add(start); + Kante min; + do{ + List kanten = g.getAusgehendeKanten(akt); + min = null; + double mindist = Double.MAX_VALUE; + for(Kante k: kanten) { + if(!k.getAnderesEnde(akt).isMarkiert()) { + if(min == null || mindist > k.getGewicht()) { + min = k; + mindist = k.getGewicht(); + } + } + } + akt.setMarkiert(true); + if(min != null) { + min.setMarkiert(true); + akt = min.getAnderesEnde(akt); + reihung.add(akt); + } + step(); + }while (min!=null); + g.getKante(akt,start).setMarkiert(true); + step(); + // Versuch der Optimierung + for(int o=0; o<5 ; o++) + for(Knoten kn : g.getAlleKnoten()) { + List markierteKanten = g.getAusgehendeKanten(kn, ka->ka.isMarkiert()); + for(Kante k: markierteKanten){ + k.setMarkiert(false); + } + g.getKante(markierteKanten.get(0).getAnderesEnde(kn),markierteKanten.get(1).getAnderesEnde(kn)).setMarkiert(true); + double laengeBest = Double.MAX_VALUE; + Kante kanteBest = null; + for(Kante k2: g.getAlleKanten()) { + if(k2.isMarkiert()) { + double laengeNeu = g.getKante(k2.getStart(),kn).getGewicht()+g.getKante(k2.getZiel(),kn).getGewicht()-k2.getGewicht() ; + if(laengeBest > laengeNeu) { + laengeBest = laengeNeu; + kanteBest = k2; + } + } + } + kanteBest.setMarkiert(false); + g.getKante(kanteBest.getStart(),kn).setMarkiert(true); + g.getKante(kanteBest.getZiel(),kn).setMarkiert(true); + step(); + } + step(); + melde("Rundreise gefunden:"+ getInfo()); + + } // end of for + + public double getLaenge() { + List kanten = g.getAlleKanten(); + double laenge = 0; + for(Kante k:kanten) { + if(k.isMarkiert()) laenge+=k.getGewicht(); + } + return laenge; + } + + public String getInfo() { + List kanten = g.getAlleKanten(); + double laenge = 0; + int anz =0; + for(Kante k:kanten) { + if(k.isMarkiert()) { + laenge+=k.getGewicht(); + anz++; + } + } + + return "Weglänge ("+anz+" von "+g.getAnzahlKnoten()+" Kanten): "+laenge+" km."; + } + // Ende Methoden + +} + diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_Tiefensuche.java b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_Tiefensuche.java new file mode 100644 index 0000000..7d20241 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_Tiefensuche.java @@ -0,0 +1,73 @@ +package algorithmen; + +import java.util.List; +import java.util.ArrayList; +import java.util.Collections; +import java.nio.file.*; + +import graph.*; +/** + * Dieser Algorithmus nummeriert alle Knoten des Graphen. + * Algorithmus: Tiefensuche mit ToDo-Liste (Stapel) + * + * @version 1.0 from 10.12.2020 + * @author Thomas Schaller + */ + +public class GraphAlgo_Tiefensuche extends GraphAlgo { + + // Anfang Attribute + + public String getBezeichnung() { + return "Nummerierung (Tiefensuche)"; + } + + + // Anfang Methoden + public void fuehreAlgorithmusAus() { + if (g.getAnzahlKnoten()==0) { + return; + } + int nr = 0; + info("Erzeuge leere toDo-Liste und füge Startknoten hinzu"); + List toDo = new ArrayList(); + toDo.add(getStartKnoten()); + + while(toDo.size()>0) { + info("Nimm ersten Knoten aus der toDo-Liste (momentan "+toDo.size()+" Elemente) heraus"); + Knoten k = toDo.remove(0); + nr++; + infoIndentMore(); + k.setBesucht(false); + k.setMarkiert(true); + k.setWert(nr); + info("Markiere den Knoten und gib ihm die Nummer "+nr); + info("Für jeden Nachbarknoten"); + infoIndentMore(); + for(Knoten n : g.getNachbarknoten(k)) { + if(!n.isMarkiert()){ + if( !toDo.contains(n)) { + toDo.add(0, n); + g.getKante(k,n).setMarkiert(true); + n.setBesucht(true); + info("- ist noch nicht markiert, füge der ToDo-Liste am Anfang hinzu.\n"+ + " toDo-Liste hat jetzt "+toDo.size()+" Elemente"); + } else { + info("- ist schon in ToDo-Liste"); + } + } else { + info("- ist schon markiert"); + } + } + infoIndentLess(); + infoIndentLess(); + step(); + } + info("ToDo-Liste fertig abgearbeitet"); + + } // end + + // Ende Methoden + +} + diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_TiefensucheRek.java b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_TiefensucheRek.java new file mode 100644 index 0000000..8616a61 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_TiefensucheRek.java @@ -0,0 +1,60 @@ +package algorithmen; + +import java.util.List; +import java.util.ArrayList; +import java.util.Collections; +import java.nio.file.*; + +import graph.*; +/** + * Dieser Algorithmus nummeriert alle Knoten des Graphen. + * Algorithmus: Tiefensuche rekursiv + * + * @version 1.0 from 10.12.2020 + * @author Thomas Schaller + */ + +public class GraphAlgo_TiefensucheRek extends GraphAlgo { + + // Anfang Attribute + + public String getBezeichnung() { + return "Nummerierung (Tiefensuche rekursiv)"; + } + + + // Anfang Methoden + public void fuehreAlgorithmusAus() { + if (g.getAnzahlKnoten()==0) { + return; + } + nummeriere(getStartKnoten(), 0); + } // end + + private int nummeriere(Knoten k, int nr) { + // Abbruchbedingung + if(k.isBesucht()) { + info("Untersuche "+g.getKnoteninfo(k,false)+" => ist schon besucht"); + } else { + nr++; + k.setBesucht(true); + k.setWert(nr); + info("Untersuche "+g.getKnoteninfo(k,false)+" => bekommt Nummer: "+nr); + step(); + info("Untersuche Nachbarn von "+g.getKnoteninfo(k,false)); + infoIndentMore(); + List nachbarn = g.getNachbarknoten(k); + for(Knoten n : nachbarn) { + nr = nummeriere(n,nr); + } + info("Keine weiteren Nachbarn von "+g.getKnoteninfo(k,false)); + infoIndentLess(); + step(); + } + return nr; + + } + // Ende Methoden + +} + diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_ZyklusBacktracking.java b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_ZyklusBacktracking.java new file mode 100644 index 0000000..596da2f --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_ZyklusBacktracking.java @@ -0,0 +1,80 @@ +package algorithmen; + +import java.util.List; +import java.util.Collections; +import java.nio.file.*; + +import graph.*; +/** + * Dieser Algorithmus ist ein Beispiel für einen Backtracking-Algorithmus. + * Er sucht einen Zyklus im Graphen. + * Algorithmus: Backtracking + * + * @version 1.0 from 10.12.2020 + * @author Thomas Schaller + */ + +public class GraphAlgo_ZyklusBacktracking extends GraphAlgo { + + // Anfang Attribute + + public String getBezeichnung() { + return "Zyklensuche (Backtracking)"; + } + + public void fuehreAlgorithmusAus() { + List loesung = backtracking(getStartKnoten()); + if(loesung != null) g.setStatus(loesung); + step(); + } + + public List backtracking(Knoten k){ + + List loesung = null; + + info("Untersuche Knoten "+g.getNummer(k)); + + // Abbruchbedingung + if (k.isMarkiert()) { + // Ausführung unterbrechen + info("Knoten ist schon bearbeitet => Zyklus gefunden"); + step(); + loesung = g.getStatus(); + } else { + + List aktuellerZustand = g.getStatus(); + info("Knoten ist noch nicht bearbeitet => Speichere Zustand des Graphen"); + + // Aktion mit Knoten durchführen, z.B. markieren + k.setMarkiert(true); + info("Markiere den Knoten und betrachte alle nicht markierten, ausgehenden Kanten"); + // Ausführung unterbrechen + step(); + + // Probiere alle Möglichkeiten ( + // hier alle nicht markierten, ausgehenden Kanten + List ausgehend = g.getAusgehendeKanten(k, ka->!ka.isMarkiert()); + infoIndentMore(); + int nr=1; + for(Kante ausgehendeKante : ausgehend) { + k.setMarkiert(true); + ausgehendeKante.setMarkiert(true); + info("Probiere Kante "+nr); + infoIndentMore(); + Knoten nachbar = ausgehendeKante.getAnderesEnde(k); + loesung = backtracking(nachbar); + infoIndentLess(); + g.setStatus(aktuellerZustand); + info("Kehre zurück"); + step(); + if(loesung != null) break; + nr++; + } + infoIndentLess(); + } + return loesung; + } + // Ende Methoden + +} + diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_toplogischeSortierung.java b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_toplogischeSortierung.java new file mode 100644 index 0000000..ed5107e --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/GraphAlgo_toplogischeSortierung.java @@ -0,0 +1,71 @@ +package algorithmen; + +import java.util.List; +import java.util.Collections; +import java.nio.file.*; + +import graph.*; +/** + * Dieser Algorithmus findet eine topologische Sortierung des Graphen. + * + * @version 1.0 from 10.12.2020 + * @author Thomas Schaller + */ + +public class GraphAlgo_toplogischeSortierung extends GraphAlgo { + + // Anfang Attribute + + public String getBezeichnung() { + return "Topologische Sortierung"; + } + + + + // Anfang Methoden + public void fuehreAlgorithmusAus() { + String reihenfolge = ""; + if (g.getAnzahlKnoten()==0) { + return; + } + info("Bestimme die Anzahl der eingehenden Kanten für jeden Knoten"); + infoIndentMore(); + List knoten = g.getAlleKnoten(); + for(Knoten k: knoten) { + k.setWert(g.getEingehendeKanten(k).size()); + info("Setze Wert von von "+g.getKnoteninfo(k, false)+" auf "+g.getEingehendeKanten(k).size()); + } + infoIndentLess(); + step(); + + while(knoten.size()>0) { + Collections.sort(knoten); + info("Sortiere die noch nicht markierten Knoten nach ihrem Wert"); + Knoten k = knoten.get(0); + k.setMarkiert(true); + info("Nimm Knoten "+g.getKnoteninfo(k,false)+" und markiere ihn."); + + if(k.getIntWert() != 0) { + melde("Fehler: Wert ist nicht 0 - Zyklus vorhanden"); + knoten.clear(); + return; + } else { + reihenfolge += " "+g.getKnoteninfo(k, false); + info("Füge ihn der Liste hinzu: "+reihenfolge); + knoten.remove(k); + for(Knoten k2 : g.getNachbarknoten(k)) { + k2.setWert(k2.getIntWert()-1); + } + info("Reduziere den Wert aller Nachbarn von Knoten "+g.getNummer(k)+" um 1"); + } + step(); + } + melde("Topologische Sortierung: "+reihenfolge); + + + } // end + + // Ende Methoden + +} + diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/package.bluej b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/package.bluej new file mode 100644 index 0000000..90f6cf8 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/algorithmen/package.bluej @@ -0,0 +1,261 @@ +#BlueJ package file +dependency1.from=GraphAlgo_DominatingSetGreedyE +dependency1.to=GraphAlgo +dependency1.type=UsesDependency +dependency2.from=GraphAlgo_DominatingSetGreedyE +dependency2.to=GraphAlgo_Moore +dependency2.type=UsesDependency +dependency3.from=GraphAlgo_DominatingSetGreedyF +dependency3.to=GraphAlgo +dependency3.type=UsesDependency +dependency4.from=GraphAlgo_DominatingSetGreedyF +dependency4.to=GraphAlgo_Moore +dependency4.type=UsesDependency +dependency5.from=GraphAlgo_DominatingSetGreedyG +dependency5.to=GraphAlgo +dependency5.type=UsesDependency +dependency6.from=GraphAlgo_DominatingSetGreedyG +dependency6.to=GraphAlgo_Moore +dependency6.type=UsesDependency +dependency7.from=GraphAlgo_DominatingSetGreedyH +dependency7.to=GraphAlgo +dependency7.type=UsesDependency +dependency8.from=GraphAlgo_DominatingSetGreedyH +dependency8.to=GraphAlgo_Moore +dependency8.type=UsesDependency +objectbench.height=133 +objectbench.width=750 +package.divider.horizontal=0.6003172085646312 +package.divider.vertical=0.8309178743961353 +package.editor.height=668 +package.editor.width=1133 +package.editor.x=533 +package.editor.y=122 +package.frame.height=928 +package.frame.width=1297 +package.numDependencies=8 +package.numTargets=31 +package.showExtends=true +package.showUses=true +readme.height=60 +readme.name=@README +readme.width=49 +readme.x=10 +readme.y=10 +target1.height=50 +target1.name=GraphAlgo_ColoringGreedyRandom +target1.showInterface=false +target1.type=ClassTarget +target1.width=250 +target1.x=600 +target1.y=590 +target10.height=50 +target10.name=GraphAlgo_DominatingSetGreedyF +target10.showInterface=false +target10.type=ClassTarget +target10.width=240 +target10.x=290 +target10.y=420 +target11.height=50 +target11.name=GraphAlgo_DominatingSetGreedyG +target11.showInterface=false +target11.type=ClassTarget +target11.width=250 +target11.x=290 +target11.y=470 +target12.height=50 +target12.name=GraphAlgo_TSPGreedy +target12.showInterface=false +target12.type=ClassTarget +target12.width=230 +target12.x=600 +target12.y=160 +target13.height=50 +target13.name=GraphAlgo_DominatingSetGreedyD +target13.showInterface=false +target13.type=ClassTarget +target13.width=250 +target13.x=290 +target13.y=320 +target14.height=50 +target14.name=GraphAlgo_TSPGenetisch +target14.showInterface=false +target14.type=ClassTarget +target14.width=230 +target14.x=600 +target14.y=340 +target15.height=50 +target15.name=GraphAlgo_DominatingSetGreedyE +target15.showInterface=false +target15.type=ClassTarget +target15.width=240 +target15.x=290 +target15.y=370 +target16.height=50 +target16.name=GraphAlgo_DominatingSetGenetisch +target16.showInterface=false +target16.type=ClassTarget +target16.width=250 +target16.x=290 +target16.y=640 +target17.height=50 +target17.name=GraphAlgo_ZyklusBacktracking +target17.showInterface=false +target17.type=ClassTarget +target17.width=220 +target17.x=20 +target17.y=640 +target18.height=50 +target18.name=GraphAlgo_DominatingSetGreedyH +target18.showInterface=false +target18.type=ClassTarget +target18.width=250 +target18.x=290 +target18.y=520 +target19.height=50 +target19.name=GraphAlgo_DominatingSetGreedyI +target19.showInterface=false +target19.type=ClassTarget +target19.width=240 +target19.x=290 +target19.y=570 +target2.height=50 +target2.name=GraphAlgo_Tiefensuche +target2.showInterface=false +target2.type=ClassTarget +target2.width=210 +target2.x=20 +target2.y=170 +target20.height=50 +target20.name=GraphAlgo_Moore +target20.showInterface=false +target20.type=ClassTarget +target20.width=210 +target20.x=20 +target20.y=440 +target21.height=50 +target21.name=GraphAlgo_BellmanFord +target21.showInterface=false +target21.type=ClassTarget +target21.width=210 +target21.x=20 +target21.y=560 +target22.height=50 +target22.name=GraphAlgo_Breitensuche +target22.showInterface=false +target22.type=ClassTarget +target22.width=210 +target22.x=20 +target22.y=290 +target23.height=50 +target23.name=GraphAlgo_toplogischeSortierung +target23.showInterface=false +target23.type=ClassTarget +target23.width=240 +target23.x=20 +target23.y=370 +target24.height=50 +target24.name=GraphAlgo_DominatingSetBacktracking +target24.showInterface=false +target24.type=ClassTarget +target24.width=270 +target24.x=290 +target24.y=100 +target25.height=50 +target25.name=GraphAlgo_ColoringGreedy +target25.showInterface=false +target25.type=ClassTarget +target25.width=240 +target25.x=600 +target25.y=530 +target26.height=50 +target26.name=GraphAlgo_EulerkreisExistenz +target26.showInterface=false +target26.type=ClassTarget +target26.width=210 +target26.x=20 +target26.y=100 +target27.height=50 +target27.name=GraphAlgo_TiefensucheRek +target27.showInterface=false +target27.type=ClassTarget +target27.width=210 +target27.x=20 +target27.y=230 +target28.height=50 +target28.name=GraphAlgo_TSPGreedy2 +target28.showInterface=false +target28.type=ClassTarget +target28.width=230 +target28.x=600 +target28.y=220 +target29.height=50 +target29.name=GraphAlgo_ColoringBacktracking +target29.showInterface=false +target29.type=ClassTarget +target29.width=240 +target29.x=600 +target29.y=470 +target3.height=50 +target3.name=GraphAlgo_MST_Prim +target3.showInterface=false +target3.type=ClassTarget +target3.width=230 +target3.x=890 +target3.y=100 +target30.height=50 +target30.name=GraphAlgo_Dijkstra +target30.showInterface=false +target30.type=ClassTarget +target30.width=210 +target30.x=20 +target30.y=500 +target31.height=50 +target31.name=GraphAlgo_TSPGreedyOpt +target31.showInterface=false +target31.type=ClassTarget +target31.width=230 +target31.x=600 +target31.y=280 +target4.height=50 +target4.name=GraphAlgo_TSPBacktracking +target4.showInterface=false +target4.type=ClassTarget +target4.width=230 +target4.x=600 +target4.y=100 +target5.height=50 +target5.name=GraphAlgo_DominatingSetGreedyB +target5.showInterface=false +target5.type=ClassTarget +target5.width=240 +target5.x=290 +target5.y=220 +target6.height=50 +target6.name=GraphAlgo +target6.showInterface=false +target6.type=AbstractTarget +target6.width=90 +target6.x=310 +target6.y=10 +target7.height=50 +target7.name=GraphAlgo_DominatingSetGreedyC +target7.showInterface=false +target7.type=ClassTarget +target7.width=240 +target7.x=290 +target7.y=270 +target8.height=50 +target8.name=GraphAlgo_MST_Kruskal +target8.showInterface=false +target8.type=ClassTarget +target8.width=230 +target8.x=890 +target8.y=160 +target9.height=50 +target9.name=GraphAlgo_DominatingSetGreedyA +target9.showInterface=false +target9.type=ClassTarget +target9.width=250 +target9.x=290 +target9.y=170 diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/01_eulerkreis/01_4inseln.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/01_eulerkreis/01_4inseln.csv new file mode 100644 index 0000000..d713e64 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/01_eulerkreis/01_4inseln.csv @@ -0,0 +1,21 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,0 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,2 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,inseln4.png +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,0 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list +188,244,3,2,1 +196,127,0,2 +331,164,0,1,3 +315,297,0,2 \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/01_eulerkreis/02_5inseln.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/01_eulerkreis/02_5inseln.csv new file mode 100644 index 0000000..f95e8a6 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/01_eulerkreis/02_5inseln.csv @@ -0,0 +1,22 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,0 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,2 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,inseln5.png +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,0 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list +196,130,4,1 +319,168,0,3,4,2 +403,199,1,4 +312,284,1,4 +199,225,0,1,2,3 \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/01_eulerkreis/03_zusammenhang_beispiel1.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/01_eulerkreis/03_zusammenhang_beispiel1.csv new file mode 100644 index 0000000..6e581b0 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/01_eulerkreis/03_zusammenhang_beispiel1.csv @@ -0,0 +1,31 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,0 +# Größe der Knoten +vertexSize,19 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,2 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,0 +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,0 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list +122,257,2,1 +284,196,0,3,10,11 +191,353,0,3,8 +332,293,1,2 +438,240,6,5,7 +448,402,4,6,7 +218,273,4,5,9 +198,431,4,5,9 +334,382,2,11 +107,365,6,7 +488,195,1,11 +488,326,1,8,10 \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/01_eulerkreis/04_zusammenhang_beispiel2.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/01_eulerkreis/04_zusammenhang_beispiel2.csv new file mode 100644 index 0000000..92b9936 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/01_eulerkreis/04_zusammenhang_beispiel2.csv @@ -0,0 +1,31 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,0 +# Größe der Knoten +vertexSize,19 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,0 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,2 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,0 +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,0 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list +122,257,2,1 +284,196,0,3,10,11,6 +191,353,0,3,8 +332,293,1,2 +438,240,5,7 +448,402,4,6,7 +218,273,1,5,9 +198,431,4,5,9 +334,382,2,11 +107,365,6,7 +488,195,1,11 +488,326,1,8,10 \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/02_topologischesortierung/01_aufbausimulation1.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/02_topologischesortierung/01_aufbausimulation1.csv new file mode 100644 index 0000000..b52d928 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/02_topologischesortierung/01_aufbausimulation1.csv @@ -0,0 +1,26 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,0 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,2 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,siedlerohnefischer.png +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,0 +# gerichtet 1, ungerichtet 0 +directed,1 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list,infotext +Farm,284,83,1,3 +Mühle,533,109,2 +Bäckerei,690,154,6,5 +Schweinefarm,124,239,4 +Metzger,171,404,5,6 +Kohlemine,425,441,7,8 +Erzmine,734,308,7 +Eisenschmelze,552,336,8 +Werkzeugmacher,401,258,0,4,5,7 \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/02_topologischesortierung/02_aufbausimulation2.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/02_topologischesortierung/02_aufbausimulation2.csv new file mode 100644 index 0000000..8c6f82f --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/02_topologischesortierung/02_aufbausimulation2.csv @@ -0,0 +1,27 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,0 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,2 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,siedler.png +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,0 +# gerichtet 1, ungerichtet 0 +directed,1 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list,infotext +Farm,285,101,1,3 +Mühle,531,105,2 +Bäckerei,694,159 +Schweinefarm,119,239,4 +Metzger,167,409 +Kohlemine,423,445,7,8 +Erzmine,724,314,7 +Eisenschmelze,537,326,8 +Werkzeugmacher,389,246,0,4 +Fischerhütte,741,456,6,5 \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/03_routenplanung/01_seerosenteich.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/03_routenplanung/01_seerosenteich.csv new file mode 100644 index 0000000..5a92178 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/03_routenplanung/01_seerosenteich.csv @@ -0,0 +1,20 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,0 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,2 +# Kantenfarben: Farbbeschreibung (z.B. red) oder RGB-Hexcode (z.B. #FF0000) oder invisible +# Reihenfolge: normale Kanten, markierte Kanten, gelöschte Kanten +edgeColor,00e090,FF0000,A0A0A0 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,teich.png +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,0 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/03_routenplanung/02_deutschlandkarte.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/03_routenplanung/02_deutschlandkarte.csv new file mode 100644 index 0000000..120821a --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/03_routenplanung/02_deutschlandkarte.csv @@ -0,0 +1,60 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,1 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,2 +# Kantenfarben: RGB-Hexcode (z.B. FF0000) oder invisible +# Reihenfolge: normale Kanten, markierte Kanten, gelöschte Kanten +edgeColor,AAAAAA,FF0000,A0A0A0 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,deutschland_bundeslaende_bunt.png +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,1 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzmatrix vor. +# Jede Zeile steht fuer einen Knoten, durch Kommas getrennt stehen die Kantengewicht zu jedem anderen Knoten. +matrix,infotext +Aachen,25,415,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,60.0,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- +Augsburg,314,654,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,61.0,-,-,-,-,-,-,-,-,-,-,-,83.0,-,- +Bayreuth,358,502,-,-,-,-,-,-,-,187.0,-,-,-,-,-,-,-,-,-,-,-,-,-,198.0,-,-,-,-,-,-,74.0,-,-,159.0,-,-,-,-,-,-,-,147.0 +Berlin,457,250,-,-,-,-,-,125.0,-,-,-,-,91.0,-,-,-,-,-,-,-,-,-,-,184.0,-,131.0,-,-,-,130.0,-,-,-,-,-,-,200.0,-,-,-,-,- +Bremen,192,196,-,-,-,-,-,-,-,-,-,-,-,-,-,-,110.0,118.0,-,-,-,-,-,-,-,-,-,-,-,-,-,120.0,-,-,-,-,-,-,-,-,110.0,- +Cottbus,509,312,-,-,-,-,-,-,138.0,-,-,-,119.0,-,-,-,-,-,-,-,-,-,-,244.0,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- +Dresden,488,375,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,140.0,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- +Erfurt,313,400,-,-,-,-,-,-,-,-,-,-,-,-,180.0,-,-,-,-,135.0,-,-,-,170.0,-,209.0,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- +Essen,82,348,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,188.0,-,-,75.0,-,-,-,-,-,87.0,-,-,-,-,-,-,-,-,-,-,-,-,- +Frankfurt/Main,178,476,-,-,-,-,-,-,-,-,-,-,-,-,95.0,-,-,-,-,-,-,125.0,-,-,-,-,106.0,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- +Frankfurt/Oder,523,269,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- +Freiburg,124,683,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,130.0,-,-,-,-,-,175.0,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- +Fulda,234,438,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,105.0,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,100.0 +Garmisch-Part.,337,723,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,155.0,-,-,89.0,-,-,-,-,-,-,-,-,-,-,-,-,-,- +Hamburg,261,153,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,154.0,-,-,85.0,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,120.0,-,-,-,-,- +Hannover,244,267,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,238.0,-,-,-,-,-,136.0,-,-,-,-,-,135.0,-,-,-,-,-,-,-,-,-,- +Karlsruhe,153,598,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,58.0,-,-,-,-,-,-,-,-,-,-,81.0,-,-,-,- +Kassel,222,374,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,243.0,-,-,247.0,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- +Kiel,270,83,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,139.0,-,-,-,-,- +Koblenz,114,462,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,110.0,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,128.0,-,-,- +Köln,77,390,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,217.0,-,-,- +Leipzig,403,362,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,108.0,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- +Lindau,203,712,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,216.0,-,126.0,-,- +Magdeburg,356,293,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- +Mannheim,173,544,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,117.0,-,-,-,-,-,162.0 +München,372,672,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,162.0,-,180.0,106.0,-,-,-,-,-,-,-,- +Münster,113,309,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,60.0,-,-,-,-,-,-,-,-,-,- +Neubrandenburg,433,156,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,103.0,-,187.0,-,-,-,-,- +Nürnberg,335,550,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,105.0,-,-,-,-,-,-,-,108.0 +Osnabrück,144,274,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- +Passau,472,625,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,128.0,-,-,-,-,-,-,-,- +Regensburg,405,584,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- +Rostock,381,111,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,90.0,-,-,-,-,- +Saarbrücken,67,561,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,103.0,-,-,- +Schwerin,343,143,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- +Stuttgart,205,614,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,100.0,-,157.0 +Trier,48,508,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- +Ulm,256,647,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- +Wilhelmshaven,148,159,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- +Würzburg,269,512,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/03_routenplanung/03_badenbaden.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/03_routenplanung/03_badenbaden.csv new file mode 100644 index 0000000..e6b2643 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/03_routenplanung/03_badenbaden.csv @@ -0,0 +1,199 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,1 +# Größe der Knoten +vertexSize,9 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,0 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,badenbaden.png +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,1 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list +645,600,1,91.0,52,32.0 +655,690,0,91.0,2,62.0 +685,636,1,62.0,3,58.0,5,139.0 +686,578,2,58.0,4,122.0,52,54.0 +700,457,3,122.0,8,15.0,54,47.0 +782,536,2,139.0,6,59.0,16,154.0,17,139.0 +758,482,5,59.0,10,30.0 +768,407,8,74.0,10,46.0,50,92.0 +715,458,4,15.0,7,74.0,9,64.0 +779,463,8,64.0,11,13.0,15,88.0 +764,453,6,30.0,7,46.0,11,17.0 +781,450,9,13.0,10,17.0,12,98.0 +832,366,11,98.0,14,43.0,13,96.0 +860,274,12,96.0,51,48.0,64,123.0,96,53.0,97,100.0 +874,377,12,43.0,15,57.0 +861,432,9,88.0,14,57.0,16,27.0 +886,422,5,154.0,15,27.0,56,32.0 +914,491,5,139.0,19,128.0,57,24.0 +926,564,21,131.0,57,70.0,92,148.0 +817,575,17,128.0,20,33.0,22,212.0 +839,599,19,33.0,21,48.0 +822,644,18,131.0,20,48.0,99,112.0 +691,745,19,212.0,23,18.0,24,71.0 +703,758,22,18.0 +629,780,22,71.0,25,63.0,98,38.0 +598,725,24,63.0,26,37.0,27,32.0 +564,739,25,37.0,30,96.0 +589,694,25,32.0,28,77.0,29,68.0 +592,617,27,77.0,29,34.0,37,61.0 +562,632,27,68.0,28,34.0,30,33.0,32,67.0 +533,648,26,96.0,29,33.0,31,65.0,104,20.0 +518,585,30,65.0,32,10.0,105,20.0 +524,577,29,67.0,31,10.0,33,14.0 +519,564,32,14.0,34,29.0,45,32.0 +546,554,33,29.0,39,23.0,35,36.0 +534,520,34,36.0,38,22.0,44,19.0,41,26.0 +585,499,40,19.0,37,57.0,38,34.0 +590,556,28,61.0,36,57.0,39,21.0 +555,514,35,22.0,36,34.0,39,46.0 +569,558,34,23.0,37,21.0,38,46.0 +596,483,36,19.0,54,60.0,41,69.0,48,75.0 +528,495,35,26.0,40,69.0,43,25.0 +483,503,45,38.0,43,20.0,46,43.0 +503,499,41,25.0,42,20.0,44,33.0 +517,529,35,19.0,43,33.0,45,18.0 +501,537,33,32.0,42,38.0,44,18.0 +465,464,42,43.0,47,36.0,176,58.0 +480,431,46,36.0,55,58.0,109,59.0 +602,408,40,75.0,49,31.0,55,70.0 +608,378,48,31.0,50,116.0,93,66.0 +715,332,7,92.0,49,116.0,51,109.0,60,120.0 +820,301,13,48.0,50,109.0,58,72.0 +633,570,0,32.0,3,54.0,53,47.0 +639,523,52,47.0,54,62.0 +653,463,4,47.0,40,60.0,53,62.0 +538,437,47,58.0,48,70.0 +910,401,16,32.0,80,170.0,65,108.0 +938,495,17,24.0,18,70.0 +821,229,51,72.0,59,25.0 +841,214,58,25.0,60,62.0 +782,233,50,120.0,59,62.0,61,14.0 +770,225,60,14.0,62,41.0,111,68.0 +801,198,61,41.0,97,73.0,115,105.0 +911,139,73,80.0,97,55.0 +953,194,13,123.0,69,144.0,95,64.0,96,79.0 +911,293,56,108.0,66,148.0,96,32.0 +1043,227,65,148.0,79,43.0 +1323,213,78,179.0,68,127.0 +1199,185,67,127.0,69,103.0,94,74.0 +1096,175,64,144.0,68,103.0,79,59.0,70,82.0 +1051,106,69,82.0,76,48.0,71,64.0,95,69.0 +987,114,70,64.0,73,24.0,72,54.0,95,47.0 +950,154,71,54.0 +976,93,63,80.0,71,24.0,74,90.0 +1056,52,73,90.0,76,20.0,75,92.0 +1140,14,74,92.0 +1073,63,70,48.0,74,20.0,77,236.0 +1306,103,76,236.0 +1147,244,67,179.0,79,62.0 +1086,233,66,43.0,69,59.0,78,62.0,80,75.0 +1040,292,56,170.0,79,75.0,83,68.0,82,90.0 +1221,299,82,92.0 +1129,308,80,90.0,81,92.0,83,73.0 +1071,352,80,68.0,82,73.0,84,53.0,92,115.0 +1113,384,83,53.0,88,261.0,85,60.0 +1168,361,84,60.0,86,73.0 +1239,377,85,73.0,87,142.0 +1376,340,86,142.0 +1029,631,84,261.0,89,150.0 +908,720,88,150.0,90,24.0 +887,709,89,24.0,91,108.0 +799,771,90,108.0,106,73.0 +1031,460,18,148.0,83,115.0 +561,331,49,66.0,110,101.0,112,38.0,125,39.0 +1272,171,68,74.0 +1005,157,64,64.0,70,69.0,71,47.0 +911,261,13,53.0,64,79.0,65,32.0 +870,175,13,100.0,62,73.0,63,55.0 +654,808,24,38.0,99,125.0,100,62.0 +754,733,21,112.0,98,125.0 +592,811,98,62.0,101,68.0 +524,809,100,68.0,102,83.0,104,154.0 +441,807,101,83.0,103,165.0,144,70.0 +493,650,102,165.0,105,62.0,104,22.0 +514,655,30,20.0,101,154.0,103,22.0 +498,588,31,20.0,103,62.0 +840,831,91,73.0,107,170.0 +1008,804,106,170.0,108,142.0 +1108,703,107,142.0 +459,376,47,59.0,125,74.0,122,42.0,139,51.0,176,54.0 +644,274,93,101.0,111,67.0,114,41.0 +707,251,61,68.0,110,67.0,115,31.0 +543,298,93,38.0,113,44.0,124,35.0 +579,272,112,44.0,116,23.0,114,72.0 +640,233,110,41.0,113,72.0,116,71.0,115,60.0 +699,221,62,105.0,111,31.0,114,60.0 +571,250,113,23.0,114,71.0,117,60.0 +516,274,116,60.0,123,48.0,118,42.0 +489,242,117,42.0,119,43.0,135,53.0 +446,246,118,43.0,120,72.0,136,81.0 +419,179,119,72.0,126,21.0,133,61.0 +523,106,133,67.0 +463,334,109,42.0,123,32.0,134,35.0 +483,309,117,48.0,122,32.0,124,30.0,135,36.0 +512,315,112,35.0,123,30.0,125,24.0 +522,337,93,39.0,109,74.0,124,24.0 +433,194,120,21.0,129,39.0,128,39.0,127,43.0 +470,215,126,43.0 +472,190,126,39.0,129,20.0,131,30.0 +465,171,126,39.0,128,20.0,130,25.0,132,25.0 +475,148,129,25.0,132,19.0,133,15.0 +499,177,128,30.0,132,19.0 +488,162,129,25.0,130,19.0,131,19.0 +464,138,120,61.0,121,67.0,130,15.0 +431,320,122,35.0,139,30.0,135,44.0,137,60.0 +457,284,118,53.0,123,36.0,134,44.0 +369,221,119,81.0,142,56.0,140,58.0,137,62.0 +385,281,134,60.0,136,62.0,138,32.0 +359,299,137,32.0,140,82.0,139,75.0,178,25.0 +417,347,109,51.0,134,30.0,138,75.0,177,64.0 +312,232,136,58.0,138,82.0,141,52.0 +320,181,140,52.0,143,83.0,142,30.0 +348,169,136,56.0,141,30.0,143,74.0 +326,98,141,83.0,142,74.0 +371,814,102,70.0,145,56.0 +317,801,144,56.0,146,81.0 +335,722,145,81.0,147,59.0,157,141.0 +277,731,146,59.0,148,146.0 +164,824,147,146.0,149,113.0 +64,771,148,113.0,150,62.0 +123,752,149,62.0,165,102.0,151,167.0 +243,636,150,167.0,152,48.0,156,65.0 +213,598,151,48.0,153,46.0,154,49.0 +167,593,152,46.0 +202,550,152,49.0,179,34.0,155,69.0,163,38.0 +266,525,154,69.0,156,65.0,161,49.0 +286,587,151,65.0,155,65.0,157,47.0 +333,581,146,141.0,156,47.0,158,62.0 +368,530,157,62.0,159,69.0 +332,471,158,69.0,175,70.0,160,51.0 +282,483,159,51.0,162,26.0,163,79.0 +313,511,155,49.0,162,52.0 +262,500,160,26.0,161,52.0 +208,512,154,38.0,160,79.0,174,72.0,164,229.0 +5,617,163,229.0,167,77.0 +34,703,150,102.0,166,117.0 +130,636,165,117.0 +9,540,164,77.0,168,183.0 +170,454,167,183.0,169,42.0,173,35.0 +129,463,168,42.0,170,58.0 +137,406,169,58.0,171,71.0 +70,429,170,71.0,172,66.0 +9,453,171,66.0 +203,441,168,35.0,174,101.0 +136,517,163,72.0,173,101.0 +393,437,159,70.0,177,71.0,176,38.0 +427,420,46,58.0,109,54.0,175,38.0 +359,375,139,64.0,175,71.0,178,69.0 +337,310,138,25.0,177,69.0 +171,563,154,34.0 \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/03_routenplanung/04_inseln.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/03_routenplanung/04_inseln.csv new file mode 100644 index 0000000..783e31e --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/03_routenplanung/04_inseln.csv @@ -0,0 +1,25 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,1 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,2 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,2_mst_insel_karte_trans.png +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,1 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list +579,272,3,700.0,1,310.0,7,130.0,2,500.0 +356,334,0,310.0,3,180.0,4,200.0,2,110.0,7,420.0,6,350.0 +429,245,0,500.0,1,110.0,7,90.0,6,170.0,4,460.0 +291,436,0,700.0,1,180.0,5,230.0,4,190.0 +262,251,1,200.0,2,460.0,3,190.0,5,100.0,6,80.0 +113,199,3,230.0,4,100.0,6,70.0 +290,113,1,350.0,2,170.0,4,80.0,5,70.0,7,380.0 +501,166,0,130.0,1,420.0,2,90.0,6,380.0 \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/03_routenplanung/05_gerichtet.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/03_routenplanung/05_gerichtet.csv new file mode 100644 index 0000000..37550a2 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/03_routenplanung/05_gerichtet.csv @@ -0,0 +1,30 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,1 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,0 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,2 +# Kantenfarben: RGB-Hexcode (z.B. FF0000) oder invisible +# Reihenfolge: normale Kanten, markierte Kanten, gelöschte Kanten +edgeColor,000000,FF0000,A0A0A0 +# Knotenfarben: RGB-Hexcode (z.B. FF0000) oder invisible +# Reihenfolge: nichts, markiert, besucht, besucht und markiert +# mind. 12 Farben müssen angegeben werden.vertexColor,A0A0A0,FF0000,FFFF00,00FFFF,AA00AA,888800,008888,880088 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,0 +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,1 +# gerichtet 1, ungerichtet 0 +directed,1 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list +130,30,2,5.0 +40,90,0,8.0,3,2.0,4,18.0 +220,90,1,10.0,3,3.0 +130,170,4,12.0,6,30.0 +40,230,5,4.0 +130,280,3,14.0,6,26.0 +220,230,2,16.0 \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/03_routenplanung/06_negative_kantengewichte.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/03_routenplanung/06_negative_kantengewichte.csv new file mode 100644 index 0000000..6b8b4d8 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/03_routenplanung/06_negative_kantengewichte.csv @@ -0,0 +1,24 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,1 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,0 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,1 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,0 +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,1 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list +130,30,1,8.0,2,5.0 +40,90,0,8.0,3,2.0,4,18.0,2,-6.0 +220,90,0,5.0,1,-6.0,6,16.0,3,3.0 +130,170,1,2.0,2,3.0,5,14.0,6,-10.0,4,-3.0 +40,230,1,18.0,3,-3.0,5,4.0 +130,280,3,14.0,4,4.0,6,26.0 +220,230,2,16.0,3,-10.0,5,26.0 \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/03_routenplanung/07_negative_kantengewichte2.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/03_routenplanung/07_negative_kantengewichte2.csv new file mode 100644 index 0000000..9a443d8 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/03_routenplanung/07_negative_kantengewichte2.csv @@ -0,0 +1,24 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,1 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,1 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,0 +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,1 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list +130,30,1,8.0,2,5.0 +40,90,0,8.0,3,2.0,4,18.0,2,-6.0 +220,90,0,5.0,1,-6.0,6,16.0,3,5.0 +130,170,1,2.0,2,5.0,5,14.0,6,-10.0,4,-3.0 +40,230,1,18.0,3,-3.0,5,4.0 +130,280,3,14.0,4,4.0,6,26.0 +220,230,2,16.0,3,-10.0,5,26.0 \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/04_dominierendemenge/01_eisverkaeufer_blanko.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/04_dominierendemenge/01_eisverkaeufer_blanko.csv new file mode 100644 index 0000000..8873978 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/04_dominierendemenge/01_eisverkaeufer_blanko.csv @@ -0,0 +1,17 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,0 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,2 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,eis2.png +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,0 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/04_dominierendemenge/02_eisverkaeufer.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/04_dominierendemenge/02_eisverkaeufer.csv new file mode 100644 index 0000000..8bf1b44 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/04_dominierendemenge/02_eisverkaeufer.csv @@ -0,0 +1,51 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,0 +# Größe der Knoten +vertexSize,17 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,0 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,eis2.png +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,0 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list +15,16,1,21 +112,15,0,15,2 +218,14,1,7,3 +328,13,2,4,6 +405,13,3,5 +406,80,4,10,6 +326,81,3,5,8,7 +223,80,2,6,13,14,15 +326,174,6,9,28,13 +366,174,8,10,12 +409,175,5,9,11 +416,232,10,31,12 +374,237,9,11,30 +222,175,7,8,27,17,14 +173,122,7,13,16 +111,82,1,7,16,20 +110,123,14,15,17 +109,174,13,16,26,18 +64,173,17,23,19 +63,129,18,20,22 +64,81,15,19,21 +16,80,0,20,22 +17,128,19,21,23 +18,172,18,22,24 +18,294,23,25 +109,294,24,29,26 +109,246,17,25,27 +221,246,13,26,28 +325,247,8,27,29 +327,296,25,28,30 +373,297,12,29,31 +416,294,11,30 \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/04_dominierendemenge/03_graph_knoten5.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/04_dominierendemenge/03_graph_knoten5.csv new file mode 100644 index 0000000..f4e5bcb --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/04_dominierendemenge/03_graph_knoten5.csv @@ -0,0 +1,22 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,0 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,2 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,0 +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,0 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list +247,228,1,3 +458,188,0,4 +358,310,4,3 +252,400,0,2,4 +436,461,1,2,3 \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/04_dominierendemenge/04_graph_knoten6.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/04_dominierendemenge/04_graph_knoten6.csv new file mode 100644 index 0000000..f6439e3 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/04_dominierendemenge/04_graph_knoten6.csv @@ -0,0 +1,23 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,0 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,2 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,0 +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,0 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list +229,211,1,3,2 +458,188,0,4,5 +358,310,0,4 +252,400,0,4 +444,439,1,2,3,5 +525,331,1,4 \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/04_dominierendemenge/05_graph_knoten7.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/04_dominierendemenge/05_graph_knoten7.csv new file mode 100644 index 0000000..8b58426 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/04_dominierendemenge/05_graph_knoten7.csv @@ -0,0 +1,24 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,0 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,2 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,0 +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,0 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list +229,211,3,2,6 +431,265,4,5,2 +358,310,0,1,4,6,3 +252,400,0,2,4 +444,439,1,2,3,5 +525,331,1,4,6 +390,71,0,2,5 \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/04_dominierendemenge/06_graph_knoten8.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/04_dominierendemenge/06_graph_knoten8.csv new file mode 100644 index 0000000..80da538 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/04_dominierendemenge/06_graph_knoten8.csv @@ -0,0 +1,25 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,0 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,2 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,0 +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,0 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list +229,211,3,2,6 +431,265,4,5,2 +358,310,0,1,4,6,3 +252,400,0,2,4 +444,439,1,2,3,5 +525,331,1,4,6,7 +390,71,0,2,5,7 +610,168,5,6 \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/04_dominierendemenge/07_graph_knoten9.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/04_dominierendemenge/07_graph_knoten9.csv new file mode 100644 index 0000000..b733498 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/04_dominierendemenge/07_graph_knoten9.csv @@ -0,0 +1,26 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,0 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,2 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,0 +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,0 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list +229,211,3,2,6 +431,265,4,5,2 +358,310,0,1,4,6,3 +252,400,0,2,4 +444,439,1,2,3,5,8 +525,331,1,4,6,7,8 +390,71,0,2,5,7 +610,168,5,6,8 +614,426,4,5,7 \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/04_dominierendemenge/08_graph_knoten10.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/04_dominierendemenge/08_graph_knoten10.csv new file mode 100644 index 0000000..faa7287 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/04_dominierendemenge/08_graph_knoten10.csv @@ -0,0 +1,27 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,0 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,2 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,0 +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,0 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list +229,211,3,2,6 +431,265,4,5,2 +358,310,0,1,4,6,3 +252,400,0,2,4 +444,439,1,2,3,5,8 +525,331,1,4,6,7,8,9 +390,71,0,2,5,7,9 +610,168,5,6,8,9 +614,426,4,5,7 +524,191,5,6,7 \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/04_dominierendemenge/09_graph_knoten15.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/04_dominierendemenge/09_graph_knoten15.csv new file mode 100644 index 0000000..5d8f48d --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/04_dominierendemenge/09_graph_knoten15.csv @@ -0,0 +1,32 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,0 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,2 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,0 +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,0 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list +229,211,3,2,6,13,12 +431,265,4,5,2 +358,310,0,1,4,6,3 +252,400,0,2,4,14,13 +434,403,1,2,3,5,8,14 +525,331,1,4,6,7,8,9 +390,71,0,2,5,7,9,12,11 +610,168,5,6,8,9,11 +614,426,4,5,7,10,14 +524,191,5,6,7 +752,325,8,11 +671,91,6,7,10 +239,78,0,6,13 +161,288,0,3,12 +338,481,3,4,8 \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/04_dominierendemenge/10_graph_domknoten6.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/04_dominierendemenge/10_graph_domknoten6.csv new file mode 100644 index 0000000..6d3556d --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/04_dominierendemenge/10_graph_domknoten6.csv @@ -0,0 +1,45 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,0 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,2 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,0 +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,0 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list,infotext +*,123,150,17,18,19,20 +*,412,130,21,22 +*,361,360,12,9,14,13 +*,153,366,15,16 +*,174,540,7,8,6 +*,654,374,11,23,24,25,26,10,27 +,91,486,4,14,7,16 +,249,484,4,6,14,9 +,294,541,4,9,10,27 +,359,467,2,7,8,10,14 +,513,461,5,8,9,11,27 +,519,362,5,10,12 +,466,289,2,11,23,22 +,305,250,2,20,15,14,22 +,283,382,2,6,7,9,13,15 +,188,302,3,13,14 +,51,252,3,6,17,20 +,61,147,0,16,18 +,76,69,0,17,19 +,203,69,0,18,20,21 +,273,165,0,13,16,19,21 +,421,55,1,19,20,22 +,546,117,1,12,13,21,23,24 +,614,259,5,12,22,24 +,696,294,5,22,23,25 +,730,400,5,24,26 +,725,543,5,25,27 +,643,523,5,8,10,26 \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/04_dominierendemenge/11_graph_domkonten10.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/04_dominierendemenge/11_graph_domkonten10.csv new file mode 100644 index 0000000..9859341 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/04_dominierendemenge/11_graph_domkonten10.csv @@ -0,0 +1,59 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,0 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,2 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,0 +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,0 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list,infotext +*,109,94,34,31,32,33 +*,474,118,35,36,37,38 +*,466,345,19,18,17,16 +*,224,417,25,24,22 +*,272,257,23,20,21 +*,375,568,12,9,10,11 +*,91,552,29,30 +*,45,316,27,26,28 +*,539,514,14,13,15 +,298,517,5,24,10,29 +,402,482,5,9,15,16,23 +,448,569,5,14,15 +,324,608,5,29 +,562,451,8,17,14,16,15 +,602,542,8,11,13 +,473,508,8,10,11,13 +,452,404,2,10,13,19 +,548,356,2,13,36,18 +,492,264,2,17,35 +,405,327,2,16,23 +,316,188,4,40,32 +,213,218,4,32,31,27,28,22 +,227,315,3,21,24 +,352,309,4,10,19,24,35 +,280,377,3,9,22,23 +,147,420,3,28,26,29,30 +,59,388,7,25,30 +,76,269,7,21,34,31 +,118,325,7,21,25 +,171,573,6,9,12,25,30 +,76,486,6,25,26,29 +,101,163,0,21,27 +,193,134,0,20,21,41 +,192,45,0,41,34,38 +,42,46,0,27,33 +,419,157,1,18,23,40 +,548,181,1,17,37 +,568,68,1,36,38 +,406,60,1,33,37,40 +*,302,102,41,40 +,361,114,20,35,38,39 +,248,72,32,33,39 \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/05_repraesentation/01_graph1.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/05_repraesentation/01_graph1.csv new file mode 100644 index 0000000..008feca --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/05_repraesentation/01_graph1.csv @@ -0,0 +1,24 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,0 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,1 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,0 +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,0 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list +130,30,1,2 +40,90,0,2,3,4 +220,90,0,1,6,3 +130,170,1,2,4,5,6 +40,230,1,3,5 +130,280,3,4,6 +220,230,2,3,5 \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/05_repraesentation/02_graph2.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/05_repraesentation/02_graph2.csv new file mode 100644 index 0000000..301d7cf --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/05_repraesentation/02_graph2.csv @@ -0,0 +1,19 @@ +# Der Graph ist durch kommagetrennte Werte kodiert. Der Graph liegt hier in Form einer Adjazenzmatrix vor. Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +# +# Header: +# gerichtet 1, ungerichtet 0 +directed,0 +# gewichtet 1, ungewichtet 0 +weighted,1 +# Knotenfarben +vertextColor,A0A0A0,FF0000,0000FF,00FF00,FFFF00,00FFFF,FF00FF,FF8080 +# +# Graph: +matrix +130,30,-,8.0,5.0,-,-,-,- +40,90,8.0,-,10.0,2.0,18.0,-,- +220,90,5.0,10.0,-,3.0,-,-,16.0 +130,170,-,2.0,3.0,-,12.0,14.0,30.0 +40,230,-,18.0,-,12.0,-,4.0,- +130,280,-,-,-,14.0,4.0,-,26.0 +220,230,-,-,16.0,30.0,-,26.0,- \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/06_travelingsalesman/01_deutschlandkarte.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/06_travelingsalesman/01_deutschlandkarte.csv new file mode 100644 index 0000000..c1f981d --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/06_travelingsalesman/01_deutschlandkarte.csv @@ -0,0 +1,65 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,1 +# Größe der Knoten +vertexSize,10 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,0 +# Kantenfarben: Farbbeschreibung (z.B. red) oder RGB-Hexcode (z.B. #FF0000) oder invisible +# Reihenfolge: normale Kanten, markierte Kanten, gelöschte Kanten +edgeColor,invisible,FF0000,A0A0A0 +# Knotenfarben: Farbbeschreibung (z.B. red) oder RGB-Hexcode (z.B. #FF0000) oder invisible +# Reihenfolge: markiert (+1), besucht(+2), beendet(+4), z.B. markiert+beender=>6.Farbe +vertexColor,A0A0A0,FF0000,FFFF00,00FFFF,AA00AA,888800,008888,880088,00a0FF,a400FF,FFa400,FF00a4,00FFa4,a4FF00 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,deutschland_bundeslaende_bunt.png +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,1 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzmatrix vor. +# Jede Zeile steht fuer einen Knoten, durch Kommas getrennt stehen die Kantengewicht zu jedem anderen Knoten. +matrix,infotext +Aachen,25,415,-,570.0,532.0,637.0,369.0,739.0,651.0,446.0,123.0,240.0,721.0,466.0,330.0,740.0,475.0,354.0,345.0,307.0,556.0,145.0,60.0,573.0,625.0,496.0,284.0,650.0,206.0,715.0,472.0,256.0,683.0,570.0,642.0,321.0,590.0,408.0,255.0,505.0,418,367 +Augsburg,322,655,-,-,239.0,593.0,715.0,574.0,472.0,422.0,601.0,365.0,649.0,340.0,335.0,117.0,720.0,600.0,221.0,432.0,820.0,430.0,538.0,431.0,184.0,530.0,297.0,61.0,620.0,729.0,180.0,580.0,232.0,167.0,782.0,356.0,742.0,149.0,475.0,83.0,825,243 +Bayreuth,358,502,-,-,-,352.0,572.0,339.0,237.0,187.0,494.0,264.0,414.0,457.0,187.0,334.0,596.0,460.0,337.0,278.0,693.0,345.0,431.0,198.0,372.0,295.0,329.0,244.0,520.0,494.0,74.0,635.0,273.0,159.0,547.0,446.0,562.0,264.0,485.0,252.0,682,147 +Berlin,457,250,-,-,-,-,375.0,125.0,214.0,288.0,480.0,564.0,91.0,800.0,474.0,686.0,279.0,258.0,670.0,367.0,343.0,610.0,553.0,184.0,739.0,131.0,657.0,596.0,450.0,130.0,426.0,410.0,625.0,511.0,237.0,745.0,200.0,631.0,725.0,604.0,485,490 +Bremen,192,196,-,-,-,-,-,496.0,478.0,351.0,249.0,450.0,467.0,722.0,388.0,856.0,110.0,118.0,595.0,288.0,205.0,415.0,315.0,367.0,780.0,251.0,541.0,766.0,170.0,353.0,590.0,120.0,796.0,690.0,277.0,590.0,228.0,645.0,524.0,660.0,110,490 +Cottbus,509,312,-,-,-,-,-,-,138.0,320.0,608.0,585.0,119.0,800.0,490.0,686.0,430.0,378.0,670.0,502.0,511.0,633.0,683.0,244.0,739.0,233.0,660.0,596.0,579.0,304.0,426.0,528.0,478.0,440.0,382.0,768.0,359.0,631.0,748.0,604.0,598,485 +Dresden,479,388,-,-,-,-,-,-,-,220.0,581.0,485.0,177.0,700.0,390.0,586.0,492.0,385.0,570.0,402.0,573.0,533.0,583.0,140.0,639.0,228.0,560.0,496.0,597.0,366.0,325.0,590.0,378.0,340.0,444.0,668.0,421.0,531.0,648.0,504.0,660,385 +Erfurt,313,400,-,-,-,-,-,-,-,-,367.0,268.0,366.0,533.0,180.0,515.0,376.0,289.0,403.0,135.0,459.0,318.0,373.0,170.0,567.0,209.0,339.0,425.0,384.0,438.0,264.0,373.0,459.0,344.0,435.0,453.0,480.0,435.0,433.0,447.0,451,298 +Essen,82,348,-,-,-,-,-,-,-,-,-,256.0,600.0,524.0,297.0,736.0,350.0,258.0,397.0,188.0,454.0,160.0,75.0,475.0,655.0,384.0,327.0,646.0,87.0,599.0,465.0,135.0,676.0,560.0,525.0,359.0,474.0,472.0,292.0,535.0,290,360 +Frankfurt/Main,178,476,-,-,-,-,-,-,-,-,-,-,661.0,262.0,95.0,502.0,509.0,362.0,135.0,190.0,599.0,125.0,185.0,407.0,430.0,445.0,106.0,412.0,280.0,704.0,235.0,340.0,330.0,326.0,686.0,188.0,629.0,200.0,235.0,310.0,500,130 +Frankfurt/Oder,523,269,-,-,-,-,-,-,-,-,-,-,-,873.0,547.0,759.0,382.0,331.0,743.0,440.0,446.0,683.0,626.0,211.0,812.0,202.0,730.0,669.0,523.0,279.0,499.0,483.0,559.0,584.0,317.0,815.0,306.0,704.0,799.0,677.0,558,647 +Freiburg,124,683,-,-,-,-,-,-,-,-,-,-,-,-,357.0,490.0,759.0,624.0,130.0,457.0,852.0,333.0,435.0,642.0,175.0,700.0,195.0,400.0,548.0,942.0,378.0,556.0,480.0,480.0,935.0,312.0,881.0,207.0,360.0,268.0,716,318 +Fulda,234,438,-,-,-,-,-,-,-,-,-,-,-,-,-,477.0,410.0,272.0,238.0,105.0,504.0,227.0,277.0,311.0,390.0,346.0,166.0,382.0,304.0,605.0,202.0,290.0,412.0,295.0,577.0,290.0,525.0,260.0,345.0,270.0,450,100 +Garmisch-Part.,337,723,-,-,-,-,-,-,-,-,-,-,-,-,-,-,869.0,742.0,360.0,575.0,960.0,580.0,675.0,513.0,155.0,615.0,444.0,89.0,763.0,813.0,267.0,755.0,293.0,195.0,866.0,508.0,855.0,300.0,611.0,181.0,915,389 +Hamburg,260,155,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,154.0,640.0,312.0,85.0,520.0,381.0,387.0,806.0,271.0,580.0,772.0,260.0,235.0,616.0,200.0,816.0,710.0,140.0,690.0,120.0,668.0,624.0,686.0,220,512 +Hannover,244,267,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,500.0,238.0,238.0,410.0,295.0,252.0,656.0,136.0,433.0,647.0,190.0,395.0,476.0,135.0,676.0,567.0,327.0,553.0,269.0,526.0,487.0,536.0,225,369 +Karlsruhe,156,588,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,330.0,731.0,206.0,310.0,515.0,273.0,576.0,58.0,270.0,421.0,815.0,253.0,429.0,459.0,353.0,802.0,188.0,754.0,81.0,233.0,160.0,589,195 +Kassel,222,374,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,405.0,243.0,243.0,278.0,490.0,247.0,265.0,482.0,200.0,508.0,309.0,190.0,509.0,404.0,477.0,383.0,428.0,360.0,361.0,370.0,345,209 +Kiel,270,83,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,600.0,493.0,485.0,895.0,369.0,671.0,882.0,348.0,280.0,702.0,297.0,911.0,800.0,194.0,778.0,139.0,762.0,714.0,715.0,315,605 +Koblenz,114,462,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,110.0,454.0,501.0,496.0,145.0,521.0,243.0,760.0,350.0,300.0,580.0,445.0,687.0,203.0,635.0,270.0,128.0,381.0,460,248 +Köln,77,390,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,488.0,604.0,417.0,247.0,578.0,144.0,646.0,415.0,200.0,611.0,510.0,562.0,283.0,521.0,367.0,217.0,484.0,360,300 +Leipzig,403,362,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,564.0,108.0,497.0,436.0,450.0,322.0,266.0,410.0,461.0,349.0,375.0,585.0,364.0,471.0,568.0,444.0,485,410 +Lindau,203,712,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,727.0,363.0,194.0,683.0,879.0,301.0,733.0,364.0,310.0,932.0,480.0,908.0,216.0,417.0,126.0,888,309 +Magdeburg,356,293,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,505.0,522.0,342.0,269.0,360.0,291.0,563.0,449.0,316.0,611.0,311.0,573.0,599.0,537.0,366,460 +Mannheim,174,539,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,347.0,350.0,761.0,248.0,410.0,444.0,343.0,731.0,117.0,686.0,138.0,146.0,214.0,570,162 +München,372,672,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,668.0,731.0,162.0,655.0,180.0,106.0,771.0,413.0,773.0,210.0,522.0,124.0,825,294 +Münster,113,312,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,529.0,490.0,60.0,695.0,585.0,471.0,427.0,398.0,502.0,361.0,560.0,220,385 +Neubrandenburg,433,156,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,567.0,436.0,762.0,644.0,103.0,870.0,187.0,764.0,871.0,741.0,474,752 +Nürnberg,335,550,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,485.0,205.0,105.0,615.0,356.0,604.0,213.0,309.0,188.0,645,108 +Osnabrück,144,274,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,746.0,585.0,367.0,478.0,317.0,557.0,412.0,610.0,160,390 +Passau,472,625,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,128.0,814.0,562.0,803.0,400.0,618.0,310.0,860,323 +Regensburg,393,583,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,702.0,455.0,699.0,286.0,504.0,208.0,740,207 +Rostock,381,111,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,848.0,90.0,809.0,821.0,791.0,424,702 +Saarbrücken,67,561,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,822.0,210.0,103.0,303.0,633,309 +Schwerin,343,143,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,789.0,763.0,771.0,335,612 +Stuttgart,205,614,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,307.0,100.0,717,157 +Trier,48,508,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,418.0,515,351 +Ulm,256,647,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,770,180 +Wilhelmshaven,149,155,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,554 +Würzburg,269,512,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/06_travelingsalesman/02_deutschlandkarte_4staedte.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/06_travelingsalesman/02_deutschlandkarte_4staedte.csv new file mode 100644 index 0000000..3e9410f --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/06_travelingsalesman/02_deutschlandkarte_4staedte.csv @@ -0,0 +1,29 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,1 +# Größe der Knoten +vertexSize,10 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,0 +# Kantenfarben: Farbbeschreibung (z.B. red) oder RGB-Hexcode (z.B. #FF0000) oder invisible +# Reihenfolge: normale Kanten, markierte Kanten, gelöschte Kanten +edgeColor,invisible,FF0000,A0A0A0 +# Knotenfarben: Farbbeschreibung (z.B. red) oder RGB-Hexcode (z.B. #FF0000) oder invisible +# Reihenfolge: markiert (+1), besucht(+2), beendet(+4), z.B. markiert+beender=>6.Farbe +vertexColor,A0A0A0,FF0000,FFFF00,00FFFF,AA00AA,888800,008888,880088,00a0FF,a400FF,FFa400,FF00a4,00FFa4,a4FF00 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,deutschland_bundeslaende_bunt.png +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,1 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzmatrix vor. +# Jede Zeile steht fuer einen Knoten, durch Kommas getrennt stehen die Kantengewicht zu jedem anderen Knoten. +matrix,infotext +Aachen,25,415,-,570.0,532.0,637.0 +Augsburg,322,655,-,-,239.0,593.0 +Bayreuth,358,502,-,-,-,352.0 +Berlin,457,250,-,-,-,- \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/06_travelingsalesman/03_deutschlandkarte_5staedte.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/06_travelingsalesman/03_deutschlandkarte_5staedte.csv new file mode 100644 index 0000000..48e412a --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/06_travelingsalesman/03_deutschlandkarte_5staedte.csv @@ -0,0 +1,30 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,1 +# Größe der Knoten +vertexSize,10 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,0 +# Kantenfarben: Farbbeschreibung (z.B. red) oder RGB-Hexcode (z.B. #FF0000) oder invisible +# Reihenfolge: normale Kanten, markierte Kanten, gelöschte Kanten +edgeColor,invisible,FF0000,A0A0A0 +# Knotenfarben: Farbbeschreibung (z.B. red) oder RGB-Hexcode (z.B. #FF0000) oder invisible +# Reihenfolge: markiert (+1), besucht(+2), beendet(+4), z.B. markiert+beender=>6.Farbe +vertexColor,A0A0A0,FF0000,FFFF00,00FFFF,AA00AA,888800,008888,880088,00a0FF,a400FF,FFa400,FF00a4,00FFa4,a4FF00 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,deutschland_bundeslaende_bunt.png +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,1 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzmatrix vor. +# Jede Zeile steht fuer einen Knoten, durch Kommas getrennt stehen die Kantengewicht zu jedem anderen Knoten. +matrix,infotext +Aachen,25,415,-,570.0,532.0,637.0,369.0 +Augsburg,322,655,-,-,239.0,593.0,715.0 +Bayreuth,358,502,-,-,-,352.0,572.0 +Berlin,457,250,-,-,-,-,375.0 +Bremen,192,196,-,-,-,-,- \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/06_travelingsalesman/04_deutschlandkarte_6staedte.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/06_travelingsalesman/04_deutschlandkarte_6staedte.csv new file mode 100644 index 0000000..7896e03 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/06_travelingsalesman/04_deutschlandkarte_6staedte.csv @@ -0,0 +1,31 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,1 +# Größe der Knoten +vertexSize,10 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,0 +# Kantenfarben: Farbbeschreibung (z.B. red) oder RGB-Hexcode (z.B. #FF0000) oder invisible +# Reihenfolge: normale Kanten, markierte Kanten, gelöschte Kanten +edgeColor,invisible,FF0000,A0A0A0 +# Knotenfarben: Farbbeschreibung (z.B. red) oder RGB-Hexcode (z.B. #FF0000) oder invisible +# Reihenfolge: markiert (+1), besucht(+2), beendet(+4), z.B. markiert+beender=>6.Farbe +vertexColor,A0A0A0,FF0000,FFFF00,00FFFF,AA00AA,888800,008888,880088,00a0FF,a400FF,FFa400,FF00a4,00FFa4,a4FF00 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,deutschland_bundeslaende_bunt.png +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,1 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzmatrix vor. +# Jede Zeile steht fuer einen Knoten, durch Kommas getrennt stehen die Kantengewicht zu jedem anderen Knoten. +matrix,infotext +Aachen,25,415,-,570.0,532.0,637.0,369.0,739.0 +Augsburg,322,655,-,-,239.0,593.0,715.0,574.0 +Bayreuth,358,502,-,-,-,352.0,572.0,339.0 +Berlin,457,250,-,-,-,-,375.0,125.0 +Bremen,192,196,-,-,-,-,-,496.0 +Cottbus,509,312,-,-,-,-,-,- \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/06_travelingsalesman/05_deutschlandkarte_7staedte.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/06_travelingsalesman/05_deutschlandkarte_7staedte.csv new file mode 100644 index 0000000..0623eac --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/06_travelingsalesman/05_deutschlandkarte_7staedte.csv @@ -0,0 +1,32 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,1 +# Größe der Knoten +vertexSize,10 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,0 +# Kantenfarben: Farbbeschreibung (z.B. red) oder RGB-Hexcode (z.B. #FF0000) oder invisible +# Reihenfolge: normale Kanten, markierte Kanten, gelöschte Kanten +edgeColor,invisible,FF0000,A0A0A0 +# Knotenfarben: Farbbeschreibung (z.B. red) oder RGB-Hexcode (z.B. #FF0000) oder invisible +# Reihenfolge: markiert (+1), besucht(+2), beendet(+4), z.B. markiert+beender=>6.Farbe +vertexColor,A0A0A0,FF0000,FFFF00,00FFFF,AA00AA,888800,008888,880088,00a0FF,a400FF,FFa400,FF00a4,00FFa4,a4FF00 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,deutschland_bundeslaende_bunt.png +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,1 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzmatrix vor. +# Jede Zeile steht fuer einen Knoten, durch Kommas getrennt stehen die Kantengewicht zu jedem anderen Knoten. +matrix,infotext +Aachen,25,415,-,570.0,532.0,637.0,369.0,739.0,651.0 +Augsburg,322,655,-,-,239.0,593.0,715.0,574.0,472.0 +Bayreuth,358,502,-,-,-,352.0,572.0,339.0,237.0 +Berlin,457,250,-,-,-,-,375.0,125.0,214.0 +Bremen,192,196,-,-,-,-,-,496.0,478.0 +Cottbus,509,312,-,-,-,-,-,-,138.0 +Dresden,479,388,-,-,-,-,-,-,- \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/06_travelingsalesman/06_deutschlandkarte_8staedte.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/06_travelingsalesman/06_deutschlandkarte_8staedte.csv new file mode 100644 index 0000000..ef9eee2 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/06_travelingsalesman/06_deutschlandkarte_8staedte.csv @@ -0,0 +1,33 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,1 +# Größe der Knoten +vertexSize,10 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,0 +# Kantenfarben: Farbbeschreibung (z.B. red) oder RGB-Hexcode (z.B. #FF0000) oder invisible +# Reihenfolge: normale Kanten, markierte Kanten, gelöschte Kanten +edgeColor,invisible,FF0000,A0A0A0 +# Knotenfarben: Farbbeschreibung (z.B. red) oder RGB-Hexcode (z.B. #FF0000) oder invisible +# Reihenfolge: markiert (+1), besucht(+2), beendet(+4), z.B. markiert+beender=>6.Farbe +vertexColor,A0A0A0,FF0000,FFFF00,00FFFF,AA00AA,888800,008888,880088,00a0FF,a400FF,FFa400,FF00a4,00FFa4,a4FF00 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,deutschland_bundeslaende_bunt.png +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,1 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzmatrix vor. +# Jede Zeile steht fuer einen Knoten, durch Kommas getrennt stehen die Kantengewicht zu jedem anderen Knoten. +matrix,infotext +Aachen,25,415,-,570.0,532.0,637.0,369.0,739.0,651.0,446.0 +Augsburg,322,655,-,-,239.0,593.0,715.0,574.0,472.0,422.0 +Bayreuth,358,502,-,-,-,352.0,572.0,339.0,237.0,187.0 +Berlin,457,250,-,-,-,-,375.0,125.0,214.0,288.0 +Bremen,192,196,-,-,-,-,-,496.0,478.0,351.0 +Cottbus,509,312,-,-,-,-,-,-,138.0,320.0 +Dresden,479,388,-,-,-,-,-,-,-,220.0 +Erfurt,313,400,-,-,-,-,-,-,-,- \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/06_travelingsalesman/07_deutschlandkarte_9staedte.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/06_travelingsalesman/07_deutschlandkarte_9staedte.csv new file mode 100644 index 0000000..5a8fcb7 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/06_travelingsalesman/07_deutschlandkarte_9staedte.csv @@ -0,0 +1,34 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,1 +# Größe der Knoten +vertexSize,10 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,0 +# Kantenfarben: Farbbeschreibung (z.B. red) oder RGB-Hexcode (z.B. #FF0000) oder invisible +# Reihenfolge: normale Kanten, markierte Kanten, gelöschte Kanten +edgeColor,invisible,FF0000,A0A0A0 +# Knotenfarben: Farbbeschreibung (z.B. red) oder RGB-Hexcode (z.B. #FF0000) oder invisible +# Reihenfolge: markiert (+1), besucht(+2), beendet(+4), z.B. markiert+beender=>6.Farbe +vertexColor,A0A0A0,FF0000,FFFF00,00FFFF,AA00AA,888800,008888,880088,00a0FF,a400FF,FFa400,FF00a4,00FFa4,a4FF00 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,deutschland_bundeslaende_bunt.png +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,1 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzmatrix vor. +# Jede Zeile steht fuer einen Knoten, durch Kommas getrennt stehen die Kantengewicht zu jedem anderen Knoten. +matrix,infotext +Aachen,25,415,-,570.0,532.0,637.0,369.0,739.0,651.0,446.0,123.0 +Augsburg,322,655,-,-,239.0,593.0,715.0,574.0,472.0,422.0,601.0 +Bayreuth,358,502,-,-,-,352.0,572.0,339.0,237.0,187.0,494.0 +Berlin,457,250,-,-,-,-,375.0,125.0,214.0,288.0,480.0 +Bremen,192,196,-,-,-,-,-,496.0,478.0,351.0,249.0 +Cottbus,509,312,-,-,-,-,-,-,138.0,320.0,608.0 +Dresden,479,388,-,-,-,-,-,-,-,220.0,581.0 +Erfurt,313,400,-,-,-,-,-,-,-,-,367.0 +Essen,82,348,-,-,-,-,-,-,-,-,- \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/06_travelingsalesman/08_deutschlandkarte_10staedte.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/06_travelingsalesman/08_deutschlandkarte_10staedte.csv new file mode 100644 index 0000000..b48ab67 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/06_travelingsalesman/08_deutschlandkarte_10staedte.csv @@ -0,0 +1,35 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,1 +# Größe der Knoten +vertexSize,10 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,0 +# Kantenfarben: Farbbeschreibung (z.B. red) oder RGB-Hexcode (z.B. #FF0000) oder invisible +# Reihenfolge: normale Kanten, markierte Kanten, gelöschte Kanten +edgeColor,invisible,FF0000,A0A0A0 +# Knotenfarben: Farbbeschreibung (z.B. red) oder RGB-Hexcode (z.B. #FF0000) oder invisible +# Reihenfolge: markiert (+1), besucht(+2), beendet(+4), z.B. markiert+beender=>6.Farbe +vertexColor,A0A0A0,FF0000,FFFF00,00FFFF,AA00AA,888800,008888,880088,00a0FF,a400FF,FFa400,FF00a4,00FFa4,a4FF00 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,deutschland_bundeslaende_bunt.png +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,1 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzmatrix vor. +# Jede Zeile steht fuer einen Knoten, durch Kommas getrennt stehen die Kantengewicht zu jedem anderen Knoten. +matrix,infotext +Aachen,25,415,-,570.0,532.0,637.0,369.0,739.0,651.0,446.0,123.0,240.0 +Augsburg,322,655,-,-,239.0,593.0,715.0,574.0,472.0,422.0,601.0,365.0 +Bayreuth,358,502,-,-,-,352.0,572.0,339.0,237.0,187.0,494.0,264.0 +Berlin,457,250,-,-,-,-,375.0,125.0,214.0,288.0,480.0,564.0 +Bremen,192,196,-,-,-,-,-,496.0,478.0,351.0,249.0,450.0 +Cottbus,509,312,-,-,-,-,-,-,138.0,320.0,608.0,585.0 +Dresden,479,388,-,-,-,-,-,-,-,220.0,581.0,485.0 +Erfurt,313,400,-,-,-,-,-,-,-,-,367.0,268.0 +Essen,82,348,-,-,-,-,-,-,-,-,-,256.0 +Frankfurt/Main,178,476,-,-,-,-,-,-,-,-,-,- \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/07_mapcoloring/01_coloring_land.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/07_mapcoloring/01_coloring_land.csv new file mode 100644 index 0000000..3135241 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/07_mapcoloring/01_coloring_land.csv @@ -0,0 +1,27 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,0 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,0 +# Kantenfarben: RGB-Hexcode (z.B. FF0000) oder invisible +# Reihenfolge: normale Kanten, markierte Kanten, gelöschte Kanten +edgeColor,606060,FF5080,D0D0D0 +# Knotenfarben: RGB-Hexcode (z.B. FF0000) oder invisible +# Reihenfolge: nichts, markiert, besucht, besucht und markiert +# mind. 12 Farben müssen angegeben werden.vertexColor,A0A0A0,FF0000,FFFF00,00FFFF,AA00AA,888800,008888,880088,00a0FF,a400FF,FFa400,FF00a4,00FFa4,a4FF00 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,1_coloring_news_trans.png +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,0 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list +161,53,1,3 +227,142,0,2 +154,227,1,3 +65,147,0,2 \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/07_mapcoloring/02_coloring_land.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/07_mapcoloring/02_coloring_land.csv new file mode 100644 index 0000000..af28b5e --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/07_mapcoloring/02_coloring_land.csv @@ -0,0 +1,24 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,0 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,0 +# Knotenfarben: RGB-Hexcode (z.B. FF0000) oder invisible +# Reihenfolge: nichts, markiert, besucht, besucht und markiert +# mind. 12 Farben müssen angegeben werden.vertexColor,A0A0A0,FF0000,FFFF00,00FFFF,AA00AA,888800,008888,880088,00a0FF,a400FF,FFa400,FF00a4,00FFa4,a4FF00 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,2_coloring_news_trans.png +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,0 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list +177,46,1,3 +226,143,0,2,3 +147,227,1,3 +83,134,0,1,2 \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/07_mapcoloring/03_coloring_land.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/07_mapcoloring/03_coloring_land.csv new file mode 100644 index 0000000..1eb98e2 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/07_mapcoloring/03_coloring_land.csv @@ -0,0 +1,29 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,0 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,0 +# Knotenfarben: RGB-Hexcode (z.B. FF0000) oder invisible +# Reihenfolge: nichts, markiert, besucht, besucht und markiert +# mind. 12 Farben müssen angegeben werden.vertexColor,A0A0A0,FF0000,FFFF00,00FFFF,AA00AA,888800,008888,880088,00a0FF,a400FF,FFa400,FF00a4,00FFa4,a4FF00 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,3_coloring_land1_trans.png +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,0 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list +38,66,1,7 +111,61,0,2 +170,119,1,3,7 +188,236,2,4,8 +206,315,3,5 +129,316,4,6,8 +54,310,5,7 +30,210,0,2,6,8 +119,259,3,5,7 \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/07_mapcoloring/04_coloring_land.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/07_mapcoloring/04_coloring_land.csv new file mode 100644 index 0000000..280da25 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/07_mapcoloring/04_coloring_land.csv @@ -0,0 +1,28 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,0 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,0 +# Knotenfarben: RGB-Hexcode (z.B. FF0000) oder invisible +# Reihenfolge: nichts, markiert, besucht, besucht und markiert +# mind. 12 Farben müssen angegeben werden.vertexColor,A0A0A0,FF0000,FFFF00,00FFFF,AA00AA,888800,008888,880088,00a0FF,a400FF,FFa400,FF00a4,00FFa4,a4FF00 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,4_coloring_land2_trans.png +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,0 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list +66,130,1,6,7 +146,51,0,2,7 +257,38,1,3,7 +384,53,2,4,7 +380,180,3,5,7 +289,255,4,6 +114,237,0,5,7 +216,151,0,1,2,3,4,6 \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/07_mapcoloring/05_coloring_land.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/07_mapcoloring/05_coloring_land.csv new file mode 100644 index 0000000..5fb2a8c --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/07_mapcoloring/05_coloring_land.csv @@ -0,0 +1,26 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,0 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,0 +# Knotenfarben: RGB-Hexcode (z.B. FF0000) oder invisible +# Reihenfolge: nichts, markiert, besucht, besucht und markiert +# mind. 12 Farben müssen angegeben werden.vertexColor,A0A0A0,FF0000,FFFF00,00FFFF,AA00AA,888800,008888,880088,00a0FF,a400FF,FFa400,FF00a4,00FFa4,a4FF00 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,6_coloring_land4_trans.png +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,0 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list +71,49,1,5 +170,70,0,2,5 +164,231,1,3,5 +94,290,2,4,5 +33,280,3,5 +60,120,0,1,2,3,4 \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/07_mapcoloring/06_coloring_land.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/07_mapcoloring/06_coloring_land.csv new file mode 100644 index 0000000..aef854a --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/07_mapcoloring/06_coloring_land.csv @@ -0,0 +1,30 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,0 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,0 +# Knotenfarben: RGB-Hexcode (z.B. FF0000) oder invisible +# Reihenfolge: nichts, markiert, besucht, besucht und markiert +# mind. 12 Farben müssen angegeben werden.vertexColor,A0A0A0,FF0000,FFFF00,00FFFF,AA00AA,888800,008888,880088,00a0FF,a400FF,FFa400,FF00a4,00FFa4,a4FF00 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,5_coloring_land3_trans.png +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,0 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list +35,46,1,9,8 +140,49,0,3,2,7,8 +189,25,1,3 +278,74,1,2,4,7 +370,60,3,5,7 +423,263,4,6,7 +148,267,5,7,8,9 +280,170,1,3,4,5,6,8 +90,130,0,1,6,7,9 +26,224,0,6,8 \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/07_mapcoloring/07_coloring_painter.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/07_mapcoloring/07_coloring_painter.csv new file mode 100644 index 0000000..f4c1a2c --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/07_mapcoloring/07_coloring_painter.csv @@ -0,0 +1,42 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,0 +# Größe der Knoten +vertexSize,12 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,0 +# Knotenfarben: RGB-Hexcode (z.B. FF0000) oder invisible +# Reihenfolge: nichts, markiert, besucht, besucht und markiert +# mind. 12 Farben müssen angegeben werden.vertexColor,A0A0A0,FF0000,FFFF00,00FFFF,AA00AA,888800,008888,880088,00a0FF,a400FF,FFa400,FF00a4,00FFa4,a4FF00 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,7_coloring_maler_trans.png +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,0 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzmatrix vor. +# Jede Zeile steht fuer einen Knoten, durch Kommas getrennt stehen die Kantengewicht zu jedem anderen Knoten. +matrix +80,40,-,0.0,-,-,-,0.0,-,-,-,-,-,-,-,-,-,-,-,-,-,- +114,28,-,-,0.0,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- +145,29,-,-,-,0.0,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- +170,53,-,-,-,-,0.0,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- +193,69,-,-,-,-,-,-,-,0.0,-,-,-,-,-,-,-,-,-,-,-,- +114,84,-,-,-,-,-,-,0.0,-,-,-,-,-,-,-,-,-,-,-,-,- +136,87,-,-,-,-,-,-,-,0.0,-,-,-,-,-,-,-,-,-,-,-,- +211,88,-,-,-,-,-,-,-,-,0.0,0.0,-,-,-,-,-,-,-,-,-,- +190,131,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- +209,149,-,-,-,-,-,-,-,-,-,-,0.0,-,-,-,-,-,-,-,-,- +209,170,-,-,-,-,-,-,-,-,-,-,-,0.0,-,-,-,-,-,-,-,- +172,189,-,-,-,-,-,-,-,-,-,-,-,-,0.0,-,-,-,-,-,-,- +121,199,-,-,-,-,-,-,-,-,-,-,-,-,-,0.0,-,-,-,-,-,- +121,229,-,-,-,-,-,-,-,-,-,-,-,-,-,-,0.0,-,-,-,-,- +120,250,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,0.0,0.0,0.0,-,- +92,289,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,0.0,- +146,272,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,0.0,- +180,250,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,0.0,- +177,290,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,0.0 +182,314,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/07_mapcoloring/08_karte_eu.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/07_mapcoloring/08_karte_eu.csv new file mode 100644 index 0000000..5d13744 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/07_mapcoloring/08_karte_eu.csv @@ -0,0 +1,49 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,0 +# Größe der Knoten +vertexSize,19 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,0 +# Knotenfarben: RGB-Hexcode (z.B. FF0000) oder invisible +# Reihenfolge: nichts, markiert, besucht, besucht und markiert +# mind. 12 Farben müssen angegeben werden.vertexColor,A0A0A0,FF0000,FFFF00,00FFFF,AA00AA,888800,008888,880088,00a0FF,a400FF,FFa400,FF00a4,00FFa4,a4FF00 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,karte_eu.png +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,0 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzmatrix vor. +# Jede Zeile steht fuer einen Knoten, durch Kommas getrennt stehen die Kantengewicht zu jedem anderen Knoten. +matrix +500,224,-,-,-,-,0.0,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- +489,145,-,-,0.0,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- +390,160,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- +135,329,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- +502,259,-,-,-,-,-,0.0,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- +493,294,-,-,-,-,-,-,0.0,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- +454,356,-,-,-,-,-,-,-,0.0,0.0,-,-,-,-,-,-,-,0.0,-,-,-,-,-,-,-,-,-,- +409,419,-,-,-,-,-,-,-,-,0.0,-,-,-,-,-,-,0.0,0.0,-,-,-,-,-,-,-,-,-,- +336,405,-,-,-,-,-,-,-,-,-,0.0,0.0,0.0,0.0,0.0,-,0.0,-,-,-,-,-,-,-,-,-,-,- +330,304,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- +285,366,-,-,-,-,-,-,-,-,-,-,-,0.0,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- +272,397,-,-,-,-,-,-,-,-,-,-,-,-,0.0,0.0,-,-,-,-,-,-,-,-,-,-,-,-,- +291,417,-,-,-,-,-,-,-,-,-,-,-,-,-,0.0,-,-,-,-,-,-,-,-,-,-,-,-,- +245,478,-,-,-,-,-,-,-,-,-,-,-,-,-,-,0.0,-,-,-,-,-,-,-,-,0.0,-,-,- +341,511,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,0.0,-,-,-,-,-,-,0.0,-,-,-,- +401,457,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,0.0,0.0,-,-,-,-,0.0,-,-,-,- +457,432,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,0.0,-,-,-,-,-,-,-,-,- +463,462,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,0.0,-,-,0.0,0.0,-,-,-,- +540,474,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,0.0,-,-,-,-,-,-,- +553,535,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,0.0,-,-,-,-,-,- +520,603,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- +429,492,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,0.0,-,-,-,- +403,487,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- +134,591,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,0.0,-,- +76,572,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- +705,646,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- +409,684,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/07_mapcoloring/09_karte_usa.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/07_mapcoloring/09_karte_usa.csv new file mode 100644 index 0000000..5a44921 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/07_mapcoloring/09_karte_usa.csv @@ -0,0 +1,72 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,0 +# Größe der Knoten +vertexSize,19 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,0 +# Knotenfarben: RGB-Hexcode (z.B. FF0000) oder invisible +# Reihenfolge: nichts, markiert, besucht, besucht und markiert +# mind. 12 Farben müssen angegeben werden.vertexColor,A0A0A0,FF0000,FFFF00,00FFFF,AA00AA,888800,008888,880088,00a0FF,a400FF,FFa400,FF00a4,00FFa4,a4FF00 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,karte_usa.png +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,0 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list +154,82,1,2 +88,140,0,2,9,11 +199,160,0,1,3,4,9,10 +261,108,2,4,5,6 +310,213,2,3,6,7,8,10 +430,112,3,6,21 +446,190,3,4,5,7,20,21 +433,249,4,6,8,16,20 +328,326,4,7,10,13,15,16 +129,263,1,2,10,11,12 +228,297,2,4,8,9,12 +66,308,1,9,12 +205,413,9,10,11,13 +309,416,8,12,14 +480,480,13,15,17,18 +485,403,8,14,16,18,19 +474,333,7,8,15,19 +583,499,14,18,35 +578,416,14,15,17,19,30,35 +577,362,15,16,18,20,25,28,30 +557,249,6,7,19,21,22,25 +538,160,5,6,20,22 +623,196,20,21,23,25 +654,139,22 +700,207,26,27 +634,296,19,20,22,26,28 +686,289,24,25,27,28 +740,270,24,26,28,29,37 +706,353,19,25,26,27,29,30,49 +784,308,27,28,37,46,49 +681,389,18,19,28,31,33,34,35,49 +826,373,30,32,49 +807,421,31,33 +750,425,30,32,34,36 +694,484,30,33,35,36 +638,468,17,18,30,34 +791,527,33,34 +823,245,27,29,38,45,46 +861,186,37,39,42,43,45 +898,150,38,40,41,42 +920,163,39,41,42 +947,113,39,40 +918,186,38,39,40,43,44 +909,217,38,42,44 +943,203,42,43 +897,257,37,38,46 +850,280,29,37,45,49 +113,549 +333,607 +829,332,28,29,30,31,46 \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/08_minimalspanningtree/01_muddy_city.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/08_minimalspanningtree/01_muddy_city.csv new file mode 100644 index 0000000..87fd31e --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/08_minimalspanningtree/01_muddy_city.csv @@ -0,0 +1,29 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,1 +# Größe der Knoten +vertexSize,17 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,0 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,1_mst_muddy_city_trans.png +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,1 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list +123,41,1,5.0,2,3.0,4,4.0 +295,56,0,5.0,3,3.0,5,2.0,2,3.0,9,4.0 +197,90,0,3.0,1,3.0,5,3.0,6,4.0,4,5.0 +377,97,1,3.0,9,2.0 +75,141,0,4.0,2,5.0,7,2.0,6,4.0 +251,144,1,2.0,2,3.0,9,3.0,8,3.0,6,4.0 +160,196,2,4.0,4,4.0,5,4.0,8,2.0,7,3.0 +50,244,4,2.0,6,3.0,8,3.0 +232,255,5,3.0,6,2.0,7,3.0,9,4.0 +358,202,1,4.0,3,2.0,5,3.0,8,4.0 \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/08_minimalspanningtree/02_deutschlandkarte.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/08_minimalspanningtree/02_deutschlandkarte.csv new file mode 100644 index 0000000..07ac597 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/08_minimalspanningtree/02_deutschlandkarte.csv @@ -0,0 +1,65 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,1 +# Größe der Knoten +vertexSize,10 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,0 +# Kantenfarben: RGB-Hexcode (z.B. FF0000) oder invisible +# Reihenfolge: normale Kanten, markierte Kanten, gelöschte Kanten +edgeColor,invisible,FF0000,A0A0A0 +# Knotenfarben: RGB-Hexcode (z.B. FF0000) oder invisible +# Reihenfolge: nichts, markiert, besucht, besucht und markiert +# mind. 12 Farben müssen angegeben werden.vertexColor,A0A0A0,FF0000,FFFF00,00FFFF,AA00AA,888800,008888,880088,00a0FF,a400FF,FFa400,FF00a4,00FFa4,a4FF00 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,deutschland_bundeslaende_bunt.png +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,1 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzmatrix vor. +# Jede Zeile steht fuer einen Knoten, durch Kommas getrennt stehen die Kantengewicht zu jedem anderen Knoten. +matrix,infotext +Aachen,25,415,-,570.0,532.0,637.0,369.0,739.0,651.0,446.0,123.0,240.0,721.0,466.0,330.0,740.0,475.0,354.0,345.0,307.0,556.0,145.0,60.0,573.0,625.0,496.0,284.0,650.0,206.0,715.0,472.0,256.0,683.0,570.0,642.0,321.0,590.0,408.0,255.0,505.0,418.0,367.0 +Augsburg,322,655,-,-,239.0,593.0,715.0,574.0,472.0,422.0,601.0,365.0,649.0,340.0,335.0,117.0,720.0,600.0,221.0,432.0,820.0,430.0,538.0,431.0,184.0,530.0,297.0,61.0,620.0,729.0,180.0,580.0,232.0,167.0,782.0,356.0,742.0,149.0,475.0,83.0,825.0,243.0 +Bayreuth,358,502,-,-,-,352.0,572.0,339.0,237.0,187.0,494.0,264.0,414.0,457.0,187.0,334.0,596.0,460.0,337.0,278.0,693.0,345.0,431.0,198.0,372.0,295.0,329.0,244.0,520.0,494.0,74.0,635.0,273.0,159.0,547.0,446.0,562.0,264.0,485.0,252.0,682.0,147.0 +Berlin,457,250,-,-,-,-,375.0,125.0,214.0,288.0,480.0,564.0,91.0,800.0,474.0,686.0,279.0,258.0,670.0,367.0,343.0,610.0,553.0,184.0,739.0,131.0,657.0,596.0,450.0,130.0,426.0,410.0,625.0,511.0,237.0,745.0,200.0,631.0,725.0,604.0,485.0,490.0 +Bremen,192,196,-,-,-,-,-,496.0,478.0,351.0,249.0,450.0,467.0,722.0,388.0,856.0,110.0,118.0,595.0,288.0,205.0,415.0,315.0,367.0,780.0,251.0,541.0,766.0,170.0,353.0,590.0,120.0,796.0,690.0,277.0,590.0,228.0,645.0,524.0,660.0,110.0,490.0 +Cottbus,509,312,-,-,-,-,-,-,138.0,320.0,608.0,585.0,119.0,800.0,490.0,686.0,430.0,378.0,670.0,502.0,511.0,633.0,683.0,244.0,739.0,233.0,660.0,596.0,579.0,304.0,426.0,528.0,478.0,440.0,382.0,768.0,359.0,631.0,748.0,604.0,598.0,485.0 +Dresden,479,388,-,-,-,-,-,-,-,220.0,581.0,485.0,177.0,700.0,390.0,586.0,492.0,385.0,570.0,402.0,573.0,533.0,583.0,140.0,639.0,228.0,560.0,496.0,597.0,366.0,325.0,590.0,378.0,340.0,444.0,668.0,421.0,531.0,648.0,504.0,660.0,385.0 +Erfurt,313,400,-,-,-,-,-,-,-,-,367.0,268.0,366.0,533.0,180.0,515.0,376.0,289.0,403.0,135.0,459.0,318.0,373.0,170.0,567.0,209.0,339.0,425.0,384.0,438.0,264.0,373.0,459.0,344.0,435.0,453.0,480.0,435.0,433.0,447.0,451.0,298.0 +Essen,82,348,-,-,-,-,-,-,-,-,-,256.0,600.0,524.0,297.0,736.0,350.0,258.0,397.0,188.0,454.0,160.0,75.0,475.0,655.0,384.0,327.0,646.0,87.0,599.0,465.0,135.0,676.0,560.0,525.0,359.0,474.0,472.0,292.0,535.0,290.0,360.0 +Frankfurt/Main,178,476,-,-,-,-,-,-,-,-,-,-,661.0,262.0,95.0,502.0,509.0,362.0,135.0,190.0,599.0,125.0,185.0,407.0,430.0,445.0,106.0,412.0,280.0,704.0,235.0,340.0,330.0,326.0,686.0,188.0,629.0,200.0,235.0,310.0,500.0,130.0 +Frankfurt/Oder,523,269,-,-,-,-,-,-,-,-,-,-,-,873.0,547.0,759.0,382.0,331.0,743.0,440.0,446.0,683.0,626.0,211.0,812.0,202.0,730.0,669.0,523.0,279.0,499.0,483.0,559.0,584.0,317.0,815.0,306.0,704.0,799.0,677.0,558.0,647.0 +Freiburg,124,683,-,-,-,-,-,-,-,-,-,-,-,-,357.0,490.0,759.0,624.0,130.0,457.0,852.0,333.0,435.0,642.0,175.0,700.0,195.0,400.0,548.0,942.0,378.0,556.0,480.0,480.0,935.0,312.0,881.0,207.0,360.0,268.0,716.0,318.0 +Fulda,234,438,-,-,-,-,-,-,-,-,-,-,-,-,-,477.0,410.0,272.0,238.0,105.0,504.0,227.0,277.0,311.0,390.0,346.0,166.0,382.0,304.0,605.0,202.0,290.0,412.0,295.0,577.0,290.0,525.0,260.0,345.0,270.0,450.0,100.0 +Garmisch-Part.,337,723,-,-,-,-,-,-,-,-,-,-,-,-,-,-,869.0,742.0,360.0,575.0,960.0,580.0,675.0,513.0,155.0,615.0,444.0,89.0,763.0,813.0,267.0,755.0,293.0,195.0,866.0,508.0,855.0,300.0,611.0,181.0,915.0,389.0 +Hamburg,260,155,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,154.0,640.0,312.0,85.0,520.0,381.0,387.0,806.0,271.0,580.0,772.0,260.0,235.0,616.0,200.0,816.0,710.0,140.0,690.0,120.0,668.0,624.0,686.0,220.0,512.0 +Hannover,244,267,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,500.0,238.0,238.0,410.0,295.0,252.0,656.0,136.0,433.0,647.0,190.0,395.0,476.0,135.0,676.0,567.0,327.0,553.0,269.0,526.0,487.0,536.0,225.0,369.0 +Karlsruhe,156,588,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,330.0,731.0,206.0,310.0,515.0,273.0,576.0,58.0,270.0,421.0,815.0,253.0,429.0,459.0,353.0,802.0,188.0,754.0,81.0,233.0,160.0,589.0,195.0 +Kassel,222,374,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,405.0,243.0,243.0,278.0,490.0,247.0,265.0,482.0,200.0,508.0,309.0,190.0,509.0,404.0,477.0,383.0,428.0,360.0,361.0,370.0,345.0,209.0 +Kiel,270,83,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,600.0,493.0,485.0,895.0,369.0,671.0,882.0,348.0,280.0,702.0,297.0,911.0,800.0,194.0,778.0,139.0,762.0,714.0,715.0,315.0,605.0 +Koblenz,114,462,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,110.0,454.0,501.0,496.0,145.0,521.0,243.0,760.0,350.0,300.0,580.0,445.0,687.0,203.0,635.0,270.0,128.0,381.0,460.0,248.0 +Köln,77,390,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,488.0,604.0,417.0,247.0,578.0,144.0,646.0,415.0,200.0,611.0,510.0,562.0,283.0,521.0,367.0,217.0,484.0,360.0,300.0 +Leipzig,403,362,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,564.0,108.0,497.0,436.0,450.0,322.0,266.0,410.0,461.0,349.0,375.0,585.0,364.0,471.0,568.0,444.0,485.0,410.0 +Lindau,203,712,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,727.0,363.0,194.0,683.0,879.0,301.0,733.0,364.0,310.0,932.0,480.0,908.0,216.0,417.0,126.0,888.0,309.0 +Magdeburg,356,293,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,505.0,522.0,342.0,269.0,360.0,291.0,563.0,449.0,316.0,611.0,311.0,573.0,599.0,537.0,366.0,460.0 +Mannheim,174,539,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,347.0,350.0,761.0,248.0,410.0,444.0,343.0,731.0,117.0,686.0,138.0,146.0,214.0,570.0,162.0 +München,372,672,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,668.0,731.0,162.0,655.0,180.0,106.0,771.0,413.0,773.0,210.0,522.0,124.0,825.0,294.0 +Münster,113,312,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,529.0,490.0,60.0,695.0,585.0,471.0,427.0,398.0,502.0,361.0,560.0,220.0,385.0 +Neubrandenburg,433,156,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,567.0,436.0,762.0,644.0,103.0,870.0,187.0,764.0,871.0,741.0,474.0,752.0 +Nürnberg,335,550,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,485.0,205.0,105.0,615.0,356.0,604.0,213.0,309.0,188.0,645.0,108.0 +Osnabrück,144,274,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,746.0,585.0,367.0,478.0,317.0,557.0,412.0,610.0,160.0,390.0 +Passau,472,625,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,128.0,814.0,562.0,803.0,400.0,618.0,310.0,860.0,323.0 +Regensburg,393,583,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,702.0,455.0,699.0,286.0,504.0,208.0,740.0,207.0 +Rostock,381,111,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,848.0,90.0,809.0,821.0,791.0,424.0,702.0 +Saarbrücken,67,561,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,822.0,210.0,103.0,303.0,633.0,309.0 +Schwerin,343,143,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,789.0,763.0,771.0 +Stuttgart,205,614,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,307.0,100.0,717.0,157.0 +Trier,48,508,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,418.0,515.0,351.0 +Ulm,256,647,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,770.0,180.0 +Wilhelmshaven,149,155,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,554.0 +Würzburg,269,512,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/08_minimalspanningtree/03_badenbaden.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/08_minimalspanningtree/03_badenbaden.csv new file mode 100644 index 0000000..e6b2643 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/08_minimalspanningtree/03_badenbaden.csv @@ -0,0 +1,199 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,1 +# Größe der Knoten +vertexSize,9 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,0 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,badenbaden.png +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,1 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list +645,600,1,91.0,52,32.0 +655,690,0,91.0,2,62.0 +685,636,1,62.0,3,58.0,5,139.0 +686,578,2,58.0,4,122.0,52,54.0 +700,457,3,122.0,8,15.0,54,47.0 +782,536,2,139.0,6,59.0,16,154.0,17,139.0 +758,482,5,59.0,10,30.0 +768,407,8,74.0,10,46.0,50,92.0 +715,458,4,15.0,7,74.0,9,64.0 +779,463,8,64.0,11,13.0,15,88.0 +764,453,6,30.0,7,46.0,11,17.0 +781,450,9,13.0,10,17.0,12,98.0 +832,366,11,98.0,14,43.0,13,96.0 +860,274,12,96.0,51,48.0,64,123.0,96,53.0,97,100.0 +874,377,12,43.0,15,57.0 +861,432,9,88.0,14,57.0,16,27.0 +886,422,5,154.0,15,27.0,56,32.0 +914,491,5,139.0,19,128.0,57,24.0 +926,564,21,131.0,57,70.0,92,148.0 +817,575,17,128.0,20,33.0,22,212.0 +839,599,19,33.0,21,48.0 +822,644,18,131.0,20,48.0,99,112.0 +691,745,19,212.0,23,18.0,24,71.0 +703,758,22,18.0 +629,780,22,71.0,25,63.0,98,38.0 +598,725,24,63.0,26,37.0,27,32.0 +564,739,25,37.0,30,96.0 +589,694,25,32.0,28,77.0,29,68.0 +592,617,27,77.0,29,34.0,37,61.0 +562,632,27,68.0,28,34.0,30,33.0,32,67.0 +533,648,26,96.0,29,33.0,31,65.0,104,20.0 +518,585,30,65.0,32,10.0,105,20.0 +524,577,29,67.0,31,10.0,33,14.0 +519,564,32,14.0,34,29.0,45,32.0 +546,554,33,29.0,39,23.0,35,36.0 +534,520,34,36.0,38,22.0,44,19.0,41,26.0 +585,499,40,19.0,37,57.0,38,34.0 +590,556,28,61.0,36,57.0,39,21.0 +555,514,35,22.0,36,34.0,39,46.0 +569,558,34,23.0,37,21.0,38,46.0 +596,483,36,19.0,54,60.0,41,69.0,48,75.0 +528,495,35,26.0,40,69.0,43,25.0 +483,503,45,38.0,43,20.0,46,43.0 +503,499,41,25.0,42,20.0,44,33.0 +517,529,35,19.0,43,33.0,45,18.0 +501,537,33,32.0,42,38.0,44,18.0 +465,464,42,43.0,47,36.0,176,58.0 +480,431,46,36.0,55,58.0,109,59.0 +602,408,40,75.0,49,31.0,55,70.0 +608,378,48,31.0,50,116.0,93,66.0 +715,332,7,92.0,49,116.0,51,109.0,60,120.0 +820,301,13,48.0,50,109.0,58,72.0 +633,570,0,32.0,3,54.0,53,47.0 +639,523,52,47.0,54,62.0 +653,463,4,47.0,40,60.0,53,62.0 +538,437,47,58.0,48,70.0 +910,401,16,32.0,80,170.0,65,108.0 +938,495,17,24.0,18,70.0 +821,229,51,72.0,59,25.0 +841,214,58,25.0,60,62.0 +782,233,50,120.0,59,62.0,61,14.0 +770,225,60,14.0,62,41.0,111,68.0 +801,198,61,41.0,97,73.0,115,105.0 +911,139,73,80.0,97,55.0 +953,194,13,123.0,69,144.0,95,64.0,96,79.0 +911,293,56,108.0,66,148.0,96,32.0 +1043,227,65,148.0,79,43.0 +1323,213,78,179.0,68,127.0 +1199,185,67,127.0,69,103.0,94,74.0 +1096,175,64,144.0,68,103.0,79,59.0,70,82.0 +1051,106,69,82.0,76,48.0,71,64.0,95,69.0 +987,114,70,64.0,73,24.0,72,54.0,95,47.0 +950,154,71,54.0 +976,93,63,80.0,71,24.0,74,90.0 +1056,52,73,90.0,76,20.0,75,92.0 +1140,14,74,92.0 +1073,63,70,48.0,74,20.0,77,236.0 +1306,103,76,236.0 +1147,244,67,179.0,79,62.0 +1086,233,66,43.0,69,59.0,78,62.0,80,75.0 +1040,292,56,170.0,79,75.0,83,68.0,82,90.0 +1221,299,82,92.0 +1129,308,80,90.0,81,92.0,83,73.0 +1071,352,80,68.0,82,73.0,84,53.0,92,115.0 +1113,384,83,53.0,88,261.0,85,60.0 +1168,361,84,60.0,86,73.0 +1239,377,85,73.0,87,142.0 +1376,340,86,142.0 +1029,631,84,261.0,89,150.0 +908,720,88,150.0,90,24.0 +887,709,89,24.0,91,108.0 +799,771,90,108.0,106,73.0 +1031,460,18,148.0,83,115.0 +561,331,49,66.0,110,101.0,112,38.0,125,39.0 +1272,171,68,74.0 +1005,157,64,64.0,70,69.0,71,47.0 +911,261,13,53.0,64,79.0,65,32.0 +870,175,13,100.0,62,73.0,63,55.0 +654,808,24,38.0,99,125.0,100,62.0 +754,733,21,112.0,98,125.0 +592,811,98,62.0,101,68.0 +524,809,100,68.0,102,83.0,104,154.0 +441,807,101,83.0,103,165.0,144,70.0 +493,650,102,165.0,105,62.0,104,22.0 +514,655,30,20.0,101,154.0,103,22.0 +498,588,31,20.0,103,62.0 +840,831,91,73.0,107,170.0 +1008,804,106,170.0,108,142.0 +1108,703,107,142.0 +459,376,47,59.0,125,74.0,122,42.0,139,51.0,176,54.0 +644,274,93,101.0,111,67.0,114,41.0 +707,251,61,68.0,110,67.0,115,31.0 +543,298,93,38.0,113,44.0,124,35.0 +579,272,112,44.0,116,23.0,114,72.0 +640,233,110,41.0,113,72.0,116,71.0,115,60.0 +699,221,62,105.0,111,31.0,114,60.0 +571,250,113,23.0,114,71.0,117,60.0 +516,274,116,60.0,123,48.0,118,42.0 +489,242,117,42.0,119,43.0,135,53.0 +446,246,118,43.0,120,72.0,136,81.0 +419,179,119,72.0,126,21.0,133,61.0 +523,106,133,67.0 +463,334,109,42.0,123,32.0,134,35.0 +483,309,117,48.0,122,32.0,124,30.0,135,36.0 +512,315,112,35.0,123,30.0,125,24.0 +522,337,93,39.0,109,74.0,124,24.0 +433,194,120,21.0,129,39.0,128,39.0,127,43.0 +470,215,126,43.0 +472,190,126,39.0,129,20.0,131,30.0 +465,171,126,39.0,128,20.0,130,25.0,132,25.0 +475,148,129,25.0,132,19.0,133,15.0 +499,177,128,30.0,132,19.0 +488,162,129,25.0,130,19.0,131,19.0 +464,138,120,61.0,121,67.0,130,15.0 +431,320,122,35.0,139,30.0,135,44.0,137,60.0 +457,284,118,53.0,123,36.0,134,44.0 +369,221,119,81.0,142,56.0,140,58.0,137,62.0 +385,281,134,60.0,136,62.0,138,32.0 +359,299,137,32.0,140,82.0,139,75.0,178,25.0 +417,347,109,51.0,134,30.0,138,75.0,177,64.0 +312,232,136,58.0,138,82.0,141,52.0 +320,181,140,52.0,143,83.0,142,30.0 +348,169,136,56.0,141,30.0,143,74.0 +326,98,141,83.0,142,74.0 +371,814,102,70.0,145,56.0 +317,801,144,56.0,146,81.0 +335,722,145,81.0,147,59.0,157,141.0 +277,731,146,59.0,148,146.0 +164,824,147,146.0,149,113.0 +64,771,148,113.0,150,62.0 +123,752,149,62.0,165,102.0,151,167.0 +243,636,150,167.0,152,48.0,156,65.0 +213,598,151,48.0,153,46.0,154,49.0 +167,593,152,46.0 +202,550,152,49.0,179,34.0,155,69.0,163,38.0 +266,525,154,69.0,156,65.0,161,49.0 +286,587,151,65.0,155,65.0,157,47.0 +333,581,146,141.0,156,47.0,158,62.0 +368,530,157,62.0,159,69.0 +332,471,158,69.0,175,70.0,160,51.0 +282,483,159,51.0,162,26.0,163,79.0 +313,511,155,49.0,162,52.0 +262,500,160,26.0,161,52.0 +208,512,154,38.0,160,79.0,174,72.0,164,229.0 +5,617,163,229.0,167,77.0 +34,703,150,102.0,166,117.0 +130,636,165,117.0 +9,540,164,77.0,168,183.0 +170,454,167,183.0,169,42.0,173,35.0 +129,463,168,42.0,170,58.0 +137,406,169,58.0,171,71.0 +70,429,170,71.0,172,66.0 +9,453,171,66.0 +203,441,168,35.0,174,101.0 +136,517,163,72.0,173,101.0 +393,437,159,70.0,177,71.0,176,38.0 +427,420,46,58.0,109,54.0,175,38.0 +359,375,139,64.0,175,71.0,178,69.0 +337,310,138,25.0,177,69.0 +171,563,154,34.0 \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/08_minimalspanningtree/04_inseln.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/08_minimalspanningtree/04_inseln.csv new file mode 100644 index 0000000..7cf1f12 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/08_minimalspanningtree/04_inseln.csv @@ -0,0 +1,25 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,1 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,2 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,2_mst_insel_karte_trans.png +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,1 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list +572,381,3,700.0,1,310.0,7,130.0,2,500.0 +357,346,0,310.0,3,180.0,4,200.0,2,110.0,7,420.0,6,350.0 +437,253,0,500.0,1,110.0,7,90.0,6,170.0,4,460.0 +274,434,0,700.0,1,180.0,5,230.0,4,190.0 +262,253,1,200.0,2,460.0,3,190.0,5,100.0,6,80.0 +114,181,3,230.0,4,100.0,6,70.0 +303,115,1,350.0,2,170.0,4,80.0,5,70.0,7,380.0 +505,164,0,130.0,1,420.0,2,90.0,6,380.0 \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/08_minimalspanningtree/05_standardbsp1.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/08_minimalspanningtree/05_standardbsp1.csv new file mode 100644 index 0000000..5d0bee0 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/08_minimalspanningtree/05_standardbsp1.csv @@ -0,0 +1,24 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,1 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,0 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,1 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,0 +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,1 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list +130,30,1,8.0,2,5.0 +40,90,0,8.0,2,10.0,3,2.0,4,18.0 +220,90,0,5.0,1,10.0,6,16.0,3,3.0 +130,170,1,2.0,2,3.0,4,12.0,5,14.0,6,30.0 +40,230,1,18.0,3,12.0,5,4.0 +130,280,3,14.0,4,4.0,6,26.0 +220,230,2,16.0,3,30.0,5,26.0 \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/08_minimalspanningtree/06_standardbsp2.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/08_minimalspanningtree/06_standardbsp2.csv new file mode 100644 index 0000000..b995c75 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/08_minimalspanningtree/06_standardbsp2.csv @@ -0,0 +1,25 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,1 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,0 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,1 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,0 +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,1 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list +90,70,1,3.0,3,2.0,4,7.0 +220,70,0,3.0,2,1.0,4,8.0 +350,70,1,1.0,4,6.0,5,3.0 +90,150,0,2.0,4,6.0 +220,150,0,7.0,1,8.0,2,6.0,3,6.0,5,3.0,6,6.0,7,5.0 +350,150,2,3.0,4,3.0 +160,230,4,6.0,7,9.0 +280,230,4,5.0,6,9.0 \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/08_minimalspanningtree/07_negativekantengewichte.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/08_minimalspanningtree/07_negativekantengewichte.csv new file mode 100644 index 0000000..6b8b4d8 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/08_minimalspanningtree/07_negativekantengewichte.csv @@ -0,0 +1,24 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,1 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,0 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,1 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,0 +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,1 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list +130,30,1,8.0,2,5.0 +40,90,0,8.0,3,2.0,4,18.0,2,-6.0 +220,90,0,5.0,1,-6.0,6,16.0,3,3.0 +130,170,1,2.0,2,3.0,5,14.0,6,-10.0,4,-3.0 +40,230,1,18.0,3,-3.0,5,4.0 +130,280,3,14.0,4,4.0,6,26.0 +220,230,2,16.0,3,-10.0,5,26.0 \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/10_weitereuebungen/13_2_scotlandyard.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/10_weitereuebungen/13_2_scotlandyard.csv new file mode 100644 index 0000000..b1fc777 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/10_weitereuebungen/13_2_scotlandyard.csv @@ -0,0 +1,222 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,0 +# Größe der Knoten +vertexSize,23 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,1 +# Kantenfarben: RGB-Hexcode (z.B. FF0000) oder invisible +# Reihenfolge: normale Kanten, markierte Kanten, gelöschte Kanten +edgeColor,0000FF,FF0000,A0A0A0 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,scotlandyard.png +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,0 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list +196,48,7,8,57,45 +546,25,19,9 +760,31,10,11,3,21,22 +892,17,2,12 +1434,33,14,15 +1592,32,28,6 +1764,41,5,16,41 +123,123,0,17,18 +267,130,0,18,19 +655,123,1,10,20,33 +761,148,2,9,21 +841,125,2,22 +1002,117,3,22,23,13,51,88,66,45 +1147,86,12,24,14 +1309,76,4,13,15,25,27,28,40 +1457,127,4,14,27,28 +1744,179,6,28,29 +55,185,7,42,30 +176,206,7,8,31 +348,169,1,8,32 +503,235,9,32 +763,261,2,10,33,22,34,64 +888,189,2,11,12,21,36,66 +1091,196,12,36,37 +1177,224,13,37,38 +1301,123,14,38,26 +1323,202,25,39,27 +1383,172,14,15,26,40 +1595,217,5,14,15,16,41,40,54 +1810,204,16,41 +110,250,17,42,43 +291,295,18,43,32,44 +437,273,19,20,31,45 +677,299,9,21,46,47,45,62 +813,332,21,47,35,64 +863,339,34,36,48 +953,262,22,23,35,49 +1130,281,23,24,49,50 +1213,257,24,25,50,51 +1362,311,26,51,40,52 +1409,291,14,27,28,39,53,51,86 +1750,289,6,28,29,55,71 +30,317,17,30,56 +209,360,30,31,57 +341,386,31,57,58,59,45 +460,349,0,12,32,33,44,46,60,57,77,78,73 +550,326,33,45,61 +700,393,33,34,61,62 +902,397,35,49,65 +999,337,36,37,48 +1172,347,37,38,51,66,67 +1258,325,12,38,39,40,50,68,66,85 +1369,385,39,68,53 +1441,362,40,52,54,69 +1596,358,28,53,70,88 +1802,380,41,90 +83,394,42,57,72 +271,415,0,43,44,45,56,58,73,76,74 +311,465,44,57,74,75 +366,448,44,60,75 +491,461,45,59,75,61,77 +559,443,46,47,60,78 +711,521,33,47,78,63,79,64,99 +802,503,62,80,64 +898,485,21,34,62,63,65,81,66 +964,470,48,64,66,81 +1062,454,12,22,50,51,64,65,67,83,101,81,78,88,110 +1186,427,50,66,68,84 +1305,412,51,52,67,85 +1452,439,53,70,86 +1568,437,54,69,88,71 +1705,451,41,70,90,89 +85,469,56,73,91 +150,543,45,57,72,91,74,93 +236,517,57,58,73,93 +356,513,58,59,60,76 +425,568,57,75,94,95,77,93,123 +519,558,45,60,76,78,96 +593,540,45,61,62,66,77,97,92,110 +739,574,62,98,99 +869,596,63,81,99 +916,563,64,65,66,80,100,99,139 +1037,546,100,101 +1121,507,66,84 +1194,478,67,83,102 +1319,529,51,68,102,86,103,101,115 +1451,558,40,69,85,87,104 +1514,576,86,88,116 +1561,531,12,54,66,70,87,104,139,158 +1650,531,71,90,104 +1785,534,55,71,89,106,104 +39,601,72,73,92 +52,655,78,91,93 +168,635,73,74,76,92,94 +222,624,76,93,121 +488,662,76,96,108 +545,641,77,95,97,108 +627,611,78,96,98,109 +693,632,79,97,109,111 +824,664,62,79,80,81,100,112,111,110 +955,612,81,82,99,113 +1114,548,66,82,85,102,114,126 +1217,538,84,85,101 +1320,587,85,115 +1615,613,86,88,89,90,105,117,106 +1724,632,104,106 +1810,638,90,104,105,118,160 +381,740 +575,752,95,96,109,123 +660,669,97,98,108,110 +720,736,66,78,99,109,111,123,162,152 +751,716,98,99,110,124 +878,710,99,113,124 +972,683,100,112,114,125,131,130 +1106,636,101,113,126,125 +1321,716,85,103,126,127,116,117,141 +1472,768,87,115,117,128 +1583,740,104,115,116,118,134 +1764,833,106,117,135 +47,893,120,143 +115,897,119,121,144 +197,888,94,120,122,145,143 +428,879,121,123,136,148,164 +559,853,76,108,110,122,129,137,152 +791,773,111,112,130 +1038,731,113,114,139,126 +1191,767,101,114,115,125,133,132 +1326,805,115,128,141,133 +1457,820,116,127,134,142,141 +757,857,123,138,130 +822,810,113,124,129 +967,802,113,139 +1128,881,126,139,140,156 +1254,836,126,127,140,141 +1525,863,117,128,135,160,142,158 +1725,948,118,134,161 +349,957,122,146 +601,904,123,149,151 +748,909,129,152,153 +965,894,81,88,125,131,132,153,155,152,158 +1174,907,132,133,157,141 +1322,933,115,127,128,133,140,158,156,142,157 +1455,916,128,134,141,159,158 +72,1050,119,121,176,144,162 +131,1043,120,143,145 +223,1038,121,144,146,162 +293,1014,136,145,163 +377,1005,148,163 +453,997,122,147,149,164 +542,970,137,148,150 +589,1007,149,151,165,164 +649,965,137,150,152 +686,1016,110,123,138,139,151,153,166,165,183,179 +833,974,138,139,152,154,155 +882,1038,153,166,167 +991,1037,139,153,156,168,183 +1080,1048,132,141,155,157,169,184 +1222,988,140,141,156,170 +1405,1023,88,134,139,141,142,159,171,187,160,198,186,184 +1509,1041,142,158,160,172 +1638,1029,106,134,158,159,173,198 +1804,1032,135,174 +210,1086,110,143,145,176,190,175 +304,1086,146,147,177,178 +476,1114,122,148,150,178,179,190 +657,1069,150,152,180,182 +798,1095,152,154,182,167 +847,1131,154,166,183 +991,1110,155,183 +1065,1124,156,170,184 +1227,1190,157,169,185,197,171 +1365,1111,158,170,186 +1550,1166,159,187,199,173 +1707,1125,160,172,174 +1793,1188,161,173,199 +41,1178,162,188,189,176 +120,1156,143,162,175 +251,1147,163,188,190 +412,1164,163,164,190 +507,1182,152,164,180,192,189,183 +608,1156,165,179,181,192 +663,1171,180,182,194 +761,1121,165,166,181,195 +917,1192,152,155,167,168,179,195,184,196 +1039,1266,156,158,169,183,185,186 +1145,1240,170,184,197 +1319,1201,158,171,184,187,197 +1479,1201,158,172,186,198 +120,1282,175,177,189 +205,1329,175,179,188,190,191 +311,1241,162,164,177,178,189,191 +338,1350,189,190,193 +582,1249,179,180,193 +611,1289,191,192,194 +686,1286,181,193,196 +791,1219,182,183,196 +816,1293,183,194,195 +1224,1347,170,185,186,198 +1498,1345,158,160,187,197,199 +1594,1315,172,174,198 \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/10_weitereuebungen/17_2_oberstufenplan.csv b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/10_weitereuebungen/17_2_oberstufenplan.csv new file mode 100644 index 0000000..3c643f0 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/beispielgraphen/10_weitereuebungen/17_2_oberstufenplan.csv @@ -0,0 +1,35 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,0 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,0 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,0 +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,0 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list,infotext +M,68,104 +m,103,66 +D,207,29 +d,265,30 +Inf,453,283 +E,358,52 +e,398,86 +Ch,299,406 +F,452,146 +f,458,203 +ch,243,405 +s,42,183 +bk,38,256 +b,112,362 +B,159,387 +p,381,380 +P,416,351 +mu,59,306 \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/eigeneAlgorithmen/GraphAlgo_Coloring_Schueler.java b/3_vorlagen_tauschordner/2_graphentester_jar/eigeneAlgorithmen/GraphAlgo_Coloring_Schueler.java new file mode 100644 index 0000000..b86d12f --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/eigeneAlgorithmen/GraphAlgo_Coloring_Schueler.java @@ -0,0 +1,57 @@ +package eigeneAlgorithmen; + + + +import java.util.List; +import java.nio.file.*; + +import graph.*; +import algorithmen.*; + +/** + * Dieser Algorithmus färbt einen Graphen, so dass keine benachbarten Knoten + * die gleiche Farbe haben und möglichst wenige Farben benutzt werden. + * Algorithmus: Beispieldatei, in der Schüler den Algorithmus selbst umsetzen können + * + * @version 1.0 from 10.12.2020 + * @author Thomas Schaller + */ + +public class GraphAlgo_Coloring_Schueler extends GraphAlgo { + + + + public String getBezeichnung() { + return "Greedy-Coloring (toDo)"; + } + + // Ende Attribute + + // Anfang Methoden + public void fuehreAlgorithmusAus() { + getStartKnoten().setFarbe(3); + + // Hole alle Knoten vom Graph g + + // Schleife über alle Knoten + + // Erzeuge Liste (Größe #Knoten +1) in der die Farben der adjazenten Knoten abgehakt werden. Die Farben + // sind von 1 bis n (# Knoten) kodiert und werden spaeter in Farben decodiert + + // Hole alle Nachbarknoten vom aktuellen Knoten + + // Gehe alle Nachbarn durch und markiere die Farben des Knoten in dem Array farbenliste[] als benutzt + + // suche die erste Position (>0) aus der Farbliste, die noch nicht benutzt wurden und faerbe den Knoten k mit dieser Farbe (setze den Farbwert des Knotens auf die Position im Array) + + // Unterbreche die Ausführung + step(); + + // Ende der Schleife über alle Knoten + + } + + // Ende Methoden + +} + diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/eigeneAlgorithmen/package.bluej b/3_vorlagen_tauschordner/2_graphentester_jar/eigeneAlgorithmen/package.bluej new file mode 100644 index 0000000..695b71e --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/eigeneAlgorithmen/package.bluej @@ -0,0 +1,27 @@ +#BlueJ package file +objectbench.height=93 +objectbench.width=451 +package.divider.horizontal=0.599476439790576 +package.divider.vertical=0.8 +package.editor.height=393 +package.editor.width=649 +package.editor.x=819 +package.editor.y=382 +package.frame.height=600 +package.frame.width=800 +package.numDependencies=0 +package.numTargets=1 +package.showExtends=true +package.showUses=true +readme.height=60 +readme.name=@README +readme.width=49 +readme.x=10 +readme.y=10 +target1.height=50 +target1.name=GraphAlgo_Coloring_Schueler +target1.showInterface=false +target1.type=ClassTarget +target1.width=210 +target1.x=10 +target1.y=90 diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/graphentester.jar b/3_vorlagen_tauschordner/2_graphentester_jar/graphentester.jar new file mode 100644 index 0000000..7b853cc Binary files /dev/null and b/3_vorlagen_tauschordner/2_graphentester_jar/graphentester.jar differ diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/images/1_coloring_news_trans.png b/3_vorlagen_tauschordner/2_graphentester_jar/images/1_coloring_news_trans.png new file mode 100644 index 0000000..ad4c399 Binary files /dev/null and b/3_vorlagen_tauschordner/2_graphentester_jar/images/1_coloring_news_trans.png differ diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/images/1_mst_muddy_city_trans.png b/3_vorlagen_tauschordner/2_graphentester_jar/images/1_mst_muddy_city_trans.png new file mode 100644 index 0000000..513a3cf Binary files /dev/null and b/3_vorlagen_tauschordner/2_graphentester_jar/images/1_mst_muddy_city_trans.png differ diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/images/2_coloring_news_trans.png b/3_vorlagen_tauschordner/2_graphentester_jar/images/2_coloring_news_trans.png new file mode 100644 index 0000000..681b2fb Binary files /dev/null and b/3_vorlagen_tauschordner/2_graphentester_jar/images/2_coloring_news_trans.png differ diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/images/2_mst_insel_karte_trans.png b/3_vorlagen_tauschordner/2_graphentester_jar/images/2_mst_insel_karte_trans.png new file mode 100644 index 0000000..4196776 Binary files /dev/null and b/3_vorlagen_tauschordner/2_graphentester_jar/images/2_mst_insel_karte_trans.png differ diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/images/3_coloring_land1_trans.png b/3_vorlagen_tauschordner/2_graphentester_jar/images/3_coloring_land1_trans.png new file mode 100644 index 0000000..193f914 Binary files /dev/null and b/3_vorlagen_tauschordner/2_graphentester_jar/images/3_coloring_land1_trans.png differ diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/images/4_coloring_land2_trans.png b/3_vorlagen_tauschordner/2_graphentester_jar/images/4_coloring_land2_trans.png new file mode 100644 index 0000000..1dbf5d4 Binary files /dev/null and b/3_vorlagen_tauschordner/2_graphentester_jar/images/4_coloring_land2_trans.png differ diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/images/5_coloring_land3_trans.png b/3_vorlagen_tauschordner/2_graphentester_jar/images/5_coloring_land3_trans.png new file mode 100644 index 0000000..a59668a Binary files /dev/null and b/3_vorlagen_tauschordner/2_graphentester_jar/images/5_coloring_land3_trans.png differ diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/images/6_coloring_land4_trans.png b/3_vorlagen_tauschordner/2_graphentester_jar/images/6_coloring_land4_trans.png new file mode 100644 index 0000000..4441d9a Binary files /dev/null and b/3_vorlagen_tauschordner/2_graphentester_jar/images/6_coloring_land4_trans.png differ diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/images/7_coloring_maler_trans.png b/3_vorlagen_tauschordner/2_graphentester_jar/images/7_coloring_maler_trans.png new file mode 100644 index 0000000..6854e65 Binary files /dev/null and b/3_vorlagen_tauschordner/2_graphentester_jar/images/7_coloring_maler_trans.png differ diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/images/badenbaden.png b/3_vorlagen_tauschordner/2_graphentester_jar/images/badenbaden.png new file mode 100644 index 0000000..0d1b2c6 Binary files /dev/null and b/3_vorlagen_tauschordner/2_graphentester_jar/images/badenbaden.png differ diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/images/deutschland_bundeslaende_bunt.png b/3_vorlagen_tauschordner/2_graphentester_jar/images/deutschland_bundeslaende_bunt.png new file mode 100644 index 0000000..17ff97f Binary files /dev/null and b/3_vorlagen_tauschordner/2_graphentester_jar/images/deutschland_bundeslaende_bunt.png differ diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/images/eis2.png b/3_vorlagen_tauschordner/2_graphentester_jar/images/eis2.png new file mode 100644 index 0000000..5f407d0 Binary files /dev/null and b/3_vorlagen_tauschordner/2_graphentester_jar/images/eis2.png differ diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/images/gefaengnis.png b/3_vorlagen_tauschordner/2_graphentester_jar/images/gefaengnis.png new file mode 100644 index 0000000..1023f0b Binary files /dev/null and b/3_vorlagen_tauschordner/2_graphentester_jar/images/gefaengnis.png differ diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/images/inseln4.png b/3_vorlagen_tauschordner/2_graphentester_jar/images/inseln4.png new file mode 100644 index 0000000..5910383 Binary files /dev/null and b/3_vorlagen_tauschordner/2_graphentester_jar/images/inseln4.png differ diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/images/inseln5.png b/3_vorlagen_tauschordner/2_graphentester_jar/images/inseln5.png new file mode 100644 index 0000000..95913ea Binary files /dev/null and b/3_vorlagen_tauschordner/2_graphentester_jar/images/inseln5.png differ diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/images/karte_eu.png b/3_vorlagen_tauschordner/2_graphentester_jar/images/karte_eu.png new file mode 100644 index 0000000..07a2985 Binary files /dev/null and b/3_vorlagen_tauschordner/2_graphentester_jar/images/karte_eu.png differ diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/images/karte_usa.png b/3_vorlagen_tauschordner/2_graphentester_jar/images/karte_usa.png new file mode 100644 index 0000000..cf25cf6 Binary files /dev/null and b/3_vorlagen_tauschordner/2_graphentester_jar/images/karte_usa.png differ diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/images/quellennachweis.txt b/3_vorlagen_tauschordner/2_graphentester_jar/images/quellennachweis.txt new file mode 100644 index 0000000..d0214a4 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/images/quellennachweis.txt @@ -0,0 +1 @@ +Die Bildquellen sind alle in den Bildern angegeben. Mit Ausnahme von Scotland Yard sind alle Bilder public domain oder CC-Lizenzen. Das Bild von Scotland Yard darf "Mit freundlicher Genehmigung der Ravensburger Verlag GmbH" verwendet werden. Das Bild darf weder verändert noch dieser Hinweis entfernt werden. \ No newline at end of file diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/images/scotlandYard.png b/3_vorlagen_tauschordner/2_graphentester_jar/images/scotlandYard.png new file mode 100644 index 0000000..6475fdc Binary files /dev/null and b/3_vorlagen_tauschordner/2_graphentester_jar/images/scotlandYard.png differ diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/images/siedler.png b/3_vorlagen_tauschordner/2_graphentester_jar/images/siedler.png new file mode 100644 index 0000000..9cbe72c Binary files /dev/null and b/3_vorlagen_tauschordner/2_graphentester_jar/images/siedler.png differ diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/images/siedlerohnefischer.png b/3_vorlagen_tauschordner/2_graphentester_jar/images/siedlerohnefischer.png new file mode 100644 index 0000000..474eb13 Binary files /dev/null and b/3_vorlagen_tauschordner/2_graphentester_jar/images/siedlerohnefischer.png differ diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/images/teich.png b/3_vorlagen_tauschordner/2_graphentester_jar/images/teich.png new file mode 100644 index 0000000..2ee16d7 Binary files /dev/null and b/3_vorlagen_tauschordner/2_graphentester_jar/images/teich.png differ diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/images/wabenmuster.png b/3_vorlagen_tauschordner/2_graphentester_jar/images/wabenmuster.png new file mode 100644 index 0000000..9107a32 Binary files /dev/null and b/3_vorlagen_tauschordner/2_graphentester_jar/images/wabenmuster.png differ diff --git a/3_vorlagen_tauschordner/2_graphentester_jar/startGraphentester.bat b/3_vorlagen_tauschordner/2_graphentester_jar/startGraphentester.bat new file mode 100644 index 0000000..a253404 --- /dev/null +++ b/3_vorlagen_tauschordner/2_graphentester_jar/startGraphentester.bat @@ -0,0 +1,22 @@ +@set PATH_TO_FX="E:\Programme\Informatik\javafx-sdk-11.0.2\lib" +@set PATH_TO_JAVA="E:\Programme\Informatik\BlueJ4.2\jdk\bin" +@if NOT exist "%PATH_TO_JAVA%" GOTO NOJAVA +@if NOT exist "%PATH_TO_FX%" GOTO NOFX + +@echo Oeffne Graphentester mit Java bei %PATH_TO_JAVA% +@echo und JavaFX bei %PATH_TO_FX%. + +%PATH_TO_JAVA%\java --module-path %PATH_TO_FX% --add-modules=javafx.controls,javafx.media,javafx.web,javafx.fxml,javafx.swing -jar graphentester.jar +@GOTO ENDE + +:NOFX +@echo Der JavaFX-Pfad %PATH_TO_FX% ist nicht richtig. +@echo Bitte passen Sie dieses Verzeichnis in der bat-Datei an. +@GOTO ENDE + +:NOJAVA +@echo Der Java-Pfad %PATH_TO_JAVA% ist nicht richtig. +@echo Bitte passen Sie dieses Verzeichnis in der bat-Datei an. + +:ENDE +@pause \ No newline at end of file diff --git a/4_loesungen/01_eulerzug_loesung.pdf b/4_loesungen/01_eulerzug_loesung.pdf new file mode 100644 index 0000000..aa6eada Binary files /dev/null and b/4_loesungen/01_eulerzug_loesung.pdf differ diff --git a/4_loesungen/02_topologischesortierung_loesung.csv b/4_loesungen/02_topologischesortierung_loesung.csv new file mode 100644 index 0000000..176c788 --- /dev/null +++ b/4_loesungen/02_topologischesortierung_loesung.csv @@ -0,0 +1,26 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,0 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,2 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,siedlerohnefischer.png +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,0 +# gerichtet 1, ungerichtet 0 +directed,1 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list,infotext +Farm,284,83,1,3 +Mühle,533,109,2 +Bäckerei,690,154,6,5 +Schweinefarm,124,239,4 +Metzger,173,366,5,6 +Kohlemine,425,441,7,8 +Erzmine,734,280,7 +Eisenschmelze,583,343,8 +Werkzeugmacher,401,258,0,4,5,6 \ No newline at end of file diff --git a/4_loesungen/02_topologischesortierung_loesung.pdf b/4_loesungen/02_topologischesortierung_loesung.pdf new file mode 100644 index 0000000..d7ec7f0 Binary files /dev/null and b/4_loesungen/02_topologischesortierung_loesung.pdf differ diff --git a/4_loesungen/03_kuerzesterpfad_loesung.pdf b/4_loesungen/03_kuerzesterpfad_loesung.pdf new file mode 100644 index 0000000..a599537 Binary files /dev/null and b/4_loesungen/03_kuerzesterpfad_loesung.pdf differ diff --git a/4_loesungen/03_seerosenteich_loesung.csv b/4_loesungen/03_seerosenteich_loesung.csv new file mode 100644 index 0000000..ac6cc12 --- /dev/null +++ b/4_loesungen/03_seerosenteich_loesung.csv @@ -0,0 +1,32 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,1 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,2 +# Kantenfarben: RGB-Hexcode (z.B. FF0000) oder invisible +# Reihenfolge: normale Kanten, markierte Kanten, gelöschte Kanten +edgeColor,FFFFFF,FF0000,A0A0A0 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,teich.png +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,1 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list +100,134,1,144.0,2,221.0 +241,161,0,144.0,6,174.0 +88,355,0,221.0,3,168.0 +226,450,2,168.0,4,183.0 +387,364,3,183.0,5,187.0 +521,233,4,187.0,6,189.0,7,134.0,8,185.0 +399,89,1,174.0,5,189.0 +653,210,5,134.0,8,137.0 +667,346,5,185.0,7,137.0,9,144.0 +633,486,8,144.0 +38,569,11,250.0 +288,567,10,250.0 \ No newline at end of file diff --git a/4_loesungen/04_kuerzesterpfad2_loesung.pdf b/4_loesungen/04_kuerzesterpfad2_loesung.pdf new file mode 100644 index 0000000..01fe95b Binary files /dev/null and b/4_loesungen/04_kuerzesterpfad2_loesung.pdf differ diff --git a/4_loesungen/05_dominierendemenge_loesung.pdf b/4_loesungen/05_dominierendemenge_loesung.pdf new file mode 100644 index 0000000..6f1f515 Binary files /dev/null and b/4_loesungen/05_dominierendemenge_loesung.pdf differ diff --git a/4_loesungen/05_eisverkaufer_loesung.csv b/4_loesungen/05_eisverkaufer_loesung.csv new file mode 100644 index 0000000..7da0ea8 --- /dev/null +++ b/4_loesungen/05_eisverkaufer_loesung.csv @@ -0,0 +1,51 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,0 +# Größe der Knoten +vertexSize,17 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,0 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,0 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,eis2.png +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,0 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list +15,16,1,21 +112,15,0,15,2 +218,14,1,7,3 +328,13,2,4,6 +405,13,3,5 +406,80,4,10,6 +326,81,3,5,8,7 +223,80,2,6,13,14,15 +326,174,6,9,28,13 +366,174,8,10,12 +409,175,5,9,11 +416,232,10,31,12 +374,237,9,11,30 +222,175,7,8,27,17,14 +173,122,7,13,16 +111,82,1,7,16,20 +110,123,14,15,17 +109,174,13,16,26,18 +64,173,17,23,19 +63,129,18,20,22 +64,81,15,19,21 +16,80,0,20,22 +17,128,19,21,23 +18,172,18,22,24 +18,294,23,25 +109,294,24,29,26 +109,246,17,25,27 +221,246,13,26,28 +325,247,8,27,29 +327,296,25,28,30 +373,297,12,29,31 +416,294,11,30 \ No newline at end of file diff --git a/4_loesungen/06_repraesentation_loesung.pdf b/4_loesungen/06_repraesentation_loesung.pdf new file mode 100644 index 0000000..35bbeaa Binary files /dev/null and b/4_loesungen/06_repraesentation_loesung.pdf differ diff --git a/4_loesungen/07_kartenfaerben_loesung.pdf b/4_loesungen/07_kartenfaerben_loesung.pdf new file mode 100644 index 0000000..3e39b23 Binary files /dev/null and b/4_loesungen/07_kartenfaerben_loesung.pdf differ diff --git a/4_loesungen/08_minimalspanningtree_loesung.pdf b/4_loesungen/08_minimalspanningtree_loesung.pdf new file mode 100644 index 0000000..5635e96 Binary files /dev/null and b/4_loesungen/08_minimalspanningtree_loesung.pdf differ diff --git a/4_loesungen/11_1_biber_domino_loesung.pdf b/4_loesungen/11_1_biber_domino_loesung.pdf new file mode 100644 index 0000000..37a570f Binary files /dev/null and b/4_loesungen/11_1_biber_domino_loesung.pdf differ diff --git a/4_loesungen/12_1_biber_kochen_loesung.pdf b/4_loesungen/12_1_biber_kochen_loesung.pdf new file mode 100644 index 0000000..496d3b8 Binary files /dev/null and b/4_loesungen/12_1_biber_kochen_loesung.pdf differ diff --git a/4_loesungen/12_2_turnier_loesung.csv b/4_loesungen/12_2_turnier_loesung.csv new file mode 100644 index 0000000..51b22cb --- /dev/null +++ b/4_loesungen/12_2_turnier_loesung.csv @@ -0,0 +1,26 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,0 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,2 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,0 +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,0 +# gerichtet 1, ungerichtet 0 +directed,1 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list,infotext +Albert,126,103,3,6,8,4 +Boris,236,42,0,2,3,8,6 +Cecile,286,131,0,8 +Didi,352,89,4 +Elli,382,216 +Felix,294,313,4 +Greta,186,284,8,5 +Horst,95,211,0,6,8,3 +Ian,256,216,4,5,3 \ No newline at end of file diff --git a/4_loesungen/12_2_turnier_loesung.pdf b/4_loesungen/12_2_turnier_loesung.pdf new file mode 100644 index 0000000..67424b6 Binary files /dev/null and b/4_loesungen/12_2_turnier_loesung.pdf differ diff --git a/4_loesungen/13_1_kevinbaconzahl_loesung.pdf b/4_loesungen/13_1_kevinbaconzahl_loesung.pdf new file mode 100644 index 0000000..0762f10 Binary files /dev/null and b/4_loesungen/13_1_kevinbaconzahl_loesung.pdf differ diff --git a/4_loesungen/13_2_scotlandyard_loesung.pdf b/4_loesungen/13_2_scotlandyard_loesung.pdf new file mode 100644 index 0000000..7f01631 Binary files /dev/null and b/4_loesungen/13_2_scotlandyard_loesung.pdf differ diff --git a/4_loesungen/14_1_biber_postkutschen_loesung.pdf b/4_loesungen/14_1_biber_postkutschen_loesung.pdf new file mode 100644 index 0000000..0463bd5 Binary files /dev/null and b/4_loesungen/14_1_biber_postkutschen_loesung.pdf differ diff --git a/4_loesungen/14_1_postkutsche_loesung.csv b/4_loesungen/14_1_postkutsche_loesung.csv new file mode 100644 index 0000000..6dea149 --- /dev/null +++ b/4_loesungen/14_1_postkutsche_loesung.csv @@ -0,0 +1,26 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,1 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,2 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,0 +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,1 +# gerichtet 1, ungerichtet 0 +directed,1 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list,infotext +,57,398 +Donnerstag,173,306,3,6.0,4,3.0,2,2.0 +Samstag,59,221,6,2.0,5,4.0 +Mittwoch,172,217,6,5.0 +Sonntag,277,220,7,6.0 +Mittwoch,58,122,8,0.0 +Montag,171,125,8,0.0 +Samstag,278,122,8,0.0 +Freitag,171,40 \ No newline at end of file diff --git a/4_loesungen/17_1_hochzeitsplanung_loesung.csv b/4_loesungen/17_1_hochzeitsplanung_loesung.csv new file mode 100644 index 0000000..781805c --- /dev/null +++ b/4_loesungen/17_1_hochzeitsplanung_loesung.csv @@ -0,0 +1,28 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,0 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,0 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,0 +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,0 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list,infotext +Erna,214,89,1,8,9,10,7 +Gustav,348,87,0,8,9,10 +Ursel,196,307,3,8,7 +Heinrich,103,306,2,4 +Anna,160,216,3,7 +Leni,477,211,10,9,8,7 +Wilfriede,419,147,10,9,8,7 +Paul,480,307,8,9,10,2,4,5,6,0 +Birgit,201,388,0,5,6,7,1,2 +Cecile,288,390,0,5,6,7,1 +Dirk,373,394,0,5,6,7,1 \ No newline at end of file diff --git a/4_loesungen/17_1_hochzeitsplanung_loesung.pdf b/4_loesungen/17_1_hochzeitsplanung_loesung.pdf new file mode 100644 index 0000000..ccdbe87 Binary files /dev/null and b/4_loesungen/17_1_hochzeitsplanung_loesung.pdf differ diff --git a/4_loesungen/17_2_oberstufenplan_loesung.csv b/4_loesungen/17_2_oberstufenplan_loesung.csv new file mode 100644 index 0000000..cbe6988 --- /dev/null +++ b/4_loesungen/17_2_oberstufenplan_loesung.csv @@ -0,0 +1,35 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,0 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,0 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,0 +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,0 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list,infotext +M,68,104,2,5,15,10,17,11,3,6,4,16,12,9,7,14 +m,103,66,3,5,8,7,14,12,11,2,13,17,6,4,9,16 +D,207,29,0,1,5,15,10,17,11,8,7,13,6,4,14,9,12 +d,265,30,0,1,6,4,16,12,11,5,8,10,14,9,7,17 +Inf,453,283,0,1,2,3,6,16,12,11,14,17,9 +E,358,52,0,1,2,3,15,10,17,11,8,14,12,9,16 +e,398,86,0,1,2,3,4,16,12,11,14,17,10 +Ch,299,406,0,1,2,3,8,13,17,11,9,16,12 +F,452,146,1,2,3,5,7,10,14,12,11,13,17,16 +f,458,203,0,1,2,3,4,5,7,16,12,11,14,17 +ch,243,405,0,2,3,5,6,8,15,17,11,14,12 +s,42,183,0,1,2,3,4,5,6,7,8,9,10,15,17,16,14,12,13 +bk,38,256,0,1,2,3,4,5,6,7,8,9,10,11,16,14 +b,112,362,1,2,7,8,11,17 +B,159,387,0,1,2,3,4,5,6,8,9,10,11,12 +p,381,380,0,2,5,10,11,17 +P,416,351,0,1,3,4,5,6,7,8,9,11,12,17 +mu,59,306,0,1,2,3,4,5,6,7,8,9,10,11,13,15,16 \ No newline at end of file diff --git a/4_loesungen/17_2_oberstufenplanung_loesung.pdf b/4_loesungen/17_2_oberstufenplanung_loesung.pdf new file mode 100644 index 0000000..ce56b47 Binary files /dev/null and b/4_loesungen/17_2_oberstufenplanung_loesung.pdf differ diff --git a/4_loesungen/18_1_biber_brueckenbau_loesung.pdf b/4_loesungen/18_1_biber_brueckenbau_loesung.pdf new file mode 100644 index 0000000..1836aa2 Binary files /dev/null and b/4_loesungen/18_1_biber_brueckenbau_loesung.pdf differ diff --git a/4_loesungen/18_2_gefaengnisausbruch_loesung.csv b/4_loesungen/18_2_gefaengnisausbruch_loesung.csv new file mode 100644 index 0000000..075abdd --- /dev/null +++ b/4_loesungen/18_2_gefaengnisausbruch_loesung.csv @@ -0,0 +1,32 @@ +# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0 +showWeights,1 +# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0 +showInfoText,1 +# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2 +vertexStyle,0 +# Kantenfarben: RGB-Hexcode (z.B. FF0000) oder invisible +# Reihenfolge: normale Kanten, markierte Kanten, gelöschte Kanten +edgeColor,000000,FF0000,A0A0A0 +# Bild im Hintergrund (bitte im "images"-Ordner ablegen) --> Dateiname angeben. Fall kein Bild bitte 0 schreiben! +image,gefaengnis.png +# +# Graph: +# gewichtet 1, ungewichtet 0 +weighted,1 +# gerichtet 1, ungerichtet 0 +directed,0 +# Der Graph liegt hier in Form einer Adjazenzliste vor. +# Jede Zeile steht fuer einen Knoten, durch Komma getrennt steht der adjazente Knoten mit dem zugehoerigen Kantengewicht. +list +93,316,1,2.0,10,0.0,11,0.0 +143,211,0,2.0,2,1.0,9,1.0,7,2.0 +139,144,1,1.0,3,2.0,11,2.0 +190,89,2,2.0,4,1.0 +266,79,3,1.0,5,1.0,6,2.0 +302,157,4,1.0,8,2.0 +246,137,4,2.0,7,1.0 +224,179,1,2.0,6,1.0,8,1.0 +269,221,5,2.0,7,1.0,9,1.0,10,1.0 +200,247,1,1.0,8,1.0 +309,266,0,0.0,8,1.0 +44,160,0,0.0,2,2.0 \ No newline at end of file diff --git a/4_loesungen/18_2_gefaengnisausbruch_loesung.pdf b/4_loesungen/18_2_gefaengnisausbruch_loesung.pdf new file mode 100644 index 0000000..33bd23a Binary files /dev/null and b/4_loesungen/18_2_gefaengnisausbruch_loesung.pdf differ diff --git a/4_loesungen/19_1_biber_hobbiber_loesung.pdf b/4_loesungen/19_1_biber_hobbiber_loesung.pdf new file mode 100644 index 0000000..94d1dc5 Binary files /dev/null and b/4_loesungen/19_1_biber_hobbiber_loesung.pdf differ diff --git a/4_loesungen/GraphAlgo_ScotlandYard.java b/4_loesungen/GraphAlgo_ScotlandYard.java new file mode 100644 index 0000000..38e1f39 --- /dev/null +++ b/4_loesungen/GraphAlgo_ScotlandYard.java @@ -0,0 +1,72 @@ +package algorithmen; + +import java.util.List; +import java.util.ArrayList; +import java.util.Collections; +import java.nio.file.*; + +import graph.*; +/** + * Dieser Algorithmus findet die kürzesten Pfade in einem ungewichteten Graphen. + * Algorithmus: Algorithmus A von Moore + * + * @version 1.0 from 10.12.2020 + * @author Thomas Schaller + */ + +public class GraphAlgo_ScotlandYard extends GraphAlgo { + + // Anfang Attribute + + public String getBezeichnung() { + return "ScotlandYard (Moore)"; + } + +// Anfang Methoden + public void fuehreAlgorithmusAus() { + if (g.getAnzahlKnoten()==0) { + return; + } + + info("Erzeuge leere toDo-Liste und füge Startknoten hinzu"); + List toDo = new ArrayList(); + int[] detektive={46,89,140}; + for (int e : detektive) { + g.getKnoten(e-1).setWert(0); + g.getKnoten(e-1).setBesucht(true); + toDo.add(g.getKnoten(e-1)); + } + + while(toDo.size()>0) { + info("Nimm ersten Knoten aus der toDo-Liste (momentan "+toDo.size()+" Elemente) heraus"); + Knoten k = toDo.remove(0); + infoIndentMore(); + k.setMarkiert(true); + info("Markiere den Knoten"); + info("Er hat Entfernung "+k.getIntWert()); + info("Für jeden Nachbarknoten"); + infoIndentMore(); + for(Knoten n : g.getNachbarknoten(k)) { + if(!n.isBesucht()){ + n.setWert(k.getIntWert()+1); + toDo.add(n); + info("- ist noch nicht markiert, setze Entfernung "+(k.getIntWert()+1)+" und füge der ToDo-Liste am Ende hinzu."); + g.getKante(k,n).setMarkiert(true); + n.setBesucht(true); + info(" toDo-Liste hat jetzt "+toDo.size()+" Elemente"); + } else { + info("- ist schon markiert"); + } + } + infoIndentLess(); + infoIndentLess(); + step(); + } + info("ToDo-Liste fertig abgearbeitet"); + + } // end + + // Ende Methoden + +} + diff --git a/5_praesentationen/01_grundbegriffe.odp b/5_praesentationen/01_grundbegriffe.odp new file mode 100644 index 0000000..c7b4129 Binary files /dev/null and b/5_praesentationen/01_grundbegriffe.odp differ diff --git a/5_praesentationen/02_eulerzug.odp b/5_praesentationen/02_eulerzug.odp new file mode 100644 index 0000000..c994b8d Binary files /dev/null and b/5_praesentationen/02_eulerzug.odp differ diff --git a/5_praesentationen/06_repraesentation_laufzeit.odp b/5_praesentationen/06_repraesentation_laufzeit.odp new file mode 100644 index 0000000..8b2642c Binary files /dev/null and b/5_praesentationen/06_repraesentation_laufzeit.odp differ diff --git a/6_software/DistanzVektorAlgorithmusGenerator.exe b/6_software/DistanzVektorAlgorithmusGenerator.exe new file mode 100644 index 0000000..b0bc465 Binary files /dev/null and b/6_software/DistanzVektorAlgorithmusGenerator.exe differ diff --git a/6_software/EPPlus.dll b/6_software/EPPlus.dll new file mode 100644 index 0000000..bbb43b0 Binary files /dev/null and b/6_software/EPPlus.dll differ diff --git a/6_software/GraphAlgorithms.dll b/6_software/GraphAlgorithms.dll new file mode 100644 index 0000000..e815815 Binary files /dev/null and b/6_software/GraphAlgorithms.dll differ diff --git a/6_software/GraphLibrary.dll b/6_software/GraphLibrary.dll new file mode 100644 index 0000000..461267e Binary files /dev/null and b/6_software/GraphLibrary.dll differ diff --git a/Quellcodes/DistanzVektorAlgorithmusGenerator/DistanzVektorAlgorithmusGenerator.csproj b/Quellcodes/DistanzVektorAlgorithmusGenerator/DistanzVektorAlgorithmusGenerator.csproj new file mode 100644 index 0000000..25b932b --- /dev/null +++ b/Quellcodes/DistanzVektorAlgorithmusGenerator/DistanzVektorAlgorithmusGenerator.csproj @@ -0,0 +1,110 @@ + + + + Debug + x86 + 8.0.30703 + 2.0 + {7E7395BB-8C4B-43FE-B303-40EBD0293BC2} + WinExe + Properties + DistanzVektorAlgorithmusGenerator + DistanzVektorAlgorithmusGenerator + v4.0 + Client + 512 + + + x86 + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + x86 + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + False + .\EPPlus.dll + + + False + .\GraphAlgorithms.dll + + + False + .\GraphLibrary.dll + + + + + + + + + + + + + + + Form + + + Form1.cs + + + + + Form1.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + PreserveNewest + + + PreserveNewest + + + Always + + + + + \ No newline at end of file diff --git a/Quellcodes/DistanzVektorAlgorithmusGenerator/EPPlus.dll b/Quellcodes/DistanzVektorAlgorithmusGenerator/EPPlus.dll new file mode 100644 index 0000000..bbb43b0 Binary files /dev/null and b/Quellcodes/DistanzVektorAlgorithmusGenerator/EPPlus.dll differ diff --git a/Quellcodes/DistanzVektorAlgorithmusGenerator/Form1.Designer.cs b/Quellcodes/DistanzVektorAlgorithmusGenerator/Form1.Designer.cs new file mode 100644 index 0000000..01727a8 --- /dev/null +++ b/Quellcodes/DistanzVektorAlgorithmusGenerator/Form1.Designer.cs @@ -0,0 +1,212 @@ +namespace DistanzVektorAlgorithmusGenerator +{ + partial class Form1 + { + /// + /// Erforderliche Designervariable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Verwendete Ressourcen bereinigen. + /// + /// True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Vom Windows Form-Designer generierter Code + + /// + /// Erforderliche Methode für die Designerunterstützung. + /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden. + /// + private void InitializeComponent() + { + this.graphControl1 = new GraphLibrary.GraphControl(); + this.label1 = new System.Windows.Forms.Label(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.numericUpDown1 = new System.Windows.Forms.NumericUpDown(); + this.button1 = new System.Windows.Forms.Button(); + this.label3 = new System.Windows.Forms.Label(); + this.listBox1 = new System.Windows.Forms.ListBox(); + this.button2 = new System.Windows.Forms.Button(); + this.button3 = new System.Windows.Forms.Button(); + this.button4 = new System.Windows.Forms.Button(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).BeginInit(); + this.SuspendLayout(); + // + // graphControl1 + // + this.graphControl1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.graphControl1.Graph = null; + this.graphControl1.Location = new System.Drawing.Point(12, 12); + this.graphControl1.Name = "graphControl1"; + this.graphControl1.NodeRadius = 30; + this.graphControl1.Options = GraphLibrary.GraphControl.DisplayOptions.ShowNodeLabels; + this.graphControl1.Size = new System.Drawing.Size(394, 528); + this.graphControl1.TabIndex = 0; + this.graphControl1.NodeDoubleClicked += new GraphLibrary.GraphControl.NodeDoubleClickHandler(this.graphControl1_NodeDoubleClicked); + // + // label1 + // + this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(412, 9); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(95, 13); + this.label1.TabIndex = 1; + this.label1.Text = "Namen (bis zu 14):"; + // + // textBox1 + // + this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.textBox1.Location = new System.Drawing.Point(415, 25); + this.textBox1.Multiline = true; + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(209, 181); + this.textBox1.TabIndex = 2; + // + // label2 + // + this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(412, 214); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(83, 13); + this.label2.TabIndex = 3; + this.label2.Text = "Anzahl Runden:"; + // + // numericUpDown1 + // + this.numericUpDown1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.numericUpDown1.Location = new System.Drawing.Point(498, 212); + this.numericUpDown1.Minimum = new decimal(new int[] { + 2, + 0, + 0, + 0}); + this.numericUpDown1.Name = "numericUpDown1"; + this.numericUpDown1.Size = new System.Drawing.Size(126, 20); + this.numericUpDown1.TabIndex = 4; + this.numericUpDown1.Value = new decimal(new int[] { + 4, + 0, + 0, + 0}); + // + // button1 + // + this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.button1.Location = new System.Drawing.Point(415, 238); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(209, 23); + this.button1.TabIndex = 5; + this.button1.Text = "Generieren"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // label3 + // + this.label3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(412, 293); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(136, 13); + this.label3.TabIndex = 6; + this.label3.Text = "Optimale Route von ... aus:"; + // + // listBox1 + // + this.listBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Right))); + this.listBox1.FormattingEnabled = true; + this.listBox1.Location = new System.Drawing.Point(415, 309); + this.listBox1.Name = "listBox1"; + this.listBox1.Size = new System.Drawing.Size(209, 199); + this.listBox1.TabIndex = 7; + this.listBox1.SelectedIndexChanged += new System.EventHandler(this.listBox1_SelectedIndexChanged); + // + // button2 + // + this.button2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.button2.Location = new System.Drawing.Point(415, 267); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(101, 23); + this.button2.TabIndex = 8; + this.button2.Text = "Laden..."; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // button3 + // + this.button3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.button3.Enabled = false; + this.button3.Location = new System.Drawing.Point(522, 267); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(101, 23); + this.button3.TabIndex = 9; + this.button3.Text = "Speichern..."; + this.button3.UseVisualStyleBackColor = true; + this.button3.Click += new System.EventHandler(this.button3_Click); + // + // button4 + // + this.button4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.button4.Enabled = false; + this.button4.Location = new System.Drawing.Point(415, 517); + this.button4.Name = "button4"; + this.button4.Size = new System.Drawing.Size(208, 23); + this.button4.TabIndex = 10; + this.button4.Text = "Blätter erzeugen"; + this.button4.UseVisualStyleBackColor = true; + this.button4.Click += new System.EventHandler(this.button4_Click); + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(636, 552); + this.Controls.Add(this.button4); + this.Controls.Add(this.button3); + this.Controls.Add(this.button2); + this.Controls.Add(this.listBox1); + this.Controls.Add(this.label3); + this.Controls.Add(this.button1); + this.Controls.Add(this.numericUpDown1); + this.Controls.Add(this.label2); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.label1); + this.Controls.Add(this.graphControl1); + this.Name = "Form1"; + this.Text = "Distanzvektoralgorithmus"; + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private GraphLibrary.GraphControl graphControl1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.NumericUpDown numericUpDown1; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.ListBox listBox1; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.Button button3; + private System.Windows.Forms.Button button4; + } +} + diff --git a/Quellcodes/DistanzVektorAlgorithmusGenerator/Form1.cs b/Quellcodes/DistanzVektorAlgorithmusGenerator/Form1.cs new file mode 100644 index 0000000..31fd1eb --- /dev/null +++ b/Quellcodes/DistanzVektorAlgorithmusGenerator/Form1.cs @@ -0,0 +1,499 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using GraphLibrary; +using GraphAlgorithms; +using OfficeOpenXml; +using System.IO; + +namespace DistanzVektorAlgorithmusGenerator +{ + public partial class Form1 : Form + { + public Form1() + { + InitializeComponent(); + graphControl1.Options |= GraphControl.DisplayOptions.ShowEdgeWeights; +#if DEBUG + textBox1.Text = "Moritz\r\nLuka\r\nDavid\r\nLeander\r\nNico\r\nJoshua\r\nMonica\r\nHannes\r\nCaroline\r\nPaul\r\nSimon"; +#endif + } + + private void button1_Click(object sender, EventArgs ea) + { + graphControl1_NodeDoubleClicked(null, null); + graphControl1.Graph = new Graph(false); + string[] names = textBox1.Text.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); + Random r = new Random(); + foreach (string s in names) + { + Node n = graphControl1.Graph.Nodes.Add(s); + n.Color = Color.White; + n.Position = new Point(r.Next(2 * graphControl1.NodeRadius, graphControl1.Width - graphControl1.NodeRadius * 4), + r.Next(2 * graphControl1.NodeRadius, graphControl1.Height - 4 * graphControl1.NodeRadius)); + } + for (int i = 1; i < graphControl1.Graph.Nodes.Count; i++) + { + Edge e = graphControl1.Graph.Edges.Add(graphControl1.Graph.Nodes[i - 1], graphControl1.Graph.Nodes[i]); + e.Weight = r.Next(1, 25); + } + while (true) + { + int diameter = UnweightedDiameter(); + if (diameter <= numericUpDown1.Value) + break; + int s = -1; + int t = -1; + + while (true) + { + if (s != t) + { + Node sn = graphControl1.Graph.Nodes[s]; + Node tn = graphControl1.Graph.Nodes[t]; + if (sn.OutEdges[tn] == null) + { + if (sn.OutEdges.Count <= 4 && tn.OutEdges.Count <= 4) + { + Edge e = graphControl1.Graph.Edges.Add(sn, tn); + e.Weight = r.Next(1, 25); + break; + } + } + } + s = r.Next(graphControl1.Graph.Nodes.Count); + t = r.Next(graphControl1.Graph.Nodes.Count); + } + } + foreach (Node n in graphControl1.Graph.Nodes) + { + while (n.OutEdges.Count < 3) + { + List fewEdges = new List(); + foreach (Node n2 in graphControl1.Graph.Nodes) + { + if (n2.OutEdges.Count <= 4 && n2 != n && n.OutEdges[n2] == null) + { + fewEdges.Add(n2); + } + } + if (fewEdges.Count == 0) + break; + int x = r.Next(fewEdges.Count); + Node tn = fewEdges[x]; + Edge e = graphControl1.Graph.Edges.Add(n, tn); + e.Weight = r.Next(1, 25); + } + } + button3.Enabled = true; + button4.Enabled = true; + } + + private int UnweightedDiameter() + { + int diameter = 0; + for (int i = 0; i < graphControl1.Graph.Nodes.Count; i++) + { + Node s = graphControl1.Graph.Nodes[i]; + for (int j = i + 1; j < graphControl1.Graph.Nodes.Count; j++) + { + Node t = graphControl1.Graph.Nodes[j]; + List path = GraphAlgorithms.GraphAlgorithms.Breitensuche(graphControl1.Graph, s, t); + if (path.Count - 1 > diameter) + { + diameter = path.Count - 1; + } + } + } + return diameter; + } + + List[] paths; + + private void graphControl1_NodeDoubleClicked(object sender, Node node) + { + if (graphControl1.Graph != null) + { + foreach (Edge e in graphControl1.Graph.Edges) + e.Color = Color.Black; + } + listBox1.Items.Clear(); + if (node == null) + { + paths = null; + label3.Text = "Optimale Route von ... aus:"; + return; + } + paths = new List[graphControl1.Graph.Nodes.Count - 1]; + label3.Text = "Optimale Route von '" + node.Label + "' aus:"; + foreach (Node n in graphControl1.Graph.Nodes) + { + if (n != node) + { + List l = GraphAlgorithms.GraphAlgorithms.Dijkstra(graphControl1.Graph, node, n); + float weight = 0; + for (int i = 1; i < l.Count; i++) + { + weight += l[i - 1].OutEdges[l[i]].Weight; + } + paths[listBox1.Items.Count] = l; + listBox1.Items.Add(n.Label + " über " + l[1].Label + " (" + weight + ")"); + } + } + } + + private void listBox1_SelectedIndexChanged(object sender, EventArgs ea) + { + foreach (Edge e in graphControl1.Graph.Edges) + e.Color = Color.Black; + if (paths != null && listBox1.SelectedIndex >= 0) + { + List p = paths[listBox1.SelectedIndex]; + for (int i = 1; i < p.Count; i++) + { + Node src = p[i - 1]; + src.OutEdges[p[i]].Color = Color.Red; + } + } + } + + private void button2_Click(object sender, EventArgs e) + { + OpenFileDialog ofd = new OpenFileDialog(); + ofd.Filter = "Graph-Beschreibungen (*.xml)|*.xml"; + if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK) + { + graphControl1.Graph = new Graph(ofd.FileName); + textBox1.Text = string.Empty; + foreach (Node n in graphControl1.Graph.Nodes) + { + textBox1.Text += n.Label + "\r\n"; + button3.Enabled = true; + button4.Enabled = true; + } + label3.Text = "Optimale Route von ... aus:"; + listBox1.Items.Clear(); + } + } + + private void button3_Click(object sender, EventArgs e) + { + SaveFileDialog sfd = new SaveFileDialog(); + sfd.Filter = "Graph-Beschreibungen (*.xml)|*.xml"; + if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK) + { + if (graphControl1.Graph != null) + { + foreach (Edge ed in graphControl1.Graph.Edges) + ed.Color = Color.Black; + } + graphControl1.Graph.SaveToXml(sfd.FileName); + listBox1_SelectedIndexChanged(null, null); + } + } + + public double MeasureTextWidth(string text, OfficeOpenXml.Style.ExcelFont font) + { + if (string.IsNullOrEmpty(text)) return 0.0; + var bitmap = new Bitmap(1, 1); + var graphics = Graphics.FromImage(bitmap); + + var drawingFont = new Font(font.Name, font.Size); + var size = graphics.MeasureString(text, drawingFont, 1000); + + //72 DPI and 96 points per inch. Excel height in points with max of 409 per Excel requirements. + return Math.Min(Convert.ToDouble(size.Width) * 72 / 96, 409); + } + + private void button4_Click(object sender, EventArgs e) + { + if (graphControl1.Graph != null) + { + if (graphControl1.Graph.Nodes.Count > 14) + { + MessageBox.Show("Warnung: Bei mehr als 14 Knoten kann es zu Darstellungsproblemen kommen."); + } + SaveFileDialog sfd = new SaveFileDialog(); + sfd.Filter = "Excel-Dateien (*.xlsx)|*.xlsx"; + if (sfd.ShowDialog() != System.Windows.Forms.DialogResult.OK) + return; + try + { + FileInfo fi = new FileInfo(sfd.FileName); + fi.Delete(); + double? headerHeight = null; + using (ExcelPackage excelFile = new ExcelPackage(fi)) + { + ExcelStyleCollection oldStyles = excelFile.Workbook.Styles.NamedStyles; + OfficeOpenXml.Style.XmlAccess.ExcelNamedStyleXml headerStyle = excelFile.Workbook.Styles.CreateNamedStyle("Header", oldStyles[0].Style); + headerStyle.Style.TextRotation = 90; + headerStyle.Style.Font.Size = 11; + headerStyle.Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center; + OfficeOpenXml.Style.XmlAccess.ExcelNamedStyleXml grayedStyle = excelFile.Workbook.Styles.CreateNamedStyle("Grayed", oldStyles[0].Style); + grayedStyle.Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid; + grayedStyle.Style.Fill.BackgroundColor.SetColor(Color.FromArgb(170, 170, 170)); + OfficeOpenXml.Style.XmlAccess.ExcelNamedStyleXml crossedStyle = excelFile.Workbook.Styles.CreateNamedStyle("Crossed", oldStyles[0].Style); + crossedStyle.Style.Border.DiagonalDown = true; + crossedStyle.Style.Border.DiagonalUp = true; + crossedStyle.Style.Border.Diagonal.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin; + double LINE_HEIGHT = 26; + double GAP_HEIGHT = 40; + double FACTOR = 0.037; // eine Einheit entspricht 0,035 cm + int nNumTablesPerPage; + for (int iN = 0; iN < graphControl1.Graph.Nodes.Count; iN++) + { + Node n = graphControl1.Graph.Nodes[iN]; + ExcelWorksheet sheet = excelFile.Workbook.Worksheets.Add(n.Label); + sheet.HeaderFooter.OddHeader.CenteredText = n.Label; + sheet.Cells.Style.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Center; + sheet.PrinterSettings.PaperSize = ePaperSize.A4; + if (!headerHeight.HasValue) + { + headerHeight = 0; + foreach (Node nn in graphControl1.Graph.Nodes) + { + double h = MeasureTextWidth("über\r\n" + nn.Label, headerStyle.Style.Font); + if (h > headerHeight) headerHeight = h; + } + headerHeight = Math.Ceiling(headerHeight.Value + 5); + } + string strNeighbors = ""; + if (n.OutEdges.Count == 1) + strNeighbors = n.OutEdges[0].Target.Label; + else + { + for (int iE = 0; iE < n.OutEdges.Count; iE++) + { + if (iE == n.OutEdges.Count - 1) + { + strNeighbors += " und "; + } + else if (iE > 0) + { + strNeighbors += ", "; + } + strNeighbors += n.OutEdges[iE].Target.Label; + } + } + string strIntro = string.Format("Die folgenden Schritte müssen in jedem Zeitschritt durchgeführt werden:\r\n" + + "1. Bestimmen Sie Ihren Distanzvektor. Er besteht aus dem kleinsten Wert jeder Zeile. Tragen Sie die Werte in die Spalte ganz rechts ein.\r\n" + + "2. Tragen Sie diese Werte auf jedes Nachrichtenblatt ein und geben Sie es jeweils an Ihre Nachbarn ({0}).\r\n" + + "3. Sie erhalten im Gegenzug Nachrichten von Ihren Nachbarn, z.B. von {1}. Sein/Ihr Abstand zu Ihnen ist {2}, tragen Sie also alle Werte, " + + "die Sie von ihm/ihr erhalten in die Spalte \"über {1}\" ein und addieren Sie jeweils {2}.", strNeighbors, n.OutEdges[0].Target.Label, n.OutEdges[0].Weight); + sheet.Cells[1, 1, 1, graphControl1.Graph.Nodes.Count + 3].Merge = true; + sheet.Cells[1, 1].Value = strIntro; + sheet.Cells[1, 1].Style.WrapText = true; + sheet.Row(1).Height = 3.8 / FACTOR; + sheet.Row(2).Height = 0.5 / FACTOR; + + sheet.Cells[1, 1, 1, graphControl1.Graph.Nodes.Count + 3].Style.Border.BorderAround(OfficeOpenXml.Style.ExcelBorderStyle.Thin); + + double tableHeight = (headerHeight.Value + LINE_HEIGHT * graphControl1.Graph.Nodes.Count) * FACTOR; + + double gapHeightCM = GAP_HEIGHT * FACTOR; + + double dNumberOfTablesPerPage = (29.7 - 1.7 - 2.5 + gapHeightCM) / (tableHeight + gapHeightCM); + while (dNumberOfTablesPerPage % 1 > 0.85) + { + if (GAP_HEIGHT > 30) + GAP_HEIGHT--; + else + LINE_HEIGHT--; + tableHeight = (headerHeight.Value + LINE_HEIGHT * graphControl1.Graph.Nodes.Count) * FACTOR; + dNumberOfTablesPerPage = (29.7 - 1.7 - 2.5 + gapHeightCM) / (tableHeight + gapHeightCM); + } +// nNumTablesPerPage = (int)dNumberOfTablesPerPage; + + double lowerEnd = 3.8 + 0.5; + + for (int time = 0; time <= numericUpDown1.Value; time++) + { + int lineBase = 3 + time * (2 + graphControl1.Graph.Nodes.Count); + if (lowerEnd + tableHeight + FACTOR > 29.7 - 1.7 - 2.5) + { + sheet.Row(lineBase - 1).Height = 1; + sheet.Row(lineBase - 1).PageBreak = true; + lowerEnd = tableHeight; + } + else + { + if (time > 0) + sheet.Row(lineBase - 1).Height = GAP_HEIGHT; + lowerEnd += tableHeight + gapHeightCM; + } + sheet.Cells[lineBase, 1].Value = "Zeitschritt\r\n" + time; + sheet.Cells[lineBase, 1].Style.Font.Size = 13; + sheet.Cells[lineBase, 1].Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center; + for (int i = 0; i < graphControl1.Graph.Nodes.Count; i++) + { + Node other = graphControl1.Graph.Nodes[i]; + sheet.Cells[lineBase + i + 1, 1].Value = "zu " + other.Label; + sheet.Cells[lineBase + i + 1, 1].Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Left; + sheet.Cells[lineBase, 2 + i].Value = "über\r\n" + other.Label; + sheet.Row(lineBase + i + 1).Height = LINE_HEIGHT; + Edge ed = n.OutEdges[other]; + if (ed == null) + sheet.Cells[lineBase + 1, 2 + i, lineBase + graphControl1.Graph.Nodes.Count, 2 + i].StyleName = "Crossed"; + else + { + sheet.Cells[lineBase + 1 + i, 2 + i].Value = (int)ed.Weight; + sheet.Cells[lineBase + 1 + i, 2 + i].Style.Font.Size = 15; + sheet.Cells[lineBase + 1 + i, 2 + i].Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center; + if (time == 0) + { + sheet.Cells[lineBase + 1 + i, 2 + graphControl1.Graph.Nodes.Count].Value = (int)ed.Weight; + sheet.Cells[lineBase + 1 + i, 2 + graphControl1.Graph.Nodes.Count].Style.Font.Size = 15; + sheet.Cells[lineBase + 1 + i, 2 + graphControl1.Graph.Nodes.Count].Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center; + } + } + } + sheet.Cells[iN + lineBase + 1, 2, iN + lineBase + 1, 2 + graphControl1.Graph.Nodes.Count].StyleName = "Grayed"; + sheet.Cells[lineBase + 1, 2 + iN, lineBase + graphControl1.Graph.Nodes.Count, 2 + iN].StyleName = "Grayed"; + sheet.Cells[lineBase, 2 + graphControl1.Graph.Nodes.Count].Value = "Distanz-\r\nvektor"; + sheet.Cells[lineBase, 2, lineBase, graphControl1.Graph.Nodes.Count + 2].StyleName = "Header"; + sheet.Row(lineBase).Height = headerHeight.Value; + ExcelRange all = sheet.Cells[lineBase, 1, lineBase + graphControl1.Graph.Nodes.Count, graphControl1.Graph.Nodes.Count + 2]; + all.Style.Border.Bottom.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin; + all.Style.Border.Left.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin; + all.Style.Border.Right.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin; + all.Style.Border.Top.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin; + sheet.Cells[lineBase, graphControl1.Graph.Nodes.Count + 2, lineBase + graphControl1.Graph.Nodes.Count, graphControl1.Graph.Nodes.Count + 2].Style.Border.Left.Style = OfficeOpenXml.Style.ExcelBorderStyle.Double; + + } + for (int i = 0; i <= graphControl1.Graph.Nodes.Count; i++) + { + sheet.Column(2 + i).Width = 5; // 0,98 cm => 1 entspricht 0,2 cm Breite + } + ExcelColumn col = sheet.Column(1); + col.AutoFit(); + double maxFirstCol = 17.2 - (graphControl1.Graph.Nodes.Count + 1) * 0.98; + if (maxFirstCol * 5 < col.Width) + col.Width = maxFirstCol * 5; + sheet.Column(3 + graphControl1.Graph.Nodes.Count).Width = 5 * Math.Max(0, 17.2 - (col.Width / 5 + (graphControl1.Graph.Nodes.Count + 1) * 0.98)); + } + ExcelWorksheet shMsgs = excelFile.Workbook.Worksheets.Add("Nachrichten"); + shMsgs.Cells.Style.Font.Size = 13; + int row = 1; + shMsgs.Column(1).Width = 15; + for (int i = 1; i < numericUpDown1.Value; i++) + shMsgs.Column(i + 1).Width = 8; + shMsgs.Cells.Style.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Center; + LINE_HEIGHT = 21; + GAP_HEIGHT = LINE_HEIGHT; + + double HEADER_HEIGHT = 3 * 15 + 19; + double cardHeight = (HEADER_HEIGHT + LINE_HEIGHT * graphControl1.Graph.Nodes.Count) * FACTOR; + + double gh = 2 * GAP_HEIGHT * FACTOR; + + double dNumberOfCardsPerPage = (29.7 - 2.5 - 2.5 + gh) / (cardHeight + gh); + while (dNumberOfCardsPerPage % 1 > 0.85) + { + if (GAP_HEIGHT > 15) + GAP_HEIGHT--; + else + LINE_HEIGHT--; + cardHeight = (headerHeight.Value + LINE_HEIGHT * graphControl1.Graph.Nodes.Count) * FACTOR; + dNumberOfCardsPerPage = (29.7 - 2.5 - 2.5 + gh) / (cardHeight + gh); + } + nNumTablesPerPage = (int)dNumberOfCardsPerPage; + int countTables = 0; + for (int i = 0; i < graphControl1.Graph.Nodes.Count; i++) + { + Node src = graphControl1.Graph.Nodes[i]; + for (int j = 0; j < src.OutEdges.Count; j++) + { + countTables++; + int firstRow = row; + Node trg = src.OutEdges[j].Target; + shMsgs.Cells[row, 1].Value = "Von: " + src.Label; + shMsgs.Cells[row, 1, row, 2].Merge = true; + shMsgs.Cells[row, 3].Value = "An: " + trg.Label; + shMsgs.Cells[row, 3, row, (int)numericUpDown1.Value + 1].Merge = true; + row++; + shMsgs.Cells[row, 1].Value = "Mein neuer Distanzvektor"; + shMsgs.Cells[row, 1].Style.Font.Bold = true; + shMsgs.Cells[row, 1].Style.Font.Size += 2; + shMsgs.Row(row).Height = 19; + shMsgs.Cells[row, 1].Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center; + shMsgs.Cells[row, 1, row, (int)numericUpDown1.Value + 1].Merge = true; + row++; + shMsgs.Cells[row, 1].Value = "Distanz\r\nzu:"; + shMsgs.Cells[row, 1, row + 1, 1].Merge = true; + shMsgs.Cells[row, 2].Value = "nach Zeitschritt"; + shMsgs.Cells[row, 2].Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center; + shMsgs.Cells[row, 2, row, (int)numericUpDown1.Value + 1].Merge = true; + row++; + for (int k = 0; k < numericUpDown1.Value; k++) + { + shMsgs.Cells[row, 2 + k].Value = k; + shMsgs.Cells[row, 2 + k].Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center; + } + row++; + foreach (Node n in graphControl1.Graph.Nodes) + { + shMsgs.Cells[row, 1].Value = n.Label; + shMsgs.Row(row).Height = LINE_HEIGHT; + if (n == src || n == trg) + { + for (int k = 0; k < numericUpDown1.Value; k++) + { + shMsgs.Cells[row, 2 + k].Style.Border.Diagonal.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin; + shMsgs.Cells[row, 2 + k].Style.Border.DiagonalDown = true; + shMsgs.Cells[row, 2 + k].Style.Border.DiagonalUp = true; + } + } + row++; + } + ExcelRange range = shMsgs.Cells[firstRow, 1, row - 1, (int)numericUpDown1.Value + 1]; + range.Style.Border.Left.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin; + range.Style.Border.Right.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin; + range.Style.Border.Top.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin; + range.Style.Border.Bottom.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin; + shMsgs.Cells[firstRow + 2, 2].Style.Border.Bottom.Style = OfficeOpenXml.Style.ExcelBorderStyle.None; + shMsgs.Cells[firstRow + 3, 2, firstRow + 3, (int)numericUpDown1.Value + 1].Style.Border.Top.Style = OfficeOpenXml.Style.ExcelBorderStyle.None; + if (countTables == nNumTablesPerPage) + { + shMsgs.Row(row).Height = 1; + shMsgs.Row(row).PageBreak = true; + countTables = 0; + } + else + { + shMsgs.Row(row).Height = GAP_HEIGHT; + ExcelRange er = shMsgs.Cells[row, 1]; + er.Value = "(hier auseinanderschneiden)"; + er.Style.Font.Size = 8; + er.Style.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Bottom; + er.Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center; + shMsgs.Cells[row, 1, row, (int)numericUpDown1.Value + 2].Merge = true; + shMsgs.Cells[row, 1, row, (int)numericUpDown1.Value + 2].Style.Border.Bottom.Style = OfficeOpenXml.Style.ExcelBorderStyle.Dashed; + row++; + er = shMsgs.Cells[row, 1]; + er.Value = "(hier auseinanderschneiden)"; + er.Style.Font.Size = 8; + er.Style.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Top; + er.Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center; + shMsgs.Cells[row, 1, row, (int)numericUpDown1.Value + 2].Merge = true; + shMsgs.Row(row).Height = GAP_HEIGHT; + } + row++; + } + } + shMsgs.Column((int)numericUpDown1.Value + 2).Width = 5 * Math.Max(0, 17.2 - (3 + 1.8*(double)numericUpDown1.Value)); + excelFile.Save(); + } + } + catch (Exception x) + { + MessageBox.Show(x.Message); + } + } + } + } +} diff --git a/Quellcodes/DistanzVektorAlgorithmusGenerator/Form1.resx b/Quellcodes/DistanzVektorAlgorithmusGenerator/Form1.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Quellcodes/DistanzVektorAlgorithmusGenerator/Form1.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Quellcodes/DistanzVektorAlgorithmusGenerator/GraphAlgorithms.dll b/Quellcodes/DistanzVektorAlgorithmusGenerator/GraphAlgorithms.dll new file mode 100644 index 0000000..e815815 Binary files /dev/null and b/Quellcodes/DistanzVektorAlgorithmusGenerator/GraphAlgorithms.dll differ diff --git a/Quellcodes/DistanzVektorAlgorithmusGenerator/GraphLibrary.dll b/Quellcodes/DistanzVektorAlgorithmusGenerator/GraphLibrary.dll new file mode 100644 index 0000000..461267e Binary files /dev/null and b/Quellcodes/DistanzVektorAlgorithmusGenerator/GraphLibrary.dll differ diff --git a/Quellcodes/DistanzVektorAlgorithmusGenerator/Program.cs b/Quellcodes/DistanzVektorAlgorithmusGenerator/Program.cs new file mode 100644 index 0000000..188d6bf --- /dev/null +++ b/Quellcodes/DistanzVektorAlgorithmusGenerator/Program.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Windows.Forms; + +namespace DistanzVektorAlgorithmusGenerator +{ + static class Program + { + /// + /// Der Haupteinstiegspunkt für die Anwendung. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } + } +} diff --git a/Quellcodes/DistanzVektorAlgorithmusGenerator/Properties/AssemblyInfo.cs b/Quellcodes/DistanzVektorAlgorithmusGenerator/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..450510d --- /dev/null +++ b/Quellcodes/DistanzVektorAlgorithmusGenerator/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Allgemeine Informationen über eine Assembly werden über die folgenden +// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, +// die mit einer Assembly verknüpft sind. +[assembly: AssemblyTitle("DistanzVektorAlgorithmusGenerator")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("DistanzVektorAlgorithmusGenerator")] +[assembly: AssemblyCopyright("Copyright © 2018")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Durch Festlegen von ComVisible auf "false" werden die Typen in dieser Assembly unsichtbar +// für COM-Komponenten. Wenn Sie auf einen Typ in dieser Assembly von +// COM zugreifen müssen, legen Sie das ComVisible-Attribut für diesen Typ auf "true" fest. +[assembly: ComVisible(false)] + +// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird +[assembly: Guid("1f6d7e9e-20d1-4d9d-8b50-a48548c80f06")] + +// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: +// +// Hauptversion +// Nebenversion +// Buildnummer +// Revision +// +// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern +// übernehmen, indem Sie "*" eingeben: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Quellcodes/DistanzVektorAlgorithmusGenerator/Properties/Resources.Designer.cs b/Quellcodes/DistanzVektorAlgorithmusGenerator/Properties/Resources.Designer.cs new file mode 100644 index 0000000..3b24b80 --- /dev/null +++ b/Quellcodes/DistanzVektorAlgorithmusGenerator/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion:4.0.30319.42000 +// +// Änderungen an dieser Datei können fehlerhaftes Verhalten verursachen und gehen verloren, wenn +// der Code neu generiert wird. +// +//------------------------------------------------------------------------------ + +namespace DistanzVektorAlgorithmusGenerator.Properties +{ + + + /// + /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. + /// + // Diese Klasse wurde von der StronglyTypedResourceBuilder-Klasse + // über ein Tool wie ResGen oder Visual Studio automatisch generiert. + // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen + // mit der Option /str erneut aus, oder erstellen Sie Ihr VS-Projekt neu. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DistanzVektorAlgorithmusGenerator.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle + /// Ressourcenlookups, die diese stark typisierte Ressourcenklasse verwenden. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/Quellcodes/DistanzVektorAlgorithmusGenerator/Properties/Resources.resx b/Quellcodes/DistanzVektorAlgorithmusGenerator/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/Quellcodes/DistanzVektorAlgorithmusGenerator/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Quellcodes/DistanzVektorAlgorithmusGenerator/Properties/Settings.Designer.cs b/Quellcodes/DistanzVektorAlgorithmusGenerator/Properties/Settings.Designer.cs new file mode 100644 index 0000000..4ed9123 --- /dev/null +++ b/Quellcodes/DistanzVektorAlgorithmusGenerator/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace DistanzVektorAlgorithmusGenerator.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/Quellcodes/DistanzVektorAlgorithmusGenerator/Properties/Settings.settings b/Quellcodes/DistanzVektorAlgorithmusGenerator/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/Quellcodes/DistanzVektorAlgorithmusGenerator/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + +