В теоретической информатике коммуникационная сложность изучает количество коммуникации, необходимое для решения задачи, параметры которой распределены между двумя или более сторонами.  Это понятие было введено Эндрю Яо в 1979 году, который исследовал следующую задачу для двух участников, традиционно называемых Алисой и Бобом.  Алиса получает n-битную строку x, а Bob — n-битную строку y, и их цель состоит в том, чтобы один из них (например, Боб) вычислил определенную и известную обоим участникам функцию 
  
    
      
        f
        (
        x
        ,
        y
        )
      
    
    {\displaystyle f(x,y)}
  
, при этом с наименьшим количеством коммуникации между ними.  Конечно, они всегда могут вычислить 
  
    
      
        f
        (
        x
        ,
        y
        )
      
    
    {\displaystyle f(x,y)}
  
 следующим образом: Алиса отправляет всю свою n-битную строку Бобу, который затем вычисляет функцию 
  
    
      
        f
        (
        x
        ,
        y
        )
      
    
    {\displaystyle f(x,y)}
  
. Поэтому в данной постановке задачи интересно, для каких функций f существует способ вычислить 
  
    
      
        f
        (
        x
        ,
        y
        )
      
    
    {\displaystyle f(x,y)}
  
 передав менее n битов. Важное отметить, что в данной задаче нас не интересует сложность вычислений, выполненных Алисой или Бобом, или размер используемой для этих вычислений памяти. 
 Эта абстрактная проблема с двумя участниками (называемая коммуникационной сложностью с двумя участниками) и ее общая форма с большим количеством участников возникает в различных областях компьютерных наук: например, при проектировании больших интегральных схем требуется минимизировать используемую энергию, путём уменьшения количества электрических сигналов между различными компонентами во время распределенных вычислений.  Коммуникационная сложность используется также при изучении структур данных и алгоритмов, при оптимизации компьютерных сетей, в теории вычислительной сложности и сложности доказательств и в других областях.
 Пусть изначально задана некоторая функция 
  
    
      
        f
        :
        X
        ×
        Y
        →
        Z
      
    
    {\displaystyle f:X\times Y\to Z}
  
, где в наиболее типичной постановке 
  
    
      
        X
        =
        Y
        =
        {
        0
        ,
        1
        
          }
          
            n
          
        
        ,
        Z
        =
        {
        0
        ,
        1
        }
      
    
    {\displaystyle X=Y=\{0,1\}^{n},Z=\{0,1\}}
  
. Алиса получает элемент 
  
    
      
        x
        ∈
        X
      
    
    {\displaystyle x\in X}
  
, Боб получает 
  
    
      
        y
        ∈
        Y
      
    
    {\displaystyle y\in Y}
  
. Обмениваясь друг с другом сообщениями по одному биту (используя некоторый заранее определённый протокол связи), Алиса и Боб хотят вычислить значение 
  
    
      
        z
        =
        f
        (
        x
        ,
        y
        )
      
    
    {\displaystyle z=f(x,y)}
  
 так, чтобы в конце общения хотя бы один из них знал значение 
  
    
      
        z
      
    
    {\displaystyle z}
  
.
 Коммуникационная сложность вычисления функции 
  
    
      
        f
      
    
    {\displaystyle f}
  
, обозначается 
  
    
      
        D
        (
        f
        )
      
    
    {\displaystyle D(f)}
  
, определяется как минимальное количество бит коммуникации, которого достаточно для решения поставленной задачи в худшем случае (то есть этого количества битов должно быть достаточно для любой пары 
  
    
      
        x
        ,
        y
      
    
    {\displaystyle x,y}
  
).
 Опираясь на это определение удобно думать о функции f, как о функции, заданной матрицей A, в которой строки индексированы элементами 
  
    
      
        x
        ∈
        X
      
    
    {\displaystyle x\in X}
  
, а столбцы, соответственно, элементами 
  
    
      
        y
        ∈
        Y
      
    
    {\displaystyle y\in Y}
  
. В каждой ячейке этой матрицы, индексированной элементами x и y, записано соответствующее значение f, то есть 
  
    
      
        
          A
          
            
              x
              ,
              y
            
          
        
        =
        f
        (
        x
        ,
        y
        )
      
    
    {\displaystyle A_{\mathrm {x,y} }=f(x,y)}
  
. Алиса и Боб знают функцию f, а следовательно знают матрицу A. Далее, Алисе выдаётся номер строчки x, а Бобу — номер столбца y, и их задача — определить значение, записанное в соответствующей ячейке. Поэтому, если в какой-то момент один из игроков будет знать одновременно и номер столбца и номер строчки, то он будет знать и значение в соответствующей ячейке. В начале коммуникации каждый игрок ничего не знает про номер другого игрока, поэтому с точки зрения Алисы ответом может быть любое значение в строчке с номером x, а с точки зрения Боба — любое значение в столбце y. В процессе коммуникации с каждым переданным битом появляется новая информация, которая позволяет игрокам отсекать часть возможных ячеек. Например, если в какой-то момент Алиса передаёт бит b, то с точки зрения Боба все возможные к этому моменту входы Алисы делятся на два множества: те, для которых Алиса послала бы 
  
    
      
        b
        =
        0
      
    
    {\displaystyle b=0}
  
, и те, для которых Алиса послала бы 
  
    
      
        b
        =
        1
      
    
    {\displaystyle b=1}
  
. Зная значение бита b Боб отсекает часть возможных входов Алисы и таким образом сужает множество возможных с его точки зрения ячеек. При этом с точки зрения внешнего наблюдателя после каждого сообщения сужается либо множество возможных строк, либо множество возможных столбцов, и таким образом множество возможных ячеек сужается на некоторую подматрицу матрицы A.
 Более формально, будем называть множество 
  
    
      
        R
        ⊆
        X
        ×
        Y
      
    
    {\displaystyle R\subseteq X\times Y}
  
 называется (комбинаторным) прямоугольником, если из того, 
  
    
      
        (
        
          x
          
            1
          
        
        ,
        
          y
          
            1
          
        
        )
        ∈
        R
      
    
    {\displaystyle (x_{1},y_{1})\in R}
  
 и 
  
    
      
        (
        
          x
          
            2
          
        
        ,
        
          y
          
            2
          
        
        )
        ∈
        R
      
    
    {\displaystyle (x_{2},y_{2})\in R}
  
, следует, что 
  
    
      
        (
        
          x
          
            1
          
        
        ,
        
          y
          
            2
          
        
        )
        ∈
        R
      
    
    {\displaystyle (x_{1},y_{2})\in R}
  
 и 
  
    
      
        (
        
          x
          
            2
          
        
        ,
        
          y
          
            1
          
        
        )
        ∈
        R
      
    
    {\displaystyle (x_{2},y_{1})\in R}
  
. Тогда каждая подматрица матрицы A ассоциируется с комбинаторными прямоугольником R, таким что 
  
    
      
        R
        =
        M
        ×
        N
      
    
    {\displaystyle R=M\times N}
  
, где 
  
    
      
        M
        ⊆
        X
      
    
    {\displaystyle M\subseteq X}
  
 и 
  
    
      
        N
        ⊆
        Y
      
    
    {\displaystyle N\subseteq Y}
  
. Теперь рассмотрим ситуацию, когда между участниками уже передано k битов. Пусть эти первые k битов задаются строкой 
  
    
      
        h
        ∈
        {
        0
        ,
        1
        
          }
          
            k
          
        
      
    
    {\displaystyle h\in \{0,1\}^{k}}
  
. Тогда можно определить множество пар входов 
  
    
      
        
          T
          
            
              h
            
          
        
        ⊆
        X
        ×
        Y
      
    
    {\displaystyle T_{\mathrm {h} }\subseteq X\times Y}
  
, на которых первые k равны 
  
    
      
        h
      
    
    {\displaystyle h}
  

 Тогда 
  
    
      
        
          T
          
            
              h
            
          
        
      
    
    {\displaystyle T_{\mathrm {h} }}
  
 является комбинаторным прямоугольником, то есть задаёт подматрицу матрицы A.
 Пусть 
  
    
      
        X
        =
        Y
        =
        {
        0
        ,
        1
        
          }
          
            n
          
        
        ,
        Z
        =
        {
        0
        ,
        1
        }
      
    
    {\displaystyle X=Y=\{0,1\}^{n},Z=\{0,1\}}
  
. Рассмотрим задачу, в которой Алиса и Боб хотят определить, даны ли им одинаковые строки, то есть они хотят проверить, что 
  
    
      
        x
        =
        y
      
    
    {\displaystyle x=y}
  
. Несложно показать, что для решения этой задачи проверки равенства (EQ) потребуется передать n битов в худшем случае, если мы хотим быть научиться отвечать на этот вопрос точно для всех возможных пар x и y.
 Для случая 
  
    
      
        n
        =
        3
      
    
    {\displaystyle n=3}
  
 строки x и y состоят из трёх битов. Функция равенства в этом случае определяется следующей матрицей, в которой строки индексированы входами Алисы, а строчки — входами Боба.
 Как мы видим, функция 
  
    
      
        E
        Q
      
    
    {\displaystyle EQ}
  
 равна 1 только в ячейках, где x равно y (то есть, на диагонали).
 Доказательство. Предположим, что 
  
    
      
        D
        (
        E
        Q
        )
        ≤
        n
        −
        1
      
    
    {\displaystyle D(EQ)\leq n-1}
  
, то есть существует протокол, который решает задачу проверки равенства для всех пар битовых строк длины n, передавая при этом не более 
  
    
      
        n
        −
        1
      
    
    {\displaystyle n-1}
  
 бита. Давайте для каждой возможной пары одинаковых строк 
  
    
      
        (
        x
        ,
        x
        )
      
    
    {\displaystyle (x,x)}
  
 (для них 
  
    
      
        E
        Q
        (
        x
        ,
        x
        )
        =
        1
      
    
    {\displaystyle EQ(x,x)=1}
  
) выпишем в строчку все биты, которые пересылались в протоколе. Всего таких различных пар 
  
    
      
        (
        x
        ,
        x
        )
      
    
    {\displaystyle (x,x)}
  
 ровно 
  
    
      
        
          2
          
            n
          
        
      
    
    {\displaystyle 2^{n}}
  
, а различных битовых строк длины не более 
  
    
      
        n
        −
        1
      
    
    {\displaystyle n-1}
  
 всего 
  
    
      
        2
        +
        4
        +
        ⋯
        +
        
          2
          
            n
            −
            1
          
        
        =
        
          2
          
            n
          
        
        −
        2
        <
        
          2
          
            n
          
        
      
    
    {\displaystyle 2+4+\dotsb +2^{n-1}=2^{n}-2<2^{n}}
  
. По принципу Дирихле найдутся две пары 
  
    
      
        (
        x
        ,
        x
        )
      
    
    {\displaystyle (x,x)}
  
 и 
  
    
      
        (
        
          x
          ′
        
        ,
        
          x
          ′
        
        )
      
    
    {\displaystyle (x',x')}
  
, для которых получились одинаковые строки, то есть в протоколе пересылались одни и те же биты. Так как множество пар строк, для которых пересылались одинаковые биты, задаёт прямоугольник, то 
  
    
      
        E
        Q
        (
        x
        ,
        
          x
          ′
        
        )
      
    
    {\displaystyle EQ(x,x')}
  
 и 
  
    
      
        E
        Q
        (
        
          x
          ′
        
        ,
        x
        )
      
    
    {\displaystyle EQ(x',x)}
  
 тоже должны быть равны 1, что противоречит тому, что 
  
    
      
        x
        ≠
        
          x
          ′
        
      
    
    {\displaystyle x\neq x'}
  
. Следовательно наше предположение неверно, а значит 
  
    
      
        D
        (
        E
        Q
        )
        >
        n
        −
        1
      
    
    {\displaystyle D(EQ)>n-1}
  

 Другими словами, если 
  
    
      
        D
        (
        E
        Q
        )
      
    
    {\displaystyle D(EQ)}
  
 меньше n, то мы должны уметь покрыть все единички матрицы EQ при помощи менее 
  
    
      
        
          2
          
            n
          
        
      
    
    {\displaystyle 2^{n}}
  
 одноцветных прямоугольников (все ячейки которых помечены единицами). Однако, в матрице EQ ровно 
  
    
      
        
          2
          
            n
          
        
      
    
    {\displaystyle 2^{n}}
  
 единичек, и никакие две не могут лежать в одном одноцветном прямоугольнике, так как тогда в этот прямоугольник неизбежно попадую ячейки помеченные нулями. Поэтому, такого покрытия не существует, а значит 
  
    
      
        D
        (
        E
        Q
        )
      
    
    {\displaystyle D(EQ)}
  
 как минимум n.