Тривиальный натуральный обмен

Пусть мы хотим сделать честную систему обмена nn товаров, чтобы при этом можно было поменять любой товар на любой другой и не было арбитража.

💡
Кратко про то, что такое арбитраж. Арбитраж - это ситуация, когда путем некоторых действий можно из ничего получить что-то. В нашем случае, могуть быть два вида арбитража: простой и сложный. Простой арбитраж это обмен последовательности товаров друг на друга и обмен на исходный так, чтобы в результате исходного товара получилось больше, чем было раньше. Сложный арбитраж это то же самое, но с несколькими товарами одновременно. К счастью он у нас и не возникнет. Следует так же выделить простейший простой арбитраж, который мы назовем тривиальным: товар pp обменивается на товар qq и затем сразу же обменивается обратно.

Для анализа таких систем хочется иметь способ осмысленно работать с всеми возможными обменами товаров. Для этого введем матрицу курса обменов KK:

KK - назовем матрицей курса обменов, если ее элементы kijk_{ij} - количество jj-го товара, которое можно получить за один ii-ый товар.

Сразу же очевидны некоторые свойства этой матрицы:

  • KK - вещественная квадратная матрица размера n×nn\times n
  • kii=1    i=1..nk_{ii}=1\ \ \ \forall\ i=1..n
  • kijkji=1k_{ij}k_{ji}=1

Последнее свойство задает как честность покупки и продажи, которая осуществляется по одной и той же цене, так и запрещает тривиальный арбитраж.

Потребуем кроме этого невозможность простого арбитража:

  • kα1α2kα2α3..kαm1αmkαmα1=1k_{\alpha_1\alpha_2}k_{\alpha_2\alpha_3}..k_{\alpha_{m-1}\alpha_m}k_{\alpha_m\alpha_1}=1 для любых α1..αm=1..n\alpha_1..\alpha_m=1..n

Для упрощения записи введем пару обозначений:

  • будем обозначать элемент матрицы kijk_{ij} как iji\to j
  • в произведении элементов матрицы будем сокращать рядом стоящие элементы: kijkjp=(ij)(jp)=ijpk_{ij}k_{jp}=(i\to j)(j\to p)=i\to j\to p

Тогда запрет простого арбитража можно записать проще:

α1α2α3..αm1αmα1=1\alpha_1\to\alpha_2\to\alpha_3\to..\to\alpha_{m-1}\to\alpha_m\to\alpha_1=1 для любых α1..αm=1..n\alpha_1..\alpha_m=1..n

В частности, тривиальный арбитраж:

iji=1i\to j\to i = 1

При наличии указанного свойства запрета простого арбитража оказывается, что матрица KK имеет простое описание. Убедимся в этом, исследовав ее подробнее.

Во-первых найдем определитель матрицы. Для этого можно взять стандартное определение определителя через сумму произведений:

det(K)=σSn(1)sgn(σ)i=1nkiσ(i)\det(K)=\sum_{\sigma\in S_n}(-1)^{sgn(\sigma)}\prod_{i=1}^n k_{i\sigma(i)}

Вспоминая, что любую перестановку можно записать в виде непересекающихся циклов(перестановок-смещений): σ=σ1..σl\sigma=\sigma_1..\sigma_l, упрощаем произведение:

j=1liσjiσ(i)=j=1l1=1\prod_{j=1}^l\prod_{i\in\sigma_j}i\to\sigma(i)=\prod_{j=1}^l 1=1

Отсюда det(K)=0det(K)=0. Значит в некотором смысле "размерность KK" меньше nn. Далее мы увидим, что можно избавиться от одного товара, не меняя коэффициенты обмена.

Для начала рассмотрим простой случай, когда есть некая валюта, за которую все товары можно купить/продать. Обозначим за pip_i - цену i-го товара. Тогда естественно задать матрицу KK следующим образом:

ij=pipji\to j=\frac{p_i}{p_j}

Очевидно, что соблюдаются все свойства матрицы обмена, в том числе и свойство отсутствия простого арбитража. При таком задании матрицы обмена, видно, что ее можно представить в качестве следующего произведения:

K=(p1p1..p1pn::pnp1..pnpn)=(p1:pn)(1p1..1pn)K=\begin{pmatrix} \frac{p_1}{p_1} & .. & \frac{p_1}{p_n} \\ : & \ddots & : \\ \frac{p_n}{p_1} & .. & \frac{p_n}{p_n} \end{pmatrix}=\begin{pmatrix} p_1 \\ : \\ p_n \end{pmatrix}\begin{pmatrix} \frac{1}{p_1} & .. & \frac{1}{p_n} \end{pmatrix}

Что позволяет легко обращаться с данной матрицей далее. Например при вычислении вектора обмена - сколько товаров одного вида можно получить, имея на руках cic_i штук pip_i-ого товара:

(c1..cn)K=(c1..cn)(p1 : pn)(1p1..1pn)=S(1p1..1pn)=(Sp1..Spn)\begin{pmatrix}c_1 & .. & c_n\end{pmatrix}K=\begin{pmatrix}c_1 & .. & c_n\end{pmatrix}\begin{pmatrix}p_1 \\ : \\ p_n\end{pmatrix}\begin{pmatrix}\frac{1}{p_1} & .. & \frac{1}{p_n}\end{pmatrix}=S\begin{pmatrix}\frac{1}{p_1} & .. & \frac{1}{p_n}\end{pmatrix}=\begin{pmatrix}\frac{S}{p_1} & .. & \frac{S}{p_n}\end{pmatrix}

Где S=c1p1+..+cnpnS=c_1p_1+..+c_np_n - суммарная стоимость наших товаров.

Хорошо, если бы матрица KK всегда имела такой вид. Рассмотрим случай, когда у нас нет валюты, за которую можно купить любой товар. Но пусть есть один товар(не умаляя общности он будет под номером 1), который можно обменять на любой другой, то есть 1i01\to i\neq 0, тогда можно определить цены товаров, как

pi=i1=11ip_i=i\to 1=\frac{1}{1\to i}

И далее, как раньше, элементы матрицы будут задаваться, как:

kij=pipj=i1j1=i1jk_{ij}=\frac{p_i}{p_j}=\frac{i\to 1}{j\to 1}=i\to 1\to j

То есть, вся матрица будет задаваться коэффициентами обмена первого товара. Значит его можно убрать из списка товаров, сделать валютой и применить теорию с валютой, описанную выше.

Теперь, пусть некоторые товары нельзя обменять друг на друга: ij=ji=0i→j=j→i=0. Это потребует небольшого уточнения определения матрицы KK, но ничего страшного не произойдет. Тогда (кажется, что) матрица KK будет представима в блочно-диагональном виде:

K=(K100000K20000000000Kl100000Kl)K=\begin{pmatrix}K_1 & 0 & 0 & 0 & 0 \\ 0 & K_2 & 0 & 0 & 0 \\ 0 & 0 & \ddots & 0 & 0 \\ 0 & 0 & 0 & K_{l-1} & 0 \\ 0 & 0 & 0 & 0 & K_l\end{pmatrix}

Причем матрицы K1..KlK_1..K_l не содержат нулевые элементы, то есть набор товаров разделен на ll групп, в которых любой товар внутри группы можно обменивать на любой другой товар той-же группы. Мне лень строго это доказывать, но кажется, что это верно, в силу следующего факта:

{ij=0 ik0{ij=0 ki0kj=kij=0\left\{\begin{matrix}i\to j=0 \\ i\to k\neq 0\end{matrix}\right.\Rightarrow\left\{\begin{matrix}i\to j=0 \\ k\to i\neq 0\end{matrix}\right.\Rightarrow k\to j=k\to i\to j=0

Если это действительно так, то для каждой группы можно взять любой товар из нее, как валюту для этой группы и уменьшить общий набор товаров до nln-l при этом упростив всю матрицу обмена до вектора цен.