Computing solutions of the paintshopnecklace problem
How to assign colors to the occurrences of cars in a car factory? How to divide fairly a necklace between thieves who have stolen it? These two questions are addressed in two combinatorial problems that have attracted attention from a theoretical point of view these last years, the first one more by people from the combinatorial optimization community, the second more from the topological combinatorics and computer science point of view. The first problem is the paint shop problem, defined by Epping et al. (2004) [11]. Given a sequence of cars where repetition can occur, and for each car a multiset of colors where the sum of the multiplicities is equal to the number of repetitions of the car in the sequence, decide the color to be applied for each occurrence of each car so that each color occurs with the multiplicity that has been assigned. The goal is to minimize the number of color changes in the sequence. The second problem, highly related to the first one, takes its origin in a famous theorem found by Alon (1987) [1] stating that a necklace with t types of beads and qau occurrences of each type u (au is a positive integer) can always be fairly split between q  thieves with at most t(q?1) t ( q ? 1 ) cuts. An intriguing aspect of this theorem lies in the fact that its classical proof is completely non-constructive. Designing an algorithm that computes theses cuts is not an easy task, and remains mostly open. The main purpose of the present paper is to make a step in a more operational direction for these two problems by discussing practical ways to compute solutions for instances of various sizes. Moreover, it starts with an exhaustive survey on the algorithmic aspects of them, and some new results are proved.
combinatorial optimization integer programming local search paintshop problem path-following method splitting necklace tfnp problem