В этом видео мы спасем принцессу Алису и Беатриче от злобного дракона с помощью линейной алгебры. Итак, в некотором царстве, в некотором государстве жили-были принцессы Алиса и Беатриче. А еще там жил злобный дракон, и злобные драконы отличаются в этом царстве очень странным поведением — они похищают принцесс сразу, обеих, а дальше сажают их в разные башни, и принцессе Алисе злобный дракон показывает шахматную доску и загадывает на шахматной доске одну из клеток, пусть будет G5. Алиса знает, какую клетку загадал злобный дракон. Дальше, злобный дракон в присутствии Алисы кладет на клетки шахматной доски монетки — какую-то орлом вверх, какую-то решкой вверх. Давайте для простоты нолик — это будет орлом вверх, а единичка — это будет решкой вверх, соответственно. Загадав клетку шахматной доски, злобный дракон так, как сам хочет, расставляет орлы и решки на шахматной доске: на каждую клетку он кладет по одной монетке и так далее. Алиса знает, видит, как разложены монетки, и видит, в смысле знает, как, какую клетку загадал злобный дракон. А дальше злобный дракон говорит ей: "Теперь ты должна перевернуть одну из монеток". Алиса выбирает, какую монетку перевернуть, и дальше злобный дракон отводит Алису в другую комнату, а в комнату с шахматной доской приводит Беатриче. И если Беатриче, глядя на то, как разложены монетки на шахматной доске, сможет угадать, какую клетку загадал дракон, то Алиса и Беатриче будут спасены, а ежели нет, то злобный дракон их съест вместе с тортиком. Что ж, как же спастись Алисе и Беатриче? Поскольку драконы в этом царстве давно известны таким поведением, давно известны похищением принцесс и загадыванием задачек с шахматной доской, то Алиса и Беатриче могут заранее договориться. Посмотрим, как же им решить такую, казалось бы, невозможную задачу, ведь монетки на доске раскладывает дракон по своему желанию. Было бы легко, если бы он, скажем, разложил все монетки орлами кверху — тогда можно было бы просто перевернуть на решку ту монетку, которая находится на клетке, загаданной драконом, и тем самым подать сигнал Беатриче. Но, к сожалению, так сделать нельзя, потому что дракон сам кладет монетки на шахматную доску, как хочет. Давайте, как всегда, универсальный принцип в математике — решим более простую задачу. Давайте рассмотрим совсем простую шахматную доску, она такая очень-очень простая шахматная доска. Дракон раскладывает здесь монетки и загадывает какую-то клетку. Давайте закодируем, как всегда, векторами две вещи: загаданную клетку, и как монетки разложены на шахматной доске. Давайте будем нумеровать клетки: первая, вторая, третья, четвертая, и, соответственно, мы получим, что на шахматной доске разложена позиция (монетками) (0, 1, 1, 1), вот это — монетки (вектор, который отвечает за расположение монеток), и у нас есть вектор, который отвечает за позицию, загаданную драконом. Оба этих вектора известны Алисе. Соответственно, Алиса знает не только этот вектор, но Алиса знает также и вектор, в данном случае загадана третья позиция. Если мы тройку запишем в двоичной системе счисления: 3 — это 2 плюс 1, соответственно, этой позиции на доске соответствует вектор (1, 0) плюс вектор (0, 1), соответствует вектор (1, 1). Итак, что должна сделать Алиса? Загаданная клетка закодирована вектором (1, 1), а позиция монеток закодирована вектором (0, 1, 1, 1). Алиса должна исправить одну из компонент этого вектора так, чтобы Беатриче, увидев исправленный вектор расположения монеток, угадала бы загаданную клетку. На самом деле Алисе и Беатриче вполне хватит линейных отображений. Давайте рассмотрим линейный оператор, который переводит вектор (х1, х2, х3, х4) в вектор, который описывает координаты загаданной клетки — какое-то у1 и какое-то у2. Для этого мы шахматную доску разобьем на две зоны — на вертикальную зону и горизонтальную зону, соответственно. Давайте разобьем шахматную доску и выделим на шахматной доске вертикальную зону V (вторая часть — это будет дополнение к V), и горизонтальную зону H и дополнение к ней (H-дополнение), вторая горизонтальная строка. И наш линейный оператор будет просто складывать положение монеток на вертикальной составляющей и на горизонтальной, то есть вот здесь мы получим, соответственно, x1 относится к вертикальной зоне, x3 относится к вертикальной зоне, пусть первая часть — это будет вертикальная составляющая, а вторая — это горизонтальная (сумма монеток на вертикальной части и на горизонтальной). Соответственно, на вертикальной части у нас находится первая и третья координаты, значит, это (x1 плюс x3); на горизонтальной части находятся первая и вторая, (х1 плюс x2). Соответственно, давайте посмотрим: если расположение такое, как сейчас, то у нас получается, что сумма компонент в настоящий момент — (х1 плюс х3) равно единичке, а (х1 плюс х2) (1 плюс 0) равно единичке. Получается, в данной ситуации, нарисованной, как раз так совпало, что этот вектор, разложенный драконом, передает как раз загаданную им клетку. В этом случае Алиса не должна никак менять сумму (х1 плюс х3, х1 плюс х2) — для этого ей достаточно перевернуть четвертую монетку. В этом случае решение Алисы: перевернуть четвертую монетку, получить шахматную доску (0, 1, 1, 0) и передать эту информацию Беатриче. Тогда Беатриче, сложив вертикальную компоненту и горизонтальную компоненту шахматной доски, получит координаты (1, 1) и догадается, что дракон загадал третью клетку. Если же, например, конфигурация, разложенная драконом, будет другая (дракон вполне себе мог бы сделать какую-нибудь бяку и разложить монетки (1, 1, 1, 0), тогда, естественно, применяя (если записывать эту доску вектором, то мы получим (1, 1, 1, 0), если мы применяем наш линейный оператор к этому вектору, который суммирует горизонтально расположенные монетки в первой строке и вертикально расположенные монетки в первом столбце, то мы получим: вертикальная сумма равна нулю, горизонтальная сумма тоже равна нулю, а при этом дракон по-прежнему загадывает клетку три. Чтобы передать сигнал, что загадана клетка три, Алиса будет должна исправить сразу оба бита в передаваемой позиции — Алиса хочет исправить на (1, 1). Давайте посмотрим, что для этого надо сделать. Для этого в нашем линейном отображении надо исправить оба бита, то есть х1, и в этом случае Алиса переворачивает первую монетку, находящуюся в первой клетке, превращает ситуацию (1, 1, 1, 0) в ситуацию (0, 1, 1, 0), которая, как известно, нашим вектором кодируется как (0, 1, 1, 1), и линейный оператор L превращает это как раз в (1, 1). Соответственно, получается, что, применив линейный оператор L и посмотрев, какая клетка загадана, Алиса получает информацию о том, какую монетку нужно перевернуть, и таким образом обе принцессы будут спасены и смогут скушать тортик.