Figure 2: Neurons are organized in a non-hierarchical structure in constraint satisfaction neural network (CSNN). Each neuron is assigned a value (activation level). These values represent the network state. Inputs to each neuron include both the external input and the activation levels of other neurons connected by the bidirectional symmetric weights. The activation levels are updated by passing the weighted sum of input values through a transfer function. The training is terminated when the network achieves a globally stable state with all constraints satisfied.