-
-
Notifications
You must be signed in to change notification settings - Fork 517
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improve face iterator for almost simple/simplicial polytopes #30438
Comments
Last 10 new commits:
|
Commit: |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:7
A remark to cythonizing and compiling:
+ foo = self.atoms.data
+ atoms_face_length = self.atoms.face_length
+
+ counter = 0
+ for j in range(self.atoms.n_faces):
+ if count_atoms(foo[j], atoms_face_length) == self.structure.dimension:
+ counter += 1
+ self.structure.simple_vertices[j//64] |= vertex_to_bit_dictionary(j % 64)
+ counter = 0
+ for j in range(self.atoms.n_faces):
+ if count_atoms(self.atoms.data[j], self.atoms.face_length) == self.structure.dimension:
+ counter += 1
+ self.structure.simple_vertices[j//64] |= vertex_to_bit_dictionary(j % 64)
+ counter = 0
+ for j in range(self.atoms.n_faces):
+ if count_atoms(self.atoms.data[j], self.atoms.face_length) == self.structure.dimension:
+ counter += 1
+ self.structure.simple_vertices[j//64] |= vertex_to_bit_dictionary(j % 64)
+
+ for j in range(self.atoms.n_faces):
+ if count_atoms(self.atoms.data[j], self.atoms.face_length) == self.structure.dimension:
+ self.structure.simple_vertices[j//64] |= vertex_to_bit_dictionary(j % 64) I guess looking up Perhaps even more suprising. When you add
to the beginning of |
comment:9
Changes from #30040. Last 10 new commits:
|
Changed branch from u/gh-kliem/face_iterator_simple_face to u/gh-kliem/face_iterator_simple_face_2 |
comment:10
needs rebase |
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:13
I want to redesign some of the setup before making everything more complicated. More precisely, creating strucutures |
comment:15
Setting new milestone based on a cursory review of ticket status, priority, and last modification date. |
comment:16
Setting a new milestone for this ticket based on a cursory review. |
#30040 improved the face iterator for simple/simplicial polytopes.
Actually, the same trick can be applied for simple faces. (Note that the iterator treats simplicial polytopes dually).
If a face is simple, then any intersections of it's facets is one of it's ridges or empty.
As this helps only sporadically, we cannot afford to compute for each face if it is simple. However, a cheap certificate of a face being simple is that it only contains "simple vertices" (with vertex figure a simplex).
Now, at initialization the face iterator computes those "simple vertices" and checks inclusion of each face to determine if it is simple (if not at least 10 percent of the vertices we skip this check). If a face is simple, we can skip the costly inclusion checks.
Before this ticket:
Note that for the last instance, there isn't a significant amount of simple vertices so the old approach is chosen.
Depends on #30040
Depends on #30435
CC: @jplab @LaisRast @tscrim
Component: geometry
Keywords: simple, simplicial, face iterator, polytope
Author: Jonathan Kliem
Branch/Commit: u/gh-kliem/face_iterator_simple_face_2 @
d3c9384
Issue created by migration from https://trac.sagemath.org/ticket/30438
The text was updated successfully, but these errors were encountered: