-
-
Notifications
You must be signed in to change notification settings - Fork 491
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
Implement the Links-Gould polynomial invariant for links #33798
Comments
Branch: u/soehms/links_gould_poly_33798 |
Commit: |
Author: Sebastian Oehms |
New commits:
|
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:4
I just fixed a merge conflict. |
comment:5
Since everything only involves square roots of the variables, wouldn't it be better to replace |
comment:6
Replying to @tscrim:
Maybe I don't understand your idea exactly. I've tried to use a quotient ring over a three variate polynomial ring the third variable of which corresponding to the term abbreviated |
comment:7
Replying to @soehms:
I am not suggesting that. In the description, you say you use
No problem. Enjoy your vacation. I would have the internal cached method use fixed variable names and then do a substitution for different user input to not redo the computation just because the variable names change. Also, typo: |
comment:8
Replying to @tscrim:
It's not just squares of the variables, there are also squares of non monomial Laurent polynomials (see the Anyway, I will think about this once again, when I'm back home. Thanks for looking at the ticket! |
This comment has been minimized.
This comment has been minimized.
comment:10
Travis, you are right! Indeed, the quotient ring leads to a faster implementation. It seems that I didn't use sparse matrices for this ring in my former tests (note that for symbolics there is no proper sparse implementation and thus dense matrices perform better in this setting). Nevertheless I keep the usage of the symbolic ring as a second implementation option, since it might be useful for cross checks and verifications. |
comment:11
Sorry for taking so long to get to this. I am glad you were able to speed it up. How does it compare to doing computations in LC = LaurentPolynomialRing(ZZ, 's0r, s1r')
s0r, s1r = LC.gens()
LR = PolynomialRing(LC 'Yr')
Yr = LR.gen()
pqr = Yr**2 + (s0r**2-1)*(s1r**2 -1) This way it is the quotient ring of a univariate polynomial ring. I would think working with quotients there would be faster since the data type is more simple. Also, I would have def links_gould_polynomial(self, varnames=None, use_symbolics=False):
if varnames is not None:
poly = links_gould_polynomial(use_symbolics=use_symbolics)
R = PolynomialRing(ZZ, varnames)
t0, t1 = R.gens()
return poly(t0=t0, t1=t1)
varnames = 't0, t1' to not do the full computation again when only the variable names have changed. |
comment:13
Replying to @tscrim:
No problem!
Many thanks for this useful suggestion. Once again, I could achieve a remarkable improvement of performance with it. The calculation for knot K10_1 which didn't terminate using symbolics within a day, now needs 22 minutes. With the former quotient ring version it has been 4 hours. Furthermore, I now could successfully run a crosscheck over all links listed in the KnotInfo and LinkInfo databases having less than 5 strands (3342 in sum) against the according specialization of the formal Markov trace on the cubic Hecke algebra (see method
This is done now, as well! BTW: You may have asked why I wrote |
This comment has been minimized.
This comment has been minimized.
comment:15
Thank you. I am glad it was useful. LGTM. |
Reviewer: Travis Scrimshaw |
comment:16
Replying to @tscrim:
I'm also glad. Thank you, too! |
Changed branch from u/soehms/links_gould_poly_33798 to |
At the moment there doesn't seem to be any public available calculator for this invariant. We will implement it straight forward according to the definition given in A CUBIC DEFINING ALGEBRA FOR THE LINKS-GOULD POLYNOMIAL by Marin and Wagner, section 3. Calculations are done on sparse matrices over a univariate quotient polynomial ring over a two variate Laurent polynomial ring since the square-roots of a non monomial polynomial are involved. This is just necessary for the calculation. The result simplifies to a proper two variate Laurent polynomial. As the dimension of these matrices are given by
4^num_strands
the performance slows down accordingly.In a second step we could try to figure out if the approach followed in a 2013 paper of David de Witt respective a 2019 paper of Cristina Ana-Maria Anghel would improve performance.
Some examples: On an i7 CPU the calculation for three strand braids need less than a second. For four strand braids it takes between two and six seconds whereas for five strand braids between one and two minutes are needed. For example
K8_1
takes one and a half minute. Braids with six strands need more than than 20 minutes (for exampleK10_1
22 minutes).Component: algebraic topology
Keywords: Links-Gould polynomial knots links
Author: Sebastian Oehms
Branch/Commit:
08e3bfe
Reviewer: Travis Scrimshaw
Issue created by migration from https://trac.sagemath.org/ticket/33798
The text was updated successfully, but these errors were encountered: