-
-
Notifications
You must be signed in to change notification settings - Fork 601
Bugs in how ClusterQuiver handles coefficients #22381
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
Comments
comment:1
Actually a better example for the third issue:
|
Branch: public/ticket/22381 |
Commit: |
New commits:
|
Changed commit from |
Changed branch from public/ticket/22381 to none |
Stopgaps: 22464 |
Changed stopgaps from 22464 to #22464 |
Branch: u/chapoton/22381 |
New commits:
|
Commit: |
Branch pushed to git repo; I updated commit sha1. New commits:
|
Branch pushed to git repo; I updated commit sha1. New commits:
|
Branch pushed to git repo; I updated commit sha1. New commits:
|
Author: Frédéric Chapoton |
comment:12
Thank you for dealing with this Frédéric. I wanted to help with the review but I have a quite old version of sage right now and recompiling I bumped into #24575. I'll return to this once that is fixed. If anyone gets to it before I do please do not feel obliged to wait for me. |
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:52
Replying to @stumpc5:
A bit of both: we mutate the top part by If one wanted to be smarter this could be entirely done with your cytonized code. |
comment:53
So let me rephrase to see if I understand correctly and whether we are on the same page: The best version of your suggestion is that we could compute the complete mutation class of a symmetrizable matrix using the cythonized I will try to produce something similar to this and see how it compares... |
comment:54
Yes, this is more or less what I was thinking of. If the canonical form is able to distinguish also quivers with coefficients I would suggest this algorithm: B input matrix possibly with coefficients Append an identity matrix to B perfome mutations with cytonized mutate on the resulting matrix and use the last n entries in each column to distinguish matrices. return canonical form of the resulting matrices. This last step is not necessary if, at some stage, we find an identity matrix among the possibly permuted coefficient rows of a matrix. I am not sure it is worth testing for this though. |
Attachment: 2018_03-CythonTestMatrixMutation.py.gz |
comment:55
I have provided a toy example how to do the mutations on matrices instead at https://github.com/sagemath/sage/files/ticket22381/2018_03-CythonTestMatrixMutation.py..gz It is what I think is an improved version of what Salvatore and I discussed yesterday:
Despite this code, I am not convinced it is worth changing all of What do you think how to proceed here? |
Attachment: 2018_03-CythonTestMatrixMutation.2.py.gz |
comment:56
Okay, I changed to a different canonical labelling algorithm (namely |
comment:57
(The reason for this time improvement is that I don't care anymore about the automorphism group since matrix mutation is fast and I can afford to do all mutations at all vertices rather than knowing the automorphism group orbits.) |
comment:58
Attachment: 2018_03-CythonTestMatrixMutation.3.py.gz The newest version https://github.com/sagemath/sage-prod/files/10658987/2018_03-CythonTestMatrixMutation.3.py.gz is now in total 6 times faster than the original implementation. Now, 1/3 of the time is spent in the |
comment:59
and in particular
This seems not correct, since I believe you need to consider c-vectors up to index permutations: Consider bipartite A3 with principal coefficients and mutable vertices 0,1,2. Then vertices 0 and 2 form an orbit of its graph automorphism group and mutating at 0 and mutating at 2 yield the same quiver, while in the first case, you have c-vectors
and in the second case
which do not coincide. Am I correct that there is no situation where you can forget about the isomorphism test, or am I misunderstanding what you meant? In type A3, we have 10 different unlabelled quivers, while your algorithm found 14 = Cat(4). |
comment:60
Replying to @stumpc5:
|
comment:61
Hi Christian, Concerning your question I guess you are right: from the perspective of (valued) quiver up to isomorphism you should allow also index permutations of the c-vectors. The thing I had in mind was quiver isomorphism relative to fixed principal coefficients. In short my suggestion was again bullshit and you should just disregard it. I am glad that my nonsense somehow lead you to a faster/cleaner implementation anyway. As for what you say concerning a clean implementation to be added into sage I am |
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:63
I pushed what I currently have, but put this ticket on hold until #24917 is resolved. |
Branch pushed to git repo; I updated commit sha1. New commits:
|
Branch pushed to git repo; I updated commit sha1. New commits:
|
Dependencies: #24924 |
Branch pushed to git repo; I updated commit sha1. New commits:
|
Branch pushed to git repo; I updated commit sha1. New commits:
|
Branch pushed to git repo; I updated commit sha1. New commits:
|
The code performing mutations on
ClusterQuiver
does not handle properlycoefficients. In particular this introduces arrows in between frozen vertices
yielding issues when computing mutation classes.
Here is the smallest example I could come up with.
The problem is that, rather than performing matrix mutations the code calls an
helper function performing digraph mutations. I do not see the rationale behind
this. Not only it is slower than the simple matrix operations needed to perform
mutations on matrices but it is also giving issues.
Here is another similar issue:
Note that consistency tests (which in theory should not be needed and which
contribute to the overall slowdown) are performed in
__init__
only whencreating a
ClusterQuiver
from a digraph.Finally coefficients also force wrong answers from the algorithm computing
mutations classes:
Depends on #24924
CC: @sagetrac-gmoose05 @stumpc5 @sagetrac-drupel @sagetrac-vpilaud @slel
Component: combinatorics
Keywords: ClusterSeed, mutations, cluster
Stopgaps: #22464
Author: Frédéric Chapoton
Branch/Commit: public/22381 @
c719703
Issue created by migration from https://trac.sagemath.org/ticket/22381
The text was updated successfully, but these errors were encountered: