123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528 |
- @menu
- * Toric ideals:: Definition and computation.
- * Integer programming:: An algorithm using toric ideals.
- * Relevant References::
- @end menu
- @node Toric ideals, Integer programming, , Toric ideals and integer programming
- @subsection Toric ideals
- @cindex toric ideals
- @comment This file was generated by doc2tex.pl from ti_ip.doc
- @comment DO NOT EDIT DIRECTLY, BUT EDIT ti_ip.doc INSTEAD
- @cindex ideal, toric
- @tex
- Let $A$ denote an $m\times n$ matrix with integral coefficients. For $u
- \in Z\!\!\! Z^n$, we define $u^+,u^-$ to be the uniquely determined
- vectors with nonnegative coefficients and disjoint support (i.e.,
- $u_i^+=0$ or $u_i^-=0$ for each component $i$) such that
- $u=u^+-u^-$. For $u\geq 0$ component-wise, let $x^u$ denote the monomial
- $x_1^{u_1}\cdot\ldots\cdot x_n^{u_n}\in K[x_1,\ldots,x_n]$.
- The ideal
- $$ I_A:=<x^{u^+}-x^{u^-} | u\in\ker(A)\cap Z\!\!\! Z^n>\ \subset
- K[x_1,\ldots,x_n] $$
- is called a \bf toric ideal. \rm
- The first problem in computing toric ideals is to find a finite
- generating set: Let $v_1,\ldots,v_r$ be a lattice basis of $\ker(A)\cap
- Z\!\!\! Z^n$ (i.e, a basis of the $Z\!\!\! Z$-module). Then
- $$ I_A:=I:(x_1\cdot\ldots\cdot x_n)^\infty $$
- where
- $$ I=<x^{v_i^+}-x^{v_i^-}|i=1,\ldots,r> $$
- @end tex
- @ifinfo
- Let A denote an mxn matrix with integral coefficients. For u in
- Z^n, we define u+,u- to be the uniquely determined vectors with
- nonnegative coefficients and disjoint support (i.e., u+[i]=0 or u-[i]=0
- for each component i) such that u = u+ - u-.
- For u>=0 component-wise, let x^u
- denote the monomial x(1)^u[1] *@dots{}* x(n)^u[n] in K[x(1),@dots{},x(n)].
- The ideal in K[x(1),@dots{},x(n)] @*
- @display
- I(A):= < x^u+ - x^u- | u in ker(A), u in Z^n >
- @end display
- is called a @strong{toric ideal}.
- The first problem in computing toric ideals is to find a finite
- generating set: Let v(1),@dots{},v(r) be a lattice basis of ker(A) as a
- subset of Z^n (i.e., a basis of the Z-module). Then @*
- @display
- I(A):= sat( I, x[1] *@dots{}* x[n])
- @end display
- where @*
- @display
- I= < x^v(i)+ - x^v(i)- | i=1,@dots{},r >.
- @end display
- @end ifinfo
- The required lattice basis can be computed using the LLL-algorithm (@pxref{[Coh93]}). For the computation of the saturation, there are various
- possibilities described in the
- @tex
- section Algorithms.
- @end tex
- @ifinfo
- menu entry Algorithms.
- @end ifinfo
- @menu
- * Algorithms:: Various algorithms for computing toric ideals.
- * Buchberger algorithm:: Specializing it for toric ideals.
- @end menu
- @node Algorithms, Buchberger algorithm, , Toric ideals
- @subsection Algorithms
- The following algorithms are implemented in @ref{toric_lib}.
- @menu
- * Conti and Traverso::
- * Pottier::
- * Hosten and Sturmfels::
- * Di Biase and Urbanke::
- * Bigatti and La Scala and Robbiano::
- @end menu
- @node Conti and Traverso, Pottier, , Algorithms
- @subsubsection The algorithm of Conti and Traverso
- @cindex Conti-Traverso algorithm
- @cindex algorithm of Conti and Traverso
- The algorithm of Conti and Traverso (@pxref{[CoTr91]})
- @tex
- computes $I_A$ via the
- extended matrix $B=(I_m|A)$,
- where $I_m$ is the $m\times m$ unity matrix. A lattice basis of $B$ is
- given by the set of vectors $(a^j,-e_j)\in Z\!\!\! Z^{m+n}$, where $a^j$
- is the $j$-th row of $A$ and $e_j$ the $j$-th coordinate vector. We
- look at the ideal in $K[y_1,\ldots,y_m,x_1,\ldots,x_n]$ corresponding to
- these vectors, namely
- $$ I_1=<y^{a_j^+}- x_j y^{a_j^-} | j=1,\ldots, n>.$$
- We introduce a further variable $t$ and adjoin the binomial $t\cdot
- y_1\cdot\ldots\cdot y_m -1$ to the generating set of $I_1$, obtaining
- an ideal $I_2$ in the polynomial ring $K[t,
- y_1,\ldots,y_m,x_1,\ldots,x_n]$. $I_2$ is saturated w.r.t. all
- variables because all variables are invertible modulo $I_2$. Now $I_A$
- can be computed from $I_2$ by eliminating the variables
- $t,y_1,\ldots,y_m$.
- @end tex
- @ifinfo
- computes I(A) via the extended matrix B= ( I | A ),
- where I is the mxm unity matrix. A lattice basis of B is given by the
- set of vectors (a^j,-e_j) in Z^(m+n), where a^j is the j-th row of A and
- e_j the j-th coordinate vector. We look at the ideal in
- K[y(1),@dots{},y(m),x(1),@dots{},x(n)] corresponding to these vectors,
- namely @*
- @display
- I1= < y^(a_j)+ - x(j) * y^(a_j)- | j=1,@dots{},n >.
- @end display
- We introduce a further variable t and adjoin the binomial t * y(1)
- *@dots{}* y(m) -1 to the generating set of I1, obtaining an ideal I2 in
- the polynomial ring K[t,y(1),@dots{},y(m),x(1),@dots{},x(n)]. I2 is
- saturated w.r.t.@: all variables because all variables are invertible
- modulo I2. Now I(A) can be computed from I2 by eliminating the variables
- t,y(1),@dots{},y(m).
- @end ifinfo
- Because of the big number of auxiliary variables needed to compute a
- toric ideal, this algorithm is rather slow in practice. However, it has
- a special importance in the application to integer programming
- (@pxref{Integer programming}).
- @node Pottier, Hosten and Sturmfels, Conti and Traverso, Algorithms
- @subsubsection The algorithm of Pottier
- @cindex Pottier algorithm
- @cindex algorithm of Pottier
- The algorithm of Pottier (@pxref{[Pot94]}) starts by computing a lattice
- @tex
- basis $v_1,\ldots,v_r$ for the integer kernel of $A$ using the
- LLL-algorithm. The ideal corresponding to the lattice basis vectors
- $$ I_1=<x^{v_i^+}-x^{v_i^-}|i=1,\ldots,r> $$
- is saturated -- as in the algorithm of Conti and Traverso -- by
- inversion of all variables: One adds an auxiliary variable $t$ and the
- generator $t\cdot x_1\cdot\ldots\cdot x_n -1$ to obtain an ideal $I_2$
- in $K[t,x_1,\ldots,x_n]$ from which one computes $I_A$ by elimination of
- $t$.
- @end tex
- @ifinfo
- basis v(1),@dots{},v(r) for the integer kernel of A using the
- LLL-algorithm. The ideal corresponding to the lattice basis vectors @*
- @display
- I1= < x^v(i)+ - x^v(i)- | i=1,@dots{},r >
- @end display
- is saturated -- as in the algorithm of Conti and Traverso -- by
- inversion of all variables: One adds an auxiliary variable t and the
- generator t * x(1) *@dots{}* x(n) -1 to obtain an ideal I2 in
- K[t,x(1),@dots{},x(n)] from which one computes I(A) by elimination of
- t.
- @end ifinfo
- @node Hosten and Sturmfels, Di Biase and Urbanke, Pottier, Algorithms
- @subsubsection The algorithm of Hosten and Sturmfels
- @cindex Hosten-Sturmfels algorithm
- @cindex algorithm of Hosten and Sturmfels
- The algorithm of Hosten and Sturmfels (@pxref{[HoSt95]}) allows to
- @tex
- compute $I_A$ without any auxiliary variables, provided that $A$ contains a vector $w$
- with positive coefficients in its row space. This is a real restriction,
- i.e., the algorithm will not necessarily work in the general case.
- A lattice basis $v_1,\ldots,v_r$ is again computed via the
- LLL-algorithm. The saturation step is performed in the following way:
- First note that $w$ induces a positive grading w.r.t. which the ideal
- $$ I=<x^{v_i^+}-x^{v_i^-}|i=1,\ldots,r> $$
- corresponding to our lattice basis is homogeneous. We use the following
- lemma:
- Let $I$ be a homogeneous ideal w.r.t. the weighted reverse
- lexicographical ordering with weight vector $w$ and variable order $x_1
- > x_2 > \ldots > x_n$. Let $G$ denote a Groebner basis of $I$ w.r.t. to
- this ordering. Then a Groebner basis of $(I:x_n^\infty)$ is obtained by
- dividing each element of $G$ by the highest possible power of $x_n$.
- From this fact, we can successively compute
- $$ I_A= I:(x_1\cdot\ldots\cdot x_n)^\infty
- =(((I:x_1^\infty):x_2^\infty):\ldots :x_n^\infty); $$
- in the $i$-th step we take $x_i$ as the cheapest variable and apply the
- lemma with $x_i$ instead of $x_n$.
- This procedure involves $n$ Groebner basis computations. Actually, this
- number can be reduced to at most $n/2$
- @end tex
- @ifinfo
- compute I(A) without any auxiliary variables, provided that A contains a vector w
- with positive coefficients in its row space. This is a real restriction,
- i.e., the algorithm will not necessarily work in the general case.
- A lattice basis v(1),@dots{},v(r) is again computed via the
- LLL-algorithm. The saturation step is performed in the following way:
- First note that w induces a positive grading w.r.t.@: which the ideal @*
- @display
- I= < x^v(i)+ - x^v(i)- | i=1,@dots{},r >
- @end display
- corresponding to our lattice basis is homogeneous. We use the following
- lemma:
- Let I be a homogeneous ideal w.r.t.@: the weighted reverse lexicographical
- ordering with weight vector w and variable order x(1) > x(2) > @dots{} >
- x(n). Let G denote a Groebner basis of I w.r.t.@: to this ordering. Then
- a Groebner basis of sat(I,x(n)) is obtained by dividing each element
- of G by the highest possible power of x(n).
- From this fact, we can successively compute @*
- @display
- I(A)= sat(I, x(1) *@dots{}* x(n))
- @ @ @ @ = sat(@dots{}(sat(sat(I,x(1)), x(2)), @dots{}, x(n)));
- @end display
- in the i-th step we take x(i) as the cheapest variable and apply the
- lemma with x(i) instead of x(n).
- This procedure involves n Groebner basis computations. Actually, this
- number can be reduced to at most n/2
- @end ifinfo
- (@pxref{[HoSh98]}), and the single
- computations -- except from the first one -- show to be easy and fast in
- practice.
- @node Di Biase and Urbanke, Bigatti and La Scala and Robbiano, Hosten and Sturmfels, Algorithms
- @subsubsection The algorithm of Di Biase and Urbanke
- @cindex Di Biase-Urbanke algorithm
- @cindex algorithm of Di Biase and Urbanke
- Like the algorithm of Hosten and Sturmfels, the algorithm of Di Biase
- and Urbanke (@pxref{[DBUr95]}) performs up
- @tex
- to $n/2$ Groebner basis
- computations. It needs no auxiliary variables, but a supplementary
- precondition; namely, the existence of a vector without zero components
- in the kernel of $A$.
- The main idea comes from the following observation:
- Let $B$ be an integer matrix, $u_1,\ldots,u_r$ a lattice basis of the
- integer kernel of $B$. Assume that all components of $u_1$ are
- positive. Then
- $$ I_B=<x^{u_i^+}-x^{u_i^-}|i=1,\ldots,r>, $$
- i.e., the ideal on the right is already saturated w.r.t. all variables.
- The algorithm starts by finding a lattice basis $v_1,\ldots,v_r$ of the
- kernel of $A$ such that $v_1$ has no zero component. Let
- $\{i_1,\ldots,i_l\}$ be the set of indices $i$ with
- $v_{1,i}<0$. Multiplying the components $i_1,\ldots,i_l$ of
- $v_1,\ldots,v_r$ and the columns $i_1,\ldots,i_l$ of $A$ by $-1$ yields
- a matrix $B$ and a lattice basis $u_1,\ldots,u_r$ of the kernel of $B$
- that fulfill the assumption of the observation above. We are then able
- to compute a generating set of $I_A$ by applying the following
- ``variable flip'' successively to $i=i_1,\ldots,i_l$:
- Let $>$ be an elimination ordering for $x_i$. Let $A_i$ be the matrix
- obtained by multiplying the $i$-th column of $A$ with $-1$. Let
- $$\{x_i^{r_j} x^{a_j} - x^{b_j} | j\in J \}$$
- be a Groebner basis of $I_{A_i}$ w.r.t. $>$ (where $x_i$ is neither
- involved in $x^{a_j}$ nor in $x^{b_j}$). Then
- $$\{x^{a_j} - x_i^{r_j} x^{b_j} | j\in J \}$$
- is a generating set for $I_A$.
- @end tex
- @ifinfo
- to n/2 Groebner basis
- computations. It needs no auxiliary variables, but a supplementary
- precondition; namely, the existence of a vector without zero components
- in the kernel of A.
- The main idea comes from the following observation:
- Let B be an integer matrix, u(1),@dots{},u(r) a lattice basis of the
- integer kernel of B. Assume that all components of u(1) are
- positive. Then @*
- @display
- I(B)= < x^u(i)+ - x^u(i)- | i=1,@dots{},r >,
- @end display
- i.e., the ideal on the right is already saturated w.r.t.@: all variables.
- The algorithm starts by finding a lattice basis v(1),@dots{},v(r) of the
- kernel of A such that v(1) has no zero component. Let @{ i1,@dots{},il
- @} be the set of indices i with v(1)_i <0. Multiplying the components
- i1,@dots{},il of v(1),@dots{},v(r) and the columns i1,@dots{},il of A by
- -1 yields a matrix B and a lattice basis u(1),@dots{},u(r) of the kernel
- of B that fulfill the assumption of the observation above. We are then
- able to compute a generating set of I(A) by applying the following
- ``variable flip'' successively to i=i1,@dots{},il:
- Let > be an elimination ordering for x(i). Let A(i) be the matrix
- obtained by multiplying the i-th column of A with -1. Let @*
- @display
- @{ x(i)^r(j) * x^a(j) - x^b(j) | j in J @}
- @end display
- be a Groebner basis of I(A(i)) w.r.t.@: > (where x(i) is neither
- involved in x^a(j) nor in x^b(j)). Then @*
- @display
- @{ x^a(j) - x(i)^r(j) * x^b(j) | j in J @}
- @end display
- is a generating set for I(A).
- @end ifinfo
- @node Bigatti and La Scala and Robbiano, , Di Biase and Urbanke, Algorithms
- @subsubsection The algorithm of Bigatti, La Scala and Robbiano
- @cindex Bigatti-La Scala-Robbiano algorithm
- @cindex algorithm of Bigatti, La Scala and Robbiano
- The algorithm of Bigatti, La Scala and Robbiano (@pxref{[BLR98]}) combines the ideas of
- the algorithms of Pottier and of Hosten and Sturmfels. The
- computations are performed on a graded ideal with one auxiliary
- @tex
- variable $u$ and one supplementary generator $x_1\cdot\ldots\cdot x_n -
- u$ (instead of the generator $t\cdot x_1\cdot\ldots\cdot x_n -1$ in
- the algorithm of Pottier). The algorithm uses a quite unusual technique to
- get rid of the variable $u$ again.
- @end tex
- @ifinfo
- variable u and one supplementary generator x(1) *@dots{}* x(n) -u (instead of the
- generator t * x(1) *@dots{}* x(n) -1 in
- the algorithm of Pottier). The algorithm uses a quite unusual technique to
- get rid of the variable u again.
- @end ifinfo
- There is another algorithm of the authors which tries to parallelize
- the computations (but which is not implemented in this library).
- @node Buchberger algorithm, , Algorithms, Toric ideals
- @subsection The Buchberger algorithm for toric ideals
- @cindex Buchberger algorithm for toric ideals
- Toric ideals have a very special structure that allows us to improve
- the Buchberger algorithm in many respects: They are prime ideals and
- generated by binomials. Pottier used this fact to describe all
- operations of the Buchberger algorithm on the ideal generators in terms
- of vector additions and subtractions. Some other strategies like
- multiple reduction (@pxref{[CoTr91]}) or the use of bit
- vectors to represent the support of a monomial (@pxref{[Big97]}) may be
- applied to more general ideals, but show to
- be especially useful in the toric case.
- @node Integer programming, Relevant References, Toric ideals, Toric ideals and integer programming
- @subsection Integer programming
- @cindex integer programming
- @tex
- Let $A$ be an $m\times n$ matrix with integral coefficients, $b\in
- Z\!\!\! Z^m$ and $c\in Z\!\!\! Z^n$. The problem
- $$ \min\{c^T x | x\in Z\!\!\! Z^n, Ax=b, x\geq 0\hbox{
- component-wise}\} $$
- is called an instance of the \bf integer programming problem \rm or
- \bf IP problem. \rm
- The IP problem is very hard; namely, it is NP-complete.
- For the following discussion let $c\geq 0$ (component-wise). We
- consider $c$ as a weight vector; because of its non-negativity, $c$ can
- be refined into a monomial ordering $>_c$. It turns out that we can
- solve such an IP instance with the help of toric ideals:
- First we assume that an initial solution $v$ (i.e., $v\in Z\!\!\!
- Z^n, v\geq 0, Av=b$) is already known. We obtain the optimal solution
- $v_0$ (i.e., with $c^T v_0$ minimal) by the following procedure:
- @end tex
- @c \begin{itemize}
- @c \item (1) Compute the toric ideal $I_A$ using one of the algorithms in the
- @c previous section.
- @c \item (2) Compute the reduced Groebner basis $G_c$ of $I_A$ w.r.t.
- @c $>_c$.
- @c \item (3) Reduce $x^v$ modulo $G_c$ using the Hironaka division algorithm.
- @c If the result of this reduction is $x^{v_0}$, then $v_0$ is an
- @c optimal solution of the given instance.
- @c \end{itemize}
- @ifinfo
- Let A be an mxn matrix with integral coefficients, b in Z^m and c in
- Z^n. The problem @*
- @display
- min @{ c*x | x in Z^n, A*x=b, x>=0 component-wise @}
- @end display
- is called an instance of the @strong{integer programming problem} or
- @strong{IP problem}.
- The IP problem is very hard; namely, it is NP-complete.
- For the following discussion let c>=0 (component-wise). We
- consider c as a weight vector; because of its non-negativity, c can
- be refined into a monomial ordering >_c. It turns out that we can
- solve such an IP instance with the help of toric ideals:
- First we assume that an initial solution v (i.e., v in Z^n, v>=0,
- A*v=b) is already known. We obtain the optimal solution v(opt) (i.e.,
- with c*v(opt) minimal) by the following procedure:
- @end ifinfo
- @itemize @bullet
- @item (1) Compute the toric ideal I(A) using one of the algorithms in the previous section.
- @item (2) Compute the reduced Groebner basis G(c) of I(A) w.r.t.@:
- @ifinfo
- @math{>_c}
- @end ifinfo
- @tex
- $>_c$
- @end tex
- .
- @item (3) Reduce
- @ifinfo
- @math{x^v}
- @end ifinfo
- @tex
- $x^v$
- @end tex
- modulo G(c) using the Hironaka division algorithm.
- If the result of this reduction is
- @ifinfo
- @math{x^(v_0)}
- @end ifinfo
- @tex
- $x^(v_0)$
- @end tex
- , then
- @ifinfo
- @math{v_0}
- @end ifinfo
- @tex
- $v_0$
- @end tex
- is an optimal
- solution of the given instance.
- @end itemize
- If no initial solution is known, we are nevertheless able to solve the
- problem with similar techniques. For this purpose we replace our
- instance by an extended instance with the matrix used
- in the Conti-Traverso algorithm. Indeed, the Conti-Traverso
- algorithm offers the possibility to verify solvability of a given
- instance and to find an initial solution in the case of existence (but
- none of the other algorithms does!). Details can be found in [CoTr91]
- and [The99].
- An implementation of the above algorithm and some examples can be found in @ref{intprog_lib}.
- Classical methods for solving IP instances like Branch-and-Bound
- methods seem to be faster in general than the methods using toric
- ideals. But the latter have one great advantage: If one wants to solve
- various instances that differ only by the vector
- @ifinfo
- @math{b}
- @end ifinfo
- @tex
- $b$
- @end tex
- , one has to
- perform steps (1) and (2) above only once. As the running time of step (3)
- is very short, solving all the instances is not much harder than
- solving one single instance.
- For a detailed discussion see [The99].
- @node Relevant References, , Integer programming, Toric ideals and integer programming
- @subsection Relevant References
- @itemize @bullet
- @item [Big97] Bigatti, A.M.: @anchor{[Big97]}
- Computation of Hilbert-Poincare series.
- Journal of Pure and Applied Algebra (1997) 199, 237-253
- @item [BLR98] Bigatti, A.M.; La Scala, R.; Robbiano, L.: @anchor{[BLR98]}
- Computing toric ideals.
- Journal of Symbolic Computation (to appear)
- @item [Coh93] Cohen, H.: @anchor{[Coh93]}
- A Course in Computational Algebraic Number Theory.
- Springer (1997)
- @item [CoTr91] Conti, P.; Traverso, C.: @anchor{[CoTr91]}
- Buchberger algorithm and integer programming.
- Proceedings AAECC-9 (new Orleans), Springer LNCS (1991) 539,
- 130-139
- @item [DBUr95] Di Biase, F.; Urbanke, R.: @anchor{[DBUr95]}
- An algorithm to calculate the kernel of certain polynomial ring
- homomorphisms.
- Experimental Mathematics (1995) 4, 227-234
- @item [HoSh98] Hosten, S.; Shapiro, J.: @anchor{[HoSh98]}
- Primary decomposition of lattice basis ideals.
- (to appear)
- @item [HoSt95] Hosten, S.; Sturmfels, B.: @anchor{[HoSt95]}
- GRIN: An implementation of Groebner bases for integer programming.
- in Balas, E.; Clausen, J. (editors): Integer Programming and
- Combinatorial Optimization.
- Springer LNCS (1995) 920, 267-276
- @item [Pot94] Pottier, L.: @anchor{[Pot94]}
- Groebner bases of toric ideals.
- Rapport de recherche 2224 (1997), INRIA Sophia Antipolis
- @item [Stu96] Sturmfels, B.: @anchor{[Stu96]}
- Groebner Bases and Convex Polytopes.
- University Lecture Series, Volume 8 (1996), American Mathematical
- Society
- @item [The99] Theis, C.: @anchor{[The99]}
- Der Buchberger-Algorithmus fuer torische Ideale und seine Anwendung
- in der ganzzahligen Optimierung.
- Diplomarbeit, Universitaet des Saarlandes (1999), Saarbruecken
- (Germany)
- @end itemize
|