Integer string rule detection system
FIELD OF THE INVENTION 
     This invention relates to integer string analysis, and more particularly to a system for determining integer string patterns for determining the rule upon which the integer was based or created. 
     BACKGROUND OF THE INVENTION 
     It will be appreciated that there are various integer strings which are created by various coding systems, both in nature and through either inadvertent action of a system, such as a communication system, or by design, such as format codes, programming languages, error-detection, or encoding systems. Aside from computer generated binary coding sequences involving integer strings, genetic engineering has provided the opportunity to ascertain genetic coding through analysis of coding sequences corresponding to various genes or portions of genes. For instance, it is now possible to ascertain the biologic rules governing genetic make-up through characterizing a genetic code by a series of integers. 
     The ability to derive rules from those sequences so as to be able to successfully predict succeeding numbers in a series is valuable if an algorithm or set of algorithms can predict a successor to an arbitrary predecessor. Traditionally, this has been the realm of I.Q. testing or other tests measuring the intelligence of human beings. But human trial-and-error methods are very limited in quickly deriving rules for large amounts of integer number sequences. 
     In the field of information transmission through communication channels one often finds systematic distortions of signals as opposed to random noise. These systematic distortions result from interaction of the input with characteristic features of the channel itself. It is of interest for both the sender and receiver of a message that the input signal or information is communicated as correctly as possible through the channel. For this purpose, various error correction schemes exist, to provide error-free transmission of the information of the sender, usually by feed-back systems which predistort the transmitted signal for channel induced systematic errors. 
     By way of further background, the automatic evolution of algorithms in machines has been studied in recent years for various purposes. Based on a collection of building blocks for algorithms that can be combined to provide different algorithms, a variety of behaviour is provided that can be evaluated against the actual computational task at hand. There exist various error measures used in the field of neural networks which are available for measuring the success of failures of a particular algorithm. In the neural network field, however, the mechanisms of computation are completely different, and it is not possible to encode rules in a compact description. Rather the systems have a tendency to &#34;memorize&#34; string patterns, and to make predictions on that basis. 
     J. Koza of Stanford Univ. has studied the evolution of algorithms in a symbolic computer language like LISP, by manipulating strings that are commands of that high-level language. In the Koza approach, one applies a sort of symbolic Genetic Algorithm with the symbols being chosen from a set of functions and terminals. A function is generally defined as an operator or active unit that possesses one or more arguments on which it acts, which are themselves either functions or terminals. A terminal is an operand or passive unit, on which the function that possesses this operand acts on. 
     From the set of accessible functions and terminals computer programs are composed by forming symbolic expressions called S-expressions. These symbolic expressions are subsequently interpreted and evaluated using given input/output pairs for the anticipated behavior of the targeted computer program or algorithm. A selection process then singles out fitter programs which are reproduced and mutated for a next generation of programs. 
     The disadvantage of such a system is that it is slow because it uses symbolic expressions and because of the complicated combination processes between strings that have to be applied in order to arrive at new variations of strings that correspond to algorithms. 
     For further background, the following is a list of articles describing prior methods useful in the prediction of integer number sequences. 
     D. E. Goldberg. Genetic Algorithms in Search, Optimization &amp; machine Learning. Adison-Wesley, New York, 1989; J. Holland. Adaptation in natural and artificial systems. University of Michigan Press, Ann Arbor, 1975; S. Kirkpatrick et al., Simulated Annealing, Science, Vol 220, 1983, p. 671; N. Metropolis, J. Chem. Phys., Vol. 21, 1953, p. 1087; J. Koza. Genetic Programming. MIT Press, 1992, Cambridge; J. Koza. Hierarchical Genetic Algorithms operating on populations of computer programs. Proc. 11th IJCAI, 1989, Morgan Kauffman, San Mateo, Calif., 1989; M. R. Schroeder. Number Theory in Science and Communication. Springer, Berlin, 1986; C. E. Shannon. A mathematical theory of communication. Bell System Technical Journal, 27, 1948, 379. 
     SUMMARY OF THE INVENTION 
     Rather than using symbolic expressions, a system is provided for determining the rule or set of rules which govern the generation of a string of integers through the generation of a series of trial programs from binary strings used to generate trial integer strings against which the incoming integer string is compared. This permits rapid determination of the nature of the data represented by the string of integers, with the integer generation rule permitting genetic code determinations, optimization of communication channels through received signal analysis, curve fitting and determination of integer coding. For the analysis, means are provided to generate a number of integer sequences from trial programs and to derive error coefficients when the integer sequences generated by the trial programs are compared to the initial integer string. Means are provided to select further trial programs based on error coefficients to generate further trial programs, run in parallel, for closer approximation in a process which converges on the best trial program. In one embodiment, in order to generate this set of trial programs an algorithm and a random number generator are used to generate a set of trial programs without any foreknowledge of the way in which the string of integers was produced. 
     Thus, the decoding system uses no a priori knowledge in the selection process, with the system providing automatic generation of trial programs instead of inaccurate fit functions. In one embodiment, subject system is implemented in a low-level binary representation, which is fast and easy to implement in hardware. 
     More specifically, the subject integer number sequence detection system, unlike the Koza system, starts out with a collection of binary strings called a population, which is originally generated using a random number generator, with the strings being subsequently compiled as the trial programs. These trial programs in turn generate integer strings against which the input string is compared. This interpretation of the binary strings as trial programs is achieved by using a translation mechanism specifying which binary code of a given length corresponds to which element from the set of functions and terminals available. Since most binary strings do not result in programs which work, the resulting symbol combination is processed so as to ascertain that it is working as a correct program. This is done by correction and repair of the binary strings as well as editing of the symbolic sequence. 
     Variation of the selected binary strings using random number generators and the operations described below result in better and worse programs. The selection process assures that better programs are kept, worse are discarded. 
     In adopting the method of using binary strings one is able to use very simple operators for the variation of already existing programs. Secondly, one is able to compile the programs into the native machine language of computers that runs much faster than interpretation of programs based on their symbolic content. In addition, one is able to apply simulated annealing instead of genetic selection in order to find the best algorithm for a sequence. 
     Programs which generate integer sequences are then used as trial programs, with their respective performance being ranked as a function of an error measure which is the result of comparing this integer sequence generated by the trial programs with the integer sequence that forms the input to the system. Thus evaluation is done by using an error measure to rank all the programs in the population with respect to their behaviour against a given integer number sequence. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     These and other features of the Subject Invention will be better understood in conjunction with the Detailed Description taken in conjunction with the Drawings of which: 
     FIG. 1 is a block diagram of the Subject System illustrating integer sequence prediction and rule determination for an input integer sequence, with display of the rule governing the generation of the input integer sequence; 
     FIG. 2 is a block diagram illustrating the provision of a series of programs from which integer number strings are developed and with which string is compared for the generation of an error signal that is used in an iterative process to arrive at the program which best describes the rule upon which the integer string is generated; 
     FIG. 3 is a block diagram of the utilisation of the rule detection system as applied to a communications channel for the detection of systematic errors and the elimination of the errors in the communication channel; and, 
     FIG. 4 is a flow chart illustrating not only the utilisation of the set of programs to determine the rule for the generation of the input integer string, but also the generation of the programs themselves based on the generation of random strings. 
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     Referring now to FIG. 1, in the subject system an integer string 10 is coupled to an integer sequence detection unit 12 which detects when a synthetically generated integer string closely approximates the input string. Unit 12 generates a series of integers strings, based on a number of programs, with each program corresponding to a particular rule of integer sequence generation. Upon detection of the closest integer string a rule determination unit 14 identifies the program which generated the integer string with which the input integer string is compared. 
     The result is a display 16 of the rule corresponding to the rule which resulted in the generation of input string 10. In this case the input string 10 is composed of the following integers: 1, 4, 9, 16, 25. The rule determined to be governing the generation of input string 10 is I n+1  =(n+1) 2 . 
     It will be appreciated that having determined the rule governing the integer string, this rule can be utilised by a utilisation unit 18 to, for instance, remove systematic distortions from a communications channel, as will be described in connection with FIG. 3. 
     Referring now to FIG. 2, a system is described for detecting the integer sequence of FIG. 1. Here, a series of programs P 1 , P 2 , . . . , P n , here shown at 20, 22 and 24 is utilised at 26 to develop corresponding integer strings. The output of unit 26 is coupled to a comparator 28 which compares each of the developed integer strings with the input string 10. The output of comparator 28 is coupled to an error signal generator 30 which provides an error signal or ranking measure of the closeness of the trial strings to the input string. 
     These ranking measures are utilised by a program selection unit 32 to select for a next interation that program or series of programs which results in integer strings which better approximate the input string. The process is continued until the error between the input string and the trial strings is zero or within some predetermined error bound. Having determined which program is the final selected program, this corresponds to the rule represented by the program and therefore identifies insofar as possible the rule untilised in the generation of the input string. 
     The programs can be obtained a priori by simply listing common methods of generating integer strings. For instance, one program could simply result in an integer string generated according to I n+1  =n+1. It could also, for instance, result in an integer string generated in accordance with I n+1  =n+2. The rule could, of course, be more complex, such as I n+1  =(n+1) 2 . 
     While it is possible to provide for instance 100 such programs from a list, such selection of programs might suffer from a presumption of how the input string was generated. This requires foreknowledge of the likely characteristics of the input string. Thus, as part of the Subject Invention, programs in one embodiment are randomly generated by a program generator 34 to provide a series of programs which have no bias as far as integers are concerned. In one embodiment the programs are generated by starting from random binary strings which are translated into a sequence of functions which upon execution yields a sequence of integer numbers. As an example, the binary string 00010 translates into the multiplication function &#34;times&#34; which acts upon a later translated portion of the binary string to provide an algorithm or program from which a predetermined trial string is generated, namely the &#34;multiplication trial string&#34;. 
     Referring now to FIG. 3, the subject system can be utilised to detect the rule governing systematic errors introduced into a communication channel 40 and to adjust the channel as illustrated at 42 and feed-back loop 44 to eliminate these systematic errors. The systematic error is introduced within communication channel 40 as illustrated at 46. In order to measure the systematic error in the channel, an integer set is generated at 48 to be introduced into the channel, with the resulting output being analysed at 50 to determine the difference between the integer test set and what has resulted in the output of the channel. 
     Having derived a set of integers which represent the channel distortion, the subject system is utilised to discover a rule which describes the systematic error, assuming the systematic error can be characterized by such a rule. This is accomplished by unit 52. If an identifiable rule can be ascertained, it is then possible to adjust the channel to eliminate or reduce the distortion. 
     Note that FIG. 4 describes an algorithm for generating the programs which result in trial strings more particularly described by the program listing provided hereinafter. 
     By way of further explanation, the way that numbers are used by the various programs, it is noticed that programs receive integer numbers I 0 .sup.(α), I 1 .sup.(α), . . . , I L .sup.(α) as input in each input/output example α, with I 0 .sup.(α) being a counter of the input and I 1 .sup.(α), . . . , I L .sup.(α) being the L predecessors of the number expected next in the sequence. As an output a program is required to produce an integer O.sup.(α) for each instance of {I 0 .sup.(α), I 1 .sup.(α), . . . , I L .sup.(α) } 
     
         O.sup.(α) =g(I.sub.0.sup.(α), I.sub.1.sup.(α), . . . , I.sub.L.sup.(α))                                    (1) 
    
     with g being a more or less complicated function encoded by the corresponding binary string. 
     The evaluation function that controls the selection process for selecting the better programs can be stated, for instance, as the sum square error in producing the given sequence: ##EQU1## where the target number O 0 .sup.(α) =I.sup.(n+1) is identified with the follower to I.sup.(n) =I 1 .sup.(α) in the input string. By definition, E≧0, and one is looking for correct solutions defined by E=0. 
     As an example, one may use only one predecessor, so L=1. In this specific embodiment, the terminal set T contains 
     
         T={I.sub.0, I.sub.1,0,1,2}                                 (3) 
    
     that includes the smallest natural numbers for internal computations. This table can be easily extended to match the terminals necessary to achieve other sorts of program behavior. 
     The function set consists of basic operations possible with integer numbers, like addition, subtraction, multiplication, division, exponentiation, as well as the modulo and absolute value function and a comparison function returning an integer value. 
     
         F={PLUS,MINUS,TIMES,DIV,POW,ABSV,MODU,IFEQ}                (4) 
    
     All of these functions require two arguments, with the exception of the absolute value. Yet also the absolute value is implemented using the default 2 argument function, with the second argument of the function as a dummy variable. This part of the table can be easily extended or replaced, depending on the specific functions necessary in a particular set of problems. 
     Table 1 presented hereinafter shows as an example 5-bit translation of binary numbers. 
     
                       TABLE 1                                                     
______________________________________                                    
                                    Transla-                              
String Code Translation                                                   
                      String Code   tion                                  
______________________________________                                    
0   0     0     0   0   PLUS    1   0   0   0   0   I0                    
0   0     0     0   1   MINUS   1   0   0   0   1   I1                    
0   0     0     1   0   TIMES   1   0   0   1   0   1                     
0   0     0     1   1   DIV     1   0   0   1   1   I0                    
0   0     1     0   0   POW     1   0   1   0   0   I1                    
0   0     1     0   1   ABSV    1   0   1   0   1   1                     
0   0     1     1   0   IFEQ    1   0   1   1   0   0                     
0   0     1     1   1   MODU    1   0   1   1   1   2                     
0   1     0     0   0   MODU    1   1   0   0   0   I0                    
0   1     0     0   1   ABSV    1   1   0   0   1   I1                    
0   1     0     1   0   TIMES   1   1   0   1   0   1                     
0   1     0     1   1   POW     1   1   0   1   1   I0                    
0   1     1     0   0   DIV     1   1   1   0   0   I1                    
0   1     1     0   1   MINUS   1   1   1   0   1   1                     
0   1     1     1   0   PLUS    1   1   1   1   0   0                     
0   1     1     1   1   IFEQ    1   1   1   1   1   2                     
______________________________________                                    
 
    
     It may be noticed that the coding of certain functions or terminals is redundant. Translations are placed randomly so the full 5-bit set of possible codings is used. A specific feature of this embodiment is that the first bit in this code specifies whether a terminal (&#34;1&#34;) or a function (&#34;0&#34;) is coded. 
     Table 2 presented hereinafter explains the corresponding actions taken by a program. 
     
                       TABLE 2                                                     
______________________________________                                    
Function name                                                             
          Action          Description                                     
______________________________________                                    
PLUS(a,b) a + b           Integer Addition                                
MINUS(a,b)                                                                
          a - b           Integer Subtraction                             
TIMES(a,b)                                                                
          a * b           Integer Multiplication                          
DIV(a,b)  a / b           Integer Division                                
POW(a,b)  a.sup.b         Integer Exponentiation                          
ABSV(a,b) | a |                                         
                          Absolute Value                                  
MODU(a,b) a modulo b      Modulo Operation                                
IFEQ(a,b) 1 if a = b , 0 otherwise                                        
                          Comparison Operation                            
______________________________________                                    
 
    
     Some of the operations needed to be modified in order to have valid numerical behavior for all possible arguments. As an example, bitstrings that have to be translated into programs are of length l=225 transscribing into N=45 symbols from the sets F and T. Usually, the raw translation of a string does not fit grammar. With two arguments per operator, the following requirements have to be fulfilled: 
     (i) The number of terminals N T  must be larger than the number of functions N F   
     
         N.sub.T &gt;N.sub.F                                           (5) 
    
     and 
     (ii) each sequence should start with a function call. 
     In order to assure these requirements a string is scanned by a repair operator that corrects corresponding bits in the sequence. Resulting strings are subsequently parsed and the proper number of parentheses is inserted. Finally, the standard function structure is added generating program code that can be handed over to a compiler. 
     Specific measures have been taken to assure that all operations result in valid integer numbers. Integer division rounds to next integer, a division through 0 results in a maximum value of 1000. The integer exponentiation 0 0  results in 1. The absolute value functions carries a dummy argument b. The modulo operation with b=0 returns a. 
     Depending on the number of arguments supplied by the string code, a shallowly nested or a deeply nested function results. It will be appreciated, that the resulting programs are of varying length in the number of functions and terminals, even though the binary strings never change length. 
     The operators employed to constantly vary the population were taken from a set of bit-manipulating operators. To exemplify their respective effect, 10-bit strings are considered in the following (with probabilities of operator application in parentheses): 
     (1) 1-bit mutation (p 1 ) 
     
         0011111001→0111111001 
    
     (2) n-bit mutation (p 2 ) 
     
         0011111001→0011110110 
    
     (3) 1-bit shift right, only category bits (p 3 ) 
     
         0011111001→1011101001 
    
     (4) 1-bit shift right, all bits (p 4 ) 
     
         0011111001→1001111100 
    
     (5) 1-bit shift left, only category bits (p 5 ) 
     
         0011111001→1011101001 
    
     (6) 1-bit shift left, all bits (p 6 ) 
     
         0011111001→0111110010 
    
     (7) 1-point crossover, only at category bits (p 7 ) 
     
         0011111001+0000110000→0011110000 
    
     A selection scheme has to be chosen for the process of generating an improvement in the population. Well-known schemes are generational selection and steady state selection. Also, a selection scheme, based on simulated annealing can be applied. 
     It will be appreciated that any of a variety of error measures can be utilized when comparing the initial string with the trial strings. If in the most simple case there is an exact match between the input string and a trial string, then no iterative process is necessary. As a result, the rule that generated the trial string is identified as the rule that generated the input string. However, such a simple situation is rare when, for instance, attempting to detect systematic errors in a communications channel, or when trying to determine a particular genetic code. In order to determine such complicated rules, in the Subject System the error measure is utilized to identify a subset of the original trial programs which better characterizes the input sequence. The trial string matching process continues in an iterative fashion to select further reduced subsets of the trial programs until either a best program is selected or until no program results in a trial string close enough to the input string. 
     Another way of generating and selecting programs is to start out with a relatively small number of trial programs. If none result in an error measure indicating rule detection, the population of trial programs can be increased to include more and different trial programs. This can be done in the Subject System through the automatic trial program generator which is based on binary number manipulation. Thereafter, the iterative comparison continues, with the population of trial programs being expanded and contracted until a satisfactory result is obtained. 
     One example of a selection scheme incorporating this latter philosophy is described in the program listing in FORTRAN which follows: ##SPC1## 
     Having above indicated a preferred embodiment of the present invention, it will occur to those skilled in the art that modifications and alternatives can be practiced within the spirit of the invention. It is accordingly intended to define the scope of the invention only as indicated in the following claims.