ti_ip.tex 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528
  1. @menu
  2. * Toric ideals:: Definition and computation.
  3. * Integer programming:: An algorithm using toric ideals.
  4. * Relevant References::
  5. @end menu
  6. @node Toric ideals, Integer programming, , Toric ideals and integer programming
  7. @subsection Toric ideals
  8. @cindex toric ideals
  9. @comment This file was generated by doc2tex.pl from ti_ip.doc
  10. @comment DO NOT EDIT DIRECTLY, BUT EDIT ti_ip.doc INSTEAD
  11. @cindex ideal, toric
  12. @tex
  13. Let $A$ denote an $m\times n$ matrix with integral coefficients. For $u
  14. \in Z\!\!\! Z^n$, we define $u^+,u^-$ to be the uniquely determined
  15. vectors with nonnegative coefficients and disjoint support (i.e.,
  16. $u_i^+=0$ or $u_i^-=0$ for each component $i$) such that
  17. $u=u^+-u^-$. For $u\geq 0$ component-wise, let $x^u$ denote the monomial
  18. $x_1^{u_1}\cdot\ldots\cdot x_n^{u_n}\in K[x_1,\ldots,x_n]$.
  19. The ideal
  20. $$ I_A:=<x^{u^+}-x^{u^-} | u\in\ker(A)\cap Z\!\!\! Z^n>\ \subset
  21. K[x_1,\ldots,x_n] $$
  22. is called a \bf toric ideal. \rm
  23. The first problem in computing toric ideals is to find a finite
  24. generating set: Let $v_1,\ldots,v_r$ be a lattice basis of $\ker(A)\cap
  25. Z\!\!\! Z^n$ (i.e, a basis of the $Z\!\!\! Z$-module). Then
  26. $$ I_A:=I:(x_1\cdot\ldots\cdot x_n)^\infty $$
  27. where
  28. $$ I=<x^{v_i^+}-x^{v_i^-}|i=1,\ldots,r> $$
  29. @end tex
  30. @ifinfo
  31. Let A denote an mxn matrix with integral coefficients. For u in
  32. Z^n, we define u+,u- to be the uniquely determined vectors with
  33. nonnegative coefficients and disjoint support (i.e., u+[i]=0 or u-[i]=0
  34. for each component i) such that u = u+ - u-.
  35. For u>=0 component-wise, let x^u
  36. denote the monomial x(1)^u[1] *@dots{}* x(n)^u[n] in K[x(1),@dots{},x(n)].
  37. The ideal in K[x(1),@dots{},x(n)] @*
  38. @display
  39. I(A):= < x^u+ - x^u- | u in ker(A), u in Z^n >
  40. @end display
  41. is called a @strong{toric ideal}.
  42. The first problem in computing toric ideals is to find a finite
  43. generating set: Let v(1),@dots{},v(r) be a lattice basis of ker(A) as a
  44. subset of Z^n (i.e., a basis of the Z-module). Then @*
  45. @display
  46. I(A):= sat( I, x[1] *@dots{}* x[n])
  47. @end display
  48. where @*
  49. @display
  50. I= < x^v(i)+ - x^v(i)- | i=1,@dots{},r >.
  51. @end display
  52. @end ifinfo
  53. The required lattice basis can be computed using the LLL-algorithm (@pxref{[Coh93]}). For the computation of the saturation, there are various
  54. possibilities described in the
  55. @tex
  56. section Algorithms.
  57. @end tex
  58. @ifinfo
  59. menu entry Algorithms.
  60. @end ifinfo
  61. @menu
  62. * Algorithms:: Various algorithms for computing toric ideals.
  63. * Buchberger algorithm:: Specializing it for toric ideals.
  64. @end menu
  65. @node Algorithms, Buchberger algorithm, , Toric ideals
  66. @subsection Algorithms
  67. The following algorithms are implemented in @ref{toric_lib}.
  68. @menu
  69. * Conti and Traverso::
  70. * Pottier::
  71. * Hosten and Sturmfels::
  72. * Di Biase and Urbanke::
  73. * Bigatti and La Scala and Robbiano::
  74. @end menu
  75. @node Conti and Traverso, Pottier, , Algorithms
  76. @subsubsection The algorithm of Conti and Traverso
  77. @cindex Conti-Traverso algorithm
  78. @cindex algorithm of Conti and Traverso
  79. The algorithm of Conti and Traverso (@pxref{[CoTr91]})
  80. @tex
  81. computes $I_A$ via the
  82. extended matrix $B=(I_m|A)$,
  83. where $I_m$ is the $m\times m$ unity matrix. A lattice basis of $B$ is
  84. given by the set of vectors $(a^j,-e_j)\in Z\!\!\! Z^{m+n}$, where $a^j$
  85. is the $j$-th row of $A$ and $e_j$ the $j$-th coordinate vector. We
  86. look at the ideal in $K[y_1,\ldots,y_m,x_1,\ldots,x_n]$ corresponding to
  87. these vectors, namely
  88. $$ I_1=<y^{a_j^+}- x_j y^{a_j^-} | j=1,\ldots, n>.$$
  89. We introduce a further variable $t$ and adjoin the binomial $t\cdot
  90. y_1\cdot\ldots\cdot y_m -1$ to the generating set of $I_1$, obtaining
  91. an ideal $I_2$ in the polynomial ring $K[t,
  92. y_1,\ldots,y_m,x_1,\ldots,x_n]$. $I_2$ is saturated w.r.t. all
  93. variables because all variables are invertible modulo $I_2$. Now $I_A$
  94. can be computed from $I_2$ by eliminating the variables
  95. $t,y_1,\ldots,y_m$.
  96. @end tex
  97. @ifinfo
  98. computes I(A) via the extended matrix B= ( I | A ),
  99. where I is the mxm unity matrix. A lattice basis of B is given by the
  100. set of vectors (a^j,-e_j) in Z^(m+n), where a^j is the j-th row of A and
  101. e_j the j-th coordinate vector. We look at the ideal in
  102. K[y(1),@dots{},y(m),x(1),@dots{},x(n)] corresponding to these vectors,
  103. namely @*
  104. @display
  105. I1= < y^(a_j)+ - x(j) * y^(a_j)- | j=1,@dots{},n >.
  106. @end display
  107. We introduce a further variable t and adjoin the binomial t * y(1)
  108. *@dots{}* y(m) -1 to the generating set of I1, obtaining an ideal I2 in
  109. the polynomial ring K[t,y(1),@dots{},y(m),x(1),@dots{},x(n)]. I2 is
  110. saturated w.r.t.@: all variables because all variables are invertible
  111. modulo I2. Now I(A) can be computed from I2 by eliminating the variables
  112. t,y(1),@dots{},y(m).
  113. @end ifinfo
  114. Because of the big number of auxiliary variables needed to compute a
  115. toric ideal, this algorithm is rather slow in practice. However, it has
  116. a special importance in the application to integer programming
  117. (@pxref{Integer programming}).
  118. @node Pottier, Hosten and Sturmfels, Conti and Traverso, Algorithms
  119. @subsubsection The algorithm of Pottier
  120. @cindex Pottier algorithm
  121. @cindex algorithm of Pottier
  122. The algorithm of Pottier (@pxref{[Pot94]}) starts by computing a lattice
  123. @tex
  124. basis $v_1,\ldots,v_r$ for the integer kernel of $A$ using the
  125. LLL-algorithm. The ideal corresponding to the lattice basis vectors
  126. $$ I_1=<x^{v_i^+}-x^{v_i^-}|i=1,\ldots,r> $$
  127. is saturated -- as in the algorithm of Conti and Traverso -- by
  128. inversion of all variables: One adds an auxiliary variable $t$ and the
  129. generator $t\cdot x_1\cdot\ldots\cdot x_n -1$ to obtain an ideal $I_2$
  130. in $K[t,x_1,\ldots,x_n]$ from which one computes $I_A$ by elimination of
  131. $t$.
  132. @end tex
  133. @ifinfo
  134. basis v(1),@dots{},v(r) for the integer kernel of A using the
  135. LLL-algorithm. The ideal corresponding to the lattice basis vectors @*
  136. @display
  137. I1= < x^v(i)+ - x^v(i)- | i=1,@dots{},r >
  138. @end display
  139. is saturated -- as in the algorithm of Conti and Traverso -- by
  140. inversion of all variables: One adds an auxiliary variable t and the
  141. generator t * x(1) *@dots{}* x(n) -1 to obtain an ideal I2 in
  142. K[t,x(1),@dots{},x(n)] from which one computes I(A) by elimination of
  143. t.
  144. @end ifinfo
  145. @node Hosten and Sturmfels, Di Biase and Urbanke, Pottier, Algorithms
  146. @subsubsection The algorithm of Hosten and Sturmfels
  147. @cindex Hosten-Sturmfels algorithm
  148. @cindex algorithm of Hosten and Sturmfels
  149. The algorithm of Hosten and Sturmfels (@pxref{[HoSt95]}) allows to
  150. @tex
  151. compute $I_A$ without any auxiliary variables, provided that $A$ contains a vector $w$
  152. with positive coefficients in its row space. This is a real restriction,
  153. i.e., the algorithm will not necessarily work in the general case.
  154. A lattice basis $v_1,\ldots,v_r$ is again computed via the
  155. LLL-algorithm. The saturation step is performed in the following way:
  156. First note that $w$ induces a positive grading w.r.t. which the ideal
  157. $$ I=<x^{v_i^+}-x^{v_i^-}|i=1,\ldots,r> $$
  158. corresponding to our lattice basis is homogeneous. We use the following
  159. lemma:
  160. Let $I$ be a homogeneous ideal w.r.t. the weighted reverse
  161. lexicographical ordering with weight vector $w$ and variable order $x_1
  162. > x_2 > \ldots > x_n$. Let $G$ denote a Groebner basis of $I$ w.r.t. to
  163. this ordering. Then a Groebner basis of $(I:x_n^\infty)$ is obtained by
  164. dividing each element of $G$ by the highest possible power of $x_n$.
  165. From this fact, we can successively compute
  166. $$ I_A= I:(x_1\cdot\ldots\cdot x_n)^\infty
  167. =(((I:x_1^\infty):x_2^\infty):\ldots :x_n^\infty); $$
  168. in the $i$-th step we take $x_i$ as the cheapest variable and apply the
  169. lemma with $x_i$ instead of $x_n$.
  170. This procedure involves $n$ Groebner basis computations. Actually, this
  171. number can be reduced to at most $n/2$
  172. @end tex
  173. @ifinfo
  174. compute I(A) without any auxiliary variables, provided that A contains a vector w
  175. with positive coefficients in its row space. This is a real restriction,
  176. i.e., the algorithm will not necessarily work in the general case.
  177. A lattice basis v(1),@dots{},v(r) is again computed via the
  178. LLL-algorithm. The saturation step is performed in the following way:
  179. First note that w induces a positive grading w.r.t.@: which the ideal @*
  180. @display
  181. I= < x^v(i)+ - x^v(i)- | i=1,@dots{},r >
  182. @end display
  183. corresponding to our lattice basis is homogeneous. We use the following
  184. lemma:
  185. Let I be a homogeneous ideal w.r.t.@: the weighted reverse lexicographical
  186. ordering with weight vector w and variable order x(1) > x(2) > @dots{} >
  187. x(n). Let G denote a Groebner basis of I w.r.t.@: to this ordering. Then
  188. a Groebner basis of sat(I,x(n)) is obtained by dividing each element
  189. of G by the highest possible power of x(n).
  190. From this fact, we can successively compute @*
  191. @display
  192. I(A)= sat(I, x(1) *@dots{}* x(n))
  193. @ @ @ @ = sat(@dots{}(sat(sat(I,x(1)), x(2)), @dots{}, x(n)));
  194. @end display
  195. in the i-th step we take x(i) as the cheapest variable and apply the
  196. lemma with x(i) instead of x(n).
  197. This procedure involves n Groebner basis computations. Actually, this
  198. number can be reduced to at most n/2
  199. @end ifinfo
  200. (@pxref{[HoSh98]}), and the single
  201. computations -- except from the first one -- show to be easy and fast in
  202. practice.
  203. @node Di Biase and Urbanke, Bigatti and La Scala and Robbiano, Hosten and Sturmfels, Algorithms
  204. @subsubsection The algorithm of Di Biase and Urbanke
  205. @cindex Di Biase-Urbanke algorithm
  206. @cindex algorithm of Di Biase and Urbanke
  207. Like the algorithm of Hosten and Sturmfels, the algorithm of Di Biase
  208. and Urbanke (@pxref{[DBUr95]}) performs up
  209. @tex
  210. to $n/2$ Groebner basis
  211. computations. It needs no auxiliary variables, but a supplementary
  212. precondition; namely, the existence of a vector without zero components
  213. in the kernel of $A$.
  214. The main idea comes from the following observation:
  215. Let $B$ be an integer matrix, $u_1,\ldots,u_r$ a lattice basis of the
  216. integer kernel of $B$. Assume that all components of $u_1$ are
  217. positive. Then
  218. $$ I_B=<x^{u_i^+}-x^{u_i^-}|i=1,\ldots,r>, $$
  219. i.e., the ideal on the right is already saturated w.r.t. all variables.
  220. The algorithm starts by finding a lattice basis $v_1,\ldots,v_r$ of the
  221. kernel of $A$ such that $v_1$ has no zero component. Let
  222. $\{i_1,\ldots,i_l\}$ be the set of indices $i$ with
  223. $v_{1,i}<0$. Multiplying the components $i_1,\ldots,i_l$ of
  224. $v_1,\ldots,v_r$ and the columns $i_1,\ldots,i_l$ of $A$ by $-1$ yields
  225. a matrix $B$ and a lattice basis $u_1,\ldots,u_r$ of the kernel of $B$
  226. that fulfill the assumption of the observation above. We are then able
  227. to compute a generating set of $I_A$ by applying the following
  228. ``variable flip'' successively to $i=i_1,\ldots,i_l$:
  229. Let $>$ be an elimination ordering for $x_i$. Let $A_i$ be the matrix
  230. obtained by multiplying the $i$-th column of $A$ with $-1$. Let
  231. $$\{x_i^{r_j} x^{a_j} - x^{b_j} | j\in J \}$$
  232. be a Groebner basis of $I_{A_i}$ w.r.t. $>$ (where $x_i$ is neither
  233. involved in $x^{a_j}$ nor in $x^{b_j}$). Then
  234. $$\{x^{a_j} - x_i^{r_j} x^{b_j} | j\in J \}$$
  235. is a generating set for $I_A$.
  236. @end tex
  237. @ifinfo
  238. to n/2 Groebner basis
  239. computations. It needs no auxiliary variables, but a supplementary
  240. precondition; namely, the existence of a vector without zero components
  241. in the kernel of A.
  242. The main idea comes from the following observation:
  243. Let B be an integer matrix, u(1),@dots{},u(r) a lattice basis of the
  244. integer kernel of B. Assume that all components of u(1) are
  245. positive. Then @*
  246. @display
  247. I(B)= < x^u(i)+ - x^u(i)- | i=1,@dots{},r >,
  248. @end display
  249. i.e., the ideal on the right is already saturated w.r.t.@: all variables.
  250. The algorithm starts by finding a lattice basis v(1),@dots{},v(r) of the
  251. kernel of A such that v(1) has no zero component. Let @{ i1,@dots{},il
  252. @} be the set of indices i with v(1)_i <0. Multiplying the components
  253. i1,@dots{},il of v(1),@dots{},v(r) and the columns i1,@dots{},il of A by
  254. -1 yields a matrix B and a lattice basis u(1),@dots{},u(r) of the kernel
  255. of B that fulfill the assumption of the observation above. We are then
  256. able to compute a generating set of I(A) by applying the following
  257. ``variable flip'' successively to i=i1,@dots{},il:
  258. Let > be an elimination ordering for x(i). Let A(i) be the matrix
  259. obtained by multiplying the i-th column of A with -1. Let @*
  260. @display
  261. @{ x(i)^r(j) * x^a(j) - x^b(j) | j in J @}
  262. @end display
  263. be a Groebner basis of I(A(i)) w.r.t.@: > (where x(i) is neither
  264. involved in x^a(j) nor in x^b(j)). Then @*
  265. @display
  266. @{ x^a(j) - x(i)^r(j) * x^b(j) | j in J @}
  267. @end display
  268. is a generating set for I(A).
  269. @end ifinfo
  270. @node Bigatti and La Scala and Robbiano, , Di Biase and Urbanke, Algorithms
  271. @subsubsection The algorithm of Bigatti, La Scala and Robbiano
  272. @cindex Bigatti-La Scala-Robbiano algorithm
  273. @cindex algorithm of Bigatti, La Scala and Robbiano
  274. The algorithm of Bigatti, La Scala and Robbiano (@pxref{[BLR98]}) combines the ideas of
  275. the algorithms of Pottier and of Hosten and Sturmfels. The
  276. computations are performed on a graded ideal with one auxiliary
  277. @tex
  278. variable $u$ and one supplementary generator $x_1\cdot\ldots\cdot x_n -
  279. u$ (instead of the generator $t\cdot x_1\cdot\ldots\cdot x_n -1$ in
  280. the algorithm of Pottier). The algorithm uses a quite unusual technique to
  281. get rid of the variable $u$ again.
  282. @end tex
  283. @ifinfo
  284. variable u and one supplementary generator x(1) *@dots{}* x(n) -u (instead of the
  285. generator t * x(1) *@dots{}* x(n) -1 in
  286. the algorithm of Pottier). The algorithm uses a quite unusual technique to
  287. get rid of the variable u again.
  288. @end ifinfo
  289. There is another algorithm of the authors which tries to parallelize
  290. the computations (but which is not implemented in this library).
  291. @node Buchberger algorithm, , Algorithms, Toric ideals
  292. @subsection The Buchberger algorithm for toric ideals
  293. @cindex Buchberger algorithm for toric ideals
  294. Toric ideals have a very special structure that allows us to improve
  295. the Buchberger algorithm in many respects: They are prime ideals and
  296. generated by binomials. Pottier used this fact to describe all
  297. operations of the Buchberger algorithm on the ideal generators in terms
  298. of vector additions and subtractions. Some other strategies like
  299. multiple reduction (@pxref{[CoTr91]}) or the use of bit
  300. vectors to represent the support of a monomial (@pxref{[Big97]}) may be
  301. applied to more general ideals, but show to
  302. be especially useful in the toric case.
  303. @node Integer programming, Relevant References, Toric ideals, Toric ideals and integer programming
  304. @subsection Integer programming
  305. @cindex integer programming
  306. @tex
  307. Let $A$ be an $m\times n$ matrix with integral coefficients, $b\in
  308. Z\!\!\! Z^m$ and $c\in Z\!\!\! Z^n$. The problem
  309. $$ \min\{c^T x | x\in Z\!\!\! Z^n, Ax=b, x\geq 0\hbox{
  310. component-wise}\} $$
  311. is called an instance of the \bf integer programming problem \rm or
  312. \bf IP problem. \rm
  313. The IP problem is very hard; namely, it is NP-complete.
  314. For the following discussion let $c\geq 0$ (component-wise). We
  315. consider $c$ as a weight vector; because of its non-negativity, $c$ can
  316. be refined into a monomial ordering $>_c$. It turns out that we can
  317. solve such an IP instance with the help of toric ideals:
  318. First we assume that an initial solution $v$ (i.e., $v\in Z\!\!\!
  319. Z^n, v\geq 0, Av=b$) is already known. We obtain the optimal solution
  320. $v_0$ (i.e., with $c^T v_0$ minimal) by the following procedure:
  321. @end tex
  322. @c \begin{itemize}
  323. @c \item (1) Compute the toric ideal $I_A$ using one of the algorithms in the
  324. @c previous section.
  325. @c \item (2) Compute the reduced Groebner basis $G_c$ of $I_A$ w.r.t.
  326. @c $>_c$.
  327. @c \item (3) Reduce $x^v$ modulo $G_c$ using the Hironaka division algorithm.
  328. @c If the result of this reduction is $x^{v_0}$, then $v_0$ is an
  329. @c optimal solution of the given instance.
  330. @c \end{itemize}
  331. @ifinfo
  332. Let A be an mxn matrix with integral coefficients, b in Z^m and c in
  333. Z^n. The problem @*
  334. @display
  335. min @{ c*x | x in Z^n, A*x=b, x>=0 component-wise @}
  336. @end display
  337. is called an instance of the @strong{integer programming problem} or
  338. @strong{IP problem}.
  339. The IP problem is very hard; namely, it is NP-complete.
  340. For the following discussion let c>=0 (component-wise). We
  341. consider c as a weight vector; because of its non-negativity, c can
  342. be refined into a monomial ordering >_c. It turns out that we can
  343. solve such an IP instance with the help of toric ideals:
  344. First we assume that an initial solution v (i.e., v in Z^n, v>=0,
  345. A*v=b) is already known. We obtain the optimal solution v(opt) (i.e.,
  346. with c*v(opt) minimal) by the following procedure:
  347. @end ifinfo
  348. @itemize @bullet
  349. @item (1) Compute the toric ideal I(A) using one of the algorithms in the previous section.
  350. @item (2) Compute the reduced Groebner basis G(c) of I(A) w.r.t.@:
  351. @ifinfo
  352. @math{>_c}
  353. @end ifinfo
  354. @tex
  355. $>_c$
  356. @end tex
  357. .
  358. @item (3) Reduce
  359. @ifinfo
  360. @math{x^v}
  361. @end ifinfo
  362. @tex
  363. $x^v$
  364. @end tex
  365. modulo G(c) using the Hironaka division algorithm.
  366. If the result of this reduction is
  367. @ifinfo
  368. @math{x^(v_0)}
  369. @end ifinfo
  370. @tex
  371. $x^(v_0)$
  372. @end tex
  373. , then
  374. @ifinfo
  375. @math{v_0}
  376. @end ifinfo
  377. @tex
  378. $v_0$
  379. @end tex
  380. is an optimal
  381. solution of the given instance.
  382. @end itemize
  383. If no initial solution is known, we are nevertheless able to solve the
  384. problem with similar techniques. For this purpose we replace our
  385. instance by an extended instance with the matrix used
  386. in the Conti-Traverso algorithm. Indeed, the Conti-Traverso
  387. algorithm offers the possibility to verify solvability of a given
  388. instance and to find an initial solution in the case of existence (but
  389. none of the other algorithms does!). Details can be found in [CoTr91]
  390. and [The99].
  391. An implementation of the above algorithm and some examples can be found in @ref{intprog_lib}.
  392. Classical methods for solving IP instances like Branch-and-Bound
  393. methods seem to be faster in general than the methods using toric
  394. ideals. But the latter have one great advantage: If one wants to solve
  395. various instances that differ only by the vector
  396. @ifinfo
  397. @math{b}
  398. @end ifinfo
  399. @tex
  400. $b$
  401. @end tex
  402. , one has to
  403. perform steps (1) and (2) above only once. As the running time of step (3)
  404. is very short, solving all the instances is not much harder than
  405. solving one single instance.
  406. For a detailed discussion see [The99].
  407. @node Relevant References, , Integer programming, Toric ideals and integer programming
  408. @subsection Relevant References
  409. @itemize @bullet
  410. @item [Big97] Bigatti, A.M.: @anchor{[Big97]}
  411. Computation of Hilbert-Poincare series.
  412. Journal of Pure and Applied Algebra (1997) 199, 237-253
  413. @item [BLR98] Bigatti, A.M.; La Scala, R.; Robbiano, L.: @anchor{[BLR98]}
  414. Computing toric ideals.
  415. Journal of Symbolic Computation (to appear)
  416. @item [Coh93] Cohen, H.: @anchor{[Coh93]}
  417. A Course in Computational Algebraic Number Theory.
  418. Springer (1997)
  419. @item [CoTr91] Conti, P.; Traverso, C.: @anchor{[CoTr91]}
  420. Buchberger algorithm and integer programming.
  421. Proceedings AAECC-9 (new Orleans), Springer LNCS (1991) 539,
  422. 130-139
  423. @item [DBUr95] Di Biase, F.; Urbanke, R.: @anchor{[DBUr95]}
  424. An algorithm to calculate the kernel of certain polynomial ring
  425. homomorphisms.
  426. Experimental Mathematics (1995) 4, 227-234
  427. @item [HoSh98] Hosten, S.; Shapiro, J.: @anchor{[HoSh98]}
  428. Primary decomposition of lattice basis ideals.
  429. (to appear)
  430. @item [HoSt95] Hosten, S.; Sturmfels, B.: @anchor{[HoSt95]}
  431. GRIN: An implementation of Groebner bases for integer programming.
  432. in Balas, E.; Clausen, J. (editors): Integer Programming and
  433. Combinatorial Optimization.
  434. Springer LNCS (1995) 920, 267-276
  435. @item [Pot94] Pottier, L.: @anchor{[Pot94]}
  436. Groebner bases of toric ideals.
  437. Rapport de recherche 2224 (1997), INRIA Sophia Antipolis
  438. @item [Stu96] Sturmfels, B.: @anchor{[Stu96]}
  439. Groebner Bases and Convex Polytopes.
  440. University Lecture Series, Volume 8 (1996), American Mathematical
  441. Society
  442. @item [The99] Theis, C.: @anchor{[The99]}
  443. Der Buchberger-Algorithmus fuer torische Ideale und seine Anwendung
  444. in der ganzzahligen Optimierung.
  445. Diplomarbeit, Universitaet des Saarlandes (1999), Saarbruecken
  446. (Germany)
  447. @end itemize