The first fixpoint of x → ∑i=1k ⌈x/ai ⌉ × bi+cphilippe.baptiste@polytechnique.fr |
Let
| f(x) = |
|
⎡ ⎢ ⎢ ⎢ |
|
⎤ ⎥ ⎥ ⎥ |
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.
|
≤ x* ≤ |
|
The size D of the interval where to search for x* is then
| D = |
|
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 ≤ ∏i ≤ k 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 > ∏i ≤ k ai. Note that ∀ x, f(x + ∏i ≤ k ai) = f(x) + ∏i ≤ k ai ∑i≤ k bi/ai. Now let q be the largest integer such that f(q ∏i ≤ k ai) ≤ q ∏i ≤ k ai, i.e.,
| c + q |
|
ai |
|
|
≤ q |
|
ai |
Which means
| q = | ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎣ |
|
⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎦ |
Now we look for x* between q ∏i ≤ k ai and (q+1) ∏i ≤ k 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.