Problems like computers have architectures. Both are large complex collections of objects. A problem will perform well when mapped onto a computer if their architectures match well. This loose statement will be made more precise in the following, but not completely in this brief paper. At a coarse level, we like to introduce five broad problem classes which are briefly described in Table 1. These can and should be refined, but this is not necessary here. Thus, as described in Table 1, we do need to differentiate the application equivalent of the control structure -- SIMD and MIMD -- for computers. However, details such as the topology (hypercube, mesh, tree, etc.) are important for detailed performance estimates but not for the general conclusions of this paper. Note that the above implies that problems and computers both have a topology.
Table 1: Five Problem Architectures
We will use the classification of Table 1 in the following sections which will also expand and exemplify the brief definitions of Table 1.