Skip to content

Simplex_tree cofaces improvements #906

Open
@mglisse

Description

@mglisse

Some possible improvements were mentioned in #877, but we did not have time to explore them before merging. I am listing some of them here (we won't implement all of them).

  • Simplex_handle can be returned by value
  • It would be more convenient if the intrusive list could have a value_type of Dit_value_t, or anything closer to a Simplex_handle than a hook (at least a Node). It isn't obvious if that is directly possible since intrusive::list expects the hook to be a base or a member, not a member of a member. It would also be possible to have nodes_by_label return a transformed_range that does whatever conversion we want (say simplex_handle_from_node) so it would still be convenient to use.
  • Simplex_tree_optimized_cofaces_rooted_subtrees_simplex_iterator looks like it could be replaced by a filtered_range<is_coface, List_max_vertex>
  • This BFS stores many Siblings*, it is perfectly possible to walk a tree without wasting as much memory (memory proportional to the depth should suffice).
  • Computing cofaces by filtering the star is a waste of time.
  • The original paper had one linked list per vertex per dimension. For the star, putting everything together is good. For a coboundary, it is a waste of time.
  • This line in the test seems bogus and should be removed?
    output.resize(std::distance(stars.begin(), stars.end()));

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions