The first fixpoint of x → ∑i=1kx/ai ⌉ × bi+c

philippe.baptiste@polytechnique.fr

Let

f(x) = 
k
i=1
 


x
ai
 


bi+c.

where ai, bi and c are positive integer values. We look for the smallest fixpoint of f if it exists, i.e., the smallest x* such that f(x*) = x*.

OPEN QUESTION: Is there a polynomial (in the input size) algorithm to compute x* ?

Hadrien Cambazard (LINA, Nantes) has introduced this problem to me. It plays an important role for people working on real time problems.

A polynomial algorithm to compute a fixpoint (not the smallest one)

c
 1 −  
k
i=1
 
bi
ai
≤  x*
 c + 
k
i=1
 bi
 1 −  
k
i=1
 
bi
ai

The size D of the interval where to search for x* is then

D =  
 
k
i=1
 bi
 1 −  
k
i=1
 
bi
ai

We can perform a dichotomic search. As for each candidate x, we have to compare x to f(x) this leads to an overall time complexity of O(k logD).

If D ≤ ∏ik ai, we have an O(k2 logamax) algorithm (where amax is the larges ai). This is polynomial in the input size.

Now assume that D > ∏ik ai. Note that ∀ x, f(x + ∏ik ai) = f(x) + ∏ik aiik bi/ai. Now let q be the largest integer such that f(qik ai) ≤ qik ai, i.e.,

c + q 
 
i ≤ k
 ai 
 
i≤ k
 
bi
ai
≤ q 
 
i ≤ k
 ai

Which means

q = 





c



1 − 
 
i≤ k
 
bi
ai
 


 
i ≤ k
 ai 
 





Now we look for x* between qik ai and (q+1) ∏ik ai. The size of this interval is less than D and hence we have the same O(k2 logamax) algorithm.


This document was translated from LATEX by HEVEA.