comment pseudocode for add_row

This commit is contained in:
2019-11-18 11:15:20 -05:00
parent b482d5a4df
commit 41907d927d

View File

@@ -19,7 +19,7 @@ void pp(const Table &t) {
} }
} }
void new_coset(const int ngens, const std::vector<Gens> &rels, void add_row(const int ngens, const std::vector<Gens> &rels,
Table &cosets, std::vector<Table> &reltables, Table &cosets, std::vector<Table> &reltables,
Table &starts, Table &ends) { Table &starts, Table &ends) {
@@ -27,7 +27,7 @@ void new_coset(const int ngens, const std::vector<Gens> &rels,
cosets.emplace_back(ngens, -1); cosets.emplace_back(ngens, -1);
for (size_t i = 0; i < rels.size(); ++i) { for (unsigned int i = 0; i < rels.size(); ++i) {
auto &table = reltables[i]; auto &table = reltables[i];
unsigned int R = rels[i].size(); unsigned int R = rels[i].size();
@@ -41,7 +41,27 @@ void new_coset(const int ngens, const std::vector<Gens> &rels,
} }
} }
Table solve_tc(int ngens, const Gens &sub, const std::vector<Gens> &rels) { /**
* @return true if anything was learned
*/
void learn(Table &coset, const std::vector<Gens> &rels,
std::vector<Table> &reltables, Table &starts, Table &ends) {
// set learning
// while learning
// not learning
// for each table
// for each row of the table
// load left and right from starts/ends
// if the left and right already meet, skip
// try to deduce more about the row from the left (don't pass right)
// try to deduce more about the row from the right (don't pass left)
// if the left and right meet
// set learning
// write to the coset table
}
Table solve_tc(int ngens, const Gens &subgens, const std::vector<Gens> &rels) {
Table cosets; Table cosets;
std::vector<Table> reltables(rels.size()); std::vector<Table> reltables(rels.size());
@@ -49,7 +69,11 @@ Table solve_tc(int ngens, const Gens &sub, const std::vector<Gens> &rels) {
Table starts(rels.size()); // [rel_table][coset] Table starts(rels.size()); // [rel_table][coset]
Table ends(rels.size()); Table ends(rels.size());
new_coset(ngens, rels, cosets, reltables, starts, ends); // set up initial coset
add_row(ngens, rels, cosets, reltables, starts, ends);
for (const auto &gen : subgens) {
cosets[0][gen] = 0;
}
return cosets; return cosets;
} }