Machine for the finding of an optimum passage3974481Abstract The optimiser includes P cells for the computation and memorization of a content, the P contents simulating the deformation of a backward wave front which explores a plane representative of a concrete situation submitted to constraints. The set of elementary optimum actions which define the optimum path between an initial state and a final state are found by iteration. Claims What we claim is: Description This invention concerns a digital problem solving machine for finding an optimum passage from an initial state to a final state of a system of several variables submitted to specified constraints and which makes it possible to find in an economical manner the optimum development of a concrete situation which depends upon several variables.
TABLE I
__________________________________________________________________________
CONSTRAINTS
Diag.
No. Start
No. 1
I No. 2
II No. 3
III No. 4
IV
__________________________________________________________________________
17 6 6 6 6 6
16 5 5 5 5 5
15 4 4 5 5 5
14 3 3 4 4 4
13 2 H=13 2 H=16 3 H=9 3 H=12 3
12 1 2 2 2 2
11 0 B= 8 2 B=12 2 B=4 2 B= 8 2
10 0 2 2 2 2
9 0 1 1 1 2
8 0 (H)= 2
0 (H)= 5
0 (H)=1
1 (H)= 2
1
7 0 0 0 1 1
6 0 (B)= 0
0 (B)= 2
0 (B)=0
1 (B)= 1
1
5 0 0 0 1 1
4 0 0 0 0 0
3 0 0 0 0 0
2 0 0 0 0 0
1 0 0 0 0 0
0 0 0 0 0 0
__________________________________________________________________________
The cell contents after processing all of the constraints is then equal to the delay, expressed in the number of steps, between the disturbed wave front and the nondisturbed wave front. Referring now to FIG. 7 rather than to FIG. 8, to obtain the modulus of the path terminating on point A" for example, it is sufficient to add to the maximum modulus of the space (in this particular case of FIG. 7, this maximum modulus is equal to 11), the difference .delta. found on the diagonal of point A", which is to say the final content of the cell having the address of A" (on FIG. 7, this difference is equal to 3). One then finds a modulus (or number of steps) between D and A" equal to 11 + 3 = 14. Another method consists of taking the dimension of the space following the X axis (in the case of FIG. 7, this dimension is equal to 10) and to add the projection of the difference following this same axis (in the case of FIG. 7, this projection is equal to 4). One can also use the Y axis in the same manner. The differences .delta. following the diagonal, .delta.X and .delta.Y, are shown in the lower left-hand part of FIG. 7. In the rest of the description, purely for reasons of explanation, the X axis will be taken as the base, the projection of the DELTA differences on this axis will then be designated by DELTA X. Starting from the preceding general principles, one can see that the optimizer includes a group of computation cells referenced by addresses. This group of cells is called : operator. The dimensioning of the operator depends upon the complexity of the system to study, or, which returns to the same thing, the number N, of possible variable values. If one wished to simulate a space of 1000 .times. 1000, the operator would include a maximum of 2000 elements, whereas a machine of the prior art would necessitate 1,000,000. But in one variant of the operator of the invention, one can split this into blocks. If the constraint to process is of small dimension (less than those of the block), the operation on the wave front is performed only once. On the other hand, if the constraint is 2, 3 . . . n times larger than that of the block, the operation for one constraint is performed 2, 3 . . . n times. The choice of block dimension is an optimal function of the speed, of cost, of the capacity and depends upon the problem to process. This point will later be described in detail. In the purely explanatory description which follows, the dimension of the operator is set at 256. The optimizer of the invention therefore includes: A. - the said operator composed of the P = 256 computation and memorization cells, B. - an interface between the said operator and a computer, C. - a control unit, UC, which gives the sequence of operator orders, D. - a general addressing unit, UAG, which interprets the orders and the data for the operator and which in particular contains the means for reading the contents of the cell of which the address is that of the upper address H of the process constraint and transmits the result over a comparator-bus and means to make the subtraction of the lower address B of the constraint less the contents of the cell of the same address and transmit the result over an operator-bus. In a preferred embodiment, the optimizer is characterized in that each diagonal address of n bits is decomposed into a base address part made up by the n' least significant bits and a displacement part composed of a wired-in word composed of the n -n' least significant bits. In this case, and conforming to that which is illustrated in FIG. 10, each operator cell includes: a. - a two input multiplexer, designated MPX', of n' bits, the inputs of which respectively receive the words of the n' bits of the base address and base address + 1, b. - a direct access main memory, (in Anglo-Saxon terminology: Random Access Memory) noted RAM, of p = 2.sup.n.sup.' bits, which memorizes the successive contents of the cell after each constraint is processed, a memory which is controlled by one enabling line and which is addressed by the word of n' coming from the MPX' multiplexer, the output of the said memory being organised in a bus designated as the RAM output bus, c. - an adder-subtractor, designated ADD, receiving on one hand the address of the cell constituted by the said wired-in word of (n-n') bits and by the word of n' bits coming from the MPX' multiplexer and on the other hand the word of n bits transmitted by the said operator-bus, d. - a comparator, designated COMP, of n bits, which receives the word of n bits coming from the adder-subtractor ADD and a word of n bits transmitted by the said comparator-bus, e. - a multiplexer, MPX with two inputs and of n bits, receiving the word coming from the adder-subtractor ADD and the word transmitted over the said comparator-bus, the said multiplexer MPX being controlled by the output of the comparator COMP, the output of MPX transmitting a word of n bits towards the memory RAM. To describe this organisation of the chain of cells, purely for example and in no way limiting, when the operator is of 2.sup.12 = 4096 steps, one could place 12 bits if in binary code, conforming to FIG. 10. On FIG. 10, which shows two cells, the number of bits of the various elements is indicated at the appropriate points. The RAM is addressed by a 4 bit word coming either from the base-address-bus, or from the base + 1-address-bus with the aid of the base multiplexer. The RAM memories can be selected individually by enabling or be controlled in parallel. The RAM output is structured in a bus. For operand the adder has the address of the cell. This address is composed of a wired-in word for the 8 least significant bits and a 4 bit word coming from the base multiplexer for the most significant bits. Its operator comes from the general addressing unit UAG via the intermediary of the operator bus. The comparator COMP receives the result of the adder ADD and data coming from the comparator bus. The result of the comparison allows the control of the 12 bit multiplexer MPX which switches towards the RAM, either the adder output or the data which is found on the comparison bus. The operation of this chain is as follows. The diagonals B and H being defined, first of all one searches for the content (H) of the upper address. The result after addressing all of the RAM is found on the RAM output bus. This information comes only from a single RAM addressed by the base-address as well as being enabled. The data thus supplied serves as the comparison element on the comparator bus. Then it is compared to the content of the lower address to be used by the addressing unit UAG. The addressing unit UAG makes the subtraction lower address less its contents and transmits the result over the operator bus. The adders-subtractors ADD then give the difference for each element following the operation below, with the already defined conventions. Element address - (B - (B)). This difference is compared with the content (H) of the upper address. If this element is greater, the 12 bit multiplexer enables transmission of the contents of the upper address towards the RAM. If not, it enables transmission of the output of the adder. As a function of the value of the two upper and lower addresses, the addressing unit UAG selects the elements of the RAM which must be modified. A particular case is now described which is that where the dimension P of the operator, freely chosen to be small, can be less than the dimension of a very large constraint. In the preceding example, it would therefore be a constraint of which the dimension is greater than 256. The processing is performed several times by incrementing the base-address and the base + 1-address one by one. The addressing unit UAG indicates the number of iterations to the control unit. Consequently the control unit UC then gives the orders. An example of such iteration is illustrated by tables II to V for constraints such as those which are shown on FIG. 11 and in a simplified case by way of illustration where it uses only four cells. In tables II to V, the horizontal references represent the displacement part of the address, and the vertical references the base part. Each column represents one RAM. Each RAM is associated with an adder, a comparator and multiplexer. Table II shows the situation at the time of initialization.
TABLE II
______________________________________
Displacement
Base 0 1 2 3
______________________________________
0 0 0 0 0
1 0 0 0 0
2 0 0 0 0
3 0 1 2 3
4 4 5 6 7
5 8 9 10 11
______________________________________
Table III illustrates the processing of constraint N 1. Table IIIa shows the first iteration. One has H=3,2 and B = 1,3, (see FIG. 11: the base address is separated from the displacement part of the address by the comma.) The maximum value is equal to 2. The second iteration is shown in table IIIb. When this second iteration has ended, the UAG detects the STOP on H.
TABLE III
______________________________________
IIIa IIIb
______________________________________
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
1 2 2 0 1 2 2 2
0 1 2 3 2 2 2 3
4 5 6 7 4 5 6 7
8 9 10 11 8 9 10 11
______________________________________
The processing of constraint N 3 is shown in tables IVa and IVb; table IVa corresponds to H = 2,3 and B = 1,1 with a maximum value of 2 for the first iteration. Table IVb shows the second iteration.
TABLE IV
______________________________________
IVa IVb
______________________________________
0 0 0 0 0 0 0 0
0 0 1 2 0 0 1 2
2 2 2 2 2 2 2 2
2 2 2 3 2 2 2 3
4 5 6 7 4 5 6 7
8 9 10 11 8 9 10 11
______________________________________
The processing of constraint N 3 is shown by tables Va and Vb, for which H = 3,3 B = 2,3 and the maximum value=3. The arrival point address is 2,3 for which one has .delta.X = 2, X = 11 and X + .delta.X = 13.
TABLE V
______________________________________
Va Vb
______________________________________
0 0 0 0 0 0 0 0
0 0 1 2 0 0 1 2
2 2 2 2 2 2 2 2
3 3 3 3 3 3 3 3
4 5 6 7 4 5 6 7
8 9 10 11 8 9 10 11
______________________________________
DESCRIPTION OF THE GENERAL ADDRESSING UNIT The general addressing unit GAU hereinafter referred to for short as "the UAG" is responsible for interpreting the orders emanating from the control unit UC, in order to suitably control the chain of cells. The principle roles of the UAG are as follows: reception of the constraint upper address simple decoding and loading of the comparator-register reception of the constraint lower address. simple decoding and loading of the operator register parallel decoding of the chain processing of the constraint up to detection of STOP. Besides that, at the end of processing a bidimensional space the UAG must successively decode the three DELTA differences corresponding to the three prior points of the arrival point, at the order of the UC. This operation achieved, the UC then triggers the RAM reinitialisation in order to prepare the operator for processing a new space. In a more precise fashion and according to FIGS. 12A, 12B and 12C, the UAG includes: A. - a register REG 1 responsible for storage of the upper address base part, the output of REG 1 being directed towards a comparator COMP 8 which ensures the selection of operation of a decoder DECOD 12 and the detection of a STOP requirement at the OR gate 23, B. - a register REG 2 responsible for storing the displacement part of the upper address, the output of REG 2 being oriented, on one hand towards a decoder DECOD 10 and, on the other hand towards a comparator COMP 16 responsible for one part of the detection of the STOP, C. - a counter C3 and a register REG 4 which receive the base part of the lower address, the output of C3 being connected, via an adder ADD 6, to a counter C7 which contains the base + 1 part of the lower address, the output of C7 being directed towards COMP 8 and towards another comparator COMP 9 serving the reinitialization of the RAM, D. - a register REG 5 which receives the displacement part of the lower address and the output of which is directed towards: a. a demultiplexer DMPX 13 responsible for decoding the RAM enabling, the output of this demultiplexer being oriented towards gate OR 14, which provides single or parallel RAM enabling. b. a decoder DECOD 11 the output of which serves on one hand for the selection of the RAM base address and, on the other hand, for providing an input to a decoder DECOD 12 the output of which is a write clock for the RAM, which output is controlled by a gate AND 15, c. a subtractor SOUS 21 which computes the operator bus contents and which receives on its two inputs: the output of multiplexer MPX 22 and the output of a register REG 19, the output of SOUS 21 comprising the said operator bus, d. a comparator COMP 16 responsible for one part of the STOP detection, E. - a register REG 18 which applies the contents of the upper address over the operator bus, F. - a register REG 20 used in a read procedure. In FIGS. 13 and 14, the principle of the decoders DECOD 10 and DECOD 11 is illustrated taking four bit decoders as an example. The operation of decoder DECOD 12 is explained on FIG. 15. The output of this decoder, which is the RAM write clock is controlled by gate AND 15. Control Unit Description The control unit CU is responsible for guiding the UAG and of providing the dialogue with the interface, in order to ensure the correct operation of the optimizer. In one preferred embodiment, this control unit is realised by a microprocessor, which is a simple low cost solution of sufficiently high performance for many cases. This microprocessor ensures the connection between the interface and the GAU; it must therefore control or interpret lines ending or coming from these various units. The interface lines are shown on FIG. 16. The UAG lines are shown on FIGS. 17 and 12. It should be noted that the lines E, G, M going towards the GAU can be grouped together into a single line. These lines being defined, it remains to give precise details of the microprogramming algorithm capable of controlling the control lines. This microprogramming is described by FIGS. 18A, 18B and 18C. Described very briefly, this algorithm includes a first part which represents the RAM reinitialization. This work is necessarily formed between the processing of the two different spaces. To follow the action of the lines, one should refer to FIGS. 12 and 16. Next comes a second part, the processing of the successive constraints belonging to the space considered. One could note that the order of arrival of the addresses of one constraint is as follows: upper address then lower address. The third part concerns the processing of the three system arrival points. Finally, in the fourth part, the microprogram allows sequential reading of the three DELTA corresponding to the arrival point. One should note that the fourth part is implicitly looped onto the first part, this in such a way that reinitialization be retriggered independently of the computer. This loop allows the system to automatically reinitialize itself without upsetting processing already commenced in the computer central processing unit. The structure of the control unit conforms to that which is shown on FIG. 19. The microprocessor includes a clock H, a test decoder DEC, an ordinal counter CO, a read only memory ROM and a maintenance system not shown on the figure. The ROM dimension is as follows: - operation code: 2 bits - test line: 6 bits - command line: 14 bits - branching address: 6 bits. Finally the ROM size is 64 words of 32 bits, being 8 packages. In respect of the CU synchronization, the clock frequency must be computed in such a way that the UAG and cell chain maximum response times do not disturb the system operation. This time, which corresponds to one reading of the RAM and decoding, can be computed as a function of the data of the integrated circuits used. By way of example this time can be equal to 233 ns for the least favorable case. This then allows the CU clock frequency to be based on 250 ns being 4 MHz. The specification of the CU clock frequency allows the evaluation of the system overall performances in its various phases. By way of example, the performances can be as follows: processing of one elementary constraint with one iteration: 10 micro-instructions, being 2.5 microseconds, processing of a 20 elementary constraint space: 200 micro-instructions, being 50 micro-seconds, processing of a 150 elementary constraint space: 1500 micro-instructions, being 375 micro-seconds, reading the three DELTA: 26 micro-instructions, being 6.5 micro-seconds, maximum rate of computer memory: 4 micro-instructions, being 1 micro-second, Ram reinitialisation times: 50 micro-instructions, being 12.5 micro-seconds. These times evidently take into account the dialogues with the computer. One should note that by wiring-in various functions particular to this latter at the level of the interface, in particular P.sub.1, P.sub.2 activation and the detection of command and decoding, the operator overall performance can be improved. In the same way, it is possible to change the microprogram to 150 ns by doubling certain micro-instructions for the critical cases of which the times are equal to 230 ns. Description of interface The interface includes three parts (see FIG. 20): the general purpose interface which is found in a simulator the coupler which is a card located in the computer a maintenance console. The general purpose interface allows dialogue of the simulator with the coupler. The signals must be generalized in order that the simulator can be connected to any computer. The general purpose signals are: Raz (reset to zero): RAZ read result: L write arrival point coordinate: E.sub.2 write constraints coordinates: E.sub.1 coupler PRET (ready): P2, data ready: P1. The coupler can be a card similar to those of the manufacturer who supplies the link: simulator general purpose interface - computer CU. The aim of the maintenance console is the simulation of the computer seen from the optimizer, from which comes the use of the generalised signals. But this console can also be used for displaying the optimizer operation, in particular running of the microprogram, the results of each micro-instruction, which is to say the contents of the bus and certain microprocessor orders. As an example the optimizer being described includes 256 cells. But one can easily conceive of optimizers with 64, 128 or 512 cells, following the compromises selected between the constraint dimensions and the processing time, for one can process a constraint with a semi-perimeter of 500 steps, with an optimizer of 64 cells, this requiring 8 iterations. Various optimizers and their main characteristics are grouped in table VI, which in particular gives the number of integrated circuits for each cell for each number of steps chosen. Two optimizer families can be seen: the upper range, which covers problems going up to 65,536 steps, (maximum word dimension of 16 bits), lower range, which covers problems going up to 4096 steps, (maximum word dimension of 12 bits). A family of optimizers is found to be modular. Thus the 12 bit range can be realised, from a basic shelf containing 64 cells, plus the CU, the interface and the GAU. The change to other products is made by the addition of a second, then a third and fourth basic shelf, containing only the cells, the decoding cards and an inter-shelf interconnection card, as shown on FIGS. 21 and 22.
TABLE VI
__________________________________________________________________________
(Note : Integrated Circuit = IC)
No. of No. of
Family Inter-
No. of
IC for
No. of grated
IC the CU
bits
Number
Circuits
for and the
Total
Number
per of per the Inter-
No. of
of
Version
word
Cells
cell GAU face IC Racks
__________________________________________________________________________
8192 steps
16 512 17 868 150 9722
8 racks
(8 k) or
2 cabi-
nets
4096 steps
12 256 13 444 100 3872
4 racks
(4 k)
2048 steps
12 128 13 259 100 2023
2 racks
(2 k)
1024 steps
12 64 13 137 100 1069
1 rack
__________________________________________________________________________
A second variant of the optimizer which is simpler than that which has been analysed will now be described. In the first, already described variant, there is a set of P cells the initial content of which is 0 for the N first, then 1, 2, 3 . . . .P - N for the others. The optimizer is designed to submit this set of numbers to the following processing: up to a certain lower address noted by B and defined for each process, the contents of the addresses are maintained unchanged, then, if the contents of the address B are designated by (B), the contents of the address B + 1 are put into (B) + 1, the contents of B + 2 put into address (B) + 2 and so on until one obtains a content (H) of a certain upper address H, this also defined for the said processing, after that this value (H) is maintained until it reaches the upper address above which the address contents remain unchanged. One could therefore remark that the nature of this set of operations entrains that the series of cell content values is always increasing and that the difference between the contents of two successive addresses is always 0 or 1. This remark is the origin of the improvement contributed by the second variant: this improvement consists of processing not the contents of the cells themselves but the increments of the contents with respect to the contents of the preceding cells. If one directly processes the increments of the cell contents and not the contents themselves, one is led to perform the following operations, copied from the operations described for the first variant: below the lower address, the increments remain unchanged; starting from the lower address, in B + 1, B + 2 etc... B + S, one writes S times 1, S being equal to (H) - (B), which is to say the number of increments that it has counted, before the processing of the constraint considered, between the addresses B and H, B being exclusive and H inclusive (an interval noted symbolically ]B, H] ); from the address B + S + 1, the increments are zero up to H; above H the increments remain unchanged. The operation of the constraint processing is performed by measuring the content of the arrival point, which is obtained by summing all of the 1 contents up to the said arrival point. To explain the second variant principle more clearly refer to FIG. 8 and table I. On this figure four constraints specified by their upper and lower diagonal addresses are represented; table I specifies the algorithm allowing the finding of the differences, after each constraint, from the first variant. The columns of this table contain the letters which represent the contents of each cell referenced by its diagonal address.
TABLE VII
__________________________________________________________________________
I II III IV V VI VII
Content
Increment
Content
Increment
after con-
after after after
Initial
Initial
straint
constraint
constraint
constraint
Address
Content
Incre-
No. 1 No. 1 No. 2 No. 2
ment B = 8 B = 12
H = 13 H = 16
__________________________________________________________________________
17 6 1 6 1 6 1
16 5 1 5 1 5 0
15 4 1 4 1 5 1
14 3 1 3 1 4 1
13 2 1 2 0 3 1
12 1 1 2 0 2 0
11 0 0 2 0 2 0
10 0 0 2 1 2 1
9 0 0 1 1 1 1
8 0 0 0 0 0 0
7 0 0 0 0 0 0
6 0 0 0 0 0 0
5 0 0 0 0 0 0
4 0 0 0 0 0 0
3 0 0 0 0 0 0
2 0 0 0 0 0 0
1 0 0 0 0 0 0
0 0 0 0 0 0 0
__________________________________________________________________________
Table VII illustrates the second variant. The diagonal addresses numbered from 0 to 17 are shown in column I of this table and the initial cell contents in column II. This content is the same as that which is found in table I. In column III the increments corresponding to the column II contents are shown. This increment is zero up to address 11 and equal to 1 from address 12 to address 17. Column III therefore represents the initial state of the cells when these are designed for processing the increments. After processing of the first constraint defined by addresses B = 8 and H = 13, the contents of these cells become those of column IV when one utilizes the first variant means. On the other hand if one uses the second variant means, one finds an increment equal to 0 or 1 in the cells according to whether the cell content is equal to the preceding cell content or greater by one than the preceding cell content. After processing of this first constraint, the new increments are then those shown in column V. Column VI re-indicates the cell contents when the second constraint is processed following the method of the first variant. The successive increments after the same constraint has been treated by the method of the second variant are shown in column VII. Between addresses B = 12 and H = 16, the count of 1 s is equal to 3 and in column VII, one finds from the address 12 + 1 = 13, three 1 s respectively in 13, 14 and 15, the interval 12-16 then being completed by a 0 at address 16. In table I the processing of constraints 3 and 4 which will be processed in the same manner as constraints 1 and 2 has not been shown. Summarizing, one sees that for each processing, one performs: the summing of all the 1 s included in the interval ]B, H] , which gives the sum S, the resetting to zero of cells contained in the interval ]B, H] , the writing of a number of 1 s equal to the previously computed sum S from the address situated immediately after the lower address B then 0 up to the upper address, after the last process, the summing of all of the written 1 s is performed up to and including the arrival point, which gives the characteristic modulus of that arrival point. The block diagram of the optimizer which realises these operations is given by FIG. 23. M represents a memory which possesses as many one bit locations as there are cells, each bit representing one increment. The means V provide for the enabling of all of the memory M location outputs included in the interval going from B exclusive to H inclusive. An adder ADD 1 is connected to the memory output via the intermediary of circuit V. Memory M, the circuit V and adder ADD 1 are controlled by a sequencer SEQ, which is connected with the computer ORD. The means for reset to zero RAZ act on all of the memory locations situated in the interval ]B, H] and the writing means E allows the writing of a number of 1 s equal to the sum S from the address B + 1 up to the address X = B + S, then 0 s from X + 1 to H. The general optimizer organisation having been outlined, we will now describe some of the circuits which are advantageously used in the invention, but which are given here only by way of example. One should note that the processing of the increments and not the contents themselves is the source of simplification at the level of the components. Description of the Optimizer memory in this second variant The optimizer memory is composed by as many one bit locations as cells, being P, each bit representing the increment of the value 0 or 1, for the corresponding cells. To avoid having to similtaneously process the P memory locations associated with the P cell addresses, it is advantageous to organise a memory in 2.sup.q lines each of 2.sup.r bits, with P = 2.sup.q .sup.+r. The line to which an address belongs is then defined by the q most significant bits of the said address. To simplify their notations, and purely for example, as a result one could consider a memory with 2048 locations (2.sup.11) organised in 2.sup.4 = 16 lines of 2.sup.7 = 128 bits. Each line is then advantageously split into 16 bytes numbered from i = 1 to 16, the bits of one byte being numbered from j = 1 to j = 8. One of the 128 bits of one line is thus referenced by a two indices notation M.sup.i,j. The general memory configuration in this particular case is illustrated by FIG. 24. The memory is realised by the association of integrated circuits each of which includes 16 four bit words. Two integrated circuits in series comprise 16 bytes. 32 circuits put in series therefore allows the composition of 16 128-bit lines. The memory inputs and outputs are shown respectively at the top and bottom of the figure by the 128 vertical lines. One E/L (write/read) command line allows the addressing of a write or read order on each of the integrated circuits. The input and output circuits of the memory locations are not shown on this figure and will not be further studied. One can use the memory circuits which, during the read phase, deliver the complement of the memorised bit on each output. To write data, it is sufficient to bring the E/L line to logic level 1 and to apply the data to be memorised to the inputs of the addressed word. Purely as an example, the circuits forming the memory can be type SN 7489 N packages. With such a memory, organised in 16 lines of words, one can allocate the 4 most significant bits of an address which includes 11, to the selection of one line amongst 16. This set of 4 most significant bits will be noted, in future, B.sub.1 for the lower address and H.sub.1 for the upper address, or in a general manner A.sub.1. Description of selection circuit for the interval ]B,H]. As explained above, it is necessary to select all of the memory location outputs included in the interval ]B, H] in order that the adder ADD 1 can perform the summing of all of the 1 s included in this interval. It is convenient to perform this enabling in two stages of selection, on one hand, of the outputs situated to the left of B and on the other hand, of those situated to the right of H then in combining these two selections. This type of enabling therefore requires use of triangular decoders in the sense that their truth table has a triangular configuration of the type of those which are shown in table VIII below which is valid in the case of 3 bits. The complement decoder where the 0 s will be replaced by the 1 s and reciprocally will also naturally be a triangular decoder.
TABLE VIII
______________________________________
a b c 1 2 3 4 5 6 7 8
______________________________________
0 0 0 1 0 0 0 0 0 0 0
0 0 1 1 1 0 0 0 0 0 0
0 1 0 1 1 1 0 0 0 0 0
0 1 1 1 1 1 1 0 0 0 0
1 0 0 1 1 1 1 1 0 0 0
1 0 1 1 1 1 1 1 1 0 0
1 1 0 1 1 1 1 1 1 1 0
1 1 1 1 1 1 1 1 1 1 1
______________________________________
The complexity of a triangular decoder increases very quickly with the number of bits. Also it is preferable to sub-divide the number of bits that one processes, this leading to the combination of several decoders. To this effect, the invention provides that each 128 bit line is split into 16 bytes, this allowing the addressing of the bits of 1 line by two addresses, the one with 4 bits for the selection of 1 byte amongst 16 and the other with 3 bits for the selection of 1 bit amongst 8. Summarising, any 11 bit address, A, is split into a word A.sub.1 formed of the four most significant bits, into a word A.sub.2 formed from the four intermediate bits and a word A.sub.3 formed from the three least significant bits (these words are noted respectively B.sub.1, B.sub.2, B.sub.3 for the lower address and H.sub.1, H.sub.2, H.sub.3 for the upper address). The V circuit for enabling of memory location outputs included in the interval B, H is shown in block diagram form on FIG. 25. This circuit includes a lower address decoder DECOD B and an upper address decoder DECOD H. The lower address decoder DECOD B includes a 4 bit decoder DECOD B.sub.1, a 4 bit decoder DECOD B.sub.2 and a 3 decoder DECOD B.sub.3 The upper address decoder DECOD H includes, in the same manner, a 4 bit decoder DECOD H.sub.1, a 4 bit decoder DECOD H.sub.2, and a 3 bit decoder DECOD H.sub.3. The decoder DECOD B.sub.2 has 4 inputs and 16 outputs that will in future be noted by B.sub.2.sup.i, i varying from 1 to 16. The decoder DECOD B.sub.3 has 3 inputs and 8 outputs noted B.sub.3.sup.j, j varying from 1 to 8. Decoder H.sub.2 has 4 inputs and 16 outputs noted H.sub.2.sup.i, i varying from 1 to 16 and decoder H.sub.3 has 3 inputs and 8 outputs noted H.sub.3.sup.j, j varying from 1 to 8. The decoders DECOD B.sub.1 and DECOD H.sub.1 allow the enabling of one line. In this line, the locations are enabled by the decoders DECOD B.sub.2 - DECOD B.sub.3 respectively for the lower address and decoders DECOD H.sub.2 - DECOD H.sub.3 respectively for the upper address. This latter enabling in one line is performed with the aid of the VAL enabling circuits. Each outputs S.sup.i,j of the position M.sup.i,j is connected to an enabling circuit VAL, then to the adder ADD 1. Thus, as is shown in FIG. 27, the VAL circuit for enabling memory outputs in the interval ]B, H] includes, associated with each output, a logic gate P.sup.i,j of complementary OR type (also designated by NOR) connected to the output of each M.sup.i,j memory location, the output of the said gate being connected to the adder ADD 1. One of the two gate inputs is connected to the S.sup.i,j output of the memory location M.sup.i,j and the other is connected to the output of a logic circuit K.sup.i,j of which the structure and principle of operation will now be given. The 128 locations of a memory line are shown schematically on FIG. 26. These locations are referenced, as was explained above, by two index notation, being M.sup.i,j. The hatched location is the current location of the ith byte and of the jth bit in this byte. For the moment one can suppose that the lower address B and the upper address H of the constraint to be processed show up in the same line, which is to say B.sub.1 = H.sub.1. The case where B.sub.1 is different from H.sub.1 will be treated later. To enable the interval B, H, the outputs situated to the left of B (B included) and those which are situated to the right of H (H not included) are selected. Within the framework of FIG. 26, it will be assumed that the hatched element M.sup.i,j corresponds to the lower address of which one wishes to select the outputs. The selections (enabling or inhibiting) are performed with the aid of the triangular decoders of which the form has been given in the truth table in table VII. Following that the logic state of one output of one decoder will be designated by a lower case letter, being for example b.sub.2.sup.i for the logic state of the output B.sub.2.sup.i of decoder DECOD B.sub.2 or H.sub.3.sup.j for the logic state of the H.sub.3.sup.j output of decoder DECOD H.sub.3. If the memory elements M.sup.1,1, M.sup.1,2 . . . M.sup.1,8 are directly connected to the B.sub.2.sup.1 output of decoder B.sub.2 and locations M.sup.2,1, M.sup.2,2 . . . M.sup.2,8 to the output B.sub.2.sup.2 and so on, all of the bytes from 1 to i are selected whatever be j. It is this which is symbolically represented on FIG. 26 by the continuous line going from the first bit of the first byte to the last bit of the row i byte. If one now connects the output of locations M.sup.i, whatever be j, to the outputs B.sup.i .sup.+ 1, these outputs are the logic levels which were those of location M.sup.i .sup.+ 1 in the preceding case. In this case one then obtains enabling up to the preceding byte. It is this which is represented on FIG. 26 by the second straight line which ends on the last bit of row i - 1 byte. To select locations i = 1, j = 1 to M.sup.i,j, it is necessary to add the segment going from j = 1 to j in the order byte i, to the state represented by the second line or FIG. 26. Now the logic expression b.sub.2.sup.i. b.sub.3.sup.j (where the period (.) symbolises the logic AND operation) is equal to 1 if b.sub.2.sup.i and b .sub.3.sup.j are both equal to 1; this expression is equal to 1 along the entire length of segments shown along the third line of FIG. 26. Therefore to enable all of the outputs to the left of M.sup.i,j, one must combine lines two and three, which comes to performing the logic operation b.sub.2.sup.i .sup.+ 1 + b.sub.2.sup.i. b.sub.3.sup.j, where the sign + symbolises the OR logic operation. If one wishes to use only NON-AND gates (known as NAND gates), the preceding operation is written b.sub.2.sup.i .sup.+ 1 .vertline.(b.sub.2.sup.i .vertline.b.sub.3.sup.j) where the .vertline. symbolises the NAND logic operation. Each output of one location M.sup.i,j of the memory must therefore be connected to a logic circuit connected to the outputs B.sub.2.sup.i and B.sub.2.sup.i .sup.+ 1 of the decoder DECOD B.sub.2 and to the output B.sub.3.sup.j of the decoder DECOD B.sub.3, the said logic circuit realising the logic operation b.sub.2.sup.i .sup.+ 1 + b.sub.2.sup.i . b.sub.3.sup.j, or, which returns to the same thing, the operation b.sub.2.sup.i .sup.+ 1 .vertline.(b.sub.2.sup.i .vertline.b.sub.3.sup.j), on its three outputs. The problem is analogous in respect of the selection of outputs situated to the right of the upper address. A triangular decoder of which the truth table is symmetric to that of the lower address decoder is employed. If one connects all of the locations of an order byte i to the output H.sub.2.sup.i, one selects all of the bytes to the right of H, including that which contains the upper address H. It is therefore still necessary to shift by one row and consequently connect the bytes to the output H.sub.2.sup.i .sup.+ 1. To select the locations included between M.sup.i,j and M.sup.i,8, it is necessary to use a truth table symmetric to that of decoder DECOD B.sub.3 for decoder DECOD H.sub.3, and to perform the combination of the logic states h.sub.2.sup.i. h.sub.3.sup.j. The logic circuit for the selection of elements connected to the right of the upper address must therefore be connected to the outputs H.sub.2.sup.i and H.sub.2.sup.i .sup.+ 1 of the decoder DECOD H.sub.2 and to the output H.sub.3.sup.j of decoder DECOD H.sub.3 the said logic circuit coming to realise the logic operation h.sub.2.sup.i .sup.- 1 + h.sub.2.sup.i. h.sub.3.sup.j. If one wishes to use only NAND type logic gates, the preceding logic relation is written in the form: h.sub.2.sup.i .sup.- 1 .vertline.(h.sub.2.sup.i .vertline.h.sub.3.sup.j) where the sign .vertline. again symbolises the NAND operation. An example of the K.sup.i,j logic circuit is shown on FIG. 27, which is made up only by NAND type logic gates. The K.sup.i,j circuit has six inputs of which three are connected to the lower address decoders DECOD B.sub.2 and DECOD B.sub.3 and the three uppers to the upper address decoders DECOD H.sub.2 and DECOD H.sub.3 As stated in a more precise fashion, the logic gate PB is connected to the outputs B.sub.2.sup.i and B.sub.3.sup.j and the output of the PB gate is connected to the input of a four input NAND gate, referenced by PBH, also connected to the previously complemented connection B.sub.2.sup.i .sup.+ 1 noted symbolically as B.sub.2.sup.i .sup.+ 1. In the same fashion, the upper part of circuit K.sup.i,j includes a gate PH which receives the outputs H.sub.2.sup.i, H.sub.3.sup.j of the upper address decoders, the output of gate PH being connected to the input of gate PBH, which also receives the complemented output H.sub.2.sup.i .sup.- 1. The circuit K.sup.i,j has an output logic level at 1 for all of the locations included in the overlapping of the two intervals [1,B] and ]H, 128 ] in which interval designations 1 designates the first line bit and 128 the last. If this output is connected to a NAND type logic gate p.sup.i,j connected to the output S.sup.i,j of location M.sup.i,j, all of the outputs which are not in the overlapping region [1, B] + ]H, 128] will be enabled, which is to say, finally, the outputs of the interval ]B, H] , for which the result is sought. Naturally, one could realize the same function with other gates, for example in performing the operation [1, B] +] H, 128] then in utilizing one AND gate at the output of the memory locations. FIG. 28 shows a half of one memory card. The circuit shown includes an integrated circuit 10 of 16 .times. 4 bits, a write circuit 12, a buffer register 14, a write control line 16, an H line connected to a clock (not shown), the circuits K.sup.i,1, K.sup.1,2, K.sup.i,3, K.sup.i,4, where the memory card is of row i and logic gates p.sup.i,1 . . . p.sup.i,4. The selection of one line is performed by the four bits of the word A.sub.1 (B.sub.1 or H.sub.1 according to whether the address is lower or upper word. The K circuits have their inputs connected to decoders conforming to those which were explained above and their outputs are connected, on one hand to the logic gates P and on the other hand to the write circuit 12. After obtaining the sum S corresponding to all of the 1 s showing in the interval b, H, circuit 12 allows the entire interval B, H to be reset to zero in order that the required 1 can then be written in. Buffer register 14 allows the memory outputs to be saved during transfer from one line to the other. An entire card is completed by a second integrated circuit 10' connected to components analogous to those to which circuit 10 is connected. By way of example one can use a type SN 7489 N unit for integrated circuit 10 and a SN 7475 N unit for the buffer register. Having described the memory card and the output enabling logic circuits, we will now describe in detail the structure of the 4 and 3 bit decoders, which control the said logic circuits. The truth table of decoder DECOD B.sub.3 is given in table IX.
TABLE IX
______________________________________
a b c b.sub.3.sup.1
b.sub.3.sup.2
b.sub.3.sup.3
b.sub.3.sup.4
b.sub.3.sup.5
b.sub.3.sup.6
b.sub.3.sup.7
b.sub.3.sup.8
______________________________________
0 0 0 1 0 0 0 0 0 0 0
0 0 1 1 1 0 0 0 0 0 0
0 1 0 1 1 1 0 0 0 0 0
0 1 1 1 1 1 1 0 0 0 0
1 0 0 1 1 1 1 1 0 0 0
1 0 1 1 1 1 1 1 1 0 0
1 1 0 1 1 1 1 1 1 1 0
1 1 1 1 1 1 1 1 1 1 1
______________________________________
Starting from this table it is easy for a man experienced in the art to realise a logic circuit filling these functions. By way of explanation such a circuit is shown on FIG. 29 which therefore comprises one example of the DECOD B.sub.3 type decoder. The DECOD H.sub.3 decoder truth table is formed by the complements of the table IX logic states. It is therefore useless to write it down. An example of a logic circuit realising these functions is given on FIG. 30. The truth table of 4 bit decoder DECOD B.sub.2 is given by table X. It corresponds to the schematic of FIG. 31 on which are also indicated the outputs which allow the complementary states to be obtained.
TABLE X
______________________________________
a b c d 1 2 3 4 5 6 7 8
9 10 11
______________________________________
0 0 0 0 1 0 0 0 0 . . .
. . .
0 0 0 1 1 1 0 . . . . . . . .
0 0 1 0 1 1 1 0 . . . . . . .
0 0 1 1 1 1 1 1 0 . . . . . .
0 1 0 0 1 1 1 1 1 0 . . . . .
0 1 0 1 1 1 1 1 1 1 0 . . . .
0 1 1 0 1 1 1 1 1 1 1 0 . . .
0 1 1 1 1 1 1 1 1 1 1 1 0 . .
1 0 0 0 1 1 1 1 1 1 1 1 1 0 .
1 0 0 1 1 1 1 1 1 1 1 1 1 1 0
1 0 1 0 1 1 1 1 1 1 1 1 1 1 .
1 0 1 1 1 1 1 1 1 1 1 1 1 1 .
1 1 0 0 1 1 1 1 1 1 1 1 1 1 .
1 1 0 1 1 1 1 1 1 1 1 1 1 1 .
1 1 1 0 1 1 1 1 1 1 1 1 1 1 .
1 1 1 1 1 1 1 1 1 1 1 1 1 1 .
______________________________________
The truth table of decoder DECOD H.sub.2 is given by the simplified table XI.
TABLE XI
______________________________________
a b c d 1 2 3 4 . . . 16
______________________________________
0 0 0 0 1 1 1 1 . . . 1
0 0 0 1 0 1 1 . . . . 1
. . . . . . . . . . . .
. . . . . . . . . . . .
1 1 1 0 0 . . . . . 1 1
1 1 1 1 0 . . . . . 0 1
______________________________________
One can show that h.sub.2.sup.1 = b.sub.2.sup.2, h.sub.2.sup.2 = b.sub.2.sup.3 . . . h.sub.2.sup.15 = b.sub.2.sup.16 and that h.sub.2.sup.16 = 1. One can therefore obtain a decoder DECOD H.sub.2 from the schematic of FIG. 31 by shifting all of the outputs as they are shown on the right part of that figure. Description of an example of an adder useable in the invention Adder ADD 1 receives logic outputs only from the memory outputs which have been enabled, which is to say those which are included in the interval ]B, H] . Its role is to form the sum s of the 1 contents in this interval. One can use an adder operating in the following manner advantageously. The 128 bits are divided into four groups of 31 bits, the four remaining bits being separately processed. Each group is processed in an adder assembly the outputs of which are then connected to another adder. The block diagram is given on FIG. 32. The adders allocated to the 31 bit groups carry references 20, 22, 24 and 26. They supply 5 bit signals which are transmitted to the adder 30 which also receives the 125th, 126th and 127th bits of the line in question. The output of adder 30 transmits a 7 bit word which represents the sum of the 1 s contained in the ]B, H] interval, the 128th bit excepted which is separately processed as will be seen later. Each of the circuits processing the 31 bit groups can advantageously be made up of adder assemblies, for example by type SN 7483, the function of which is intended to perform the sum of two four bit words, respectively U.sub.1, U.sub.2, U.sub.3, U.sub.4 and V.sub.1, V.sub.2, V.sub.3, V.sub.4. Six 1 bit words are respectively transmitted to inputs C.sub.i, U.sub.1, V.sub.1, V.sub.3, V.sub.4 and gate U.sub.3 is changed to level 1 while U.sub.2 and V.sub.2 are set to the zero level. The addition of C.sub.i, U.sub.1 and U.sub.2 outputs in .SIGMA..sub.1 and .SIGMA..sub.2 and the truth table, shown on table XII, shows that the addition of U.sub.4, V.sub.3, V.sub.4 outputs in .SIGMA..sub.4 and C.sub.0 : if U.sub.4, U.sub.3 = 0 1 and V.sub.4, V.sub.3 = 0 0, the sum is 0 1, from which C.sub. 0 .SIGMA..sub.4 .SIGMA..sub.3 = 0 0 1.
TABLE XII
______________________________________
U.sub.4 U.sub.3
V.sub.4
V.sub.3 C.sub.0
.SIGMA..sub.4
.SIGMA..sub.3
______________________________________
0 1 0 0 0 0 1
0 1 0 1 0 1 0
0 1 1 0 0 1 1
0 1 1 1 1 0 0
1 1 0 0 0 1 1
1 1 0 1 1 0 0
1 1 1 0 1 0 1
1 1 1 1 1 1 0
______________________________________
This assembly is repeated four times and the two 2 bit words which output from each of them are transmitted into a new circuit of which only the first adder and the carry input are used. One then obtains four 3 bit words which are added two at a time by means of two more packages the carry inputs of which receive the two new 1 bit words, and finally the two 4 bit words obtained are transmitted with the 31st 1 bit word into an 11th summer. The block diagram of such a circuit is shown in FIG. 34. To perform the summing of four 5 bit words coming from circuits 20, 22, 24 and 26, the circuit referenced by 30 on FIG. 32 is used, which can advantageously be composed of circuits organised following the schematic of FIG. 35. For each pair of words, one package is used for the first 4 bits and one half of the other for the 5th, while the adder carry input uses one of the four 1 bit words which remain, being the 125th. The outputs are again taken in a third assembly of one package and a half package, whilst the new carry input uses the third of the four 1 bit words which remain (the 127th). Having obtained the sum S of the 1s showing in the interval B, H, it remains to compute the address X = B + S up to which it is necessary to write in the 1s from the lower address. This addition is performed by a .SIGMA. circuit the schematic of which is given on FIG. 36. This circuit includes: an 8 bit buffer memory MT which receives the 7 bits of word B.sub.2 B.sub.3 by seven P logic gates simultaneously controlled by connection 40, the 7 bit word available on the outputs of buffer memory MT forms a word noted by X.sub.2 X.sub.3 ; an 8 bit adder ADD 2 which receives the 7 bits coming from the MT buffer memory and the 7 bits coming from the adder ADD 1 as well as the 128th bit shown on connection 42 which was not taken into account by adder ADD 1; eight P' gates, open when the P gates are closed and inversely, and which are interposed between the eight outputs of adder ADD 2 and the eight inputs of the buffer memory MT; a 4 bit counter C.sub.1 which is pre-set to B.sub.1 and on which the clock input, 44, is connected to the eighth output .sigma..sub.8 of the ADD 2 most significant output; the 4 bit word available at the output of counter C.sub.1 is noted by X.sub.1 and represents the 4 most significant bits of address X, the 7 least significant bits of which correspond to the word X.sub.2 X.sub.3. By way of example, the buffer memory can be formed of two SN 7474 N type circuits and the 8 bit adder ADD 2 can be constituted by the cascading of two SN 7483 packages. The outputs of adder ADD 2 can be stored in the buffer memories MT by virtue of the gates P'. One can thus add the output of adder ADD 1 as many times as necessary to take into account, as will be seen later, the case where the addresses B and H are not in the same line (B.sub.1 different from H.sub.1). Description of control circuits These circuits are shown schematically on FIG. 37. they include : a counter C.sub.2 preset to B.sub.1 ; a two input switching circuit AX receiving X.sub.1 and H.sub.1 and having a control connection 50 which specifies which of the words, X.sub.1 or H.sub.1, will appear on output 52; a comparator COMP the inputs of which are connected to counter C.sub.2 and the output of AX; a switching circuit AH controlled by the control signal transmitted by connection 50 and by the complementary signal transmitted by connection 52 and the input of which is connected to the output of the comparator. The circuit AH has two complementary outputs 53 and 55 each controlling one of the two PH switching gates of which one of the gates receives the word X.sub.2 X.sub.3 and the other the word H.sub.2 H.sub.3. The outputs of the PH switching gates are connected to decoders DECOD H.sub.2 and DECOD H.sub.3. The operation of this circuit is as follows: B.sub.1 and H.sub.1 are transmitted to comparator COMP. If H.sub.1 = B.sub.1, this comparator unblocks the PH gates which transmit H.sub.2 and H.sub.3 to the upper address decoder. The lower decoder is, as will be seen later, supplied, and the addition of the 1s is performed. The result S of this addition is added to the lower address to give the X address and the 1s are rewritten between B and X. After this operation, the 1 signal which appears on connection 52, modifies the state of AH switching circuit and it is X.sub.2 X.sub.3 which substitutes for H.sub.2 H.sub.3 on the PH switching circuit output. After the definition of X.sub.2 X.sub.3, as a result the writing of the 1s does not pass address X. The control signal transmitted by connection 50 also operates on AX which transmits the X.sub.1 word into the comparator, but as we have assumed that B.sub.1 = H.sub.1, it results that X.sub.1 = H.sub.1, which does not modify the signal transmitted by the comparator. Throughout the description which precedes this second variant, for simplicity it was assumed that the constraint upper and lower addresses were in the same lines. We shall now explain the operation of the optimizer when H.sub.1 is different from B.sub.1. If H.sub.1 is different from B.sub.1, the additions performed in adder ADD 1 and in adder ADD 2 add the sum S.sub.1 of the 1s of the line B.sub.1 to B. The sequencer then transmits a pulse which increments counter C.sub.2 and the addition B.sub.1 + S.sub.1 + S.sub.2 is again made. These additions are performed until there is equality between the C.sub.2 and H.sub.1 contents. As long as equality has not been reached, the rewriting of the 1s is blocked. When the contents of counter C.sub.2 reach H.sub.1, a flip-flop which is not shown on FIG. 15 intervenes to cause the following operations: reintroduction of word B.sub.1 in counter C.sub.2, formation of a 1 signal appearing on connection 52 which controls the switching of X.sub.1 onto comparator COMP by the AX circuit and the switching of X.sub.2 X.sub.3 towards the upper address decoder by the PH circuit, authorization of rewriting the 1s in the interval B, X. The schematic of the complete control circuits card is shown on FIG. 38. On this figure, the components of FIG. 37 are again to be found, being counter C.sub.2, the comparator COMP, the switching circuits AX, AH and PH, adder ADD 2, gates P.sub.1 and P' (which are symbolically represented by a single gate), buffer memory MT and the counter C.sub.1 preset to B.sub.1. In the lower part, a logic circuit PB does not allow the lower decoder to intervene except when working on the lower line B.sub.1. The control connections t.sub.B, t.sub.H, AB, M3, M2 shown on the circuit of FIG. 38 come from the sequencer. This sequencer is shown schematically on FIG. 39. It includes a flip-flop 62, three monostables M.sub.1, M.sub.2, M.sub.3 connected in cascade and one on-off flip-flop 64. In the simplified case where B.sub.1 = H.sub.1, the operation of this circuit is as follows: a starting transfer pulse t.sub.B is supplied by the computer and provides for loading of registers B.sub.1, B.sub.2, B.sub.3 and of counter C.sub.2. A second pulse t.sub.H loads registers H.sub.1, H.sub.2 and H.sub.3 and resets flip-flop 62 to zero and triggers the on-off flip-flop 64. This operates the monostables M.sub.1, M.sub.2, M.sub.3 the roles of which are as follows: M.sub.1 allows the loading of the buffer memories MT situated on the memory card the outputs of which control adder ADD 2; the function of M.sub.2 is to write the 0s and to increment C.sub.1 counter contents, M.sub.3 transfers the outputs of adder ADD 2 into the associated MT buffer memories. When the content of counter C.sub.2 is equal to H.sub.1, pulse M.sub.2 causes flip-flop 62 to change state, which triggers a new cycle with X.sub.1 controlling the comparator, X.sub.2 X.sub.3 controlling the upper decoder. The writing of the 1s is performed between B and X. When C.sub.2 counter content is equal to X.sub.1, taking into account the fact that flip-flop 62 has changed state, the pulse coming from M.sub.2 causes the on-off flip-flop 64 to stop. The corresponding phase diagram is given on FIG. 40, again for the case where B.sub.1 = H.sub.1. It was indicated above that one obtains the address X up to which it is necessary to write the 1s from the lower address B of a constraint by adding to B the sum S of the 1s showing up in the interval ]B, H]. This addition is performed in the .SIGMA. circuit of FIG. 36. In an advantageous variation of the optimizer, one can directly deduce from the value of X, the decision to take for an elementary action starting from a state of which the address is A. If address A is less than the address X obtained after processing of the last constraint, A is situated under the diagonal X and the optimum decision to take consists of choosing a path which passes underneath the said constraint. If address A is greater than X, A is above the diagonal X and the optimum decision consists of choosing a path which passes above the constraint. In addition, if for any reason, related for example to the decisions which must be taken in other planes to those in which we are interested, one is led to select a path in the said plane which is not the optimum path, one immediately knows the penalty caused by this non-optimum choice, which is simply a difference .vertline.A - X.vertline. of the addresses. The preceding description, as much for the first as the second variant, constantly refers to the processing of a two-dimensional space corresponding to a two variable system. It is evident that one would not exceed the boundaries of the invention by considering a machine capable of processing, either in parallel or in series, p(p - 1)/2 problems of this type coming from the problem posed by the searching for an optimum path for a system with p variables, the number p(p - 1)/2 corresponding to the number of different variable combinations taken two at a time, each of the plane problems being processed as was described above. In this case, the optimizer indicates p(p - 1)/2 optimum elementary actions that it combines by any appropriate method to find, in a p dimensional space, the optimum elementary action. Purely by way of example, for this recombination one can use the decision tree method, known to those experienced in the art, and which consists of classifying all of the elementary paths obtained in the various planes as a function of the path length to which they correspond and successively eliminating all of the possibilities which correspond to the paths of which the length is rejected when going in a decreasing direction, this finally leaving the shortest path. Using this algorithm one can find the optimum decision to take in a space of p dimensions and, by projection onto each plane, the optimum action in each of the planes. But it is at the door of the person experienced in the art to find other recombinat | ||||||
