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