Опубликован: 04.03.2008 | Доступ: свободный | Студентов: 1626 / 46 | Оценка: 4.56 / 3.67 | Длительность: 30:07:00
ISBN: 978-5-9556-0099-4
Специальности: Программист, Математик
Лекция 6:

Алгоритмы вычисления размерностных многочленов

13.8. ПРИМЕР. Найдем значение \mu_1(E) для матрицы

E=\left(\smallmatrix  0&0&1&1\\ 
0&1&0&1\\0&1&1&0\\1&0&0&1\\1&0&1&0\\1&1&0&0
   \endsmallmatrix\right).
Применяя лемму 13.5, получаем \mu_1(E) = \mu_1(E_1) -
\mu_1(E_2), где
E_1 =\left(\smallmatrix 0&1&1\\ 1&0&1\\1&1&0\\0&0&1\\0&1&0\\1&0&0
\endsmallmatrix\right),
E_2=\left(\smallmatrix 0&1&1\\ 1&0&1\\1&1&0
\endsmallmatrix\right).
Легко видеть, что три первых строки матрицы E_1 являются "лишними", поэтому
\mu_1(E_1) = \mu_1\left(\left(\smallmatrix 0&0&1\\
0&1&0\\1&0&0 \endsmallmatrix\right)\right)=-1
(см. п.5 леммы 13.3). Применяя еще раз лемму 13.5, получаем (в силу утверждений леммы 13.3, что \mu_1(E_2) = \mu_1\left(\left(\smallmatrix
1&1\\ 0&1\\1&0
\endsmallmatrix\right)\right)-\mu_1((1,1))=1+1=2. Следовательно, \mu_1(E) =
\mu_1(E_1) - \mu_1(E_2) = -3.

Другой метод вычисления \mu_1(E) основан на лемме 13.7:

\begin{align*}
  \mu_1(E)&= \mu_1\left(\left(\smallmatrix 0&1&0&1\\
  0&1&1&0\\1&0&0&1\\1&0&1&0\\1&1&0&0 \endsmallmatrix\right)\right)
  -
  \mu_1\left(\left(\smallmatrix 0&1\\ 0&1\\
1&0\\1&0\\1&1\endsmallmatrix\right)\right) \\
  &=\mu_1\left(\left(\smallmatrix 0&1&1&0\\1&0&0&1\\1&0&1&0\\1&1&0&0
    \endsmallmatrix\right)\right)- \mu_1\left(\left(\smallmatrix 0&1\\1&0\\1&0
  \endsmallmatrix\right)\right)- 1\\
  &=\mu_1\left(\left(\smallmatrix 1&0&0&1\\1&0&1&0\\1&1&0&0
    \endsmallmatrix\right)\right)- \mu_1\left(\left(\smallmatrix 1&1\\1&0\\1&0
   \endsmallmatrix\right)\right) - 2\\
  &=\mu_1\left(\left(\smallmatrix
  1&0&1&0\\1&1&0&0 \endsmallmatrix\right)\right)- \mu_1\left(\left(\smallmatrix
  0&1\\ 1&0 \endsmallmatrix\right)\right) - 2=-3.
\end{align*}

В качестве следствия леммы 13.7 получаем следующее утверждение, на котором основан алгоритм вычисления размерностного многочлена матрицы (см. ниже алгоритм A11 ).

13.9. ЛЕММА. Пусть E = (e_{ij})_{\substack{1\leq i\leq n\\ 1\leq j\leq
m}} - n\!\times\!
m -матрица над \mathbb N и \tau = (\tau_1,\dots,\tau_m) \in T =
T(E) (как и выше, T(E) обозначает множество всех допустимых векторов матрицы E, т. е. множество всех элементов \tau \in
\mathbb N^m, равных либо (0,\dots,0), либо наименьшему общему кратному некоторых строк матрицы E ). Пусть K - матрица, состоящая из всех тех строк матрицы E, которые мажорируются вектором \tau (для определенности предположим, что строки матрицы K располагаются в том же порядке, в каком они расположены в матрице E ). Кроме того, пусть \mbk =
(k_1,\dots,k_m) - одна из строк матрицы K и K\setminus\mbk - матрица, полученная удалением строки \mbk из K. Тогда для любого подмножества J
=\{ i_1,\dots,i_l\} множества \mathbb N_m, такого, что i_1<\dots<i_l\ (1\leq l\leq m), имеем

\begin{equation}
  \mu_\tau (K,m) = \mu_\tau (K\setminus\mbk,m) - \mu_{\tau'}
  (K\setminus\mbk,J),
\end{equation} ( 13.6)
где \mu_\tau (K,m), \mu_\tau(K\setminus\mbk,m) суть соответственно коэффициенты \mu_\tau, определенные формулой (13.2) для матриц K и K\setminus\mbk, а \mu_{\tau'}(K\setminus\mbk,J) - аналогичные коэффициенты для вектора \tau'=(\tau_{i_1},\dots,\tau_{i_l})\in\mathbb N^l (вместо \tau ) и для (n-1)\!\times\!(m-l) -матрицы, полученной из E удалением столбцов с индексами j\in\mathbb N_m\setminus J.

ДОКАЗАТЕЛЬСТВО. Без потери общности можно предположить, что \mbk - первая строка матрицы K. Из леммы 13.1 следует, что

\mu_\tau(K,m) = \mu_1(H)
, где H=
(h_{ij})_{\substack{1\leq i\leq n\\ 1\leq j\leq m}} - n\!\times\! m -матрица с элементами h_{ij}=\begin{cases} 1, &\text {если } e_{ij}= \tau_j,\\
0, &\text {если
} e_{ij}\neq\tau_j,\end{cases} (i = 1,\dots,n). Аналогично, \mu_\tau(K\setminus\mbk,m) =
\mu_1(H_1) и \mu_{\tau'}(K\setminus\mbk,J) = \mu_1(H_2), где матрица H_1 получена из H отбрасыванием первой строки, а H_2 получена из H_1 отбрасыванием столбцов с индексами i_1,\dots,i_l. Применяя теперь лемму 13.7, получаем соотношение \mu_1(H) =
\mu_1(H_1) - \mu_1(H_2), из которого следует требуемое утверждение.

Вычисление коэффициентов \mu_\tau (\tau \in T =
T(E)) в (13.4) для размерностного многочлена произвольной n\!\times\!
m -матрицы E (а, значит, и вычисление самого размерностного многочлена) может быть выполнено по следующей схеме: сначала применяем (13.6) к матрице E (формируя матрицу K тех строк матрицы E, которые мажорируются вектором \tau. Ясно, что коэффициенты \mu_\tau для матриц K и E совпадают). Затем вычисляем значения \mu_\tau(K\setminus\mbk,m) и \mu_{\tau'}(K\setminus\mbk,J), снова применяя (13.6) и т. д., пока не получим "пустые" матрицы (т. е. матрицы с нулевым числом строк).

А11. АЛГОРИТМ (E, n,m, T, \mu).

\begin{equation*}\\
&\text{Дано: \qquad $m \in \mathbb N$,$n \in \mathbb N$;$E$-$n\!\times\! m$-матрица}\\
&\text{Надо: \qquad $T$-множество допустимых векторов матрицы $E$;}\\
&\text{ \qquad \qquad $\mu$- вектор типа $\mathbb Z$ с индексами из $T$.}\\
&\text{Переменные: $J$ - множество типа $1..m$;}\\
   		\text{\qquad \qquad $K$- множество типа \{вектор типа $\mathbb N$ с индексами $1..m$\}.}\\
 \text{Начало} \\
\text{сформировать множество $T$ допустимых векторов}\\
\text{цикл для каждого $\tau\in T$}\\
         \text{\qquad \qquad $\mu_\tau:= 0$}\\
\text{\qquad \qquad          $J:= \{ 1,\dots,m\}$}\\
\text{\qquad \qquad          $K:= \{ \textbf{e}_i \mid \textbf{e}_i\leq \tau \} \text { где } \textbf{e}_i$
- строка матрицы $E$}\\
        \text{ \qquad \qquad $v_\tau := 1$}\\
       \text{\qquad \qquad   NEXTINDEX $(J, K, v_\tau, \mu_\tau)$}\\
\text{конец цикла}\\
\text{Конец}\\
\text{Алгоритм NEXTINDEX $(J, K, v_\tau, \mu_\tau)$}\\
\text{Дано: $J$- множество типа $1..m$}\\
    \text{\qquad $K$- множество типа \{вектор типа $\mathbb N$ с индексами $1..m$\}.}\\
    \text{\qquad $v_\tau$ - элемент типа $\pm 1$}\\
\text{Надо:}\\
\text{$\mu_\tau$ - вектор типа $ \mathbb N$ с индексами из $T$.}\\
\text{Глобальные переменные: $m \in \mathbb N;$}\\
   \text{\qquad $\tau$ - вектор типа $\mathbb N$ с индексами $1..m$.}\\
\text{Начало}\\
\text{цикл для каждой строки $\textbf{k}=\{k_1,\dots,k_m\}$ матрицы $K$, такой,}\\
 \text{\qquad  что $k_{i_1}=\tau_{i_1}$,}\\
  \text{\qquad где $i_1$- первый элемент множества $J$}\\
  \text{\qquad $K := K \setminus \textbf{k}$}\\
  \text{\qquad $v_\tau := - v_\tau$}\\
  \text{\qquad $J' := \{ j \in J \mid k_j=\tau_j\}$}\\
  \text{\qquad $J=J\setminus J'$}\\
  \text{\qquad выбор}\\
  \text{\qquad \qquad $K=\emptyset \& J=\emptyset \implies \mu_\tau:= \mu_\tau+v_\tau$}\\
  \text{\qquad \qquad $K\neq\emptyset \& J\neq\emptyset \implies \text{\tt NEXTINDEX}(J,K, v_\tau, \mu_\tau)$}\\
  \text{\qquad конец выбора}\\
  \text{\qquad $J := J \cup J'$}\\
\text{конец цикла}\\
\text{Конец}
\end{equation*}

Чтобы оценить асимптотическую сложность алгоритма A11 для достаточно больших n \in \mathbb N, заметим, прежде всего, что при фиксированном векторе \tau =
(\tau_1,\dots,\tau_m) \in T построение K=K(\tau ) требует не более mn сравнений чисел (на этом шаге мы запоминаем все пары (k,j) \in \mathbb N_n \times \mathbb N_m, для которых e_{kj}=
\tau_j ). Далее, выполнение элементарных операций для всех вызовов алгоритма NEXTINDEX (для фиксированного \tau ) требует не более h_1h_2\dots
h_m сравнений, где h_\nu=h_\nu(\tau) (1\leq\nu\leq
m) обозначает число строк \textbf{k}=(k_1,\dots,k_m) матрицы K(\tau), таких, что k_\nu=\tau_\nu для всех \nu=1,\dots,m. Легко видеть, что общее число операций для всех вызовов алгоритма NEXTINDEX (с точностью до постоянного множителя это число равно \sum\limits_{\tau\in T}h_1(\tau)\dots h_m(\tau ) ) не превосходит $\Card \{(a_1,\dots,a_m) \in \mathbb N^m \mid \text{ для каждого } \nu \in \mathbb N_m$ для каждого \nu \in
\mathbb N_m существует i=i(\nu
)\in\mathbb N_n, такое, что a_\nu= e_{i\nu}\} , и это не превосходит n^m. Поэтому для достаточно больших n\in\mathbb N асимптотическая сложность алгоритма A11 имеет порядок n^{m+1}.

Марина Подлевских
Марина Подлевских

Пожалуйста, проясните ситуацию. Был выбран курс " Компьютерная алгебра" для самостоятельного изучения. Как теперь записаться на этот курс с целью получения диплома о повышении квалификации? На данный момент он имеет статус " изучаю". Если я пройду экзаменационный тест в таком статусе без оформления документов и оплаты диплома, придется ли еще раз регистрироваться на этот курс и заново проходить тестирование?