In computer science, a bidirectional map is an associative data structure in which the ( k e y , v a l u e ) {\displaystyle (key,value)} pairs form a one-to-one correspondence. Thus the binary relation is functional in each direction: each v a l u e {\displaystyle value} can also be mapped to a unique k e y {\displaystyle key} . A pair ( a , b ) {\displaystyle (a,b)} thus provides a unique coupling between a {\displaystyle a} and b {\displaystyle b} so that b {\displaystyle b} can be found when a {\displaystyle a} is used as a key and a {\displaystyle a} can be found when b {\displaystyle b} is used as a key.
Mathematically, a bidirectional map can be defined a bijection f : X → Y {\displaystyle f:X\to Y} between two different sets of keys X {\displaystyle X} and Y {\displaystyle Y} of equal cardinality, thus constituting an injective and surjective function:
{ ∀ x , x ′ ∈ X , f ( x ) = f ( x ′ ) ⇒ x = x ′ ∀ y ∈ Y , ∃ x ∈ X : y = f ( x ) ⇒ ∃ f − 1 ( x ) {\displaystyle {\begin{cases}&\forall x,x'\in X,f(x)=f(x')\Rightarrow x=x'\\&\forall y\in Y,\exists x\in X:y=f(x)\end{cases}}\Rightarrow \exists f^{-1}(x)}