  We study the space complexity of implementing long-lived and one-shot
adaptive renaming from multi-reader multi-writer registers, in an asynchronous
distributed system with $n$ processes. As a result of an $f$-adaptive renaming
algorithm each participating process gets a distinct name in the range
$\{1,\dots,f(k)\}$ provided $k$ processes participate.
  Let $f: \{1,\dots,n\} \rightarrow \mathbb{N}$ be a non-decreasing function
satisfying $f(1) \leq n-1$ and let $d = \max\{x ~|~ f(x) \leq n-1\}$. We show
that any non-deterministic solo-terminating long-lived $f$-adaptive renaming
object requires $d + 1$ registers. This implies a lower bound of $n-c$
registers for long-lived $(k+c)$-adaptive renaming, which we observe is tight.
  We also prove a lower bound of $\lfloor \frac{2(n - c)}{c+2} \rfloor$
registers for implementing any non-deterministic solo-terminating one-shot
$(k+c)$-adaptive renaming. We provide two one-shot renaming algorithms: a
wait-free algorithm and an obstruction-free algorithm. Each algorithm employs a
parameter to depict the tradeoff between space and adaptivity. When these
parameters are chosen appropriately, this results in a wait-free one-shot
$(\frac{3k^2}{2})$-adaptive renaming algorithm from $\lceil \sqrt{n} \rceil +
1$ registers, and an obstruction-free one-shot $f$-adaptive renaming algorithm
from only $\min\{n, x ~|~ f(x) \geq 2n\} + 1$ registers.
