LMCAS
Lamina Computer Algebra System
载入中...
搜索中...
未找到
LMCAS::fglm_detail::MonomialEnumerator类 参考

#include </home/runner/work/docs/docs/LMCAS/src/internal/fglm_internal.hpp>

LMCAS::fglm_detail::MonomialEnumerator 的协作图:

类

struct  HeapCmp

Public 成员函数

 MonomialEnumerator (size_t num_vars, const MonomialOrder &order, int max_degree)
bool next (Monomial &out)

Private 成员函数

void push (const Monomial &monomial)

Private 属性

HeapCmp cmp_ {&order_}
std::vector< Monomial > heap_
int max_degree_
size_t num_vars_
MonomialOrder order_
std::set< Monomial > visited_

详细描述

在文件 fglm_internal.hpp 第 8 行定义.

构造及析构函数说明

◆ MonomialEnumerator()

LMCAS::fglm_detail::MonomialEnumerator::MonomialEnumerator ( size_t num_vars,
const MonomialOrder & order,
int max_degree )

在文件 fglm_linear.cpp 第 6 行定义.

7 : num_vars_(num_vars), order_(order), max_degree_(max_deg) {
8
9 Monomial one(num_vars, 0);
10 push(one);
11 }
void push(const Monomial &monomial)
std::vector< int > Monomial
单项式类型,以整数向量表示各变量的指数
const std::vector< FGLMPoly > const MonomialOrder & order

引用了 max_degree_, num_vars_, LMCAS::order, order_ , 以及 push().

函数调用图:

成员函数说明

◆ next()

bool LMCAS::fglm_detail::MonomialEnumerator::next ( Monomial & out)

在文件 fglm_linear.cpp 第 13 行定义.

13 {
14 if (heap_.empty()) return false;
15 out = heap_.front();
16 std::pop_heap(heap_.begin(), heap_.end(), cmp_);
17 heap_.pop_back();
18
19 int out_deg = total_degree(out);
20 if (out_deg < max_degree_) {
21 for (size_t i = 0; i < num_vars_; ++i) {
22 Monomial succ = out;
23 succ[i] += 1;
24 push(succ);
25 }
26 }
27 return true;
28 }
int total_degree(const Monomial &m)
计算单项式的全次数

引用了 cmp_, heap_, max_degree_, num_vars_, push() , 以及 LMCAS::total_degree().

被这些函数引用 LMCAS::fglm_convert().

函数调用图:
这是这个函数的调用关系图:

◆ push()

void LMCAS::fglm_detail::MonomialEnumerator::push ( const Monomial & monomial)
private

在文件 fglm_linear.cpp 第 30 行定义.

30 {
31 if (visited_.count(m)) return;
32 visited_.insert(m);
33 heap_.push_back(m);
34 std::push_heap(heap_.begin(), heap_.end(), cmp_);
35 }

引用了 cmp_, heap_ , 以及 visited_.

被这些函数引用 MonomialEnumerator() , 以及 next().

这是这个函数的调用关系图:

类成员变量说明

◆ cmp_

HeapCmp LMCAS::fglm_detail::MonomialEnumerator::cmp_ {&order_}
private

在文件 fglm_internal.hpp 第 26 行定义.

被这些函数引用 next() , 以及 push().

◆ heap_

std::vector<Monomial> LMCAS::fglm_detail::MonomialEnumerator::heap_
private

在文件 fglm_internal.hpp 第 24 行定义.

被这些函数引用 next() , 以及 push().

◆ max_degree_

int LMCAS::fglm_detail::MonomialEnumerator::max_degree_
private

在文件 fglm_internal.hpp 第 23 行定义.

被这些函数引用 MonomialEnumerator() , 以及 next().

◆ num_vars_

size_t LMCAS::fglm_detail::MonomialEnumerator::num_vars_
private

在文件 fglm_internal.hpp 第 21 行定义.

被这些函数引用 MonomialEnumerator() , 以及 next().

◆ order_

MonomialOrder LMCAS::fglm_detail::MonomialEnumerator::order_
private

在文件 fglm_internal.hpp 第 22 行定义.

被这些函数引用 MonomialEnumerator().

◆ visited_

std::set<Monomial> LMCAS::fglm_detail::MonomialEnumerator::visited_
private

在文件 fglm_internal.hpp 第 25 行定义.

被这些函数引用 push().


该类的文档由以下文件生成: