Method and apparatus for resolution of problems using constrained discrete variables
Summary by NHIP
Constrained Variable Resolution System
The system resolves optimization problems using constrained discrete variables via survey propagation and decimation steps. It constructs a data structure where processors deliver messages containing probability sets for variable patterns to compute polarization degrees, then assigns states from referenced sets until all variables are resolved.
Claim Score by NHIP
Abstract
Calculator based resolution method and device for an optimization problem of the physical real world, the problem being modeled with constrained discrete variables, the variables having a referenced set of possible states. The method comprising, a survey propagation step and a survey induced decimation step to provide a simplified problem, until all variables are either assigned or are unpolarized.

Term
Term ended
Expired 23 November 2023, 2.8 years ago.
- Priority and filed
- Granted
- Expired
- Today
42 claims: 3 independent, 39 dependent
- 1Broadest claimClaim Score 44, average(NHIP)A system, comprising:a memory storing a problem;a processor coupled to the memory, the processor comprising: means for constructing a data structure representative of the problem, the data structure comprising constrained discrete variables of the problem and constraints of the variables, each variable having a referenced set of possible states;means for delivering messages between a variable of the variables and at least one constraint of the variable, the messages comprising a message containing a set of probabilities for various patterns of warning for the variable, a warning giving information on whether the various assignments from the set of possible states of the variable are compatible with the constraints involving the variable;means for calculating a probability of the variable satisfying the at least one constraint of the variable based on the messages delivered in order to compute a degree of polarization of the variable to know to what degree the most favorable assignment of the variable is better than all other possible assignments of the variable;means for assigning at least one of the variable a state from its set of possible states according to the computed degrees of polarization, for simplifying the problem;means for recursively using means for constructing the data structure, delivering messages, calculating probabilities, and assigning until at least all the variables have been assigned for providing a solution to the problem;and an output device coupled to the processor, the output device outputting the solution of the problem.
- 20A method for solving a problem, comprising:constructing, in constructing means, a data structure representative of the problem comprising a set of discrete variables, each variable of the set having a referenced set of possible states, each variable of the set having at least one corresponding constraint;delivering, in delivering means, messages between a variable of the set of variables and the at least one corresponding constraint, messages comprising a message containing a set of probabilities for various patterns of warning for a variable, a warning giving information on whether various assignments from the set of possible states of the variable are compatible with the constraints involving the variable;calculating, in calculating means, a set of numbers dependent on the messages, each number in the set of numbers representing a probability of satisfying all constraints of the variable in a given state in order to compute a degree of polarization of the variable to know to what degree the most favorable assignment of the variable is better than all other possible assignment of the variable;assigning, in assigning means, at least one of the variable a state from its set of possible states according to the computed degrees of polarization, for simplifying the problem;and recursively using means for constructing the data structure, delivering messages, calculating probabilities and assigning until at least all the variables have been assigned as to provide a solution to the problem.
- 42A program storage device readable by a machine, tangibly embodying a program of instructions executable by the machine to perform the method for solving a problem, the method steps comprising:constructing, in constructing means, a data structure representative of the problem comprising a set of discrete variables, each variable of the set having a referenced set of possible states, each variable of the set having at least one corresponding constraint;delivering, in delivering means, messages between a variable of the set of variables and the at least one corresponding constraint, messages comprising a message containing a set of probabilities for various patterns of warning for the variable, a warning giving information on whether the various assignments from the set of possible states of the variable compatible with the constraints involving the variable;and calculating, in calculating means, a set of numbers dependent on the messages, each number in the set of numbers representing a probability of satisfying all constraints of the variable in a given state as to compute a degree of polarization of the variable to know to what degree the most favorable assignment of the variable is better than all other possible assignments of the variable;assigning, in assigning means, at least one of the variable a state from its set of possible states according to the computed degrees of polarization for simplifying the problem;and recursively using means for constructing the data structure, delivering messages, calculating probabilities and assigning until at least all the variables have been assigned as to provide a solution to the problem.
Independent claims3
124 paragraphs in 2 sections, as filed
0001The present invention relates generally to calculator implemented method of resolution of problems which can be modeled as sets of variables with a limited range of possible values, i.e. discrete variables, and which are constrained on their possible values by constraint functions. A related device and a calculator readable media bearing instructions are also considered.
0002Real world optimization problems are often described in terms of a cost function, which has to be minimized over a large set of discrete independent variables. Some of these variables might not be under control, in which case the optimization task is called “optimization under uncertainty”. Quite in general, costs function can be written as a list of constraints over the discrete variables and the optimization task consists in finding assignments of the discrete variables, which minimize the number of violated constraints. A typical example of such problem is the graph Coloring problem: given a graph, one wants to find the minimal number of colors which are needed to color the vertexes in such a way that two vertexes connected by a link never take the same color. A familiar realization of graph coloring is the problem of coloring maps: countries sharing a border have to be colored in different colors.
0003Another classical problem of constraint satisfaction is the satisfiability of conjunctive normal forms: the variables are Boolean variables, which have to be assigned a value: true (T) of false (F). A literal is defined as either the variable itself, or its negation. Each constraint consists of the ‘or’ of a certain number of literals. For instance one could have 3 variables x,y,z, and the following five constraints:
0004a) x.or.(not y)
0005b) (not x).or.z
0006c) (not y).or.(not z)
0007d) y.or.(not z)
0008e) x.or.y.or.(not z)
0009In order to satisfy constraint a), one needs to assign the variable x to true, or to assign the variable y to false, or both. The problem is to find an assignment of all three variables which satisfies all constraints (this is called a SAT assignment). In the present example assigning x to false, y to false, z to false is a SAT assignment.
0010The satisfiability of conjunctive normal forms is a core problem of computer science, because many other problems can be transformed into it: a theorem by S. A. Cook (“The complexity of theorem-proving procedures”, Proceedings of the 3<sup>rd </sup>annual ACM Symposium on the theory of computing, p151, 1971) shows that all the problems which can be solved in polynomial time by a non-deterministic Turing machine can be transformed into satisfiability. Any progress on statisfiability has thus potential impact for resolution of all these problems.
0011Some methods for such problems have already been proposed. Systematic search procedures can be improved with respect to the naïve enumeration of all possible assignments. One of the best such procedure is the Davis-Putnam algorithm which is very much used. However, in difficult constraint satisfaction problems, the number of assignments which is typically explored by this algorithm grows exponentially with the size of the problem, and its use is limited to problems involving a relatively small number of variables. Alternative methods consist of heuristics which aim at finding an assignment of all variables by exploring a much smaller set of assignments (with the risk of not finding an existing solution). The most widely used heuristics so far are local search methods in which one starts from some initial assignment, which generally violates some constraint, and one tries to reduce the number of violated constraints by changing the value assigned to one variable. The GSAT procedure (Selman, B.; Levesque, H.; Mitchell, D. GSAT—“A New Method for Solving Hard Satisfiability Problems”. Proceedings AAAI-92.) or the WalkSAT procedure (Selman, B.; Kautz, H.; Cohen, B.—“Local Search Strategies for Satisfiability Testing”. Proceedings of 2nd DIMACS Challenge on Cliques, Coloring and Satisfiability, 1994.), are among the best existing such procedures for satisfiability problems. Another class of local search procedure is the simulated annealing method (S. Kirkpatrick, C. D. Gelatt, M. P. Vecchi, “Optimization by simulated annealing”, Science, vol 220, p 621, 1983). All these local search methods can often deal with problems involving many more variables than exhaustive searches; however in difficult problems they tend to be trapped into ‘local minima’ which can prevent them from finding a satisfiable assignment, or slow down the procedure to a point where it becomes useless. A local minimum is an assignment of variables violating some constraints, such that one cannot decrease the number of violated constraints by a sequence of moves in which one changes the assignment of only one, or a small number, of variables. The present procedure is a heuristic method which does not rely on local optimization, and can thus avoid these local minima.
0012The proposed solution is based on a relatively simple method which is applied iteratively on a data structure representing the problem as a graph of the variables and their constraints and in which messages are exchanged. The method uses an iterative message passing procedure. The messages, which are sent along a graph describing the variables and the constraints, are probability distributions of the bias that each given constraint produces onto each variable. The procedure lends itself to numerical simulation. After convergence, it allows to detect the most biased variables and fix them; the smaller set of variables can be studied recursively by the same procedure until all variables are fixed
0013The invention is then a calculator based resolution method for an optimization problem of the physical real world, the problem being modeled with constrained discrete variables, the variables having a referenced set of possible states.
0014According to the process, it comprises three proceeding steps: <ul id="ul0001" list-style="none"><li id="ul0001-0001" num="0015">(a) a first one called survey propagation in which a graph of the problem and warnings are determined, a warning giving information on whether the various assignments of the related variable are compatible with the constraints involving this variable, and in that messages are exchanged within the graph in order to determine, for each constraint and each variable involved in this constraint, a message sent from the constraint to the variable containing a set of probabilities for the various patterns of warnings that the variable can receive,</li><li id="ul0001-0002" num="0016">(b) a second one called survey induced decimation in which, using the previous messages, a degree of polarization of each variable is determined, a degree of polarization for a variable being computed by first establishing a list of numbers, each one giving how favorable it is to assign the variable to one state of its set of possible states, each of these numbers being computed from the probability of warnings determined in the previous messages, the list being used to compute the degree of polarization by determining to what degree the most favorable assignment in the list is better than all other possible assignments, and at least one of the variables is assigned one state of its set of possible states according to its degree of polarization as to simplify the problem,</li><li id="ul0001-0003" num="0017">(c) finally, an iteration step for restarting at step (a) with the new simplified problem till all variables are either assigned or are unpolarized.</li></ul>
0018Following means, alone or in all their possible technical combination, are considered: <ul id="ul0002" list-style="none"><li id="ul0002-0001" num="0019">in case not all the variable are assigned at the end of the three steps, a local search procedure such as a greedy search or a walksat procedure or a simulated annealing procedure is initiated in order to resolve the remaining set of unpolarized variables and their constraints,</li><li id="ul0002-0002" num="0020">in the survey induced decimation step (b), only the variable of largest degree of polarization is assigned to the corresponding state,</li><li id="ul0002-0003" num="0021">the method comprises the steps of:</li><li id="ul0002-0004" num="0022">(a) for survey propagation: <ul id="ul0003" list-style="none"><li id="ul0003-0001" num="0023">determining from the modelisation of the problem an interaction graph with edges linking nodes, the nodes being the variables, S<b>1</b>, S<b>2</b>, S<b>3</b> . . . , and the constraints, a, b, c, d . . . , a variable node being connected by an edge to its related constraint(s), the interaction graph being bipartite, a variable being connected only to constraints, a constraint being connected only to variables, and for each constraint which is linked to a variable, updating the graph by:</li><li id="ul0003-0002" num="0024">determining over the graph, first a list of elementary messages called cavity-bias sent from each constraint to its related variable, the cavity bias being a message having a number of binary items equal to the number of possible states of the variable to which it is sent, each binary item being either void or non-void, the void corresponding to an absence of constraint on the corresponding state of the variable and the non-void corresponding to the reverse, the cavity biases being initialized to random values,</li><li id="ul0003-0003" num="0025">determining over the graph, a list of second elementary messages called cavity-fields sent from each variable to its related constraints, the cavity-field being a message having a number of integer items equal to the number of possible states of the variable which sends it, each integer item value being the number of non-void received from all cavity-biases to said variable for the referenced possible state of the said variable,</li><li id="ul0003-0004" num="0026">determining over the graph, a list of local-fields which are sets of integer values in relation to variables, each local-field being a set having a number of integer values equal to the number of possible states of the variable and each integer value being the number of non-void received by the variable in cavity-biases for each possible state of the variable, <ul id="ul0004" list-style="none"><li id="ul0004-0001" num="0027">the cavity-bias sent from a constraint a to a variable S being computed on the constraint a from the cavity-field(s) received by said constraint a from all the other variables to which said constraint a is linked, thus excluding S, and, for each of said cavity-fields, the least penalized subspace of possible states of the variable is determined as being a set of the references of possible states for which the number of non-void is minimal, then a truth table restricted to said sets for all said cavity-fields and for all the references of possible sates for the variable S is created in relation to the constrain a, from this restricted truth table a void is assigned in the cavity-bias for the referenced possible state of the variable S if the constraint is satisfied and a non-void if the constraint is not satisfied,</li></ul></li><li id="ul0003-0005" num="0028">determining over the graph, probability laws of each cavity-bias sent from a constraint a to a linked variable S with q possible states and called cavity-bias-surveys, a cavity-bias-survey being a set of 2<sup>q </sup>probabilities for each possible configuration of its cavity-bias,</li><li id="ul0003-0006" num="0029">determining over the graph, probability laws of each cavity-field sent from a variable S to a linked constraint a and called cavity-field-surveys, a cavity-field-survey being a set of probabilities for each admissible configuration of its cavity-field, an admissible configuration of cavity-field being one with at least one void,</li><li id="ul0003-0007" num="0030">the cavity-bias-survey sent from a constraint a to a variable S being computed on the constraint a from the cavity-field-survey(s) received by said constraint a from all the other variables to which said constraint a is linked, thus excluding S, by using a look-up table characterizing constraint a, said look-up table being a list giving, for each possible assignment of all variables participating to the constraint, whether the constraint is satisfied by the assignment or not, and computing the probability that the constraint is unsatisfied, for each state of the variable, <ul id="ul0005" list-style="none"><li id="ul0005-0001" num="0031">previous survey propagation steps updates being run successively on the constraints and variables along the graph,</li></ul></li><li id="ul0003-0008" num="0032">said updates being stopped after a predetermined number of updates if it is not possible to find a set of cavity-bias-surveys which does not change, when one round of updates on all constraints and on all variables participating to the constraints is performed within a given preassigned resolution and, then, being restarted from the beginning with cavity biases initialized to new random values,</li></ul></li><li id="ul0002-0005" num="0033">(b) for survey Induced Decimation: <ul id="ul0006" list-style="none"><li id="ul0006-0001" num="0034">determining over the graph, a local-field-survey for each variable which is a probability law of all possible local-field by computing for each variable S from all the cavity-bias-surveys received by said variable and for each possible state of said variable the joint probability of each admissible local-filed, an admissible local-field being one with at least one zero value,</li><li id="ul0006-0002" num="0035">and, with the previously determined local-field-surveys:</li><li id="ul0006-0003" num="0036">determining the degree of polarization of each variable by computing, for each assignment of the variable, the probability of having zero value as given by the local-field-survey, and computing for each assignment of the variable, the maximum of this probability diminished by the sum of the probabilities for all other assignments</li><li id="ul0006-0004" num="0037">the variable with the largest degree of polarization is assigned to its preferred state, the one with the largest probability of having zero value as given by the local-field-survey,</li><li id="ul0006-0005" num="0038">the constraints containing this assigned variable are reduced, those which are satisfied are eliminated, in order to make a simpler new problem,</li></ul></li><li id="ul0002-0006" num="0039">(c) for iteration: <ul id="ul0007" list-style="none"><li id="ul0007-0001" num="0040">restating survey propagation steps (a) with the new problem till all variables are assigned or are unpolarized, meaning that, for all the possible assignments of the variable, the probabilities of having zero value as given by the local-field-survey (that is: for each possible assignment), diminished by the sum of the probabilities of having zero value as given by the local-field-survey for all other assignments, are equal within a predetermined resolution,</li></ul></li><li id="ul0002-0007" num="0041">for survey induced decimation steps, the preferred assignment of a variable is the one for which the probability of having zero value as given by the local-field-survey, diminished by the sum of the probabilities for all other assignments, is the largest,</li><li id="ul0002-0008" num="0042">in case the determination of the cavity-field-surveys is not possible, none of the possible configuration of the cavity-field having a void, a penalty function is used for selecting the admissible configurations and that same penalty function is used for the determination of the local-field-surveys,</li><li id="ul0002-0009" num="0043">the penalty function is an exponential of the type w=exp(−yh) where y is the amount of penalty and h the minimum of the values of the cavity-field for all possible states of the variable,</li><li id="ul0002-0010" num="0044">in case the survey propagation steps updates are stopped and restarted because it is not possible to find a set of cavity-bias-surveys which does not change, the penalty amount y is reduced,</li><li id="ul0002-0011" num="0045">the constraint and the variable to update over the graph are chosen at random,</li><li id="ul0002-0012" num="0046">the constraint and the variable to update over the graph are chosen sequentially within a randomized list of the constraints and variables,</li><li id="ul0002-0013" num="0047">the constraint and the variable to update over the graph are chosen by constraints, all the steps being done for all variables related to said constraint before choosing another constraint.</li></ul>
0048The invention is also about a device which has means intended for the execution of the previous method according to any one of its means or combination of its means. Notably, the invention is about a device which is a calculator. This calculator has means to resolve a constraint satisfaction problem of the physical real world, the problem being modeled with constrained discrete variables having a referenced set of possible states, said means allowing proceeding in three steps: <ul id="ul0008" list-style="none"><li id="ul0008-0001" num="0049">(a) a first one called survey propagation in which a graph of the problem and warnings are determined, a degree of polarization for a variable being computed by first establishing a list of numbers, each one giving how favorable it is to assign the variable to one state of its set of possible states, each of these numbers being computed from the probability of warnings determined in the previous messages, the list being used to compute the degree of polarization by determining to what degree the most favorable assignment in the list is better than all other possible assignments, and in that messages are exchanged within the graph in order to determine, for each constraint and each variable involved in this constraint, a message sent from the constraint to the variable containing a set of probabilities for the various patterns of warnings that the variable can receive,</li><li id="ul0008-0002" num="0050">(b) a second one called survey induced decimation in which, using the previous messages, a degree of polarization of each variable is determined, a degree of polarization for a variable being computed by first establishing a list of numbers, each one giving how favorable it is to assign the variable to one state of its set of possible states, each of these numbers being computed from the probability of warnings determined in the previous messages, the list being used to compute the degree of polarization by determining to what degree the most favorable assignment in the list is better than all other possible assignments, and at least one variable is assigned one state of its set of possible states according to its degree of polarization as to simplify the problem,</li><li id="ul0008-0003" num="0051">(c) finally, an iteration step for restarting survey propagation step</li><li id="ul0008-0004" num="0052">(a) with the new simplified problem till all variables are either assigned or are unpolarized.</li></ul>
0053According to variations of the previous device, following possibilities, alone or according to any possible technical combination, are considered: <ul id="ul0009" list-style="none"><li id="ul0009-0001" num="0054">the device has means allowing to process according following steps: <ul id="ul0010" list-style="none"><li id="ul0010-0001" num="0055">(a) for Survey Propagation:</li><li id="ul0010-0002" num="0056">determining from the modelisation of the problem an interaction graph with edges linking nodes, the nodes being the variables, S<sub>1</sub>, S<sub>2</sub>, S<sub>3 </sub>. . . , and the constraints, a, b, c, d . . . , a variable node being connected by an edge to its related constraint(s), the interaction graph being bipartite, a variable being connected only to constraints, a constraint being connected only to variables, and for each constraint which is linked to a variable, updating the graph by:</li><li id="ul0010-0003" num="0057">determining over the graph, first a list of elementary messages called cavity-bias sent from each constraint to its related variable, the cavity bias being a message having a number of binary items equal to the number of possible states of the variable to which it is sent, each binary item being either void or non-void, the void corresponding to an absence of constraint on the corresponding state of the variable and the non-void corresponding to the reverse, the cavity biases being initialized to random values,</li><li id="ul0010-0004" num="0058">determining over the graph, a list of second elementary messages called cavity-fields sent from each variable to its related constraints, the cavity-field being a message having a number of integer items equal to the number of possible states of the variable which sends it, each integer item value being the number of non-void received from all cavity-biases to said variable for the referenced possible state of the said variable,</li><li id="ul0010-0005" num="0059">determining over the graph, a list of local-fields which are sets of integer values in relation to variables, each local-field being a set having a number of integer values equal to the number of possible states of the variable and each integer value being the number of non-void received by the variable in cavity-biases for each possible state of the variable, <ul id="ul0011" list-style="none"><li id="ul0011-0001" num="0060">the cavity-bias sent from a constraint a to a variable S being computed on the constraint a from the cavity-field(s) received by said constraint a from all the other variables to which said constraint a is linked, thus excluding S, and, for each of said cavity-fields, the least penalized subspace of possible states of the variable is determined as being a set of the references of possible states for which the number of non-void is minimal, then a truth table restricted to said sets for all said cavity-fields and for all the references of possible sates for the variable S is created in relation to the constrain a, from this restricted truth table a void is assigned in the cavity-bias for the referenced possible state of the variable S if the constraint is satisfied and a non-void if the constraint is not satisfied,</li></ul></li><li id="ul0010-0006" num="0061">determining over the graph, probability laws of each cavity-bias sent from a constraint a to a linked variable S with q possible states and called cavity-bias-surveys, a cavity-bias-survey being a set of 2<sup>q </sup>probabilities for each possible configuration of its cavity-bias,</li><li id="ul0010-0007" num="0062">determining over the graph, probability laws of each cavity-field sent from a variable S to a linked constraint a and called cavity-field-surveys, a cavity-field-survey being a set of probabilities for each admissible configuration of its cavity-field, an admissible configuration of cavity-field being one with at least one void,</li><li id="ul0010-0008" num="0063">the cavity-bias-survey sent from a constraint a to a variable S being computed on the constraint a from the cavity-field-survey(s) received by said constraint a from all the other variables to which said constraint a is linked, thus excluding S, by using a look-up table characterizing constraint a, said look-up table being a list giving, for each possible assignment of all variables participating to the constraint, whether the constraint is satisfied by the assignment or not, and computing the probability that the constraint is unsatisfied, for each state of the variable, <ul id="ul0012" list-style="none"><li id="ul0012-0001" num="0064">previous survey propagation steps updates being run successively on the constraints and variables along the graph, said updates being stopped after a predetermined number of updates if it is not possible to find a set of cavity-bias-surveys which does not change, when one round of updates on all constraints and on all variables participating to the constraints is performed, within a given preassigned resolution and, then, being restarted from the beginning with cavity biases initialized to new random values,</li></ul></li></ul></li><li id="ul0009-0002" num="0065">(b) for Survey Induced Decimation: <ul id="ul0013" list-style="none"><li id="ul0013-0001" num="0066">determining over the graph, a local-field-survey for each variable which is a probability law of all possible local-field by computing for each variable S from all the cavity-bias-surveys received by said variable and for each possible state of said variable the joint probability of each admissible local-filed, an admissible local-field being one with at least one zero value,</li><li id="ul0013-0002" num="0067">and, with the previously determined local-field-surveys:</li><li id="ul0013-0003" num="0068">determining the degree of polarization of each variable by computing, for each assignment of the variable, the probability of having zero value as given by the local-field-survey, and computing for each assignment of the variable, the maximum of this probability diminished by the sum of the probabilities for all other assignments</li><li id="ul0013-0004" num="0069">the variable with the largest degree of polarization is assigned to its preferred state, the one with the largest probability of having zero value as given by the local-field-survey,</li><li id="ul0013-0005" num="0070">the constraints containing this assigned variable are reduced, those which are satisfied are eliminated, in order to make a simpler new problem,</li><li id="ul0013-0006" num="0071">(c) for iteration:</li><li id="ul0013-0007" num="0072">restating survey propagation steps (a) with the new problem till all variables are assigned or are unpolarized, meaning that, for all the possible assignments of the variable, the probabilities of having zero value as given by the local-field-survey, diminished by the sum of the probabilities of having zero value as given by the local-field-survey for all other assignments, are equal within a predetermined resolution,</li></ul></li><li id="ul0009-0003" num="0073">the device has means allowing that, in case the determination of the cavity-field-surveys is not possible, none of the possible configuration of the cavity-field having a void, a penalty function is used for selecting the admissible configurations and that same penalty function is used for the determination of the local-field-surveys,</li><li id="ul0009-0004" num="0074">the penalty function is an exponential of the type w=exp(−yh) where y is the amount of penalty and h the minimum of the values of the cavity-field for all possible states of the variable,</li><li id="ul0009-0005" num="0075">the device has means allowing that, in case the survey propagation steps updates are stopped and restarted because it is not possible to find a set of cavity-bias-surveys which does not change, the penalty amount y is reduced,</li><li id="ul0009-0006" num="0076">the device has means to choose at random the constraint and the variable to update over the graph,</li><li id="ul0009-0007" num="0077">the device has means to choose sequentially within a randomized list of the constraints and variables, the constraint and the variable to update over the graph,</li><li id="ul0009-0008" num="0078">the device has means to choose by constraints the constraint and the variable to update over the graph, all the steps being done for all variables related to said constraint before choosing another constraint.</li></ul>
0079The invention is also about a manufactured article which is a calculator readable media, notably a readable disk, and which bears calculator instructions intended to operate the previous device or a calculator according to the previous process. The media is either a disk (floppy, optical, or other re-movable disk) or (a) solid state memory circuit(s) (IC card), or even a data link on which the program for the invention is physically carried into the calculator.
0080It has to be noted that the word calculator in the sense of the invention relates to any calculation device, either programmable such as a computer, as preferred, or wired such as a dedicated integrated circuit, which is intended to resolve a problem according to the invention and which is expressed as relations between constrained variables. As preferred device, a computer is used as it provides flexibility for the calculations and user interface, either for data entry or data output and, for example, by graphical display. Moreover it can be programmed to also provide a visual, preferably graphical, display of intermediate results over the time (iterations) for the whole problem or for some of the variables (and constraints).
0081The main applications of the invention are real-world problems whose can be formulated as Generic Constraint Satisfaction Problems.
0082Examples of such applications are graph coloring or Boolean satisfiability whereas concrete real-world problems can be found in planning tasks in robot control, factoring large integers in cryptography, formal verification of microprocessors, time tabling and scheduling (scheduling multiple variable speed machines, sports scheduling), register allocation, circuit design and testing (e.g. circuit fault analysis, constrained encoding in VLSI design, asynchronous circuit design), pattern recognition, communication and network problems (e.g. channel assignment in cellular communication networks, decoding in low density parity check codes, topological design, network decomposition, flows, reliability, blocking, and multistage switching networks . . . ), bio-informatics (e.g. gene regulatory networks analysis), inference and machine learning (artificial neural networks) . . . .
0083The invention will now be described in relation to the following Figures.
0084<figref idref="DRAWINGS">FIG. 1</figref> is a calculator of the computer type with representation of internal problem, related graph and program,
0085<figref idref="DRAWINGS">FIG. 2</figref> is a partial graph with, at center, a function node for a constraint represented as a square linked by edges to three variable nodes for variables represented as circles, two cavity fields and a cavity bias are represented as groups of boxes,
0086<figref idref="DRAWINGS">FIG. 3</figref><i>a </i>is a graph representing a simple coloring constraint satisfaction problems,
0087<figref idref="DRAWINGS">FIG. 3</figref><i>b </i>is a graph representing a simple satisfiability problem,
0088<figref idref="DRAWINGS">FIG. 4</figref> is a partial graph with, at center, a variable node for a variable represented as a circle linked by edges to three function nodes for constraints represented as a squares, a local field and three cavity biases are represented as groups of boxes,
0089<figref idref="DRAWINGS">FIG. 5</figref> is a partial graph with four variables and eight constraints,
0090<figref idref="DRAWINGS">FIG. 6</figref> is a flowchart of the method of resolution in accordance with the present invention,
0091<figref idref="DRAWINGS">FIG. 7</figref><i>a </i>is a partial graph with, at center, a variable node for a variable represented as a circle linked by edges to three function nodes for constraints represented as a squares,
0092<figref idref="DRAWINGS">FIG. 7</figref><i>b </i>is the cavity-bias-surveys arriving onto the variable node from two of the constraints for the partial graph of <figref idref="DRAWINGS">FIG. 7</figref><i>a, </i>
0093<figref idref="DRAWINGS">FIG. 7</figref><i>c </i>is the corresponding cavity-field-survey set from the variable node to the third constraint, computed with a general penalty function for the partial graph of <figref idref="DRAWINGS">FIG. 7</figref><i>a. </i>
0094In addition, an Appendix is include at the end of the description with tables giving a detailed implementation of the procedure for a satisfiability problem with 20 variables and 100 constraints.
0095The invention is now being described in relation to a problem which is first modeled as an interaction graph between discrete variables represented as variables nodes (VN) to which constraints represented as functions nodes (FN) are linked. The discrete variables are variables that take values in a finite number of possible states. Each constraint that appears in the complete graph characterizing the given problem involves a certain number of variables. The graph can be represented as a graphical object, for example on a screen, or it can be represented as one or more structured lists of data in a computer memory and this is preferably in this last form, list(s), that the problem is modeled for the execution of the problem resolution procedure in a computer. In any case, the list(s) or the graph are two equivalent ways of modeling the problem and the list(s) is/are preferably chosen for the representation of the problem because, in a calculator such as a computer, the programs can handle more easily data objects such as structured list(s) than graphical objects. In the following description, list(s) and graph will be used equivalently but referring to graph for the explanations in relation to the Figures.
0096The process of the invention is intended to be executed in a calculator which is represented on <figref idref="DRAWINGS">FIG. 1</figref> as a computer <b>4</b> having programmable processing means such as a microprocessor, memories for data and program, input and output channels to related devices such as a keyboard, mouse, disk storage, and a display . . . . The calculator is functioning according to a program which is stored in its memory and which has been represented as instructions in box <b>3</b> on the right of <figref idref="DRAWINGS">FIG. 1</figref>. This program may have been introduced in the calculator thanks to a readable media represented as a floppy disk <b>5</b> in <figref idref="DRAWINGS">FIG. 1</figref>. Other type of readable media may be used to carry (bear) the instructions of the program controlling the calculator. A problem has been introduced in the calculator as represented in box <b>1</b> on the right, in this example, by a map of the western part of Europe for the determination of colors to use between countries. The problem has been modeled with constrained discrete variables in the form of a graph (lists of data in the memory of the calculator) in box <b>2</b>. The program being executed, results are displayed on the display output device as a list of colors to use for each country.
0097The procedure core of the invention is made of two steps which are iteratively repeated on the graph/list(s) which has initially been built for the modelisation of the problem. The first step, called the Survey propagation (SP), determines two sets of functions, called the cavity-bias surveys and the cavity-field surveys (collectively denominated thereafter as ‘surveys’), one for each appearance of a variable in a constraint, which provide some information of probabilistic nature on the favored state of the corresponding variable. The determination of these surveys is done through a message passing procedure. Once the surveys are found, various strategies can be used to find a satisfiable configuration. The Survey propagation is then followed by a second step, called the survey induced decimation (SID), in which the surveys are used to determine which variables must be fixed, and to what values. Once these variables are fixed, one can eliminate the related constraints which are automatically satisfied and then reduce the other constraints to the subspace imposed by the fixed variables. This results in a new structured list (or graph) and the steps SP and SID are then run again on this new structured list, and this two steps process is iterated, eliminating each time a subset of the variables, until all the variables are fixed or they turn out to be under-constraint.
0098After some definitions, the Survey propagation (SP) procedure steps will be explained and then the survey induced decimation (SID) procedure steps. One should note that SP is the main part of the invention and that it is possible to find many alternatives ways than the one described here, of exploiting the information, practically the list, which it gives: the SID given here is just an example of exploitation of the list. As already mentioned, the Survey propagation step is a message passing process, where the various variables and constraints exchange some message along the interaction graph. The related messages, which are exchanged along the interaction graph, are called Surveys (S) and are functions, more precisely probability distributions, built from some elementary messages.
0099The interaction graph, then the elementary messages and local-fields, then the Surveys are now defined before the message passing procedure of the Survey propagation step. <ul id="ul0014" list-style="none"><li id="ul0014-0001" num="0100">The Interaction Graph:</li></ul>
0101Each variable and each constraint is represented by a vertex on a graph. On <figref idref="DRAWINGS">FIG. 2</figref>, variables are represented by circles called variables nodes (vn) and constraints by squares called function nodes (fn). A variable and its related constraint are connected by an edge whenever the variable is involved in that constraint. This is a bipartite graph: a variable is connected only to constraints, a constraint is connected only to variables. A constraint has the structure of a truth table giving all the assignments of the variables which satisfy the constraints.
0102<figref idref="DRAWINGS">FIG. 2</figref><i>a </i>gives the interaction graph for a simple problem of graph coloring with four nodes. Each constraint connects exactly two variables. If the variables can take three colors, blue red and green, the truth table is the same for each constraint. For a constraint connecting variables x and y, the truth table is (Yes means that the constraint is satisfied):
0103<tables id="TABLE-US-00001" num="00001"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="offset" colwidth="28pt" align="left" /><colspec colname="1" colwidth="63pt" align="left" /><colspec colname="2" colwidth="63pt" align="left" /><colspec colname="3" colwidth="63pt" align="left" /><thead><row><entry /><entry namest="offset" nameend="3" align="center" rowsep="1" /></row><row><entry /><entry>Variable x</entry><entry>Variable y</entry><entry>Constraint</entry></row><row><entry /><entry namest="offset" nameend="3" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry /><entry>Blue</entry><entry>blue</entry><entry>No</entry></row><row><entry /><entry>Blue</entry><entry>Red</entry><entry>Yes</entry></row><row><entry /><entry>Blue</entry><entry>Green</entry><entry>Yes</entry></row><row><entry /><entry>Red</entry><entry>Blue</entry><entry>Yes</entry></row><row><entry /><entry>Red</entry><entry>Red</entry><entry>No</entry></row><row><entry /><entry>Red</entry><entry>Green</entry><entry>Yes</entry></row><row><entry /><entry>Green</entry><entry>Blue</entry><entry>Yes</entry></row><row><entry /><entry>Green</entry><entry>Red</entry><entry>Yes</entry></row><row><entry /><entry>Green</entry><entry>Green</entry><entry>No</entry></row><row><entry /><entry namest="offset" nameend="3" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
0104<figref idref="DRAWINGS">FIG. 3</figref><i>b </i>gives the interaction graph for the problem of satisfiability with three variables x,y,z and five constraints mentioned before (The constraints are: 1) x.or.(not y); 2) (not x).or.z; 3) (not y).or.(not z); 4) y.or.(not z); 5) x.or.y.or.(not z).).
0105The truth table for constraint 1) is:
0106<tables id="TABLE-US-00002" num="00002"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="offset" colwidth="28pt" align="left" /><colspec colname="1" colwidth="63pt" align="left" /><colspec colname="2" colwidth="63pt" align="left" /><colspec colname="3" colwidth="63pt" align="left" /><thead><row><entry /><entry namest="offset" nameend="3" align="center" rowsep="1" /></row><row><entry /><entry>Variable x</entry><entry>Variable y</entry><entry>Constraint</entry></row><row><entry /><entry namest="offset" nameend="3" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry /><entry>True</entry><entry>True</entry><entry>Yes</entry></row><row><entry /><entry>True</entry><entry>False</entry><entry>Yes</entry></row><row><entry /><entry>False</entry><entry>True</entry><entry>No</entry></row><row><entry /><entry>False</entry><entry>False</entry><entry>Yes</entry></row><row><entry /><entry namest="offset" nameend="3" align="center" rowsep="1" /></row></tbody></tgroup></table></tables><br /> The Elementary Messages Sent Along the Edges of the Graph:
0107Firstly, a cavity-bias (cb) is an elementary message which a given variable receives from one of the constraints to which it is connected. For a variable which can be in q possible states, this message is made of q binary sub-messages represented on <figref idref="DRAWINGS">FIG. 2</figref> as q boxes, each of which can be either ‘void’ or ‘warning’. For a box related to a possible value of the variable, void is an empty sub-message, represented on <figref idref="DRAWINGS">FIG. 2</figref> as an empty box. The warning sub-message related to a possible value s of the variable in a cavity-bias is represented on <figref idref="DRAWINGS">FIG. 2</figref> as a cross and it means that, according to the constraint sending the message, “it is dangerous for the variable to be in the state s”. As a consequence, the meaning of a completely void message, in other words with all sub-messages voids, is that the constraint is posing no warning on the variable. A warning is thus carrying negative information in that the variable is better not in the related state. In fact, if a constraint was for a variable to be in a specific state, it would be converted to a warning for all the other possible states of the variable and a void for that specific state. This also means that the problem can be treated in reverse. The computation of cavity-bias will be dealt with at the end of the local-field definition part.
0108Secondly, a cavity-field (cf) is an elementary message that a given variable sends to one of the constraints to which it is connected. For a variable which can be in q possible states, this message has q sub-messages represented on <figref idref="DRAWINGS">FIG. 2</figref> as q boxes, each of which being an integer giving the number of warnings received in the corresponding box of the cavity-biases coming to the variable from all the other constraints to which it is connected. As a consequence, the meaning of a completely null message, in other words with all sub-messages nulls, is that the variable does not receive any warning.
0109The cavity-bias computation is now dealt with. In order to determine the presence of a warning or not in the cavity-bias sent from one constraint (called a) to one variable (called S) to which it is connected, the constraint considers all the cavity-fields which it receives from all the other variables to which it is connected. In each such cavity-field, it determines the “least-penalized subspace” which is the set of boxes where the number of warnings (or more generally non void) is minimum. The truth table of the constraint a, which is built, is restricted to the values of variables belonging respectively to their least-penalized subspace. For a given value of S, if there is at least one entry of this restricted truth table where the constraint is satisfied, the corresponding box of the cavity-bias a→S is void. Otherwise, the corresponding box has a warning.
0000The Surveys:
0110Firstly, a cavity-bias-survey is considered. The cavity-bias sent from one constraint to one of the variables connected to it has q boxes (considering a variable which can be in q states), each of them can be in two states, either void or warning. Therefore the cavity-bias has 2<sup>q </sup>possible states. The corresponding cavity-bias-survey is a probability law on this space, giving the probability of each possible configuration of the warnings. Practically, it is given by 2<sup>q </sup>positive real numbers, the sum of which is equal to 1. The computation of cavity-bias-survey will be dealt with at the end of this Surveys definition part.
0111Secondly, a cavity-field-survey is considered. The cavity-field sent from one variable to one of the constraints to which it is connected has q boxes (considering a variable which can be in q states), each of them is an integer. The cavity-field-survey is a probability law on this space of possible elementary messages.
0112For instance, considering the coloring problem of <figref idref="DRAWINGS">FIG. 3</figref><i>a </i>with three colors, blue, red and green. A cavity-field sent from the variable z to the constraint b consists of three boxes (one for each color). In each such box, it contains the number of warnings which are received by variable z from the constraints c and d. This number can be either 0, 1 or 2 (For instance if the cavity bias sent from c to z is a warning not to be green, and the warning sent from d to z is a warning not to be blue, the cavity-field sent from z to b contains a one in the blue box, a zero in the red box, and a one in the green box). The cavity-field from z to b is determined from two cavity-biases (c to z and d to z); each cavity-bias contains at most one warning (because of the nature of the coloring problem; therefore the sum of the integers in each of the three boxes of the cavity-field sent from z to is less or equal to 2: the possible cavity-fields from z to b are (0,0,0), (1,0,0), (0,1,0), (0,0,1), (2,0,0), (0,2,0), (0,0,2), (1,1,0), (1,0,1), (0,1,1), where the first number is the number of warnings in the blue box, the second is the number of warnings in the red box, and the third number is the number of warnings in the green box. The cavity-field survey sent from z to b is the probability of each one of these ten cavity-fields: it is given by ten real numbers in [0,1], the sum of which is equal to one.
0000The Survey Propagation:
0113The computation of cavity-field-surveys is now dealt with. The cavity-field-survey sent from one variable to one of the constraints to which it is connected is computed as follows: the variable considers all the cavity-bias-surveys it receives from all the other constraints to which it is connected. It deduces the joint probability of the total number of warnings received from these constraints in each box (that is for each possible value of the variable). This probability is then projected onto the subspace of admissible cavity-fields where at least one of the boxes has zero warnings. For instance consider again the coloring problem of <figref idref="DRAWINGS">FIG. 3</figref><i>a</i>: let us compute the cavity-field-survey sent from variable y to constraint c. Variable y considers the three inputs which are the cavity-bias-surveys from constraints a, e and g to y. Each of these cavity-bias-surveys is a probability law on the set of four possible cavity biases: void (V), a warning in the blue box (B), a warning in the red box (R), a warning in the green box (G). For instance the cavity-bias-survey from a to y is given by the four positive numbers (a_V, a_B, a_R, a_G), where a_V is the probability of the void message, a_B is the probability of the warning in the blue box, etc . . . , and a_V+a_B+a_R+a_G=1. Similarly, denote by (g_V, g_B, g_R, g_G) the cavity-bias-survey from g to y, and by (e_V, e_B, e_R, e_G) the cavity-bias-survey from e to y. Possible cavity-fields from y to c consist of messages of the type (n<sub>—</sub>1,n<sub>—</sub>2,n<sub>—</sub>3), where n<sub>—</sub>1 is the number of warnings received by y (from constraints a,e,g) in the blue box, n<sub>—</sub>2 is the number of warnings received by y (from constraints a,e,g) in the red box, n<sub>—</sub>3 is the number of warnings received by y (from constraints a,e,g) in the green box, and the sum n<sub>—</sub>1+n<sub>—</sub>2+n<sub>—</sub>3 is smaller or equal to three. If we would accept all messages, the probability of the cavity-field (1,1,0) would be equal to (a_B*g_R+a_B*e_R+g_B*e_R+g_B*a_R+e_B*g_R+e_B*a_R) and the probability of the cavity-field (1,1,1) would be equal to P<sub>—</sub>111=(a_B*g_R*e_G+a_B*e_R*g_G+g_B*a_R*e_G+g_B*e_R*a_G+e_B*a_R*g_G+e_B*g_R*a_G). However, as we seek a satisfiable assignment of variables, the cavity-field (1,1,1) is forbidden. In this simple case, this is the only forbidden cavity-field. The cavity-field-survey gives the relative probability of each allowed cavity-field. For instance the probability of the cavity-field (1,1,0) is (a_B*g_R+a_B*e_R+g B*e_R+g B*a_R+e_B*g_R+e_B*a_R)/(1−p<sub>—</sub>111).
0114The computation of cavity-bias-surveys is now dealt with. The cavity-bias-survey sent from one constraint to one of the variables connected to it is computed as follows: the constraint considers all the cavity-field-surveys it receives from all the other variables connected to it. It deduces the total joint probability for the outgoing cavity-bias as follows: for a given assignment of the variable, the constraint computes, using the incoming cavity-field-surveys and the truth table, the probability that the constraint is unsatisfied. This gives the value of the cavity-bias-survey in the box corresponding to this assignment.
0115The message passing procedure.
0116The procedure follows the cavity-bias-surveys going from each of the constraints to each of the variables connected to it. It initializes the cavity-biases to random values. The updating scheme along the graph for the survey propagation, can take several forms of updates. A simple one is to choose at random a constraint, say constraint c, choose at random a variable which is connected to it, say variable v, and update the cavity-bias-survey going from the constraint c to the variable v. This update uses the previous rules of computation as follows: one first computes all the cavity-field-biases sent to c from variables which are connected to c but distinct from v (these can be computed from the knowledge of all cavity-bias-surveys using the above rules for computing cavity-field-surveys); one then computes the cavity-bias-survey from c to v using these cavity-field-surveys and the truth table for c. Other possible updating schemes involve in particular the sequential updating of all the cavity-bias-surveys corresponding to one given constraint and they can turn out to be more efficient in practice.
0117In other words, the constraints and the variables may be chosen at random per se, that is a same constrain and/or variable may be chosen more than once by the randomized selection, or they may be chosen at random within a list, that is, for example, sequentially within a randomized list.
0118The procedure usually converges when there exits an assignment of the variables satisfying all the constraints. During this message passing procedure, the cavity-bias-survey from one constraint to one variable will change many times. Convergence is obtained when the cavity-bias-surveys no longer change. A convergence criterion can be fixed by choosing a small number epsilon, and deciding that the message passing procedure has converged when all the probabilities appearing in all cavity-bias-surveys change by less than epsilon when one performs N cavity-bias-surveys (N is the number of variables). In practice a value of epsilon about one percent is enough, one can use larger values when the problems are not too difficult to solve for a faster convergence.
0119In the case in which the convergence is not reached after a certain number of updates, it can be restarted from another initial condition, or it can be restarted using a penalty function which will be described below.
0120The previous computations are done on the graph in order to determine all the cavity-bias-surveys (from which one easily gets all the cavity-field-surveys) and this corresponds to the Survey propagation procedure steps. When these are known it is possible to execute the survey induced decimation procedure steps which selects, for a well chosen variable x, a specific assignment. Once this assignment has been done, the corresponding variable is eliminated, the constraints which contained this variable are reduced (their truth table are reevaluated, depending only on the assignments of the other variables, when x has been assigned). Some constraints may be automatically satisfied. This gives a simplified problem and a new simplified graph. It is then possible to use this new simplified graph to start again the whole process (the survey propagation procedure and the n the survey induced decimation procedure) which can be repeated iteratively.
0121We now explain in more details the survey decimation procedure. We first define local-field and local-field-surveys, and then explain how to use them in order to choose a variable and the value to which it must be assigned.
0122The definition and computation of local-field-survey are now dealt with.
0123When the survey propagation procedure has converged, one obtains a set of cavity-bias-surveys (one for every edge connecting a constraint to a variable). These are used to compute local-field-surveys. A local-field (If) on one of the variables, which can be in q possible states, has q boxes. Each box of the local-field holds an integer giving the number of warnings received in the corresponding boxes in the cavity-biases coming to the variable from all the constraints to which it is connected as represented on <figref idref="DRAWINGS">FIG. 4</figref>. The local-field-survey is a probability law on this space of possible local-fields. The variable considers all the cavity-bias-surveys it receives from all the constraints to which it is connected. It deduces the joint probability of the total number of warnings received from these constraints in each box (that is for each possible assignment of the variable). This probability is then projected onto the space of admissible fields, where at least one of the boxes has zero warnings.
0124We are now explaining this part of the process with an example for the simple satisfiability problem of <figref idref="DRAWINGS">FIG. 3</figref><i>b</i>. We have three variables, x, y, z, and five constraints: 1) x.or.(not y); 2) (not x).or.z; 3) (not y).or.(not z); 4) y.or.(not z); 5) x.or.y.or.(not z). The cavity-bias-surveys obtained for this problem are:
0125From constraint 1 to variable x: probability is one of no warning.
0126From constraint 1 to variable y: probability is one of warning: “y should not be assigned to true”
0127From constraint 2 to variable y: probability is one of no warning.
0128From constraint 2 to variable z: probability is one of no warning.
0129From constraint 3 to variable x: probability is one of warning: “x should not be assigned to true”.
0130From constraint 3 to variable z: probability is one of no warning.
0131From constraint 4 to variable y: probability is one of no warning.
0132From constraint 4 to variable z: probability is one of warning: “z should not be assigned to true”.
0133From constraint 5 to variable x: probability is one of no warning.
0134From constraint 5 to variable y: probability is one of no warning.
0135From constraint 5 to variable z: probability is one of warning: “z should not be assigned to true”.
0136(Because this is a very simple problem, all probabilities turn out to be zero or one). Let us deduce the cavity-field-surveys. On variable x, the cavity cavity-field-survey is: “probability one for a local-field (1,0) (where (n<sub>—</sub>1,n<sub>—</sub>2) means n<sub>—</sub>1 warnings for x being assigned as TRUE, n<sub>—</sub>2 warnings for x being assigned as FALSE), probability zero for all other local-fields”. On variable y, the cavity cavity-field-survey is: “probability one for a local-field (1,0), probability zero for all other local-fields”. On variable z, the cavity cavity-field-survey is: “probability one for a local-field (2,0), probability zero for all other local-fields”.
0137The choice of the variable and of the value to which it is assigned is now dealt with.
0138The local-field-survey gives a probability law for the warnings encountered by this variable when it is assigned a given value. A variable is said to be polarized if it has a larger probability of having zero warnings when it is in one given state than when it is in all the other states. It is possible to use several criteria to define a degree of polarization quantitatively. One of them is the following: for a variable which can be assigned q possible values, the total probabilities found in the local-field-survey for having zero warning when the variable is assigned each of its possible values is calculated. For an assignment X_i=x, this probability is denoted by p_x. It is then possible to define the degree of polarization of the variable as the maximum over x of the numbers (p_x-(sum over all assignments y different from x of p_y)). The variable is said to be unpolarized if all these numbers (for all possible assignments x) are equal (within a given resolution). Other variants are possible.
0139This degree of polarization, known for every variable, can be used to identify some favorable variables for operating the survey induced decimation (SID) procedure part of the invention.
0140It is possible to pick up the variable with the largest degree of polarization (or one of them randomly if several of them have the same largest degree), or to pick up at random one of the variables in the best n percent of variables, as measured from the degree of polarization. It is also possible to fix simultaneously several variables. These variants of the procedure depend on ho difficult the problem is: in relatively easy problems, it is faster to fix a certain fraction of the variables at each iteration of the survey inspired decimation, while in more difficult problems one should fix one variable at a time. The variables are assigned to their preferred value (the one giving the largest probability of having zero warning). Once the strongly polarized variables have been assigned a value, the truth tables of all the constraints to which they are connected are restricted. Some of the constraints may disappear in this process. This way, a new problem with fewer variables, on which the Survey Propagation procedure can be started again, is obtained.
0141This procedure is now explained in the case of the satisfiability problem of <figref idref="DRAWINGS">FIG. 3</figref><i>b</i>. The cavity-field-surveys show that the degree of polarization of all the three variables are equal. For instance variable z is fixed to FALSE. Then the constraints 3, 4, 5 are automatically satisfied (for instance constraint 3: “(not y).or.(not z)” holds if z is FALSE whatever is the value of y), and they disappear. Constraint 1 is unchanged, constraint 2 becomes “(not x)” and imposes to assign it to FALSE. Then constraint 1 imposes to assign y to FALSE: the assignment is x=FALSE, y=FALSE, z=FALSE.
0142The procedure of reducing the truth table must be performed iteratively until there is no constraint allowing to assign one variable for sure. In the previous example, the assignment is immediately obtained.
0143The whole process (survey propagation+fixing most polarized variables) is then iterated. It ends when, either all variables have been fixed, or all variables are unpolarized. In this last case the problem is almost always easily solved by simple local search procedures.
0144With <figref idref="DRAWINGS">FIG. 5</figref>, a concrete application of the update of cavity-bias-survey procedure part of the invention is detailed. The problem has been modelised as a graph and we are now considering a part of this graph with <figref idref="DRAWINGS">FIG. 5</figref> on which the sub-graph involving the constraints a, b, c, d, e, f, g, h, represented as squares, and the variables S<sub>1</sub>, S<sub>2</sub>, S<sub>3</sub>, S<sub>4</sub>, represented as circles, and the elementary messages which are passed along it represented as set of boxes. Notice that, on each edge connecting a variable node and a function node, the number of boxes, which the elementary message contains, is equal to the number of possible states of the variable. Here, the variables S<sub>1</sub>, S<sub>2</sub>, S<sub>3</sub>, S<sub>4 </sub>can be respectively in 3, 2, 4, 2 states.
0145As concerns the elementary messages, the cavity-bias sent from constraint a to variable S<sub>4 </sub>is computed. The constraint a looks at all the neighboring variables different from S<sub>4</sub>, which are S<sub>1</sub>, S<sub>2</sub>, S<sub>3</sub>. For each of them it must determine the cavity-field.
0146For the cavity-field sent from S<sub>1 </sub>to a, the variable S<sub>1 </sub>has three possible states. The variable S<sub>1 </sub>looks at the other constraints to which it is connected (b and c) and it sums all the cavity-biases received from those. In its first state (possible value), it receives a warning (more generally a non void) from c (first box with a cross). The cavity-field S<sub>1</sub>→a in the first box is thus equal to 1 and in the second box it equals 0 and in the third box it equals 0. The least penalized subspace for the cavity-field S<sub>1</sub>→a is the subspace S<sub>1</sub>ε{2,3}.
0147It is proceeded similarly with the cavity-field sent from S<sub>2 </sub>to a. For the cavity-field sent from S<sub>2 </sub>to a, the variable S<sub>2 </sub>has two possible states. The variable S<sub>2 </sub>looks at the other constraints to which it is connected (d and e) and it sums all the cavity-biases received from those. In its second state (possible value), it receives a warning (more generally a non void) from e (second box with a cross). The cavity-field S<sub>2</sub>→a in the second box is thus equal to 1 and in the first box it equals 0. Here, S<sub>2 </sub>has two possible values and its least penalized subspace is S<sub>2</sub>ε{1}.
0148It is proceeded similarly with the cavity-field sent from S<sub>3 </sub>to a. For the cavity-field sent from S<sub>3 </sub>to a, the variable S<sub>3 </sub>has four possible states. The variable S<sub>3 </sub>looks at the other constraints to which it is connected (f, g and h) and it sums all the cavity-biases received from those. In its first state (possible value), it receives three warning (more generally non voids) from f, g and h (first boxes with crosses). The cavity-field S<sub>3</sub>→a in the first box is thus equal to 3 and, similarly, in the second box it equals 3, in the third box it equals 0 as all constraints are voids for the related possible value of this variable, and lastly, the fourth box equal 2 from the two warnings (more generally non voids) received from f and g. Here, S<sub>3 </sub>has four possible values and its least penalized subspace is S<sub>3</sub>ε{3}.
0149The truth table of the constraint a constrained to values S<sub>1</sub>ε{2,3}, S<sub>2</sub>ε{1}, S<sub>3</sub>ε{3} is now considered. If we suppose that it takes the following form (a value N means that the constraint a is not satisfied, a value Y means that it is satisfied):
0150<tables id="TABLE-US-00003" num="00003"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="6"><colspec colname="offset" colwidth="21pt" align="left" /><colspec colname="1" colwidth="56pt" align="left" /><colspec colname="2" colwidth="14pt" align="center" /><colspec colname="3" colwidth="56pt" align="center" /><colspec colname="4" colwidth="14pt" align="center" /><colspec colname="5" colwidth="56pt" align="center" /><thead><row><entry /><entry namest="offset" nameend="5" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry /><entry>S<sub>1</sub></entry><entry>2</entry><entry>3</entry><entry>2</entry><entry>3</entry></row><row><entry /><entry>S<sub>2</sub></entry><entry>1</entry><entry>1</entry><entry>1</entry><entry>1</entry></row><row><entry /><entry>S<sub>3</sub></entry><entry>3</entry><entry>3</entry><entry>3</entry><entry>3</entry></row><row><entry /><entry>S<sub>4</sub></entry><entry>1</entry><entry>1</entry><entry>2</entry><entry>2</entry></row><row><entry /><entry>Constraint</entry><entry>N</entry><entry>N</entry><entry>Y</entry><entry>N</entry></row><row><entry /><entry namest="offset" nameend="5" align="center" rowsep="1" /></row></tbody></tgroup></table></tables><br /> If the variable S<sub>4 </sub>takes value <b>1</b>, there is no choice of S<sub>1</sub>ε{2,3}, S<sub>2</sub>ε{1}, S<sub>3</sub>ε{3} able to satisfy the constraint. Therefore the cavity-bias sent from a to S<sub>4 </sub>has a cross, meaning a warning (non void), in its first box. If variable S<sub>4 </sub>takes value <b>2</b>, the choice S<sub>1 </sub>ε{2}, S<sub>2</sub>ε{1}, S<sub>3</sub>ε{3} does satisfy the constraint. Therefore the second box of the cavity-bias sent from a to S<sub>4 </sub>is void.
0151As concerns the surveys, the cavity-bias-survey sent from constraint a to variable S<sub>4 </sub>and also the cavity-field-surveys are computed. The constraint a looks at all the neighboring variables different from S<sub>4</sub>, and which are S<sub>1</sub>, S<sub>2</sub>, S<sub>3</sub>. For each of those variables it must determine the related cavity-field-survey.
0152For instance, considering the case of the cavity-field-survey sent from S<sub>2 </sub>to a, it can be computed from the cavity-bias-surveys sent from d and e to S<sub>2</sub>. Because S<sub>2 </sub>can be in two states, the cavity-bias d→S<sub>2 </sub>can take the four possible forms: (void in box <b>1</b>, void in box <b>2</b>), (warning in box <b>1</b>, void in box <b>2</b>), (void in box <b>1</b>, warning in box <b>2</b>), (warning in box <b>1</b>, warning in box <b>2</b>), which writes as (0,0), (1,0), (0,1), (1,1). The cavity-bias-survey d→S<sub>2 </sub>is a collection of four positive numbers p<sub>(0,0)</sub>, p<sub>(1,0)</sub>, p<sub>(0,1) </sub>and p<sub>(1,1) </sub>whose sum is equal to one and which are the probabilities of each of the possible cavity-bias.
0153Similarly, the cavity-bias-survey e→S<sub>2 </sub>is a collection of four positive numbers q<sub>(0,0)</sub>, q<sub>(1,0)</sub>, q<sub>(0,1) </sub>et q<sub>(1,1) </sub>whose sum is equal to one.
0154The cavity-field sent from S<sub>2 </sub>to a is computed as the sum of warnings sent from d and e to S<sub>2 </sub>in each box and as such it can take nine possible forms which writes as (0,0), (1,0), (0,1), (1,1), (0,2), (2,0), (2,1), (1,2) and (2,2). Among these possible forms, the subset of admissible cavity-fields is the subset where there is at least one box with zero warning and this subset is thus: (0,0), (1,0), (0,1), (0,2), (2,0). As a consequence, the Cavity-field-survey Sent from S<sub>2 </sub>to a is given by five positive numbers: <br />r<sub>(1,0)</sub><sup>(2)</sup>r<sub>(1,0)</sub><sup>(2) </sup>r<sub>(0,1)</sub><sup>(2)</sup>r<sub>(0,2)</sub><sup>(2) </sup>r<sub>(2,0)</sub><sup>(2)</sup><br /> whose sum is equal to one.
0155The cavity-field (0,0) is obtained in the case where both cavity biases from d and e to S<sub>2 </sub>are (0,0). Its probability is thus the joint probability for each related form: p<sub>(0,0)</sub>q<sub>(0,0)</sub>, that is the product of p<sub>(0,0) </sub>and q<sub>(0,0)</sub>. This leads to r<sub>(0,0)</sub><sup>(2)</sup>=Cp<sub>(0,0)</sub>q<sub>(0,0)</sub>, that is the product of C, p<sub>(0,0) </sub>and q<sub>(0,0) </sub>where C is a normalization constant which determination will be explained below.
0156The cavity-field (0,1) is obtained in two cases: the first where the cavity-bias from d to S<sub>2 </sub>is (0,0) and the cavity bias from e to S<sub>2 </sub>is (0,1); the second where cavity-bias from d to S<sub>2 </sub>is (0,1) and the cavity bias from e to S<sub>2 </sub>is (0,0). Therefore r<sub>(0,0)</sub><sup>(2)</sup>=C(p<sub>(0,0)</sub>q<sub>(0,1)</sub>+p<sub>(0,1)</sub>q<sub>(0,0)</sub>) that is the sum of each joint probability.
0157The cavity-field (1,0) is obtained in two cases: the first where the cavity-bias from d to S<sub>2 </sub>is (0,0) and the cavity bias from e to S<sub>2 </sub>is (1,0); the second where cavity-bias from d to S<sub>2 </sub>is (1,0) and the cavity bias from e to S<sub>2 </sub>is (0,0). Therefore r<sub>(1,0)</sub><sup>(2)</sup>=C(p<sub>(0,0)</sub>q<sub>(1,0)</sub>+p<sub>(1,0)</sub>q<sub>(0,0)</sub>) that is the sum of each joint probability.
0158The cavity-field (0,2) is obtained in the case where the cavity-bias from d to S<sub>2 </sub>is (0,1) and the cavity bias from e to S<sub>2 </sub>is (0,1). Its probability is thus the joint probability for each related form: p<sub>(0,1)</sub>q<sub>(0,1)</sub>, that is the product of p<sub>(0,1) </sub>and q<sub>(0,1)</sub>. This leads to r<sub>(0,2)</sub><sup>(2)</sup>=Cp<sub>(0,1)</sub>q<sub>(0,1)</sub>, that is the product of C, p<sub>(0,1) </sub>and q<sub>(0,1)</sub>.
0159The cavity-field (2,0) is obtained in the case where the cavity-bias from d to S<sub>2 </sub>is (1,0) and the cavity bias from e to S<sub>2 </sub>is (1,0). Its probability is thus the joint probability for each related form: p<sub>(1,0)</sub>q<sub>(1,0)</sub>, that is the product of p<sub>(1,0) </sub>and q<sub>(1,0)</sub>. This leads to r<sub>(2,0)</sub><sup>(2)</sup>=Cp<sub>(1,0)</sub>q<sub>(1,0)</sub>, that is the product of C, p<sub>(1,0) </sub>and q<sub>(1,0)</sub>.
0160Then, we have the full cavity field in its admissible subset: <br />r<sub>(0,0)</sub><sup>(2)</sup>=Cp<sub>(0,0)</sub>q<sub>(0,0)</sub><br /><i>r</i><sub>(0,1)</sub><sup>(2)</sup><i>=C</i>(<i>p</i><sub>(0,0)</sub><i>q</i><sub>(0,1)</sub><i>+p</i><sub>(1,0)</sub><i>q</i><sub>(0,0)</sub>)<br /><i>r</i><sub>(1,0)</sub><sup>(2)</sup><i>=C</i>(<i>p</i><sub>(0,0)</sub><i>q</i><sub>(1,0)</sub><i>+p</i><sub>(1,0)</sub><i>q</i><sub>(0,0)</sub>)<br />r<sub>(0,2)</sub><sup>(2)</sup>=Cp<sub>(0,1)</sub>q<sub>(0,1)</sub><br />r<sub>(2,0)</sub><sup>(2)</sup>=Cp<sub>(1,0)</sub>q<sub>(1,0)</sub><br /> where C is computed such that r<sub>0,0)</sub><sup>(2)</sup>+r<sub>(1,0)</sub><sup>(2)</sup>+r<sub>(0,1)</sub><sup>(2)</sup>+r<sub>(0,2)</sub><sup>(2)</sup>+r<sub>(2,0)</sub><sup>(2)</sup>=1.
0161The cavity-field-survey send from S<sub>1 </sub>to a can be computed in a similar way as S<sub>2 </sub>to a, but this time we have more possible forms because S<sub>1 </sub>can be in three states. These possible forms are referred for the following explanation as (m<sub>1</sub>,m<sub>2</sub>,m<sub>3</sub>) where m<sub>1</sub>,m<sub>2</sub>,m<sub>3</sub>ε{0,1,2}. Among these possible forms, the subset of admissible cavity-fields is the subset where there is at least one box with zero warning and this subset is thus defined as having forms where m<sub>1</sub>m<sub>2</sub>m<sub>3</sub>=0, that is the product is zero. The full cavity field in its admissible subset, which is not detailed in full here but is obtained in a similar way as above, is defined as a set of numbers r<sub>(m1,m2,m3)</sub><sup>(1) </sup>where m<sub>1</sub>,m<sub>2</sub>,m<sub>3</sub>ε{0, 1, 2} and m<sub>1</sub>m<sub>2</sub>m<sub>3</sub>=0.
0162The cavity-field-survey send from S<sub>3 </sub>to a can be computed in a similar way as S<sub>2 </sub>to a, but this time we have more possible forms because S<sub>3 </sub>can be in four states. These possible forms are referred for the following explanation as (m<sub>1</sub>,m<sub>2</sub>,m<sub>3</sub>,m<sub>4</sub>) where m<sub>1</sub>,m<sub>2</sub>,m<sub>3</sub>,m<sub>4</sub>ε{0,1,2,3}. Among these possible forms, the subset of admissible cavity-fields is the subset where there is at least one box with zero warning and this subset is thus defined as having forms where m<sub>1 </sub>m<sub>2 </sub>m<sub>3 </sub>m<sub>4</sub>=0, that is the product is zero. The full cavity field in its admissible subset, which is not detailed in full here but is obtained in a similar way as above, is defined as a set of numbers r<sub>(m1,m2,m3,m4)</sub><sup>(3) </sup>where m<sub>1</sub>,m<sub>2</sub>,m<sub>3</sub>,m<sub>4</sub>ε{0,1,2,3} and m<sub>1</sub>m<sub>2</sub>m<sub>3</sub>m<sub>4</sub>=0.
0163From all the three cavity-field-surveys, the cavity-bias-survey from a to S<sub>4 </sub>is computed as follows. Each configuration of the incoming cavity-fields is characterized by the values (m<sub>1</sub>,m<sub>2</sub>,m<sub>3</sub>) for the cavity-field S<sub>1</sub>→a, (m<sub>1</sub>′,m<sub>2</sub>′) for the cavity-field S<sub>2</sub>→a, (m<sub>1</sub>″,m<sub>2</sub>″,m<sub>3</sub>″,m<sub>4</sub>″) for the cavity-field S<sub>3</sub>→a. For each possible value of (m<sub>1</sub>,m<sub>2</sub>,m<sub>3</sub>), (m<sub>1</sub>′,m<sub>2</sub>′), (m<sub>1</sub>″,m<sub>2</sub>″,m<sub>3</sub>″,m<sub>4</sub>″) and given S<sub>4</sub>=t, one of its possible values, the elementary cavity-bias S<sub>1</sub>→a is computed as described in the section on elementary messages (one first finds the least penalized subspace of each incoming cavity-field, and then finds out from the truth table of constraint a whether there exist an allowed configuration in the least penalized subspace). The answer is either a void or a in the box related to t of the cavity-bias. So given (m<sub>1</sub>,m<sub>2</sub>,m<sub>3</sub>), (m<sub>1</sub>′,m<sub>2</sub>′), (m<sub>1</sub>″,m<sub>2</sub>″,m<sub>3</sub>″,m<sub>4</sub>″), the elementary cavity-bias S<sub>1</sub>→a can be computed. The probability for this cavity-bias gets a contribution r<sub>(m1,m2,m3)</sub><sup>(1) </sup>r<sub>(m1′,m2′)</sub><sup>(2) </sup>r<sub>(m1″,m2″,m3″,m4″)</sub><sup>(3)</sup>. By summing over all configurations of (m<sub>1</sub>,m<sub>2</sub>,m<sub>3</sub>), (m<sub>1</sub>′,m<sub>2</sub>′), (m<sub>1</sub>″,m<sub>2</sub>″,m<sub>3</sub>″,m<sub>4</sub>″) the cavity-bias-survey is computed.
0164In the annex to the description, a detailed example of application of survey propagation and survey-inspired decimation for solving a concrete satisfiability problem with 20 variables and 100 constraints is given with explanations and numerical results of computation. The flow chart of the corresponding procedure is given in <figref idref="DRAWINGS">FIG. 6</figref>.
0165The program which has been used allows selection of functioning parameters such as the way updates along the graph are done, either by lazy convergence or sequentially, or such as the maximum number of iterations until convergence. The main steps of this program are summarized in <figref idref="DRAWINGS">FIG. 6</figref> flow chard in which a penalty function can be used. As input (input box at the top), the convergence criterion (ε) and polarization criterion (ε′) are inputted with the maximum number of iterations cycles (NMAX) and the list of constraints in relation to the variables. During this input step, the penalty amount y for a penalty function is initialized to an infinite value. A next step, second box from the top, is for the preparation of the data which will be processed. During this preparation step, the list of constraints in relation to the variable is read as to built-up a list of edges of the graph and look-up tables of constraints. The next step is for initialization, third box from the top, in which the cavity-bias-surveys are initialized at random and a computation variable for the number of updates cycles, Nupdate, initialized to zero. Then, the survey propagation is processed, survey propagation box, with, for each edge of the graph, updates of the cavity-bias-surveys, increment of Nupdate and the estimation of the maximal difference d between cavity-bias-surveys before and after the current update cycle. After this last step of survey propagation, a first test is done on the number of updates cycles, Nupdate: if Nupdate is greater than NMAX, the maximum number of iteration cycles then y (penalty) is decreased and the program goes back to the initialization step. If this is not the case, a second test is done on the maximal difference d, if the maximal difference is greater than the convergence criterion, the program goes back to the survey propagation step again. If this is not the case, the next step after those two (negative) tests are for choosing a variable to fix in which local-fields-surveys are computed and the degree of polarization B<sub>i </sub>of each variable Bi computed. Then a test is done on the degree of polarization: if all the absolute values of differences are lower the polarization criterion, a local search procedure is initiated after output of lists of assigned variables and remaining constraints. If not, the survey inspired decimation step is started, before last box, in which the variable X<sub>i </sub>with the largest degree of polarization B<sub>i </sub>is assigned, the constraints involving X<sub>i </sub>simplified and the number N<sub>a </sub>of assigned variables computed. A last test is then done in which if all the variables are not assigned, that is Na<N, with N the total number of variables, the program goes back to the survey propagation step. If this is not the case, that is all variables assigned, the results of the assignments of all the variables are outputted.
0166The procedure has been tested on the case of satisfiability of random formulas built from random 3-clauses (the so called random 3-SAT problem), which is a standard benchmark in the field: in each constraint three variables are chosen randomly, for each of them one chooses the literal which is either the variable or its negation, with probability ½, and the constraint is defined as the “or” of the three literals.
0167The difficult region is when there are around 4.2 constraints per variables: in this case, a generic instance of the problem has a solution, but it is very difficult to find it. Problems with up to 10000000 variables can be solved with the invention (survey propagation procedure+survey induced decimation procedure) on a PC (personal computer), while the best traditional method is limited to around 50000 variables. Similar test have been performed on generic hard random K-SAT problems (e.g. K>3, balanced formulas, etc.) and on q-coloring problems. The performance has shown that the invention (SP+SID) outperforms the current state of the art algorithm by several orders of magnitude.
0168The current invention can be implemented in any programmatic language such as, for example C, C++, COBOL, BASIC, or other. Due to the use of messages and lists, the preferred programmatic languages are the ones using objects such as C++.
0169It has to be understood that even if the invention has been described with a problem represented as a graph (list) of variables and constraints, those variables (and thus the related constraints) may be either simple or complex (functions or grouping of simple variables) and a switch from simple to complex (or the reverse) can even been made during the resolution process of the problem. For instance, the procedure which has been described can also be adapted by grouping together some variables into one or more larger effective variables. This is particularly useful in practice if some variables are coupled through many constraints.
0170Even if the invention has been described in order to compute local-field-survey as a probability law of having a penalty for each state of a variable, it is understood that the invention can also be worked in reverse, that is, a local-field-survey as a probability law of having no penalty for each state. Other variations are also possible as now described.
0171The procedure (survey propagation+survey inspired decimation) described so far deals with finding an assignment of the variables which satisfies all constraints. In the case in which there is no such assignment, or in the case in which the procedure does not find it, it is possible to modify and generalize the survey propagation algorithm in such a way as to try to find an assignment of the variables which violates the smallest number of constraints. This generalization is called survey propagation with penalties. It is particularly useful when the update rule of the cavity-bias-surveys in the standard survey propagation cannot be performed. This happens whenever, in the computation of a cavity-field-survey (which is necessary in order to update a cavity-bias-survey), the subspace of admissible cavity-fields (where at least one of the boxes has zero warnings) has zero probability. In such a case one can adapt the algorithm, using a penalty function: the probability is not projected but instead it is multiplied by a penalty term smaller than one, and then normalized.
0172A cavity-field is a set of integers (one for each box corresponding to a possible assignment of the variable). For a given cavity-field, the penalty term is a function of the smallest integer, m, in all these boxes. This function f[m] is equal to one for m=0, it is a decreasing function of m. The usual survey propagation method, described before, corresponds to f[m]=0 for m larger or equal to one. A function which gives good results is f[m]=exp(−ym), where y is a parameter which must be adapted for each problem. The use of the penalty term is as follows: the variable considers all the cavity-bias-surveys it receives from all the other constraints to which it is connected. It deduces the joint probability of the total number of warnings received from these constraints in each box (that is for each possible value of the variable). This probability is then multiplied by the penalty function, and then normalized.
0173For instance consider the computation of the cavity-field-survey by the variable x in <figref idref="DRAWINGS">FIG. 7</figref><i>a</i>. The variable can be in two states. A cavity-bias from a to x (or from b to x) consists of two boxes, where each box can contain a warning or be empty. A cavity-bias-warning is the corresponding probability, which is a list of four positive numbers, the sum of which equals one. These are given in <figref idref="DRAWINGS">FIG. 7</figref><i>b</i>, for the two cavity-bias-surveys from a and b to x. A cavity-field from variable x to constraint c has two boxes, each containing an integer in {0, 1, 2} (corresponding to the number of warnings received from a and b). There are nine cavity-fields, and the cavity-field-survey is a set of nine positive real numbers, the sum of which is one. In order to compute this cavity-field survey, one first computes the probability of each cavity-field, then one multiplies it by the corresponding penalty term. The corresponding numbers are then normalized by a global multiplication by a constant C, so that the sum of all these numbers is one. The result is shown in <figref idref="DRAWINGS">FIG. 7</figref><i>c</i>, where the constant C is equal to C=1/(0.6*0.7*f[1]+0.6*0.3*f[1]+0.4*0.7*f[1]+0.4*0.3*f[2]). In difficult problems in which no satisfiable assignment exist, one can run the standard survey propagation, and if it does not converge after a certain number of iterations, run the modified version with a penalty (in practice, one starts with y=100, which means no penalty, and if survey propagation does not converge one turns to y=6; if the survey propagation with penalty function characterized by y=6 still does not converge, one reduces y until it does converge. In practice, reducing y each time by a factor ⅔ is a good strategy). The computation of local-field-surveys uses exactly the same penalty term as in the cavity-field surveys. This procedure with penalty allows to find some assignments with a low number of violated constraints (although this number is not guaranteed to be the smallest possible one).
APPENDIX
0174In what follows we shall describe in detail the results of the SP algorithm including the decimations steps, over a 3-SAT constraint satisfaction problem composed of 20 variables and 100 clauses. We shall adopt the following notation:
0175CLAUSES: Sat [s_i s_j s_k ]( i j k ) where s_i=1 if variable X<sub>13 </sub>i appears directed in the clause and s_i=0 if X_i appears negated. The same for (b,X_j) and (c,X_k).
0000Example: the clause(X_1 v ˜X_2 v X_3) is written as Sat[1 0 1]( 1 2 3 ).
0176SURVEYS: just like simple warnings or messages are sent from clauses to variable, also Surveys propagate from clauses to variables. From clause “a” to its three variables, say i,j,k, we have three surveys giving the probability of the corresponding cavity biases. Boolean variables can take two values, say 0,1, therefore we will have two probabilities associated to the cavity biases p_0(a->i), p_1(a->i) plus the one corresponding to the null warning (saying that no constraint is enforced). The latter quantity will be never listed in that by normalization it always equals 1-p_0(a->i)-p_1(a->i). We shall adopt the following notation for the Surveys outgoing from clause “a”: Sat[s_i s_j s_k ]( i j k ) }(p_0(a ->i),p_1(a->i)), (p_0(a ->i),p_1(a->i)),(p_0(a ->i),p_1(a->i))}
0177LOCAL FIELDS: local fields give the probability of finding a variable forced to take a given value or to be under-constrained (no warnings received). For each variable X_i we will give the variable index and the triple {Prob[X_i=0],Prob[X_i not forced],Prob[X_i=1]}Example: [1]{0.036401,0.066197,0.897402} means that for variable number 1 we find {Prob[X_1=0]=0.036401,Prob[X_1 not forced]=0.066197,Prob[X<sub>—</sub>1=0.897402}
0178DECIMATION: along the computation variables will be fixed to some value (chosen according to their local field). We shall denote that by an arrow.
0000Example: 1 Sat[1 1 1]{2->1}( 13 ) In clause number 1 (originally SAT[1 1 1]( 1 2 3 )), the second variable has be fixed to “1”. The clause now becomes a two clause depending only variable number 1 and 3.
0179We shall now proceed in giving the complete numerical details of the computation performed by out algorithm in solving a given specific problem.
STEP 0:
0180INITIAL PROBLEM: 20 Boolean variables have to satisfy the following 100 3- clauses: <ul id="ul0015" list-style="none"><li id="ul0015-0001" num="0181">0 Sat[1 1 1]( 14 20 18 )</li><li id="ul0015-0002" num="0182">1 Sat[1 1 1]( 12 15 1 )</li><li id="ul0015-0003" num="0183">2 Sat[0 1 0]( 11 4 7 )</li><li id="ul0015-0004" num="0184">3 Sat[1 1 0]( 6 8 15 )</li><li id="ul0015-0005" num="0185">4 Sat[0 0 0]( 10 5 15 )</li><li id="ul0015-0006" num="0186">5 Sat[0 1 0]( 17 13 4 )</li><li id="ul0015-0007" num="0187">6 Sat[1 1 0]( 1 16 3 )</li><li id="ul0015-0008" num="0188">7 Sat[1 0 0]( 20 1 16 )</li><li id="ul0015-0009" num="0189">8 Sat[1 1 1]( 11 7 4 )</li><li id="ul0015-0010" num="0190">9 Sat[1 0 0]( 7 6 15 )</li><li id="ul0015-0011" num="0191">10 Sat[0 0 1]( 10 12 20 )</li><li id="ul0015-0012" num="0192">11 Sat[1 0 1]( 15 4 11 )</li><li id="ul0015-0013" num="0193">12 Sat[1 0 1]( 18 4 6 )</li><li id="ul0015-0014" num="0194">13 Sat[0 1 0]( 4 3 12 )</li><li id="ul0015-0015" num="0195">14 Sat[1 0 0]( 2 7 16 )</li><li id="ul0015-0016" num="0196">15 Sat[0 0 1]( 3 17 4 )</li><li id="ul0015-0017" num="0197">16 Sat[0 0 0]( 5 19 15 )</li><li id="ul0015-0018" num="0198">17 Sat[1 1 0]( 6 13 7 )</li><li id="ul0015-0019" num="0199">18 Sat[0 0 0]( 4 20 7 )</li><li id="ul0015-0020" num="0200">19 Sat[1 0 0]( 6 17 16 )</li><li id="ul0015-0021" num="0201">20 Sat[1 0 1]( 5 15 13 )</li><li id="ul0015-0022" num="0202">21 Sat[1 1 0]( 13 4 15 )</li><li id="ul0015-0023" num="0203">22 Sat[0 1 1]( 12 5 18 )</li><li id="ul0015-0024" num="0204">23 Sat[1 0 0]( 13 11 2 )</li><li id="ul0015-0025" num="0205">24 Sat[1 0 0]( 7 10 20 )</li><li id="ul0015-0026" num="0206">25 Sat[1 0 1]( 9 1 17 )</li><li id="ul0015-0027" num="0207">26 Sat[1 1 0]( 17 16 1 )</li><li id="ul0015-0028" num="0208">27 Sat[1 1 0]( 16 20 8 )</li><li id="ul0015-0029" num="0209">28 Sat[1 0 1]( 18 1 5 )</li><li id="ul0015-0030" num="0210">29 Sat[0 1 1]( 5 13 4 )</li><li id="ul0015-0031" num="0211">30 Sat[1 1 0]( 6 17 14 )</li><li id="ul0015-0032" num="0212">31 Sat[1 0 1]( 5 10 20 )</li><li id="ul0015-0033" num="0213">32 Sat[1 0 0]( 4 5 20 )</li><li id="ul0015-0034" num="0214">33 Sat[1 1 0]( 11 12 2 )</li><li id="ul0015-0035" num="0215">34 Sat[0 1 0]( 7 6 17 )</li><li id="ul0015-0036" num="0216">35 Sat[1 1 0]( 15 1 19 )</li><li id="ul0015-0037" num="0217">36 Sat[0 0 0]( 11 19 10 )</li><li id="ul0015-0038" num="0218">37 Sat[0 1 1]( 3 8 7 )</li><li id="ul0015-0039" num="0219">38 Sat[1 1 0]( 1 6 19 )</li><li id="ul0015-0040" num="0220">39 Sat[1 1 1]( 6 14 3 )</li><li id="ul0015-0041" num="0221">40 Sat[0 1 0]( 3 12 5 )</li><li id="ul0015-0042" num="0222">41 Sat[1 0 0]( 7 11 14 )</li><li id="ul0015-0043" num="0223">42 Sat[1 1 1]( 4 18 7 )</li><li id="ul0015-0044" num="0224">43 Sat[0 0 1]( 14 11 19 )</li><li id="ul0015-0045" num="0225">44 Sat[0 1 1]( 15 5 6 )</li><li id="ul0015-0046" num="0226">45 Sat[1 0 0]( 3 15 9 )</li><li id="ul0015-0047" num="0227">46 Sat[1 0 0]( 8 5 4 )</li><li id="ul0015-0048" num="0228">47 Sat[0 0 0]( 7 5 3 )</li><li id="ul0015-0049" num="0229">48 Sat[0 0 1]( 15 7 13 )</li><li id="ul0015-0050" num="0230">49 Sat[0 1 1]( 16 5 7 )</li><li id="ul0015-0051" num="0231">50 Sat[1 1 1]( 8 7 10 )</li><li id="ul0015-0052" num="0232">51 Sat[1 1 1]( 6 10 13 )</li><li id="ul0015-0053" num="0233">52 Sat[0 1 1]( 8 15 10 )</li><li id="ul0015-0054" num="0234">53 Sat[1 1 1]( 17 9 18 )</li><li id="ul0015-0055" num="0235">54 Sat[1 0 0]( 19 1 16 )</li><li id="ul0015-0056" num="0236">55 Sat[1 0 1]( 14 5 16 )</li><li id="ul0015-0057" num="0237">56 Sat[1 1 1]( 15 2 14 )</li><li id="ul0015-0058" num="0238">57 Sat[1 1 1]( 4 19 15 )</li><li id="ul0015-0059" num="0239">58 Sat[0 1 0]( 17 18 15 )</li><li id="ul0015-0060" num="0240">59 Sat[0 1 1]( 9 11 1 )</li><li id="ul0015-0061" num="0241">60 Sat[1 1 0]( 6 20 14 )</li><li id="ul0015-0062" num="0242">61 Sat[0 1 1]( 7 5 19 )</li><li id="ul0015-0063" num="0243">62 Sat[0 0 1]( 12 19 16 )</li><li id="ul0015-0064" num="0244">63 Sat[1 0 0]( 19 6 17 )</li><li id="ul0015-0065" num="0245">64 Sat[1 1 0]( 13 11 7 )</li><li id="ul0015-0066" num="0246">65 Sat[0 1 0]( 9 18 1 )</li><li id="ul0015-0067" num="0247">66 Sat[0 0 0]( 17 19 14 )</li><li id="ul0015-0068" num="0248">67 Sat[1 1 1]( 17 9 18 )</li><li id="ul0015-0069" num="0249">68 Sat[1 0 0]( 8 4 18 )</li><li id="ul0015-0070" num="0250">69 Sat[1 0 0]( 14 16 11 )</li><li id="ul0015-0071" num="0251">70 Sat[1 0 1]( 15 19 13 )</li><li id="ul0015-0072" num="0252">71 Sat[0 1 1]( 14 7 8 )</li><li id="ul0015-0073" num="0253">72 Sat[0 0 0]( 5 11 19 )</li><li id="ul0015-0074" num="0254">73 Sat[0 1 1]( 12 13 17 )</li><li id="ul0015-0075" num="0255">74 Sat[0 0 0]( 3 20 7 )</li><li id="ul0015-0076" num="0256">75 Sat[0 1 1]( 4 19 12 )</li><li id="ul0015-0077" num="0257">76 Sat[1 0 0]( 12 1 11 )</li><li id="ul0015-0078" num="0258">77 Sat[1 0 1]( 16 10 2 )</li><li id="ul0015-0079" num="0259">78 Sat[1 1 0]( 13 1 9 )</li><li id="ul0015-0080" num="0260">79 Sat[1 0 0]( 6 10 11 )</li><li id="ul0015-0081" num="0261">80 Sat[1 1 1]( 6 2 16 )</li><li id="ul0015-0082" num="0262">81 Sat[0 1 1]( 10 5 8 )</li><li id="ul0015-0083" num="0263">82 Sat[0 0 0]( 6 16 3 )</li><li id="ul0015-0084" num="0264">83 Sat[0 1 1]( 9 3 1 )</li><li id="ul0015-0085" num="0265">84 Sat[1 1 1]( 17 14 8 )</li><li id="ul0015-0086" num="0266">85 Sat[0 0 0]( 12 15 11 )</li><li id="ul0015-0087" num="0267">86 Sat[0 1 1]( 8 3 18 )</li><li id="ul0015-0088" num="0268">87 Sat[0 0 1]( 15 2 19 )</li><li id="ul0015-0089" num="0269">88 Sat[0 1 1]( 7 19 5 )</li><li id="ul0015-0090" num="0270">89 Sat[1 0 1]( 4 11 10 )</li><li id="ul0015-0091" num="0271">90 Sat[1 0 1]( 17 12 8 )</li><li id="ul0015-0092" num="0272">91 Sat[0 1 1]( 4 8 6 )</li><li id="ul0015-0093" num="0273">92 Sat[1 1 0]( 6 12 3 )</li><li id="ul0015-0094" num="0274">93 Sat[1 0 0]( 16 7 17 )</li><li id="ul0015-0095" num="0275">94 Sat[0 1 1]( 15 13 20 )</li><li id="ul0015-0096" num="0276">95 Sat[1 0 1]( 18 11 16 )</li><li id="ul0015-0097" num="0277">96 Sat[1 1 1]( 8 2 17 )</li><li id="ul0015-0098" num="0278">97 Sat[0 1 0]( 13 11 19 )</li><li id="ul0015-0099" num="0279">98 Sat[0 0 1]( 4 19 9 )</li><li id="ul0015-0100" num="0280">99 Sat[1 0 0]( 15 9 13 ) <br /> Surveys obtained by convergence of SP: </li><li id="ul0015-0101" num="0281">Sat[1 1 1]( 14 20 18 ) {(0.000341,0.000000)(0.000250,0.000000)(0.161406,0.000000)}</li><li id="ul0015-0102" num="0282">Sat[1 1 1]( 12 15 1 ) {(0.366268,0.000000)(0.456078,0.000000)(0.199041,0.000000)}</li><li id="ul0015-0103" num="0283">Sat[0 1 0]( 11 4 7 ) {(0.000000,0.370421)(0.184106,0.000000)(0.000000,0.184764)}</li><li id="ul0015-0104" num="0284">Sat[1 1 0]( 6 8 15 ) {(0.64017,0.000000)(0.181798,0.000000)(0.000000,022080)}</li><li id="ul0015-0105" num="0285">Sat[0 0 0]( 10 5 15 ) {(0.000000,0.617518)(0.000000,0.352673)(0.000000,0.342351)}</li><li id="ul0015-0106" num="0286">Sat[0 1 0]( 17 13 4 ) {(0.000000,0.010877)(0.047850,0.000000)(0.000000,0.003192)}</li><li id="ul0015-0107" num="0287">Sat[1 1 0]( 1 16 3 ) {(0.050351,0.000000)(0.128653,0.000000)(0.000000,0.318466)}</li><li id="ul0015-0108" num="0288">Sat[1 0 0]( 20 1 16 ) {(0.029869,0.000000)(0.000000,0.284175)(0.000000,0.023908)}</li><li id="ul0015-0109" num="0289">Sat[1 1 1]( 11 7 4 ) {(0.491835,0.000000)(0.635059,0.000000)(0.563177,0.000000)}</li><li id="ul0015-0110" num="0290">Sat[1 0 0]( 7 6 15 ) {(0.765622,0.000000)(0.000000,0.662941)(0.000000,0.652725)}</li><li id="ul0015-0111" num="0291">Sat[0 1 1]( 15 13 20 ) {(0.000000,0.018448)(0.345575,0.000000)(0.028081,0.000000)}</li><li id="ul0015-0112" num="0292">Sat[1 0 1]( 18 11 16 ) {(0.069273,0.000000)(0.000000,0.000211)(0.000141,0.000000)}</li><li id="ul0015-0113" num="0293">Sat[1 1 1](8 2 17 ) {(0.477790,0.000000)(0.097216,0.000000)(0.085097,0.000000)}</li><li id="ul0015-0114" num="0294">Sat[0 1 0]( 13 11 19 ) {(0.000000,0.469933)(0.528990,0.000000)(0.000000,0.836465)}</li><li id="ul0015-0115" num="0295">Sat[0 0 1]( 4 19 9 ) {(0.000000,0.259595)(0.000000,0.463005)(0.127525,0.000000)}</li><li id="ul0015-0116" num="0296">Sat[1 0 0]( 15 9 13 ) {(0.008740,0.000000)(0.000000,0.253115)(0.000000,0.002474)} <br /> Local fields: </li><li id="ul0015-0117" num="0297">[1]{0.036401,0.066197,0.897402 }</li><li id="ul0015-0118" num="0298">[2]{0.289026,0.087968,0.623006 }</li><li id="ul0015-0119" num="0299">[3]{0.101837,0.090140,0.808023 }</li><li id="ul0015-0120" num="0300">[4]{0.403023,0.036656,0.560321 }</li><li id="ul0015-0121" num="0301">[5]{0.689450,0.058805,0.251745 }</li><li id="ul0015-0122" num="0302">[6]{0.689499,0.072289,0.238212 }</li><li id="ul0015-0123" num="0303">[7]{0.557957,0.026921,0.415122 }</li><li id="ul0015-0124" num="0304">[8]{0.893026,0.033652,0.073322 }</li><li id="ul0015-0125" num="0305">[9]{0.006920,0.026377,0.966703 }</li><li id="ul0015-0126" num="0306">[10]{0.232639,0.102904,0.664458 }</li><li id="ul0015-0127" num="0307">[11]{0.214896,0.038727,0.746377 }</li><li id="ul0015-0128" num="0308">[12]{0.495796,0.118351,0.385853 }</li><li id="ul0015-0129" num="0309">[13]{0.945504,0.028815,0.025681 }</li><li id="ul0015-0130" num="0310">[14]{0.450554,0.205685,0.343762 }</li><li id="ul0015-0131" num="0311">[15]{0.721522,0.012500,0.265978 }</li><li id="ul0015-0132" num="0312">[16]{0.589983,0.087746,0.322271 }</li><li id="ul0015-0133" num="0313">[17]{0.117364,0.161353,0.721284 }</li><li id="ul0015-0134" num="0314">[18]{0.988484,0.010907,0.000609 }</li><li id="ul0015-0135" num="0315">[19]{0.163911,0.010184,0.825905 }</li><li id="ul0015-0136" num="0316">[20]{0.363102,0.167461,0.469437 } <br /> STEP 1: </li><li id="ul0015-0137" num="0317">fixing var 18 to 1. (local field: [18]{0.988484,0.010907,0.000609 }) <br /> Clauses in which var 18 appears: </li><li id="ul0015-0138" num="0318">0 Sat[1 1 1]( 14 20 18 )</li><li id="ul0015-0139" num="0319">12 Sat[1 0 1]( 18 4 6 )</li><li id="ul0015-0140" num="0320">22 Sat[0 1 1]( 12 5 18 )</li><li id="ul0015-0141" num="0321">28 Sat[1 0 1]( 18 1 5 )</li><li id="ul0015-0142" num="0322">42 Sat[1 1 1]( 4 18 7 )</li><li id="ul0015-0143" num="0323">53 Sat[1 1 1]( 17 9 18 )</li><li id="ul0015-0144" num="0324">58 Sat[0 1 0]( 17 18 15 )</li><li id="ul0015-0145" num="0325">65 Sat[0 1 0]( 9 18 1 )</li><li id="ul0015-0146" num="0326">67 Sat[1 1 1]( 17 9 18 )</li><li id="ul0015-0147" num="0327">68 Sat[1 0 0]( 8 4 18 )</li><li id="ul0015-0148" num="0328">86 Sat[0 1 1]( 8 3 18 )</li><li id="ul0015-0149" num="0329">95 Sat[1 0 1]( 18 11 16 )</li></ul>
0330The clauses in which s_18=1 are satisfied and eliminated.
0331New surveys obtained by convergence of SP: <ul id="ul0016" list-style="none"><li id="ul0016-0001" num="0332">Sat[1 1 1[{2->1}( 14 20 ) {(0.000000,0.000000)(0.000000,0.000000)}</li><li id="ul0016-0002" num="0333">Sat[1 1 1]( 12 15 1 ) {(0.365819,0.000000)(0.455933,0.000000)(0.198635,0.000000)}</li><li id="ul0016-0003" num="0334">Sat[0 1 0]( 11 4 7 ) {(0.000000,0.370274)(0.183870,0.000000)(0.000000,0.184538)}</li><li id="ul0016-0004" num="0335">Sat[1 1 0]( 6 8 15 ) {(0.063481,0.000000)(0.181894,0.000000)(0.000000,0.021884)}</li><li id="ul0016-0005" num="0336">Sat[0 0 0]( 10 5 15 ) {(0.000000,0.618018)(0.000000,0.353109)(0.000000,0.342691)}</li><li id="ul0016-0006" num="0337">Sat[0 1 0]( 17 13 4 ) {(0.000000,0.010839)(0.047374,0.000000)(0.000000,0.003150)}</li><li id="ul0016-0007" num="0338">Sat[1 1 0]( 1 16 3 ) {(0.050197,0.000000)(0.128356,0.000000)(0.000000,0.318430)}</li><li id="ul0016-0008" num="0339">Sat[1 0 0[( 20 1 16 ) {(0.029687,0.000000)(0.000000,0.284156)(0.000000,0.023759)}</li><li id="ul0016-0009" num="0340">Sat[1 1 1]( 11 7 4 ) {(0.492176,0.000000)(0.635354,0.000000)(0.563572,0.000000)}</li><li id="ul0016-0010" num="0341">Sat[1 0 0]( 7 6 15 ) {(0.765815,0.000000)(0.000000,0.663336)(0.000000,0.652883)}</li><li id="ul0016-0011" num="0342">Sat[0 0 1]( 10 12 20 ) {(0.000000,0.274938)(0.000000,0.151084)(0.158223,0.000000)}</li><li id="ul0016-0012" num="0343">Sat[1 0 1]( 15 4 11 ) {(0.380704,0.000000)(0.000000,0.288286)(0.179415,0.000000)}</li><li id="ul0016-0013" num="0344">Sat[1 0 1]{0->1}( 4 6 ) {(0.000000,0.000000)(0.000000,0.000000)}</li><li id="ul0016-0014" num="0345">Sat[0 1 0]( 4 3 12 ) {(0.000000,0.608621)(0.436792,0.000000)(0.000000,0.558341)}</li><li id="ul0016-0015" num="0346">Sat[1 0 0]( 2 7 16 ) {(0.627547,0.000000)(0.000000,0.653203)(0.000000,0.640348)}</li><li id="ul0016-0016" num="0347">Sat[0 0 1]( 3 17 4 ) {(0.000000,0.069231)(0.000000,0.061041)(0.013303,0.000000)}</li></ul>
Contents2
7 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7
Every citation, both waysCites: the store holds 1 of 2
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US11200484B2 | Cited by | United States of America | Search report |
| US8098248B2 | Cited by | United States of America | Search report |
| US8166465B2 | Cited by | United States of America | Applicant |
| US2011004863A1 | Cited by | United States of America | Pre-grant |
| US2008244540A1 | Cited by | United States of America | Pre-grant |
| US8291279B2 | Cited by | United States of America | Applicant |
| US8370812B2 | Cited by | United States of America | Applicant |
| US2008243449A1 | Cited by | United States of America | Pre-grant |
| US8307372B2 | Cited by | United States of America | Applicant |
| US2008243451A1 | Cited by | United States of America | Pre-grant |
| US2008294960A1 | Cited by | United States of America | Pre-grant |
| US8190547B2 | Cited by | United States of America | Applicant |
| US8020125B1 | Cited by | United States of America | Search report |
| US2009327177A1 | Cited by | United States of America | Pre-grant |
| US8863102B2 | Cited by | United States of America | Applicant |
| US2008244236A1 | Cited by | United States of America | Pre-grant |
| US2003083756A1 | Cites | United States of America | Search report |
| Braunstein et al., “Survey propagation: an algorithm for satisfiability,” preprint, www.ictp.triest.it/zecchina/SP, 2002. | Non-patent | – | Third party observation |
| Mézard et al., “Analytic and algorithmic solugion of random satisfiability problems,”<i>Science</i>, 297:812-814, 2002. | Non-patent | – | Third party observation |
| Mézard and Zecchina, “The random K-satisfiability problem: from an analytic solution to an efficient algorithm,” <i>Phys. Rev</i>. E66, 056126, 2002. | Non-patent | – | Third party observation |
| Braunstein et al., "Survey propagation: an algorithm for satisfiability," preprint, www.ictp.triest.it/zecchina/SP, 2002. | Non-patent | – | Applicant |
| Mézard et al., "Analytic and algorithmic solugion of random satisfiability problems,"Science, 297:812-814, 2002. | Non-patent | – | Applicant |
| Mézard and Zecchina, "The random K-satisfiability problem: from an analytic solution to an efficient algorithm," Phys. Rev. E66, 056126, 2002. | Non-patent | – | Applicant |
2 members in 1 office
Priority claims2
| Document | Office | Kind | Date |
|---|---|---|---|
| 60627503 | United States of America | A | |
| US20030606275 | – | – | – |
Members2
| Document | Office | Kind | |
|---|---|---|---|
| US2004262376A1 | United States of America | A1 | |
| US7036720B2This record | United States of America | B2 |
34 transactions on the USPTO file
Allowed after 1 non-final rejection.
- Non-final rejections
- 1
- Final rejections
- 0
- RCEs
- 0
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Payment of Maintenance Fee, 12th Year, Large EntityM1553 | M1553 | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| New or Additional Drawing FiledC614 | C614 | |
| IFW TSS Processing by Tech Center CompleteTSSCOMP | TSSCOMP | |
| Preliminary AmendmentA.PE | A.PE | |
| Workflow incoming amendment IFWWAMD | WAMD | |
| Application Return from OIPEWROIPE | WROIPE | |
| Application Return TO OIPEROIPE | ROIPE | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Application Is Now CompleteCOMP | COMP | |
| Payment of additional filing fee/PreexamFLFEE | FLFEE | |
| A statement by one or more inventors satisfying the requirement under 35 USC 115, Oath of the ApplicOATHDECL | OATHDECL | |
| Applicant has submitted a new specification to correct Corrected Papers problemsCORRSPEC | CORRSPEC | |
| Notice Mailed--Application Incomplete--Filing Date AssignedINCD | INCD | |
| Cleared by OIPE CSRL194 | L194 | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Initial Exam Team nnIEXX | IEXX |
9 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Maintenance fee paymentMAFP | MAFP | |
| Fee paymentFPAY | FPAY | |
| Fee paymentFPAY | FPAY | |
| Fee payment procedurePAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP | |
| Certificate of correctionCC | CC | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS |
Numbers
- Publication
- 07036720
- Publication, DOCDB
- 7036720
- Publication, EPODOC
- US7036720
- Application
- 10606275
- Application, DOCDB
- 60627503
- Application, EPODOC
- US20030606275
Titles
- English
- Method and apparatus for resolution of problems using constrained discrete variables
Patent term adjustment
- A delay
- +210 daysthe office missed an examination deadline
- Applicant delay
- −59 days
- Net adjustment
- 151 days
Classification
- CPC, 2
- G06Q10/04
- G06F17/10
- IPC, 4
- G06F17 00
- G06F1 00
- G06F17 10
- G06Q10 04
- USPC, 2
- 235375000
- 700028000