Backpropagation Algorithmus

CptK

Bekanntes Mitglied
Hallo,
ich habe versucht den Backpropagation Algorithmus umzusetzen (was offensichtlich nicht funktioniert) und mir dabei folgende Formeln überlegt, wobei W' und b' jeweils die neuen Gewichte bzw. Biases sind:
1627836684330.png
Die Matrix W (in diesem Fall für den Layer mit den Neuronen 3 und 4) sieht dabei wie folgt aus:
1627837094533.png
Sollten diese Formeln stimmen, muss der Fehler in meiner Implementation liegen:
[CODE lang="java" title="Backpropagation Algorithmus"]/**
*
* @param net {@link NeuralNetwork} that will be trained
* @param in {@link Matrix} of input data; each row represents one sample
* @param out {@link Matrix} of output data; each row represents the expected
* output vector of the referring input
* @param alpha learning rate
* @return the trained {@link NeuralNetwork}
*/
public NeuralNetwork backprop(NeuralNetwork net, Matrix in, Matrix out, double alpha) {
Objects.requireNonNull(net, "The specified NeuralNetwork may not be null");
Objects.requireNonNull(in, "The specified input Matrix may not be null");
Objects.requireNonNull(out, "The specified output Matrix may no be null");

if (in.numberOfRows() != out.numberOfRows())
throw new IllegalArgumentException(
"The number of rows of the input matrix must equal the number of rows of the output matrix");

int a = 0;
while (a < 1000000) {

// iterate over all samples
for (int s = 0; s < in.numberOfRows(); s++) {

// the current sample
Vector sample = in.getRow(s);

// the expected output for the current sample
Vector expectedOutput = out.getRow(s);

// the actual output for the current sample
Vector output = net.predict(sample);

// the error of the current sample
Vector error = expectedOutput.sub(output);

// create variable layer and set its value to the output layer
Layer layer = net.getOutputLayer();

// update the error-vector of the output layer: delta = error x g'(input)
layer.setError(error
.elementProduct(layer.getInput().map(x -> net.fct.applyDerivation(x))));

// calculate new weights and biases for the output layer
calculateWeightsInOutputLayer(layer, alpha, sample);

// move backwards in the network
layer = layer.getPreviousLayer();

// iterate over all hidden layer
while (layer != null) {
// calculate new weights and biases for the hidden layer
calculateWeightsInHiddenLayer(layer, alpha, sample);
layer = layer.getPreviousLayer();
}

// update weights and biases in the output layer
layer = net.getOutputLayer();
layer.updateWeightsAndBiases();

layer = layer.getPreviousLayer();

// iterate over all hidden layers and update weights and biases
while (layer != null) {
layer.updateWeightsAndBiases();
layer = layer.getPreviousLayer();
}


}
a++;
}

return net;
}

private void calculateWeightsInOutputLayer(Layer l, double alpha, Vector sample) {
Matrix newWeights = Matrix.clone(l.getInputWeights());
Vector newBiases = Vector.clone(l.getBiases());

// error of the layer
Matrix delta = l.getError().toMatrix();

// outputs of the previous layer / input to the net if previousLyer is null
Matrix inputs = (l.getPreviousLayer() == null ? sample : l.getPreviousLayer().getOutput()).toMatrix();

// calculate new weights
newWeights = l.getInputWeights().add(delta.mul(inputs.transpose()).mul(alpha));

// calculate new biases
newBiases = l.getBiases().add(l.getError().mul(alpha));

// update new weights
l.setNewInpWeights(newWeights);

// update new biases
l.setNewBiases(newBiases);
}

private void calculateWeightsInHiddenLayer(Layer l, double alpha, Vector sample) {
ActivationFunction fct = l.getActivationFunction();
Layer next = l.getNextLayer();

// update error-vector
l.setError(l.getInput().map(x -> fct.applyDerivation(x))
.elementProduct(next.getInputWeights().transpose().mul(next.getError())));

Matrix newWeights = Matrix.clone(l.getInputWeights());
Vector newBiases = Vector.clone(l.getBiases());

// error of the layer
Matrix delta = l.getError().toMatrix();

// outputs of the previous layer / input to the net if previousLyer is null
Matrix inputs = (l.getPreviousLayer() == null ? sample : l.getPreviousLayer().getOutput()).toMatrix();

// calculate new weights
newWeights = l.getInputWeights().add(delta.mul(inputs.transpose()).mul(alpha));

// calculate new biases
newBiases = l.getBiases().add(l.getError().mul(alpha));

// update new weights
l.setNewInpWeights(newWeights);

// update new biases
l.setNewBiases(newBiases);
}[/CODE]
Und hier noch die Klasse Layer:
[CODE lang="java" title="Layer"]package neural_network;

import data.function.activation.ActivationFunction;
import data.math.Matrix;
import data.math.Vector;

public class Layer {
private final ActivationFunction fct;
private Matrix inpWeights;
private Matrix newInpWeights;
private Vector biases;
private Vector newBiases;
private final Layer prevLayer;
private Layer nextLayer;
private Vector input = null;
private Vector output = null;
private Vector error;

/**
* Initializes all weights and biases with random values between the specified
* limits
*
* @param numberOfNeurons number of neurons in the layer
* @param numberOfInputs number of inputs to the layer (= the number of outputs
* in the previous {@link Layer}; = the number of input
* weights to each neuron)
* @param lowerLimit lower limit for random values
* @param upperLimit upper limit for random values
* @param fct {@link ActivationFunction}
* @param prevLayer the previous {@link Layer}
* @param nextLayer the next {@link Layer}
*/
public Layer(int numberOfNeurons, int numberOfInputs, double lowerLimit, double upperLimit,
ActivationFunction fct, Layer prevLayer, Layer nextLayer) {
this.fct = fct;
this.biases = Vector.random(numberOfNeurons, lowerLimit, upperLimit);
this.inpWeights = Matrix.random(numberOfNeurons, numberOfInputs, lowerLimit, upperLimit);
this.prevLayer = prevLayer;
this.nextLayer = nextLayer;
}

/**
* Takes a {@link Vector} and feeds the data through the {@link Layer} and
* returns the result-vector
*
* @param input {@link Vector} of inputs
* @return a {@link Vector} with the results
*/
public Vector feedForward(Vector input) {
this.input = inpWeights.mul(input).add(biases);
output = this.input.map(x -> fct.apply(x));
return output;
}

public void updateWeightsAndBiases() {
inpWeights = newInpWeights;
biases = newBiases;
}

/**
* @return the number of neurons in the {@link Layer}
*/
public int numberOfNeurons() {
return biases.dimension();
}

/**
* @return the {@link Matrix} of input weights
*/
public Matrix getInputWeights() {
return inpWeights;
}

/**
* @return the {@link Matrix} of inputs weights of the next {@link Layer} (=
* {@link Matrix} of output weights of the current {@link Layer}) or
* null if the next {@link Layer} is null
*/
public Matrix getOutputWeights() {
return nextLayer == null ? null : nextLayer.inpWeights;
}

/**
* @return the {@link Vector} of biases
*/
public Vector getBiases() {
return biases;
}

public void setNewInpWeights(Matrix newInpWeights) {
this.newInpWeights = newInpWeights;
}

public void setNewBiases(Vector newBiases) {
this.newBiases = newBiases;
}

public Layer getPreviousLayer() {
return prevLayer;
}

public Layer getNextLayer() {
return nextLayer;
}

public void setNextLayer(Layer nextLayer) {
this.nextLayer = nextLayer;
}

public Vector getInput() {
return input;
}

public Vector getOutput() {
return output;
}

public ActivationFunction getActivationFunction() {
return fct;
}

public Vector getError() {
return error;
}

public void setError(Vector error) {
this.error = error;
}
}
[/CODE]

Leider bin ich etwas ratlos, wo der Fehler liegt.
 
Beste Antwort
Also ich habe jetzt eine Version die gute Ergebnisse liefert (bei MNIST konnte ich beispielsweise mit einem einfachen Netz Genauigkeit von 71% erreichen), für die, die vor einem ähnlichen Problem stehen, hier noch mal der ganze Algorithmus in Java:
Java:
public class Backpropagation {

    /**
     * Uses the input and output data to train the neural network using the
     * backpropagation algorithm
     *
     * @param net    {@link NeuralNetwork} that will be trained
     * @param in     {@link Matrix} of input data; each row represents one sample
     * @param out    {@link Matrix} of output data; each row represents the expected
     *               output vector of the referring input
     * @param alpha  learning rate
     * @param...

mihe7

Top Contributor
In Zeilen 105/106: muss der Fehler hier nicht in Summe gerechnet werden?
Vergiss es, Matrizenmultiplikation übersehen.
 
Zuletzt bearbeitet:

mihe7

Top Contributor
Das einzige, was ich jetzt sehe ist, dass Du beim Berechnen der neuen Gewichte addierst statt subtrahierst. Kann natürlich auch einfach sein, dass Du Dein alpha negativ angibst.
 

CptK

Bekanntes Mitglied
Das einzige, was ich jetzt sehe ist, dass Du beim Berechnen der neuen Gewichte addierst statt subtrahierst. Kann natürlich auch einfach sein, dass Du Dein alpha negativ angibst.
Also ich hatte kein negatives alpha und habe das jetzt überall mal zu sub geändert, funktioniert aber trotzdem nicht (Ich habe das jetzt mal mit einfachen boolschen Funktionen: AND und OR getestet und der output ist absolut nicht das, was er sein sollte). Außerdem habe ich gerade festgestellt, dass je nach Kombination von alpha und der Anzahl von Wiederholungen (die While-Schleife in Backpropagation), also zum Beispiel für alpha = 0.000001 und Wiederholungen = 1000000. Wenn ich bei alpha dann noch eine 0 einfüge bekomme ich Zahlen. Allerdings ist das schon irgendwie merkwürdig, dass das nicht für alle alphas funktioniert.
 

CptK

Bekanntes Mitglied
Ich habe herausgefunden, woran das mit dem NaN liegt: für große x wertet sigmoid' zu 0/0 aus. Da die Eingaben und die Ausgaben der Neuronen immer in [0,1] liegen heißt das ja, dass die Gewichte sehr groß werden, ist das normal?
 

CptK

Bekanntes Mitglied
Also das mit dem NaN hat sich erledigt, dummer Fehler in einer Formel allerdings kriege ich immer noch kein funktionierendes Netz mit der Backpropagation. Könnte das daran liegen, dass ich nach jedem Beispiel die weights und biases in Netz update? Sollte ich lieber alle Beispiele durchgehen und das Netz dann mit dem Ergebnis aller Beispiel updaten? Wenn ja, würde ich das dann so machen:
Sei w' das Ergebnis der neuen Gewichte unter Verwendung eines einzelnen Beispiels und W' das Update mit allen Beispielen dann iteriere über alle Beispiele und rechne W' += 1/n * w', wobei n die Anzahl der Beispiele ist
?
 
Zuletzt bearbeitet:

CptK

Bekanntes Mitglied
Also ich habe jetzt eine Version die gute Ergebnisse liefert (bei MNIST konnte ich beispielsweise mit einem einfachen Netz Genauigkeit von 71% erreichen), für die, die vor einem ähnlichen Problem stehen, hier noch mal der ganze Algorithmus in Java:
Java:
public class Backpropagation {

    /**
     * Uses the input and output data to train the neural network using the
     * backpropagation algorithm
     *
     * @param net    {@link NeuralNetwork} that will be trained
     * @param in     {@link Matrix} of input data; each row represents one sample
     * @param out    {@link Matrix} of output data; each row represents the expected
     *               output vector of the referring input
     * @param alpha  learning rate
     * @param epochs how often each sample will be used
     * @return the trained {@link NeuralNetwork}
     */
    public NeuralNetwork backprop(NeuralNetwork net, Matrix in, Matrix out, double alpha, int epochs) {
        Objects.requireNonNull(net, "The specified NeuralNetwork may not be null");
        Objects.requireNonNull(in, "The specified input Matrix may not be null");
        Objects.requireNonNull(out, "The specified output Matrix may no be null");

        if (in.numberOfRows() != out.numberOfRows())
            throw new IllegalArgumentException(
                    "The number of rows of the input matrix must equal the number of rows of the output matrix");

        int a = 0;
        while (a < epochs) {

            // iterate over all samples
            for (int s = 0; s < in.numberOfRows(); s++) {
                // the current sample
                Vector sample = in.getRow(s);

                // the expected output for the current sample
                Vector expectedOutput = out.getRow(s);

                // the actual output for the current sample
                Vector output = net.predict(sample);

                // the error of the current sample
                Vector error = expectedOutput.sub(output);

                // create variable layer and set its value to the output layer
                Layer layer = net.getOutputLayer();

                // update the error-vector of the output layer: delta = error x g'(input)
                layer.setError(error
                        .elementProduct(layer.getInput().map(x -> net.fct.applyDerivation(x))));

                // calculate new weights and biases for the output layer
                calculateWeightsInOutputLayer(layer, alpha, sample);

                // move backwards in the network
                layer = layer.getPreviousLayer();

                // iterate over all hidden layer
                while (layer != null) {
                    // calculate new weights and biases for the hidden layer
                    calculateWeightsInHiddenLayer(layer, alpha, sample);
                    layer = layer.getPreviousLayer();
                }
                
                // update weights and biases in the output layer
                layer = net.getOutputLayer();
                layer.updateWeightsAndBiases();

                layer = layer.getPreviousLayer();

                // iterate over all hidden layers and update weights and biases
                while (layer != null) {
                    layer.updateWeightsAndBiases();
                    layer = layer.getPreviousLayer();
                }

            }
            a++;
        }

        return net;
    }

    /**
     * Calculates the new weights and biases in the output layer, for a single
     * weight:<br>
     * w_{j,k} <- w_{j,k} x alpha x a_j x error_k <br>
     * For all weights: <br>
     * W' = W + alpha x error x a^T<br>
     * W is the {@link Matrix} of weights, a is the vector of outputs of the
     * previous layer, error is the vector of errors of the current layer<br>
     * For the biases it is the same but a is not used in the formula
     *
     * @param l      the {@link Layer} the updates are calculated for
     * @param alpha  learning rate
     * @param sample the example that is currently seen
     */
    protected void calculateWeightsInOutputLayer(Layer l, double alpha, Vector sample) {
        Matrix newWeights = Matrix.clone(l.getInputWeights());
        Vector newBiases = Vector.clone(l.getBiases());

        // error of the layer
        Matrix delta = l.getError().toMatrix();

        // outputs of the previous layer / input to the net if previousLyer is null
        Matrix inputs = (l.getPreviousLayer() == null ? sample : l.getPreviousLayer().getOutput()).toMatrix();

        // calculate new weights
        newWeights = l.getInputWeights().add(delta.mul(inputs.transpose()).mul(alpha));

        // calculate new biases
        newBiases = l.getBiases().add(l.getError().mul(alpha));

        // update new weights
        l.setNewInpWeights(newWeights);

        // update new biases
        l.setNewBiases(newBiases);
    }

    /**
     * Calculates the error for the current hidden layer, for a single neuron j it
     * is:<br>
     * error_j = g'(input_j) x sum_k{w_{j,k} * delta_k}<br>
     * g' is the derivative of the activation function, delta_k is the error of the
     * next layer
     * <p>
     * Then calculates the new weights and biases, for a single weight:<br>
     * w_{j,j} <- w_{j,j} x alpha x a_i x error_j <br>
     * For all weights: <br>
     * W' = W + alpha x error x a^T<br>
     * W is the {@link Matrix} of weights, a is the vector of outputs of the
     * previous layer, error is the vector of errors of the current layer<br>
     * For the biases it is the same but a is not used in the formula
     *
     * @param l      the {@link Layer} the updates are calculated for
     * @param alpha  learning rate
     * @param sample the example that is currently seen
     */
    protected void calculateWeightsInHiddenLayer(Layer l, double alpha, Vector sample) {
        ActivationFunction fct = l.getActivationFunction();
        Layer next = l.getNextLayer();

        // update error-vector
        l.setError(l.getInput().map(x -> fct.applyDerivation(x))
                .elementProduct(next.getInputWeights().transpose().mul(next.getError())));

        Matrix newWeights = Matrix.clone(l.getInputWeights());
        Vector newBiases = Vector.clone(l.getBiases());

        // error of the layer
        Matrix delta = l.getError().toMatrix();

        // outputs of the previous layer / input to the net if previousLyer is null
        Matrix inputs = (l.getPreviousLayer() == null ? sample : l.getPreviousLayer().getOutput()).toMatrix();

        // calculate new weights
        newWeights = l.getInputWeights().add(delta.mul(inputs.transpose()).mul(alpha));

        // calculate new biases
        newBiases = l.getBiases().add(l.getError().mul(alpha));

        // update new weights
        l.setNewInpWeights(newWeights);

        // update new biases
        l.setNewBiases(newBiases);
    }
}
 
Beste Antwort
Ähnliche Java Themen
  Titel Forum Antworten Datum
CptK Backpropagation parallelisieren: Kommunikation zwischen den Threads Allgemeine Java-Themen 7
B Algorithmus für Arbeit mit fehlenden Listenelementen? Allgemeine Java-Themen 1
schegga_B AES-Algorithmus in javax.crypto Allgemeine Java-Themen 3
M Laufzeit des Prim Algorithmus Allgemeine Java-Themen 3
O Newton Algorithmus Java Allgemeine Java-Themen 1
N Google Authenticator Algorithmus (SHA1) Allgemeine Java-Themen 1
gotzi242 Schatzsuche mithilfe eines O(log n) Algorithmus Allgemeine Java-Themen 2
Zrebna Quicksort-Algorithmus - zufälliges Pivot wählen Allgemeine Java-Themen 6
L Klassen Algorithmus für das folgende Problem entwickeln? Allgemeine Java-Themen 30
B Algorithmus Warteschlange Ringpuffer wirklich fehlerfrei Allgemeine Java-Themen 8
M Probleme mit Negamax-Algorithmus Allgemeine Java-Themen 29
F Q - Learning Algorithmus Bug Allgemeine Java-Themen 4
M Salesman Problem - Bruteforce Algorithmus Allgemeine Java-Themen 23
M Minmax Algorithmus Verständnisproblem Allgemeine Java-Themen 2
H Rundreise frage (Algorithmus) Allgemeine Java-Themen 18
F KMP-Algorithmus Allgemeine Java-Themen 9
S Algorithmus welcher True-Werte in einem Array findet und auswertet. Allgemeine Java-Themen 5
U Methoden Algorithmus MergeSort String [ ] array sortieren programmieren Allgemeine Java-Themen 17
P MinMax Algorithmus Allgemeine Java-Themen 0
J Abhängigkeit zwischen Rechenzeit und Speicherbedarf in einen Algorithmus Allgemeine Java-Themen 7
K Djikstra-Algorithmus Allgemeine Java-Themen 1
T Minimax/Alphabeta Algorithmus hängt sich auf (?) Allgemeine Java-Themen 2
M Algorithmus zum Zahlen einteilen Allgemeine Java-Themen 8
O Best Practice Hilfe bei Algorithmus gesucht Allgemeine Java-Themen 10
S Algorithmus um Objekte auf einer Flaeche mit gleichem Abstand anzuordnen..? Allgemeine Java-Themen 20
S Rucksackproblem und genetischer Algorithmus Allgemeine Java-Themen 9
L Abbruch des Algorithmus Allgemeine Java-Themen 8
D Input/Output Ausgleichen chemischer Reaktionsgleichungen mit dem Gauß-Algorithmus Allgemeine Java-Themen 2
Messoras A*-Algorithmus integrieren Allgemeine Java-Themen 3
S Buchscan 3D Dewarp Algorithmus - Ansätze Allgemeine Java-Themen 1
B Verteilungs-/Vergabe-Algorithmus mit abhängigen Score-Werten Allgemeine Java-Themen 3
Androbin "Shunting Yard"-Algorithmus Allgemeine Java-Themen 6
B Algorithmus - Project Euler Problem 18 Allgemeine Java-Themen 2
N Algorithmus zum bewerten von mathematischen Funktionen Allgemeine Java-Themen 11
O Algorithmus Optimierung Allgemeine Java-Themen 3
Joew0815 Algorithmus - Zahlenfolge in 4 ähnliche Teile aufteilen Allgemeine Java-Themen 0
O Tag Cloud Algorithmus Idee gesucht Allgemeine Java-Themen 2
A Implementierung eines Algorithmus (Farthest Insertion zur Lösung des TSP) in O(n²) Allgemeine Java-Themen 2
C Eclipse Probleme bei selbst erstelltem Algorithmus Allgemeine Java-Themen 2
H Graph-Algorithmus gesucht Allgemeine Java-Themen 21
N Algorithmus durch Workflow Allgemeine Java-Themen 7
M tree-based diff Algorithmus (Code-Vergleiche) Allgemeine Java-Themen 3
S Uhrzeit Algorithmus sale Allgemeine Java-Themen 11
N A*-Algorithmus Allgemeine Java-Themen 5
A Suche Algorithmus zum Erstellen eines planaren Graphen Allgemeine Java-Themen 5
F Methoden Algorithmus zur Gegnerfindung (Turnier) Allgemeine Java-Themen 9
T Algorithmus Graph Allgemeine Java-Themen 10
J Algorithmus gesucht (Stringtransformation) Allgemeine Java-Themen 4
B Algorithmus Krankenhausbelegung Allgemeine Java-Themen 17
S Algorithmus von Dijkstra Allgemeine Java-Themen 2
alex_fairytail OOP Banknoten Algorithmus Teil 2 Allgemeine Java-Themen 13
2 ArrayList aktualisieren Algorithmus Allgemeine Java-Themen 11
alex_fairytail Methoden Banknoten Algorithmus Allgemeine Java-Themen 10
R Codehinweise: Algorithmus Größenvergleich von n Zahlen Allgemeine Java-Themen 5
SuperSeppel13 WTF?! Algorithmus-Geschwindigkeitstest Allgemeine Java-Themen 2
L Algorithmus für kürzesten Weg mit Wegpunkten Allgemeine Java-Themen 21
C Algorithmus Problem in Minesweeper Allgemeine Java-Themen 5
S Algorithmus um Labyrinth zu erzeugen Allgemeine Java-Themen 6
V Problem mit A* Pathfinder-Algorithmus Allgemeine Java-Themen 2
S Algorithmus um nächst folgende Primzahl zu berechnen Allgemeine Java-Themen 7
S Algorithmus Problem. Rechtecke effizient auf Spielfeld anordnen. Allgemeine Java-Themen 7
C Algorithmus-Hilfe Allgemeine Java-Themen 20
J Algorithmus Längenkombinationen? Allgemeine Java-Themen 7
M Kombinationen über rekursiven Algorithmus berechnen? Allgemeine Java-Themen 10
L Algorithmus für Poker-Hände Allgemeine Java-Themen 7
chik 2 return werte für Greedy-Algorithmus (gelöst) Allgemeine Java-Themen 3
D Abstruse Probleme mit eigenem replace Algorithmus Allgemeine Java-Themen 11
P RC4 Algorithmus Allgemeine Java-Themen 3
D RSA Verfahren - Erweiterter Euklidischer Algorithmus Allgemeine Java-Themen 4
C IBAN und Bic Validieren (Algorithmus) Allgemeine Java-Themen 10
P Problem mit A*-Algorithmus Allgemeine Java-Themen 12
M Wörter Algorithmus Allgemeine Java-Themen 7
M Algorithmus für automatische Zeilenumbrüche Allgemeine Java-Themen 12
K Postleitzahlen Algorithmus Allgemeine Java-Themen 12
G Problem mit Algorithmus Allgemeine Java-Themen 3
T Hilfe bei einem Algorithmus Allgemeine Java-Themen 2
S Stemming-Algorithmus gesucht (z.B. Porter) Allgemeine Java-Themen 2
RoliMG präfix zu infix algorithmus Allgemeine Java-Themen 6
Z A*-Algorithmus - Probleme mit offener/geschlossener Liste Allgemeine Java-Themen 7
S Javaimplementierung des MD5 Algorithmus Allgemeine Java-Themen 2
E Container-Pack-Algorithmus Allgemeine Java-Themen 4
G k nearest neighbor algorithmus Allgemeine Java-Themen 7
C HASH Algorithmus 2 Strings ergeben das Selbe. Allgemeine Java-Themen 2
P Page Rank Algorithmus implementieren Allgemeine Java-Themen 7
T Problem RSA-Algorithmus in Java? Allgemeine Java-Themen 2
minzel Hash-Algorithmus Allgemeine Java-Themen 9
Y komprimierung mittels Huffman-Algorithmus, bit-shifting. Allgemeine Java-Themen 2
K Algorithmus Allgemeine Java-Themen 10
C Algorithmus für Array Allgemeine Java-Themen 9
I Verschlüsselung mit Pwd. - User soll Algorithmus wählen Allgemeine Java-Themen 4
J fällt euch ein Algorithmus ein? Allgemeine Java-Themen 4
S Algorithmus für Sudoku Allgemeine Java-Themen 17
N Euklidischer Algorithmus in Java und keine Terminierung. Allgemeine Java-Themen 7
F Algorithmus für Sortierung gesucht Allgemeine Java-Themen 15
T Algorithmus verbessern Allgemeine Java-Themen 10
U Suche Algorithmus zur bestimmung des längsten Wegs Allgemeine Java-Themen 3
U Ford-Fulkerson Algorithmus gesucht Allgemeine Java-Themen 1
U Dijkstra Algorithmus gesucht Allgemeine Java-Themen 4
D Algorithmus für die Erkennung fehlerhafter Eingaben Allgemeine Java-Themen 4
I hash-algorithmus Allgemeine Java-Themen 9

Ähnliche Java Themen

Neue Themen


Oben