Zero Assignment Parallel Processor. A virtual tree machine
architecture in which a process tree is dynamically mapped
onto a fixed, strongly connected network of processors
communicating by message passing. The basic operation of each
node is to apply a divide and conquer function which takes
four arguments: (1) a function 'primitive' which takes a
problem description (PD) and returns true if it can be solved
without division, (2) a function 'solve' which takes a
primitive PD and returns its solution, (3) a function 'divide'
which takes a PD and returns a list of PDs of smaller problems
and (4) a function 'combine' which returns the solution to a
problem by combining a list of solutions of subproblems.
Each node has a copy of the code and one is given the initial
problem description. Task distribution is by process stealing
in which a process constructs a descriptor for each subtask
and idle (lightly loaded) processors can steal a descriptor
from a physically connected neighbour.