-
-
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
Information set decoding for linear codes #20138
Comments
Commit: |
Branch pushed to git repo; I updated commit sha1. New commits:
|
Author: David Lucas |
comment:4
I made some changes:
This is now open for review. |
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:7
I updated this ticket to latest beta, fixed broken doctests, and did minor changes to the decoder (I refined its types and rewrote a line in the documentation). |
comment:9
I updated this ticket to 7.3b2, and fixed a bug. Best, David |
comment:10
Here are my two cents:
all in all, here is how I would do it (notations from the article you cite): import itertools
def LeeBrickell(r, C, w, p):
G = C.generator_matrix()
n = C.length()
k = C.dimension()
Fstar = list(C.base_ring())[1:]
while True:
# step 1.
I = sample(range(n), k)
Gi = G.matrix_from_columns(I)
try:
Gi_inv = Gi.inverse()
except ZeroDivisionError:
continue
G = Gi_inv * G
#step 2.
y = r - vector([r[i] for i in I]) * G
g = G.rows()
#step 3.
for A in itertools.combinations(range(k), p):
for m in itertools.product(Fstar, repeat=p):
e = y - sum(m[i]*g[A[i]] for i in range(p))
if e.hamming_weight() == w:
return r - e |
Reviewer: Yann Laigle-Chapuy |
comment:11
You should also check if the resulting word is in the code (it might not be the case if you try to decode beyond the minimal distance). |
comment:12
In case you want to optimize this a bit, you can replace the This is probably better kept for another ticket. |
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:63
Indeed. These omissions are fixed now. |
comment:64
Ok, I finally took the time to build the doc and check it out. Build without a fuss and LGTM. Your long doctest with The bot is also green, so let's move forward: positive review :) |
comment:65
Great! Thanks for the cooperation - I think this has become a really nice addition to Sage. I'm looking forward to seeing your implementation in #23244. |
comment:66
|
comment:67
Replying to @vbraun:
I couldn't get that on my setup while repeating the test a 1000 time. |
comment:68
Hmm, we were also in doubt about that test, as you can see from the discussion above. I had believed that it was fairly stable now, but evidently timing behaviour on the build bots are not very dependable. So perhaps we should simply remove the test - what do you think? Any alternative suggestions for how we could test the calibration code? |
comment:69
|
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:71
Replying to @vbraun:
OK, I've pushed a patch removing the offending test and instead making a small refactor such that we can test the last item on your list. It seems a pity, however, that there is no good way to test that the calibrated timings have anything to do with reality. |
comment:73
OK, let's do it that way (and the failure in the docbuild is unrelated) LGTM |
Changed branch from u/jsrn/information_set_decoding to |
This ticket proposes an implementation of Lee-Brickell algorithm refinement for the information set decoding.
It depends on #19653 for the reimplementation of
C.random_element
.Depends on #19653
CC: @jlavauzelle
Component: coding theory
Author: David Lucas, Johan Rosenkilde, Yann Laigle-Chapuy
Branch/Commit:
eb2efb3
Reviewer: Yann Laigle-Chapuy
Issue created by migration from https://trac.sagemath.org/ticket/20138
The text was updated successfully, but these errors were encountered: