Spis treści

JFiZO - Zadanie 09.113

Dobre rozwiązanie

f(x) = \cases{ n & \mathrm{jeśli} \; 2|n \wedge 2^n = x \cr 2\cdot(x-\left|\{k: 2|k \wedge 2^k < x\}\right|)+1 & \mathrm{w} \; \mathrm{p.p.} }

f jest obliczalna w wielomianowym czasie, natomiast f^{-1} nie jest.

Złe rozwiązanie

f: \{0,1\}^* \rightarrow \{0,1\}^* - obliczalna w wielomianowym czasie. Czy f^{-1} obliczalna w wielomianowym czasie.

Ponumerujmy ciagi zerojedynkowe.

Niech n = f(m). Wtedy f^{-1}(n) obliczymy w nastepujacy sposob:

for (i = 0; ;i++) {
  if (f(i) == n)
    return i;
}

Funkcja ta oblicza sie w czasie m*zlozonosc_f. BULLSHIT