Dokumentation zu Beispiel 4026 -> neuronale Logikschaltung

TOC
[I] Kurzfassung der Spezifikation
[II] Ablauf des Programms
[III] Das Neuro Package

[I]
# Es soll eine neuronale Logikschaltung berechnet werden
# Diese besteht aus miteinander vernetzten Knoten
# Jeder Knoten hat einen Ausgang, das Ausgangssignal ist entweder 0 oder 1
# Normale Knoten haben mindestens einen Eingang
# Es gibt verstärkende und abschwächende Eingänge
# Überwiegen die verstärkenden Eingänge, die angesteuert werden, so hat der Knoten ein Ausgangssignal
# Ein Eingang wird angesteuert, wenn der mit ihm verbundene Ausgangsknoten den Wert 1 hat
# Eingangsknoten haben den Wert 0 oder 1
# Es gibt einen Stammknoten N1 mit dem alle Knoten verbunden sein müssen
# Das Ausgangssignal des Stammknotens soll berechnet werden

# Die Logikschaltung wird durch eine Reihe von Knotendefinitionen eingelesen
# Das Ende des Eingabedatensatzes wird durch "=" definiert
# Eine normale Knotendefinition hat die Form: Nx:=+Nx oder Nx:=-Nx, wobei x die Nummer des Knotens darstellt
# Der Erste Knoten ist der Quell der Zweite der Zielknoten
# + steht für verstärkende, - für abschwächende Eingänge
# Eine Eingangsknotendefinition hat die Form: E0:=+-Nx oder E1:=+-Nx, wie oben
# E0 ist Eingangsknoten mit Ausgangssignal 0, E1 mit Ausgangssignal 1

# Wenn der Stammknoten ein Ausgangssignal hat soll 1 sonst 0 ausgegeben werden
# Bei Fehlern im Eingabedatensatz soll FALSCHE EINGABE ausgegeben werden

[II]
Die Klasse Main benutzt das Package Neuro um die Aufgabe zu bewerkstelligen.
Abfolge:
1. Neues Netzwerk (<NeuroNet>) erstellen
2. Normale Knoten einlesen (<NeuroUtil.liesKnoten> mit Rückgabewert false)
3. Eingangsknoten einlesen (obiges mit true)
4. Sollte nach dem ersten Eingangsknoten noch ein normaler Knoten vorkommen, Fehler
5. Wenn kein Fehler, Ergebniss der Berechnung ausgeben (<NeuroNet.berechneNetzwerk>)
6. Ansonsten Fehlermeldung ausgeben

[III]
Die allgemeine Struktur des Packages <Neuro>:
NeuroNet
# Enthält alle Knoten in einem Hashtable (wegen Eindeutigkeit), nicht aber ihre Vernetzung
# Berechnet Ausgangssignale von Knoten (<berechneKnoten>) oder vom Stammknoten (<berechneNetzwerk>)
# Knoten hinzufügen oder abrufen ist ebenfalls implementiert (<fuegeKnotenHinzu>,<holeKnoten>)
NeuroNode
# Datenstruktur für einen einzelnen Knoten
# Enthält seinen eindeutigen Schlüssel (d.h. seine Nummer)
# Die Verknüpfungen der Eingänge sind als zwei <ArrayList>  implementiert
# Kann rekursiv sein Ausgangssignal berechnen
NeuroInput extends NeuroNode
# Datenstruktur für Eingangsknoten
# Überschreibt die Berechnungsfunktion, in dem es den Wert zurückliefert, mit dem es initialisiert wurde
# In diesem Beispiel 0 oder 1
NeuroUtil extends EprogIO
# liest Knotendefinitionen lt.Spez

Alle weiteren Details können der JavaDoc Dokumentation entnommen werden
Sie erzeugen Sie mit javadoc *.java im Neuro Verzeichniss