 
где  определено следующим образом:
 определено следующим образом: 
 
 - обозначение целой части х. Тогда транспонирование матрицы А можно выполнить за
 - обозначение целой части х. Тогда транспонирование матрицы А можно выполнить за  шагов следующим образом.
 шагов следующим образом. 
Шаг 1. Сформируем  матриц размерами
 матриц размерами  из последовательных строк А. Каждую такую матрицу можно разбить на
 из последовательных строк А. Каждую такую матрицу можно разбить на  матриц
 матриц  возможно, дополнив ее предварительно нулями [не более
 возможно, дополнив ее предварительно нулями [не более  нулей]. Эти квадратные матрицы можно теперь транспонировать на месте. В результате получим матрицу
 нулей]. Эти квадратные матрицы можно теперь транспонировать на месте. В результате получим матрицу  элементами которой будем считать подматрицы
 элементами которой будем считать подматрицы  — фрагменты строк. При таком рассмотрении матрица
 — фрагменты строк. При таком рассмотрении матрица  имеет размеры
 имеет размеры  
 
Определим индуктивно  шаг, считая первые М шагов выполненными.
 шаг, считая первые М шагов выполненными. 
Шаг i. На шаге  начнем с матрицы
 начнем с матрицы  размерами
 размерами  Элементами этой матрицы являются подматрицы — фрагменты строк размерами
 Элементами этой матрицы являются подматрицы — фрагменты строк размерами  Затем из строк матрицы
 Затем из строк матрицы  строим
 строим  подматриц
 подматриц  Каждая из этих подматриц формируется из тех строк матрицы
 Каждая из этих подматриц формируется из тех строк матрицы  которые находятся в ней на расстоянии
 которые находятся в ней на расстоянии  строк друг от друга. Выбор строк для каждой подматрицы выполняется следующим образом. Если обработано
 строк друг от друга. Выбор строк для каждой подматрицы выполняется следующим образом. Если обработано  строк
 строк  то выбираются
 то выбираются  строк, начиная с первой необработанной строки, т. е. строки
 строк, начиная с первой необработанной строки, т. е. строки  так, что каждая следующая выбираемая строка отстоит от предыдущей (уже выбранной) на
 так, что каждая следующая выбираемая строка отстоит от предыдущей (уже выбранной) на  строк 1. Следовательно, типичная подматрица состоит из строк, номера которых в матрице
 строк 1. Следовательно, типичная подматрица состоит из строк, номера которых в матрице  определяются выражением
 определяются выражением  где
 где  , а значения
, а значения  из указанных выше диапазонов зафиксированы для каждой подматрицы.
 из указанных выше диапазонов зафиксированы для каждой подматрицы. 
Сформированные подматрицы, при необходимости дополненные нулями, можно разбить на  матриц
 матриц  Элементами этих квадратных матриц будем считать фрагменты строк размерами
 Элементами этих квадратных матриц будем считать фрагменты строк размерами  Матрицы транспонируются, и получается матрица
 Матрицы транспонируются, и получается матрица  с размерами
 с размерами  с элементами-подматрицами
 с элементами-подматрицами  Эти элементы являются фрагментами строк матрицы-результата А.
 Эти элементы являются фрагментами строк матрицы-результата А. 
 
Приведенное описание алгоритма дает интуитивное ощущение того, каким образом формируются строки матрицы А как части записей матрицы  Это описание полезно также при анализе эффективности алгоритма. Однако из него не следует непосредственно, каким образом каждый элемент оказывается в конце концов на правильном месте. Поэтому опишем алгоритм по-другому, безотносительно к разбиениям, так, чтобы иметь возможность доказать работоспособность алгоритма и одновременно показать, как он может быть реализован.
 Это описание полезно также при анализе эффективности алгоритма. Однако из него не следует непосредственно, каким образом каждый элемент оказывается в конце концов на правильном месте. Поэтому опишем алгоритм по-другому, безотносительно к разбиениям, так, чтобы иметь возможность доказать работоспособность алгоритма и одновременно показать, как он может быть реализован. 
Вначале рассмотрим случай, когда  Пусть
 Пусть  обозначает положение в матрице
 обозначает положение в матрице  (не рассматриваемой больше как фрагментированная) элемента
 (не рассматриваемой больше как фрагментированная) элемента  матрицы
 матрицы  . Отметим, что
. Отметим, что  и I можно единственным способом представить в виде
 и I можно единственным способом представить в виде 
 
где  определяется выражением (2.11). Представление (2.15) очевидным образом получается из главных остатков при последовательном делении на т.,
 определяется выражением (2.11). Представление (2.15) очевидным образом получается из главных остатков при последовательном делении на т.,  (подобно тому, как при обычной системе счисления). Для упрощения будем использовать обозначения
 (подобно тому, как при обычной системе счисления). Для упрощения будем использовать обозначения 
 
Теперь шаг 1 означает, что матрица А разбита на подматрицы  которые затем транспонируются. Следовательно,
 которые затем транспонируются. Следовательно, 
 
поскольку  определяют, к какой именно подматрице
 определяют, к какой именно подматрице  принадлежит данный элемент.
 принадлежит данный элемент. 
По индукции предположим, что после Н шагов имеем 
 
Шаг  можно теперь описать следующим образом. Будем считать, что матрица разбита на подматрицы размерами Затем внутри каждой подматрицы сформируем матрицы
 можно теперь описать следующим образом. Будем считать, что матрица разбита на подматрицы размерами Затем внутри каждой подматрицы сформируем матрицы  выбирая всевозможные комбинации из строк и
 выбирая всевозможные комбинации из строк и  столбцов, разделенных
 столбцов, разделенных  строками (столбцами). Это означает, что
 строками (столбцами). Это означает, что  остаются неизменными, так как они определяют конкретную матрицу
 остаются неизменными, так как они определяют конкретную матрицу  с которой мы работаем. То же относится и к
 с которой мы работаем. То же относится и к  поскольку эти значения определяют матрицу
 поскольку эти значения определяют матрицу  к которой принадлежит элемент. В этой матрице элемент
 к которой принадлежит элемент. В этой матрице элемент  перед транспонированием находится в строке
 перед транспонированием находится в строке  и столбце
 и столбце  Поэтому после транспонирования его положение в матрице
 Поэтому после транспонирования его положение в матрице  определяется:
 определяется: 
 
 
Следовательно,  Это и доказывает, что
 Это и доказывает, что  занимает правильное положение в Отсюда видно, что транспонирование выполняется как последовательный обмен разрядами в выражении (2.15), которое является представлением номеров строки и столбца в позиционно-численном представлении по смешанному основанию. В частности, если
 занимает правильное положение в Отсюда видно, что транспонирование выполняется как последовательный обмен разрядами в выражении (2.15), которое является представлением номеров строки и столбца в позиционно-численном представлении по смешанному основанию. В частности, если  для всех
 для всех  то получаем алгоритм, описанный в [2.7, 2.9].
 то получаем алгоритм, описанный в [2.7, 2.9]. 
Остается только установить соотношение между  и А. Если
 и А. Если  первые
 первые  строк
 строк  очевидно, являются строками А, тогда как последние
 очевидно, являются строками А, тогда как последние  строк содержат только нули. В сущности, никогда нет необходимости создавать эти строки. С другой стороны, если
 строк содержат только нули. В сущности, никогда нет необходимости создавать эти строки. С другой стороны, если  то строки матрицы
 то строки матрицы  также содержат
 также содержат  нулей в конце каждой строки. Эти нулевые части строк, как и нулевые строки, никогда не следует записывать в выходную матрицу.
 нулей в конце каждой строки. Эти нулевые части строк, как и нулевые строки, никогда не следует записывать в выходную матрицу. 
Случай  может быть рассмотрен аналогично, если в (2.15) записать
 может быть рассмотрен аналогично, если в (2.15) записать 
 
при  для
 для  . Конечное положение
. Конечное положение  теперь будет
 теперь будет  где
 где 
 
В этом случае строки матрицы  содержат одну
 содержат одну  или несколько
 или несколько  строк матрицы А. Записывая
 строк матрицы А. Записывая  как расчлененную на матрицы
 как расчлененную на матрицы  где
 где  определяется (2.13),
 определяется (2.13), 
 
получим А как 
 
Следует заметить, что эти операции, так же как и отбрасывание нулей, выполняются при формировании выходных записей на шаге  без дополнительной обработки данных.
 без дополнительной обработки данных. 
Если  , то, по крайней мере, для некоторых произведений М алгоритм сначала будет транспонировать матрицы
, то, по крайней мере, для некоторых произведений М алгоритм сначала будет транспонировать матрицы  где
 где  а затем отсекать
 а затем отсекать  или расщеплять
 или расщеплять  строки.
 строки. 
Если строки матриц  создаются при выводе на внешнее
 создаются при выводе на внешнее  эффективность алгоритма по требуемому числу ячеек ОЗУ на
 эффективность алгоритма по требуемому числу ячеек ОЗУ на  шаге характеризуется
 шаге характеризуется 
 
 
М дополнительных ячеек памяти позволили бы действительно сформировать строки матрицы А в ОЗУ, что представляет интерес при выполнении двумерных преобразований. Однако это легко можно сделать посредством транспонирования в основную память, не используя дополнительные ячейки, если  или применяя
 или применяя  дополнительных ячеек, если
 дополнительных ячеек, если  (см. разд. 2.7). Оказывается, что для оптимального разбиения обычно
 (см. разд. 2.7). Оказывается, что для оптимального разбиения обычно  
 
Можно заметить, что транспонирование в основной памяти на каждом шаге, вместо формирования выходной записи в заданном порядке, оказывается не только более медленным, но и требует большего объема памяти. Точнее говоря, имеем 
 
В дальнейшем покажем (см. подраздел 2.3.1), что значение  увеличивается с ростом
 увеличивается с ростом  откуда и следует, что
 откуда и следует, что  
 
Если строки матрицы  состоящие из нулей, не записываются, то необходимое число операций ввода-вывода будет определяться выражением:
 состоящие из нулей, не записываются, то необходимое число операций ввода-вывода будет определяться выражением: 
 
Если  то представленный здесь алгоритм обладает тем свойством, что все матрицы
 то представленный здесь алгоритм обладает тем свойством, что все матрицы  содержат по М строк, в то время как содержит
 содержат по М строк, в то время как содержит  строк, если нули в ней отброшены. Отсюда вытекает, что число операций ввода-вывода зависит только от числа множителей М. Если, как упоминалось ранее, пренебречь изменением (увеличением) длины строк, то можно оптимизировать алгоритм для заданных Мир, минимизируя требуемое число ячеек ОЗУ. Далее будет показано, как при некоторых условиях можно определить оптимальную в этом смысле факторизацию М. Если же эти условия не выполняются, оптимум можно легко найти в каждом конкретном случае. Кроме того, будет продемонстрирована зависимость решения от
 строк, если нули в ней отброшены. Отсюда вытекает, что число операций ввода-вывода зависит только от числа множителей М. Если, как упоминалось ранее, пренебречь изменением (увеличением) длины строк, то можно оптимизировать алгоритм для заданных Мир, минимизируя требуемое число ячеек ОЗУ. Далее будет показано, как при некоторых условиях можно определить оптимальную в этом смысле факторизацию М. Если же эти условия не выполняются, оптимум можно легко найти в каждом конкретном случае. Кроме того, будет продемонстрирована зависимость решения от  Если
 Если  то факторизация, минимизирующая требования к памяти, не будет минимизировать требуемое число операций ввода-вывода, однако число операций ввода-вывода для разных факторизаций с одним и тем же числом сомножителей меняется незначительно. В связи с этим можно предложить простой алгоритм, который итеративно с увеличением М быстро находит факторизацию, минимизирующую требования к памяти для каждого
 то факторизация, минимизирующая требования к памяти, не будет минимизировать требуемое число операций ввода-вывода, однако число операций ввода-вывода для разных факторизаций с одним и тем же числом сомножителей меняется незначительно. В связи с этим можно предложить простой алгоритм, который итеративно с увеличением М быстро находит факторизацию, минимизирующую требования к памяти для каждого  . Поскольку
. Поскольку  легко определить, какое из этих решений является самым дешевым с точки зрения объема памяти и операций ввода-вывода. В общем, таким способом можно определить стратегию, близкую к глобальному оптимуму. Этот подход будет описан в разд. 2.4.
 легко определить, какое из этих решений является самым дешевым с точки зрения объема памяти и операций ввода-вывода. В общем, таким способом можно определить стратегию, близкую к глобальному оптимуму. Этот подход будет описан в разд. 2.4.