Präzisierung der Definitionen von Kantenzug, Pfad, Weg und Kreis
This commit is contained in:
parent
c254b039b3
commit
80ed6017d1
40 changed files with 83 additions and 83 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -14,7 +14,7 @@ import javafx.application.Platform;
|
|||
* Abstrakte Oberklasse für alle zu simulierende Algorithmen
|
||||
* Diese müssen die Methode getBezeichnung(): String und fuehreAlgorithmusAus() überschreiben.
|
||||
*
|
||||
* @version 6.7 (Dez. 2020)
|
||||
* @version 7.1 12.02.2025
|
||||
* @author Thomas Schaller
|
||||
*/
|
||||
|
||||
|
|
@ -78,10 +78,9 @@ public abstract class GraphAlgo extends Thread {
|
|||
/**
|
||||
* Muss vom Algorithmus aufgerufen werden, um einen Haltepunkt zu setzen
|
||||
*/
|
||||
public void step() {
|
||||
public void step() throws InterruptedException {
|
||||
if(gp == null) return;
|
||||
try{
|
||||
//System.out.println("Step");
|
||||
gp.updateImage();
|
||||
aktuellerZustand = g.getStatus();
|
||||
waitforclick = true;
|
||||
|
|
@ -95,9 +94,13 @@ public abstract class GraphAlgo extends Thread {
|
|||
if (hilfe != null) hilfe.setReviewAllowed(false);
|
||||
g.setStatus(aktuellerZustand);
|
||||
aktuellerZustand = null;
|
||||
if(Thread.interrupted()){
|
||||
throw new InterruptedException();
|
||||
}
|
||||
}catch(Exception e) {
|
||||
// Erneutes Stop, damit nicht stop während des Sleeps hier abgefangen wird.
|
||||
stop();
|
||||
//System.out.println("Step wurde unterbrochen");
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -146,17 +149,13 @@ public abstract class GraphAlgo extends Thread {
|
|||
if (hilfe != null) hilfe.setReviewAllowed(false);
|
||||
fuehreAlgorithmusAus();
|
||||
gp.updateImage();
|
||||
// System.out.println("Algorithmus beendet");
|
||||
} catch( ThreadDeath e){
|
||||
// System.out.println("Algorithmus vorzeitig beendet."+e);
|
||||
}
|
||||
//System.out.println("Algorithmus beendet");
|
||||
} catch( InterruptedException e){
|
||||
//System.out.println("Algorithmus vorzeitig beendet."+e);
|
||||
} finally {
|
||||
if (hilfe != null) hilfe.setReviewAllowed(true);
|
||||
inArbeit = false;
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
// Ende Methoden
|
||||
|
|
@ -184,7 +183,7 @@ public abstract class GraphAlgo extends Thread {
|
|||
/**
|
||||
* Methode für den eigentlichen Algorithmus
|
||||
*/
|
||||
public abstract void fuehreAlgorithmusAus();
|
||||
public abstract void fuehreAlgorithmusAus() throws InterruptedException;
|
||||
|
||||
/**
|
||||
* Name des Algorithmus für die Dropdown-Auswahl
|
||||
|
|
@ -257,3 +256,4 @@ public abstract class GraphAlgo extends Thread {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import graph.*;
|
|||
* Dieser Algorithmus findet die kürzesten Pfade in einem gewichteten Graphen.
|
||||
* Algorithmus: Bellman-Ford
|
||||
*
|
||||
* @version 1.0 from 10.12.2020
|
||||
* @version 7.1 from 12.02.2025
|
||||
* @author Thomas Schaller
|
||||
*/
|
||||
|
||||
|
|
@ -37,7 +37,7 @@ public class GraphAlgo_BellmanFord extends GraphAlgo {
|
|||
}
|
||||
|
||||
// Anfang Methoden
|
||||
public void fuehreAlgorithmusAus() {
|
||||
public void fuehreAlgorithmusAus() throws InterruptedException {
|
||||
if (g.getAnzahlKnoten()==0) {
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import graph.*;
|
|||
* Dieser Algorithmus nummeriert alle Knoten des Graphen.
|
||||
* Algorithmus: Breitensuche mit ToDo-Liste (Schlange)
|
||||
*
|
||||
* @version 1.0 from 10.12.2020
|
||||
* @version 7.1 from 12.02.2025
|
||||
* @author Thomas Schaller
|
||||
*/
|
||||
|
||||
|
|
@ -23,7 +23,7 @@ public class GraphAlgo_Breitensuche extends GraphAlgo {
|
|||
}
|
||||
|
||||
// Anfang Methoden
|
||||
public void fuehreAlgorithmusAus() {
|
||||
public void fuehreAlgorithmusAus() throws InterruptedException {
|
||||
if (g.getAnzahlKnoten()==0) {
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import graph.*;
|
|||
* die gleiche Farbe haben und möglichst wenige Farben benutzt werden.
|
||||
* Algorithmus: Backtracking
|
||||
*
|
||||
* @version 1.0 from 10.12.2020
|
||||
* @version 7.1 from 12.02.2025
|
||||
* @author Thomas Schaller
|
||||
*/
|
||||
|
||||
|
|
@ -25,7 +25,7 @@ public class GraphAlgo_ColoringBacktracking extends GraphAlgo {
|
|||
}
|
||||
|
||||
// Anfang Methoden
|
||||
public void fuehreAlgorithmusAus() {
|
||||
public void fuehreAlgorithmusAus() throws InterruptedException {
|
||||
if (g.getAnzahlKnoten()==0) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -35,7 +35,7 @@ public class GraphAlgo_ColoringBacktracking extends GraphAlgo {
|
|||
step();
|
||||
}
|
||||
|
||||
private void bestimmeColoring(int benutzteFarben) {
|
||||
private void bestimmeColoring(int benutzteFarben) throws InterruptedException {
|
||||
int min = Integer.MAX_VALUE;
|
||||
|
||||
List<Knoten> knoten = g.getAlleKnoten(k->k.getFarbe()<=0);
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import graph.*;
|
|||
* 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
|
||||
* @version 7.1 from 12.02.2025
|
||||
* @author Thomas Schaller
|
||||
*/
|
||||
public class GraphAlgo_ColoringGreedy extends GraphAlgo {
|
||||
|
|
@ -26,7 +26,7 @@ public class GraphAlgo_ColoringGreedy extends GraphAlgo {
|
|||
// Ende Attribute
|
||||
|
||||
// Anfang Methoden
|
||||
public void fuehreAlgorithmusAus() {
|
||||
public void fuehreAlgorithmusAus() throws InterruptedException {
|
||||
List<Knoten> knoten = g.getAlleKnoten();
|
||||
info("Wiederhole für jeden Knoten");
|
||||
for (Knoten aktuellerKnoten: knoten ) {
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import graph.*;
|
|||
* die gleiche Farbe haben und möglichst wenige Farben benutzt werden.
|
||||
* Algorithmus: Näherungslösung mit Greedy-Algorithmus (Knotenreihenfolge zufällig)
|
||||
*
|
||||
* @version 1.0 from 10.12.2020
|
||||
* @version 7.1 from 12.02.2025
|
||||
* @author Thomas Schaller
|
||||
*/
|
||||
|
||||
|
|
@ -28,7 +28,7 @@ public class GraphAlgo_ColoringGreedyRandom extends GraphAlgo {
|
|||
// Ende Attribute
|
||||
|
||||
// Anfang Methoden
|
||||
public void fuehreAlgorithmusAus() {
|
||||
public void fuehreAlgorithmusAus() throws InterruptedException {
|
||||
List<Knoten> knoten = g.getAlleKnoten();
|
||||
Collections.shuffle(knoten);
|
||||
info("Wiederhole für jeden Knoten");
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import graph.*;
|
|||
* Dieser Algorithmus findet die kürzesten Pfade in einem gewichteten Graphen.
|
||||
* Algorithmus: Dijkstra
|
||||
*
|
||||
* @version 1.0 from 10.12.2020
|
||||
* @version 7.1 from 12.02.2025
|
||||
* @author Thomas Schaller
|
||||
*/
|
||||
|
||||
|
|
@ -31,7 +31,7 @@ public class GraphAlgo_Dijkstra extends GraphAlgo {
|
|||
}
|
||||
// Anfang Methoden
|
||||
|
||||
public void fuehreAlgorithmusAus() {
|
||||
public void fuehreAlgorithmusAus() throws InterruptedException {
|
||||
if (g.getAnzahlKnoten()==0) {
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ import graph.*;
|
|||
* Dieser Algorithmus findet die kürzesten Pfade in einem gewichteten Graphen.
|
||||
* Algorithmus: Dijkstra
|
||||
*
|
||||
* @version 1.0 from 10.12.2020
|
||||
* @version 7.1 from 12.02.2025
|
||||
* @author Thomas Schaller
|
||||
*/
|
||||
|
||||
|
|
@ -34,7 +34,7 @@ public class GraphAlgo_DijkstraMitVorgaenger extends GraphAlgo {
|
|||
gp.getGraphOptions().knotenLangtext = new String[]{"Infotext","Entfernung","Vorgänger","Markiert","Besucht"};
|
||||
}
|
||||
|
||||
public void fuehreAlgorithmusAus() {
|
||||
public void fuehreAlgorithmusAus() throws InterruptedException {
|
||||
if (g.getAnzahlKnoten()==0) {
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import graph.*;
|
|||
* und bestimmt den Zeitbedarf.
|
||||
* Algorithmus: Backtracking
|
||||
*
|
||||
* @version 1.0 from 10.12.2020
|
||||
* @version 7.1 from 12.02.2025
|
||||
* @author Thomas Schaller
|
||||
*/
|
||||
|
||||
|
|
@ -26,7 +26,7 @@ public class GraphAlgo_DominatingSetBacktracking extends GraphAlgo {
|
|||
|
||||
|
||||
// Anfang Methoden
|
||||
public void fuehreAlgorithmusAus() {
|
||||
public void fuehreAlgorithmusAus() throws InterruptedException {
|
||||
long starttime = System.currentTimeMillis();
|
||||
if (g.getAnzahlKnoten()==0) {
|
||||
return;
|
||||
|
|
@ -41,7 +41,7 @@ public class GraphAlgo_DominatingSetBacktracking extends GraphAlgo {
|
|||
|
||||
|
||||
|
||||
private void bestimmeDominierendeMenge(int knoten) {
|
||||
private void bestimmeDominierendeMenge(int knoten) throws InterruptedException {
|
||||
List<String> status = g.getStatus();
|
||||
|
||||
List<Knoten> markierte = g.getAlleKnoten(kn->kn.isMarkiert());
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ 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
|
||||
* @version 7.1 from 12.02.2025
|
||||
* @author Thomas Schaller
|
||||
*/
|
||||
|
||||
|
|
@ -31,7 +31,7 @@ public class GraphAlgo_DominatingSetGenetisch extends GraphAlgo {
|
|||
|
||||
|
||||
// Anfang Methoden
|
||||
public void fuehreAlgorithmusAus() {
|
||||
public void fuehreAlgorithmusAus() throws InterruptedException {
|
||||
population = new int[popGroesse][g.getAnzahlKnoten()];
|
||||
double[] bewertungen = new double[popGroesse];
|
||||
for(int i=0; i<popGroesse; i++) {
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import graph.*;
|
|||
* Algorithmus: Greedy mit Strategie:
|
||||
* Nimm den Knoten mit den meisten Nachbarn
|
||||
*
|
||||
* @version 1.0 from 10.12.2020
|
||||
* @version 7.1 from 12.02.2025
|
||||
* @author Thomas Schaller
|
||||
*/
|
||||
|
||||
|
|
@ -48,7 +48,7 @@ public class GraphAlgo_DominatingSetGreedyA extends GraphAlgo {
|
|||
}
|
||||
|
||||
// Anfang Methoden
|
||||
public void fuehreAlgorithmusAus() {
|
||||
public void fuehreAlgorithmusAus() throws InterruptedException {
|
||||
if (g.getAnzahlKnoten()==0) {
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import graph.*;
|
|||
* und bestimmt den Zeitbedarf.
|
||||
* Algorithmus: Greedy mit Strategie:
|
||||
* Nimm den Knoten mit den wenigsten Nachbarn
|
||||
* @version 1.0 from 10.12.2020
|
||||
* @version 7.1 from 12.02.2025
|
||||
* @author Thomas Schaller
|
||||
*/
|
||||
|
||||
|
|
@ -47,7 +47,7 @@ public class GraphAlgo_DominatingSetGreedyB extends GraphAlgo {
|
|||
}
|
||||
|
||||
// Anfang Methoden
|
||||
public void fuehreAlgorithmusAus() {
|
||||
public void fuehreAlgorithmusAus() throws InterruptedException {
|
||||
if (g.getAnzahlKnoten()==0) {
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import graph.*;
|
|||
* Algorithmus: Greedy mit Strategie:
|
||||
* Nimm den Knoten mit den meisten Nachbarn
|
||||
*
|
||||
* @version 1.0 from 10.12.2020
|
||||
* @version 7.1 from 12.02.2025
|
||||
* @author Thomas Schaller
|
||||
*/
|
||||
|
||||
|
|
@ -49,7 +49,7 @@ public class GraphAlgo_DominatingSetGreedyC extends GraphAlgo {
|
|||
}
|
||||
|
||||
// Anfang Methoden
|
||||
public void fuehreAlgorithmusAus() {
|
||||
public void fuehreAlgorithmusAus() throws InterruptedException {
|
||||
if (g.getAnzahlKnoten()==0) {
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import graph.*;
|
|||
* Algorithmus: Greedy mit Strategie:
|
||||
* Nimm den Knoten mit den meisten Nachbarn
|
||||
*
|
||||
* @version 1.0 from 10.12.2020
|
||||
* @version 7.1 from 12.02.2025
|
||||
* @author Thomas Schaller
|
||||
*/
|
||||
|
||||
|
|
@ -49,7 +49,7 @@ public class GraphAlgo_DominatingSetGreedyD extends GraphAlgo {
|
|||
}
|
||||
|
||||
// Anfang Methoden
|
||||
public void fuehreAlgorithmusAus() {
|
||||
public void fuehreAlgorithmusAus() throws InterruptedException {
|
||||
if (g.getAnzahlKnoten()==0) {
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import graph.*;
|
|||
* 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
|
||||
* @version 7.1 from 12.02.2025
|
||||
* @author Thomas Schaller
|
||||
*/
|
||||
|
||||
|
|
@ -30,7 +30,7 @@ public class GraphAlgo_DominatingSetGreedyE extends GraphAlgo {
|
|||
* ein nicht abgedeckten Knoten, der von einem beliebigen schon ausgewählten Knoten die Entfernung 3 hat
|
||||
*/
|
||||
|
||||
private Knoten bestimmeBesten() {
|
||||
private Knoten bestimmeBesten() throws InterruptedException {
|
||||
Random r= new Random();
|
||||
|
||||
List<Knoten> markierte = g.getAlleKnoten(k->k.isMarkiert() );
|
||||
|
|
@ -68,7 +68,7 @@ public class GraphAlgo_DominatingSetGreedyE extends GraphAlgo {
|
|||
}
|
||||
|
||||
// Anfang Methoden
|
||||
public void fuehreAlgorithmusAus() {
|
||||
public void fuehreAlgorithmusAus() throws InterruptedException {
|
||||
if (g.getAnzahlKnoten()==0) {
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import graph.*;
|
|||
* 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
|
||||
* @version 7.1 from 12.02.2025
|
||||
* @author Thomas Schaller
|
||||
*/
|
||||
|
||||
|
|
@ -30,7 +30,7 @@ public class GraphAlgo_DominatingSetGreedyF extends GraphAlgo {
|
|||
* ein nicht abgedeckten Knoten, der von einem beliebigen schon ausgewählten Knoten die Entfernung 3 hat
|
||||
*/
|
||||
|
||||
private Knoten bestimmeBesten() {
|
||||
private Knoten bestimmeBesten() throws InterruptedException {
|
||||
Random r= new Random();
|
||||
|
||||
List<Knoten> markierte = g.getAlleKnoten(k->k.isMarkiert() );
|
||||
|
|
@ -68,7 +68,7 @@ public class GraphAlgo_DominatingSetGreedyF extends GraphAlgo {
|
|||
}
|
||||
|
||||
// Anfang Methoden
|
||||
public void fuehreAlgorithmusAus() {
|
||||
public void fuehreAlgorithmusAus() throws InterruptedException {
|
||||
if (g.getAnzahlKnoten()==0) {
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import graph.*;
|
|||
* 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
|
||||
* @version 7.1 from 12.02.2025
|
||||
* @author Thomas Schaller
|
||||
*/
|
||||
|
||||
|
|
@ -30,7 +30,7 @@ public class GraphAlgo_DominatingSetGreedyG extends GraphAlgo {
|
|||
* ein nicht abgedeckten Knoten, der von einem beliebigen schon ausgewählten Knoten die Entfernung 3 hat
|
||||
*/
|
||||
|
||||
private Knoten bestimmeBesten() {
|
||||
private Knoten bestimmeBesten() throws InterruptedException {
|
||||
Random r= new Random();
|
||||
|
||||
List<Knoten> markierte = g.getAlleKnoten(k->k.isMarkiert() );
|
||||
|
|
@ -68,7 +68,7 @@ public class GraphAlgo_DominatingSetGreedyG extends GraphAlgo {
|
|||
}
|
||||
|
||||
// Anfang Methoden
|
||||
public void fuehreAlgorithmusAus() {
|
||||
public void fuehreAlgorithmusAus() throws InterruptedException {
|
||||
if (g.getAnzahlKnoten()==0) {
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import graph.*;
|
|||
* 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
|
||||
* @version 7.1 from 12.02.2025
|
||||
* @author Thomas Schaller
|
||||
*/
|
||||
|
||||
|
|
@ -29,7 +29,7 @@ public class GraphAlgo_DominatingSetGreedyH extends GraphAlgo {
|
|||
/** 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() {
|
||||
private Knoten bestimmeBesten() throws InterruptedException {
|
||||
Random r = new Random();
|
||||
List<Knoten> markierte = g.getAlleKnoten(k->k.isMarkiert() );
|
||||
List<Knoten> nichtabgedeckte = g.getAlleKnoten(k->!k.isMarkiert() && !k.isBesucht() );
|
||||
|
|
@ -71,7 +71,7 @@ public class GraphAlgo_DominatingSetGreedyH extends GraphAlgo {
|
|||
}
|
||||
|
||||
// Anfang Methoden
|
||||
public void fuehreAlgorithmusAus() {
|
||||
public void fuehreAlgorithmusAus() throws InterruptedException {
|
||||
if (g.getAnzahlKnoten()==0) {
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import graph.*;
|
|||
* 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
|
||||
* @version 7.1 from 12.02.2025
|
||||
* @author Thomas Schaller
|
||||
*/
|
||||
|
||||
|
|
@ -30,7 +30,7 @@ public class GraphAlgo_DominatingSetGreedyI extends GraphAlgo {
|
|||
* ein nicht abgedeckten Knoten, der von den ausgewählten Knoten eine möglichst große Entfernung hat
|
||||
*/
|
||||
|
||||
private Knoten bestimmeBesten() {
|
||||
private Knoten bestimmeBesten() throws InterruptedException {
|
||||
Random r = new Random();
|
||||
List<Knoten> markierte = g.getAlleKnoten(k->k.isMarkiert() );
|
||||
List<Knoten> nichtabgedeckte = g.getAlleKnoten(k->!k.isMarkiert() && !k.isBesucht() );
|
||||
|
|
@ -84,7 +84,7 @@ public class GraphAlgo_DominatingSetGreedyI extends GraphAlgo {
|
|||
|
||||
|
||||
// Anfang Methoden
|
||||
public void fuehreAlgorithmusAus() {
|
||||
public void fuehreAlgorithmusAus() throws InterruptedException {
|
||||
if (g.getAnzahlKnoten()==0) {
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import graph.*;
|
|||
* 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
|
||||
* @version 7.1 from 12.02.2025
|
||||
* @author Thomas Schaller
|
||||
*/
|
||||
|
||||
|
|
@ -18,7 +18,7 @@ public class GraphAlgo_EulerkreisExistenz extends GraphAlgo {
|
|||
return "Eulerkreis (Existenz)";
|
||||
}
|
||||
|
||||
public void fuehreAlgorithmusAus() {
|
||||
public void fuehreAlgorithmusAus() throws InterruptedException {
|
||||
if (g.getAnzahlKnoten()==0) {
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ public class GraphAlgo_MST_Kruskal extends GraphAlgo {
|
|||
|
||||
|
||||
// Anfang Methoden
|
||||
public void fuehreAlgorithmusAus() {
|
||||
public void fuehreAlgorithmusAus() throws InterruptedException {
|
||||
int farbe = 1;
|
||||
List<Kante> kanten = g.getAlleKanten();
|
||||
List<Knoten> knoten = g.getAlleKnoten();
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ public class GraphAlgo_MST_Prim extends GraphAlgo {
|
|||
return "MST (Prim)";
|
||||
}
|
||||
|
||||
public void fuehreAlgorithmusAus() {
|
||||
public void fuehreAlgorithmusAus() throws InterruptedException {
|
||||
int markiert = 0;
|
||||
List<Knoten> knoten;
|
||||
List<Kante> kanten;
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ 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
|
||||
* @version 7.1 from 12.02.2025
|
||||
* @author Thomas Schaller
|
||||
*/
|
||||
|
||||
|
|
@ -23,7 +23,7 @@ public class GraphAlgo_Moore extends GraphAlgo {
|
|||
}
|
||||
|
||||
// Anfang Methoden
|
||||
public void fuehreAlgorithmusAus() {
|
||||
public void fuehreAlgorithmusAus() throws InterruptedException {
|
||||
if (g.getAnzahlKnoten()==0) {
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ public class GraphAlgo_TSPBacktracking extends GraphAlgo {
|
|||
|
||||
|
||||
// Anfang Methoden
|
||||
public void fuehreAlgorithmusAus() {
|
||||
public void fuehreAlgorithmusAus() throws InterruptedException {
|
||||
start = this.getStartKnoten();
|
||||
probiere(start);
|
||||
g.setStatus(besteLoesung);
|
||||
|
|
@ -40,7 +40,7 @@ public class GraphAlgo_TSPBacktracking extends GraphAlgo {
|
|||
melde("beste Route gefunden:" +getInfo());
|
||||
} // end of for
|
||||
|
||||
public void probiere(Knoten akt) {
|
||||
public void probiere(Knoten akt) throws InterruptedException {
|
||||
boolean fertig = true;
|
||||
infoIndentMore();
|
||||
akt.setMarkiert(true);
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ public class GraphAlgo_TSPGenetisch extends GraphAlgo {
|
|||
}
|
||||
|
||||
// Anfang Methoden
|
||||
public void fuehreAlgorithmusAus() {
|
||||
public void fuehreAlgorithmusAus() throws InterruptedException {
|
||||
population = new int[popGroesse][g.getAnzahlKnoten()+1];
|
||||
double[] rundreiseLaenge = new double[popGroesse];
|
||||
for(int i=0; i<popGroesse; i++) {
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ public class GraphAlgo_TSPGreedy extends GraphAlgo {
|
|||
|
||||
|
||||
// Anfang Methoden
|
||||
public void fuehreAlgorithmusAus() {
|
||||
public void fuehreAlgorithmusAus() throws InterruptedException {
|
||||
Knoten start = this.getStartKnoten();
|
||||
Knoten akt = start;
|
||||
Kante min;
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ public class GraphAlgo_TSPGreedy2 extends GraphAlgo {
|
|||
}
|
||||
|
||||
// Anfang Methoden
|
||||
public void fuehreAlgorithmusAus() {
|
||||
public void fuehreAlgorithmusAus() throws InterruptedException {
|
||||
int farbe = 1;
|
||||
int anzkanten = 0;
|
||||
List<Kante> kanten = g.getAlleKanten();
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ public class GraphAlgo_TSPGreedyOpt extends GraphAlgo {
|
|||
}
|
||||
|
||||
// Anfang Methoden
|
||||
public void fuehreAlgorithmusAus() {
|
||||
public void fuehreAlgorithmusAus() throws InterruptedException {
|
||||
Knoten start = this.getStartKnoten();
|
||||
Knoten akt = start;
|
||||
List<Knoten> reihung = new ArrayList<Knoten>();
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import graph.*;
|
|||
* Dieser Algorithmus nummeriert alle Knoten des Graphen.
|
||||
* Algorithmus: Tiefensuche mit ToDo-Liste (Stapel)
|
||||
*
|
||||
* @version 1.0 from 10.12.2020
|
||||
* @version 7.1 from 12.02.2025
|
||||
* @author Thomas Schaller
|
||||
*/
|
||||
|
||||
|
|
@ -24,7 +24,7 @@ public class GraphAlgo_Tiefensuche extends GraphAlgo {
|
|||
|
||||
|
||||
// Anfang Methoden
|
||||
public void fuehreAlgorithmusAus() {
|
||||
public void fuehreAlgorithmusAus() throws InterruptedException {
|
||||
if (g.getAnzahlKnoten()==0) {
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import graph.*;
|
|||
* Dieser Algorithmus nummeriert alle Knoten des Graphen.
|
||||
* Algorithmus: Tiefensuche rekursiv
|
||||
*
|
||||
* @version 1.0 from 10.12.2020
|
||||
* @version 7.1 from 12.02.2025
|
||||
* @author Thomas Schaller
|
||||
*/
|
||||
|
||||
|
|
@ -24,14 +24,14 @@ public class GraphAlgo_TiefensucheRek extends GraphAlgo {
|
|||
|
||||
|
||||
// Anfang Methoden
|
||||
public void fuehreAlgorithmusAus() {
|
||||
public void fuehreAlgorithmusAus() throws InterruptedException {
|
||||
if (g.getAnzahlKnoten()==0) {
|
||||
return;
|
||||
}
|
||||
nummeriere(getStartKnoten(), 0);
|
||||
} // end
|
||||
|
||||
private int nummeriere(Knoten k, int nr) {
|
||||
private int nummeriere(Knoten k, int nr) throws InterruptedException {
|
||||
// Abbruchbedingung
|
||||
if(k.isBesucht()) {
|
||||
info("Untersuche "+g.getKnoteninfo(k,false)+" => ist schon besucht");
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import graph.*;
|
|||
* Er sucht einen Zyklus im Graphen.
|
||||
* Algorithmus: Backtracking
|
||||
*
|
||||
* @version 1.0 from 10.12.2020
|
||||
* @version 7.1 from 12.02.2025
|
||||
* @author Thomas Schaller
|
||||
*/
|
||||
|
||||
|
|
@ -22,13 +22,13 @@ public class GraphAlgo_ZyklusBacktracking extends GraphAlgo {
|
|||
return "Zyklensuche (Backtracking)";
|
||||
}
|
||||
|
||||
public void fuehreAlgorithmusAus() {
|
||||
public void fuehreAlgorithmusAus() throws InterruptedException {
|
||||
List<String> loesung = backtracking(getStartKnoten());
|
||||
if(loesung != null) g.setStatus(loesung);
|
||||
step();
|
||||
}
|
||||
|
||||
public List<String> backtracking(Knoten k){
|
||||
public List<String> backtracking(Knoten k) throws InterruptedException {
|
||||
|
||||
List<String> loesung = null;
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import graph.*;
|
|||
/**
|
||||
* Dieser Algorithmus findet eine topologische Sortierung des Graphen.
|
||||
*
|
||||
* @version 1.0 from 10.12.2020
|
||||
* @version 7.1 from 12.02.2025
|
||||
* @author Thomas Schaller
|
||||
*/
|
||||
|
||||
|
|
@ -23,7 +23,7 @@ public class GraphAlgo_toplogischeSortierung extends GraphAlgo {
|
|||
|
||||
|
||||
// Anfang Methoden
|
||||
public void fuehreAlgorithmusAus() {
|
||||
public void fuehreAlgorithmusAus() throws InterruptedException {
|
||||
String reihenfolge = "";
|
||||
if (g.getAnzahlKnoten()==0) {
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0
|
||||
showWeights,0
|
||||
showWeights,1
|
||||
# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0
|
||||
showInfoText,1
|
||||
# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2
|
||||
|
|
|
|||
|
Can't render this file because it contains an unexpected character in line 7 and column 33.
|
|
|
@ -1,5 +1,5 @@
|
|||
# Anzeigeoptionen:# Gewichte anzeigen 1, Gewichte nicht anzeigen 0
|
||||
showWeights,0
|
||||
showWeights,1
|
||||
# Knoteninfo anzeigen 1,Knoteninfo nicht anzeigen 0
|
||||
showInfoText,1
|
||||
# Knoten leer 0, Knotenname anzeigen 1, Wert des Knoten anzeigen 2
|
||||
|
|
|
|||
|
Can't render this file because it contains an unexpected character in line 7 and column 33.
|
Binary file not shown.
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue