With the design of a proper set of data structures for neural network simulation, a
large number of aspects appear to be crucial for the success of the environment. Among
these are elements such as the consistency of the data structures, implementation
aspects like the memory usage and the speed of algorithms, the robustness, etc. A
(non-complete) list of such aspects is the following:
Flexibility
A difficult issue in the design is that there is a need to
anticipate to network paradigms that do not even exist yet. It should certainly be
prevented that a slight modification of an existing algorithm or paradigm imposes
a change in a key data structure, since that will imply a major programming effort.
On the other hand, too much flexibility may lead to over-complex data structures
that are difficult to understand. The key data structures should therefore be
powerful enough to implement standard network algorithms and paradigms, i.e. the
requirements of a large number of paradigms should be taken into account.
Additional complexity and/or flexibility can then be added by the incorporation of
pointers that the user can use to point at any user defined structure. Also
pointers to functions within the data structure should allow the use of algorithms
that are specific for a certain context. A change of context, then only requires
the change of these pointers, instead of the complete data structures.
Clarity, consistency and intuitiveness
Clear, consistent and intuitive data
structures make a large part of the available algorithms self-explanatory. This
largely helps the user in obtaining the understanding that is required to work
with the library.
Implementation issues
As is well known, good data structures can prevent heavy
computations and may largely influence the memory requirements of the software.
The potential non-regular topology of a network here advocates the choice for
linked lists of structures instead of arrays. This has also the advantage that
large amounts of address computations are avoided.
Robustness
A certain amount of redundancy in the data helps the user and the
software to detect inconsistencies in the data. Therefore, some variables that are
implicit in the data structures (e.g. the number of units in a network), should
also be stored explicitly, to increase the robustness of the software.
User convenience
Unique identification numbers and the availability of fields in
which the user can store verbal descriptions of the role or functionality of the
data structures helps the user to interact with the software. Also, standard ASCII
file formats largely increase the accessibility of the data in file format. The
disadvantage of large requirements regarding to disk space can then be solved with
standard compression facilities.