The Golomb problem is available at the CSPLib benchmark library (prob006 at http://csplib.cs.strath.ac.uk/). It is also described by Dewdney in [#!Dewdney85!#]. The library describes the problem as:
``A Golomb ruler may be defined as a set of mintegers 0 = a1 < a2 < ... < am such that the m(m-1)/2differences aj - ai, 1 <= i < j <= m are distinct. Such a ruler is said to contain m marks and is of length am. The objective is to find optimal (minimum length) or near optimal rulers''.To distinguish between the m used in the above description and the m used in our notation for the number of constraints in a CSP, we will use M to refer to the number of marks in a Golomb ruler instance.
The basic approach to solving an instance of the Golomb problem, like other optimization problems, is an iterative approach. For an instance with M marks the typical initial length to try is the minimum length found for an instance with M-1 marks. So given an M, a ruler length L is selected to try first. Then a CSP instance is generated (more details on how this is done are given below). If a solution can be found to this instance, then L is the optimal length for a Golomb ruler with M marks. If a solution can not be found to this instance, then the process is repeated with a ruler of length L + 1. This iterative process is continued, with progressively longer rulers, until the optimal length ruler is found.
The Golomb CSP generator takes as input the number of marks M and a ruler length L. The resulting CSP has M variables, x1,...,xM, (i.e. n = M) each with a finite integer domain of size equal to the length L. This domain corresponds to each of the places the mark can be placed, so an assignment of a value a to a variable xi corresponds to the ith mark being placed on the ruler at position a.
The model we used involves three types of constraints:
The range of problems that we found to be solvable within a reasonable length of time, given our formulation, are problems with up to 13 marks. If M is 11 and L is 72 (which is the optimal length for a Golomb ruler with 11 marks), the CSP instance generated has:
The basic approach to solving an instance of the Golomb problem, like other optimization problems, is an iterative approach. For an instance with M marks the typical initial length to try is the minimum length found for an instance with M-1 marks. So given an M, a ruler length L is selected to try first. Then a CSP instance is generated (more details on how this is done are given below). If a solution can be found to this instance, then L is the optimal length for a Golomb ruler with M marks. If a solution can not be found to this instance, then the process is repeated with a ruler of length L + 1. This iterative process is continued, with progressively longer rulers, until the optimal length ruler is found.
The Golomb CSP generator takes as input the number of marks M and a ruler length L. The resulting CSP has M variables, x1,...,xM, (i.e. n = M) each with a finite integer domain of size equal to the length L. This domain corresponds to each of the places the mark can be placed, so an assignment of a value a to a variable xi corresponds to the ith mark being placed on the ruler at position a.
The model we used involves three types of constraints:
The range of problems that we found to be solvable within a reasonable length of time, given our formulation, are problems with up to 13 marks. If M is 11 and L is 72 (which is the optimal length for a Golomb ruler with 11 marks), the CSP instance generated has: