source: git/kernel/linear_algebra/MinorInterface.h @ f29c0d

fieker-DuValspielwiese
Last change on this file since f29c0d was 266ae3, checked in by Hans Schoenemann <hannes@…>, 6 years ago
chg: only one definition for poly/ideal/map/matrix
  • Property mode set to 100644
File size: 5.2 KB
Line 
1#ifndef MINOR_INTERFACE_H
2#define MINOR_INTERFACE_H
3
4#include "polys/monomials/ring.h"
5#include "kernel/polys.h"
6
7/* all computations are module char, if char <> 0;
8   if additionally, an ideal i != NULL is given, then computations are
9   modulo i (in this case, i is assumed to be a standard basis);
10   if k = 0, then all non-zero minors are requested, otherwise
11   if k > 0, then the first k non-zero minors are requested,
12   if k < 0, then the first |k| minors (zero is allowed) are requested,
13   (note that k <> 0 may result in a smaller number k' of
14   minors if there are only k' < |k| minors;
15   if an algorithm is provided, it must be one of "Bareiss" or
16   "Laplace"; when a cache is used, the underlying algorithm
17   is automatically Laplace */
18
19/**
20* Returns the specified set of minors (= subdeterminantes) of the
21* given matrix. These minors form the set of generators of the ideal
22* which is actually returned.<br>
23* If k == 0, all non-zero minors will be computed. For k > 0, only
24* the first k non-zero minors (to some fixed ordering among all minors)
25* will be computed. Use k < 0 to compute the first |k| minors (including
26* zero minors).<br>
27* algorithm must be one of "Bareiss" and "Laplace".<br>
28* i must be either NULL or an ideal capturing a standard basis. In the
29* later case all minors will be reduced w.r.t. i.
30* If allDifferent is true, each minor will be included as generator
31* in the resulting ideal only once; otherwise as often as it occurs as
32* minor value during the computation.
33* @param m the matrix from which to compute minors
34* @param minorSize the size of the minors to be computed
35* @param k the number of minors to be computed
36* @param algorithm the algorithm to be used for the computation
37* @param i NULL or an ideal which encodes a standard basis
38* @param allDifferent if true each minor is considered only once
39* @return the ideal which has as generators the specified set of minors
40*/
41ideal getMinorIdeal (const matrix m, const int minorSize, const int k,
42                     const char* algorithm, const ideal i,
43                     const bool allDifferent);
44
45/**
46* Returns the specified set of minors (= subdeterminantes) of the
47* given matrix. These minors form the set of generators of the ideal
48* which is actually returned.<br>
49* If k == 0, all non-zero minors will be computed. For k > 0, only
50* the first k non-zero minors (to some fixed ordering among all minors)
51* will be computed. Use k < 0 to compute the first |k| minors (including
52* zero minors).<br>
53* The underlying algorithm is Laplace's algorithm with caching of certain
54* subdeterminantes. The caching strategy can be set; see
55* int MinorValue::getUtility () const in Minor.cc. cacheN is the maximum
56* number of cached polynomials (=subdeterminantes); cacheW the maximum
57* weight of the cache during all computations.<br>
58* i must be either NULL or an ideal capturing a standard basis. In the
59* later case all minors will be reduced w.r.t. i.
60* If allDifferent is true, each minor will be included as generator
61* in the resulting ideal only once; otherwise as often as it occurs as
62* minor value during the computation.
63* @param m the matrix from which to compute minors
64* @param minorSize the size of the minors to be computed
65* @param k the number of minors to be computed
66* @param i NULL or an ideal which encodes a standard basis
67* @param cacheStrategy one of {1, .., 5}; see Minor.cc
68* @param cacheN maximum number of cached polynomials (=subdeterminantes)
69* @param cacheW maximum weight of the cache
70* @param allDifferent if true each minor is considered only once
71* @return the ideal which has as generators the specified set of minors
72*/
73ideal getMinorIdealCache (const matrix m, const int minorSize, const int k,
74                          const ideal i, const int cacheStrategy,
75                          const int cacheN, const int cacheW,
76                          const bool allDifferent);
77
78/**
79* Returns the specified set of minors (= subdeterminantes) of the
80* given matrix. These minors form the set of generators of the ideal
81* which is actually returned.<br>
82* If k == 0, all non-zero minors will be computed. For k > 0, only
83* the first k non-zero minors (to some fixed ordering among all minors)
84* will be computed. Use k < 0 to compute the first |k| minors (including
85* zero minors).<br>
86* The algorithm is heuristically chosen among "Bareiss", "Laplace",
87* and Laplace with caching (of subdeterminants).<br>
88* i must be either NULL or an ideal capturing a standard basis. In the
89* later case all minors will be reduced w.r.t. i.
90* If allDifferent is true, each minor will be included as generator
91* in the resulting ideal only once; otherwise as often as it occurs as
92* minor value during the computation.
93* @param m the matrix from which to compute minors
94* @param minorSize the size of the minors to be computed
95* @param k the number of minors to be computed
96* @param i NULL or an ideal which encodes a standard basis
97* @param allDifferent if true each minor is considered only once
98* @return the ideal which has as generators the specified set of minors
99*/
100ideal getMinorIdealHeuristic (const matrix m, const int minorSize,
101                              const int k, const ideal i,
102                              const bool allDifferent);
103
104#endif
105/* MINOR_INTERFACE_H */
Note: See TracBrowser for help on using the repository browser.