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

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

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

В предыдущем параграфе (см.12.7) мы отмечали, что размерностный многочлен любого множества F\subseteq \N^m равен размерностному многочлену, ассоциированному с множеством всех минимальных элементов множества F. Значит, достаточно уметь вычислять размерностные многочлены только для конечных множеств F\subseteq\N^m (более того, можно предполагать, что элементы множества F попарно несравнимы относительно порядка произведения).

Пусть E=(e_{ij})_{\substack{1\leq i\leq n\\ 1\leq j \leq m}} обозначает n\!\times\!
m -матрицу над \mathbb N, т. е. матрицу с n строками и m столбцами, элементы которой - неотрицательные целые числа. Рассматривая строки матрицы E как элементы множества \mathbb N^m и обозначая i -ю строку (e_{i1},\dots,e_{im}) через \be_i (1\leq
i\leq n), мы получим подмножество \tilde
E=\{\be_1,\dots,\be_n\} \subseteq\mathbb N^m, ассоциированное с E. Напомним, что размерностный многочлен n\!\times\! m -матрицы E в точности совпадает с размерностным многочленом множества \tilde E и называется многочленом Гильберта матрицы E.

Пусть \omega_E(t) - размерностный многочлен n\!\times\!m -матрицы E над \mathbb N. По определению \omega_E(s)=\Card V_E(s) для всех достаточно больших s\in\mathbb N, где V_E обозначает множество всех элементов из \mathbb N^m\setminus \tilde E, которые не превосходят ни одного элемента из \tilde E относительно порядка произведения, так что v\in V_E если и только если неравенство \be_i\leq
v не выполняется ни для одного \be_i (1\leq i\leq
n).

Как было отмечено, для того, чтобы уметь вычислять размерностный многочлен любого подмножества в \mathbb N^m, достаточно уметь вычислять его для любой n\!\times\! m -матрицы E над \mathbb N. Один из методов вычисления основан на формуле (12,4).

Пусть E=(e_{ij})_{\substack{1\leq i\leq n\\ 1\leq j \leq m}} обозначает n\!\times\!m -матрицу над \mathbb N. Воспользуемся следующими обозначениями, введенными в параграфе 12:

\textbf{e}_\xi=\begin{cases} (0,\dots,0) &\text{если }
\xi=\emptyset,\\
    (e_1=\max_{i\in\xi}\{ e_{i1}\} ,\dots,e_m=
   \max_{i\in\xi}\{ e_{im}\} ) &\text{если } \xi\neq \emptyset
\end{cases}
для любого подмножества \xi\subseteq\mathbb N_n и |\textbf{e}_\xi|=\smash{\sum\limits_{j=1}^m}e_j. По предложению 12.9 (см. 12.4) мы можем записать
\omega_E(t) = \binom {t+m}m +\sum_{l=1}^n(-1)^l
\sum_{\xi\in A(l,n)}\binom{t+m-|\textbf{e}_\xi|}m,
где A(l,n) (1\leq l\leq n) обозначает множество всех l -элементных подмножеств множества \mathbb N_n=\{1,\dots,n\}.

Пользуясь выписанной формулой, можно предложить следующий алгоритм вычисления размерностного многочлена \omega_E(t), ассоциированного с n\!\times\! m -матрицей E.

А9. АЛГОРИТМ (E, n, m, \omega).

\begin{tabing}
&\text{Дано: $n \in  \mathbb N ; m \in  \mathbb N ; n \times m$-матрица E}.\\
&\text{Надо: $\omega_E(t)$ — многочлен Гильберта матрицы $E$.}\\
&\text{Переменные: $IB$ — вектор типа $true/false$ с индексами $1..n$;}\\
&\text{\qquad \qquad $\textbf{v} = (v1, . . . , vm)$ — вектор типа $N$ с индексами $1..m$;}\\
&\text{\qquad \qquad $S_1$ — переменная типа $\pm 1$;}\\
&\text{\qquad \qquad $S_2$ — переменная типа $ \mathbb N $.}\\
&\text{Начало}\\
\text{$\omega(t) := \binom {t+m}m$}\\
\text{цикл для $m$ каждого вектора $IB$}\\
\text{\qquad $v := (0, . . . , 0)$}\\
\text{\qquad $S_1 := 1$}\\
\text{\qquad цикл для $j$ от $1$ до $n$}\\
\text{\qquad \qquad если $IB(j)$ то}\\
\text{\qquad \qquad \qquad $\textbf{v} := НОК(\textbf{v}, \textbf{e}_j)$}\\
\text{\qquad \qquad \qquad $S_1 := -S_1$}\\
\text{\qquad \qquad конец если}\\
\text{\qquad \qquad $S_2 := \textbf{v}_1 + \dots + \textbf{v}_m$}\\
\text{\qquad \qquad $\omega(t) := \omega(t) + S_1\binom {t+m-S_2}m$}\\
\text{\qquad конец цикла}  \\
\text{конец цикла}\\
\text{Конец}\\
\end{tabing}

Легко видеть, что асимптотическая сложность алгоритма A9 имеет порядок n\!\times\! 2^n, где n - число строк матрицы E (по теореме 12.8 мы можем считать, что строки попарно несравнимы относительно порядка произведения на \mathbb N^m ).

Мора и Меллер модифицировали алгоритм вычисления многочлена Гильберта [ 27 ] . Их алгоритм основан на следующих соображениях. Легко видеть, что в формуле (12.5) может выполняться равенство \textbf{e}_\xi=\textbf{e}_\theta для двух различных подмножеств \xi и \theta множества \mathbb N_n, таких, что \Card\xi и \Card\theta являются четным и нечетным числами соответственно (мы пользуемся обозначениями предложения 12.9). Тогда соответствующие слагаемые в формуле (12.5) сократятся. Более того, можно сгруппировать все слагаемые, соответствующие одному и тому же элементу \tau \in\mathbb N^m.

Пусть T=T(E) - множество всех элементов \tau\in\mathbb N^m, которые равны, по крайней мере, одному из элементов \textbf{e}_\xi, где \xi\subseteq\mathbb N_n. Тогда из формулы (12.4) следует, что

\begin{multiline}
  \omega_E(t) =\sum_{\tau\in T}\sum_{k=0}^n(-1)^k\sum_{\{\xi\in A(k,n)\mid
  \textbf{e}_\xi=\tau\} } \binom {t+m-|\tau|}m\\
     =\sum_{\tau\in  T}  \mu_\tau
  \binom {t+m-|\tau|}m,\
\end{multiline} ( 13.1)
где |\tau| обозначает сумму всех координат вектора \tau, и
\begin{equation}
  \mu_\tau=\sum\limits_{k=0}^n\sum\limits_{\substack{ \xi\in A(k,n)\\\textbf{e}_\xi=\tau}
  }(-1)^k.
\end{equation} ( 13.2)

Очевидно, если матрица E_1 получена присоединением строки \textbf{e} =
(e_1,\dots,e_m) к матрице E, T_1= T(E_1) и \{\mu'_\tau|\tau \in
T_1\} - множество коэффициентов (13.2) в соотношении (13.1) для многочлена \omega_{E_1}(t), так что

\mu'_\tau= \sum_{k=0}^{n+1}\sum_{\substack{
  \xi\in A(k,n+1)\\\textbf{e}_\xi=\tau} }(-1)^k
для каждого \tau \in T_1, то
\begin{equation}
\vad
  \mu'_\tau=\begin{cases} \mu_\tau-\sum_{\{ \bu\in T\mid \lcm (\bu,\textbf{e})=\tau\}
}\mu_{\bu}&
                     \text{ если } \tau\in T\\
              -\sum_{\{ \bu\in T\mid \lcm (\bu,\textbf{e})=\tau\} }\mu_{\bu}&
                      \text { если } \tau\in T_1\setminus T
\end{cases}
\end{equation} ( 13.3)

Таким образом, вычисление многочлена \omega_E(t), т. е. вычисление коэффициентов \mu_\tau\ (\tau \in T), в (13.1) может быть основано на формуле (13.3), если мы начнем с пустой матрицы (число строк которой равно нулю и многочлен Гильберта которой равен \binom {t+m}m ) и последовательно будем присоединять строки матрицы E, вычисляя множество T и коэффициенты \mu_\tau (\tau \in T) на каждом шаге (см. алгоритм A10 ).

\begin{tabing}
&\text{Дано: $n \in  \mathbb N ; n \times m$-матрица E}.\\
&\text{Надо: $\omega_E(t)$ — многочлен Гильберта матрицы $E$.}\\
&\text{Переменные: $T,\; T_1$ —множества типа}\\
&\text{\qquad \qquad \qquad \qquad $\{$вектор типа $ \mathbb N $ с индексами $1..m\}$};\\
&\text{\qquad \qquad \qquad $\mu, \mu_1$ —векторы типа $ \mathbb Z $ с индексами из $T, T_1$.}\\
&\text{Начало}\\
\text{$\omega:= 0$}\\
\text{$T:=\{(0, \dots , 0)\}$}\\
\text{$\mu (0, \dots , 0):=1$}\\
\text{цикл для $i$ от $1$ до $n$}\\
\text{\qquad $T_1:=T$}\\
\text{\qquad цикл для каждого $u \in T_1$}\\
\text{\qquad \qquad $\mu_1(\textbf{u}):=\mu(\textbf{u})$}\\
\text{\qquad конец цикла}\\
\text{\qquad цикл для каждого $u \in T_1$}\\
\text{\qquad \qquad $\tau := НОК(\textbf{u}, ei), e_i —i$-я строка матрицы $E$}\\
\text{\qquad \qquad если $\tau \in T$ то}\\
\text{\qquad \qquad \qquad $\mu(\tau ) := \mu(\tau ) - \mu_1(\textbf{u})$}\\
\text{\qquad \qquad иначе $T := T \cup \tau ; \mu(\tau ) := -\mu_1(\textbf{u})$}\\
\text{\qquad \qquad конец если}\\
\text{\qquad конец цикла}\\
\text{конец цикла}\\
\text{цикл для каждого $\textbf{u} \in T$}\\
\text{\qquad $\omega (t):= \omega (t) + \mu(\textbf{u})\binom {t+m-|\textbf{u}|}m$}\\
\text{конец цикла}\\
\text{Конец}\\
 \end{tabing}

Поскольку на k -м шаге (1\leq k\leq n) алгоритма каждый элемент \textbf{u}
\in T_1 является наименьшим общим кратным некоторого подмножества множества \{\textbf{e}_1,\dots,\textbf{e}_{k-1}\} (т. е. \textbf{u}=\textbf{e}_\xi для некоторого \xi\subseteq
\mathbb N_{k-1} ), существует не более (k-1) различных возможностей для выбора каждой координаты вектора \textbf{u}, следовательно, на k -м шаге (1\leq k\leq n) множество T_1 содержит не более (k-1)^m элементов. Вычисление всех элементов \tau=\lcm(\textbf{u},\textbf{e}_k) требует не более m(k-1)^m сравнений, и можно предполагать (используя достаточно эффективный метод сортировки), что число проверок на принадлежность \tau\in T не превосходит k^m\log k для всех достаточно больших k \in \mathbb N. Таким образом, асимптотическая сложность (по n ) алгоритма A10 не превосходит m\sum\limits_{k=2}^n\left[(k-1)^m+k^m\log k\right]. Поскольку m
\sum\limits_{k=2}^n\left[ (k - 1)^m+ k^m\log k\right] < 2m
\sum\limits_{k=2}^n k^m \log k, асимптотическая сложность имеет порядок n^{m+1}\log n.

Следующие алгоритмы вычисления размерностного многочлена произвольной n\!\times\! m -матрицы E сводят эту задачу к аналогичной задаче для матрицы с числом строк меньшим, чем в E. По одному из этих алгоритмов (см. ниже алгоритм A11 ) можно вычислить коэффициенты \mu_\tau в (13.1) размерностного многочлена \omega_E(t), что дает выражение для размерностного многочлена. Для обоснования этого алгоритма нам нужны некоторые свойства коэффициентов \mu_\tau, которые сформулированы ниже в леммах 13.1-13.5, 13.7 и 13,9. Последняя из этих лемм устанавливает соотношения, на которых основан алгоритм вычисления \mu_\tau.

Чтобы подчеркнуть зависимость коэффициентов \mu_\tau от матрицы E, будем обозначать эти коэффициенты \mu_\tau (E) и продолжим это обозначение на случай произвольного вектора \tau \in \mathbb N^m, полагая

\mu_\tau(E) =\begin{cases} \mu_\tau, & \text {если } \tau\in T\\ 0,
& \text {если }
  \tau\in\mathbb N^m\setminus T.\end{cases}
(Напомним, что T=T(E) - множество всех элементов \tau\in\mathbb N^m, таких, что каждый \tau равен либо (0,\dots,0), либо наименьшему общему кратному некоторых строк матрицы E ; элементы множества T будем называть допустимыми элементами или допустимыми векторами матрицы E.)

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

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