Exchanging the players, relabelling outputs, and trivial upper bounds #
Exchanging the roles of Alice and Bob in a protocol (Protocol.swapPlayers) computes the
function with its arguments exchanged, and relabelling the leaves by g (Protocol.map) computes
g of the function; neither changes the depth. So the communication complexity of a function is
invariant under exchanging the arguments (Protocol.ecomplexityFun_swap), does not increase under
relabelling the outputs or transforming the inputs (Protocol.ecomplexityFun_map_le,
Protocol.ecomplexityFun_comap_le), and is unchanged by an injective (left-invertible) relabelling
such as negation (Protocol.ecomplexityFun_map_of_leftInverse, Protocol.ecomplexityFun_not). All
of these follow from Protocol.ecomplexityFun_le_of_forall: a function is no harder than another if
every protocol for the latter yields one of no greater depth for the former.
Protocols can also be run one after another: Protocol.bind replaces each leaf of a protocol by a
protocol chosen by its output, sending at most the bits of both (Protocol.depth_bind_le), and
Protocol.runAll runs a tuple of protocols in turn and combines their outputs
(Protocol.run_runAll, Protocol.depth_runAll_le). Relabelling is a special case of sequencing
(Protocol.map_eq_bind).
Together with the trivial protocol Protocol.ecomplexityFun_le_succ, in which Alice sends her n
bits and Bob announces the value, this gives the other trivial upper bounds
Kushilevitz and Nisan, Chapter 1: n + 1 bits when Bob holds n bits
(Protocol.ecomplexityFun_le_succ_right), min n m + 1 bits for inputs of n and m bits
(Protocol.ecomplexityFun_le_min_succ), and ⌈log₂ |X|⌉ + 1 bits when Alice's input ranges over
a finite type X, which she encodes in ⌈log₂ |X|⌉ bits
(Protocol.ecomplexityFun_le_clog_card_succ, and Protocol.ecomplexityFun_le_clog_card_succ_right
for Bob).
Main definitions #
Cslib.Communication.Protocol.swapPlayers: exchanging the roles of Alice and Bob.Cslib.Communication.Protocol.map: relabelling the outputs of a protocol.Cslib.Communication.Protocol.bind,Cslib.Communication.Protocol.runAll: running protocols one after another.
Main results #
Cslib.Communication.Protocol.ecomplexityFun_le_of_forall: comparing communication complexities through a transformation of protocols.Cslib.Communication.Protocol.ecomplexityFun_swap: exchanging the arguments.Cslib.Communication.Protocol.ecomplexityFun_map_le,Cslib.Communication.Protocol.ecomplexityFun_map_of_leftInverse,Cslib.Communication.Protocol.ecomplexityFun_not: relabelling the outputs.Cslib.Communication.Protocol.ecomplexityFun_comap_le: transforming the inputs.Cslib.Communication.Protocol.ecomplexityFun_le_succ_right,Cslib.Communication.Protocol.ecomplexityFun_le_min_succ,Cslib.Communication.Protocol.ecomplexityFun_le_clog_card_succ,Cslib.Communication.Protocol.ecomplexityFun_le_clog_card_succ_right: trivial upper bounds.
References #
Exchanging the players #
The protocol with the players exchanged computes the function with its arguments exchanged.
Exchanging the players does not change the depth.
Exchanging the players does not change the number of leaves.
Exchanging the players twice gives back the protocol.
Relabelling the outputs #
Sequencing protocols #
Running k protocols of depth at most d one after another sends at most k d bits.
Communication complexity under these operations #
If every protocol computing f yields one of no greater depth computing f', then f' is
no harder than f.
Transforming the inputs does not make a function harder to compute: run a protocol for f
on the transformed inputs (Protocol.comap).
Relabelling the outputs does not make a function harder to compute.
An injective relabelling g of the outputs, given with a left inverse g', does not change
the communication complexity.
Negating the output does not change the communication complexity.
Exchanging the arguments, and so the roles of Alice and Bob, does not change the communication complexity.
Trivial upper bounds #
The trivial protocol for Bob. Every Boolean function of Alice's input and Bob's n bits
has a protocol with n + 1 bits: Bob sends his input and Alice announces the value.
Every Boolean function of Alice's n bits and Bob's m bits has a protocol with
min n m + 1 bits: the player with the shorter input sends it.
The trivial protocol for a finite input type. If Alice's input ranges over a finite type
X, every Boolean function has a protocol with ⌈log₂ |X|⌉ + 1 bits: Alice sends an encoding of
her input in ⌈log₂ |X|⌉ bits and Bob announces the value.
If Bob's input ranges over a finite type Y, every Boolean function has a protocol with
⌈log₂ |Y|⌉ + 1 bits.