-
-
Notifications
You must be signed in to change notification settings - Fork 453
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
Equivalence between OA/TD/MOLS #16231
Comments
Branch: u/ncohen/16231 |
Commit: |
comment:3
Hello, Remainder: the content of this ticket has been partially discussed in #15310 and #16227. I assume that the big goal of this ticket is also to find more constructions. The operation which consists in removing groups is trivial. So instead of given a couple (k,n) look for a TD(k,n) it is just more meaningful for a given n to have functions which:
Removing this feature from the MOLS in is very bad. I would rather try to make it available in the other functions. Doing it by "trying all In order to find new TD(k,n), we have different strategies:
Is that all? I would like this to be clear before thinking about what you did. Vincent |
comment:4
Yo !
Indeed.
Vincent, you need to stop screaming every ten seconds when something trivial is changed. This thing will appear again, as I am telling you that I want to reproduce the big MOLS table in the Handbook. Finding the largest k in the very purpose of my not sleeping and forgetting to eat for days. I removed this parameter right now because it can not be guessed at no cost, as it was the case. In order to find the largest k, you must explore many branches and recursive constructions, and implementing this will be done in another ticket, as those are sufficiently complicated and long to review already. Again, stop screaming every minute. There was NOTHING about MOLS in Sage very recently, and we implement a lot of stuff at once. Here I remove stuff because it makes my patch easier to implement, and I will add it again later. Nobody even knew that this feature existed except me.
Vincent, be serious. Have you thought about it ?... There is no other way to do that.
And the ones I am implementing. Indeed.
They must overlap on some values, and not on others.
Yep.
Yep.
Well, I think that it is all. The point is that before this ticket, the MOLS constructor has only two cases :
When the first is applied, the "best k" is easy to find. When the second is applied, the "best k" is easy to find. Thus I had added this feature or returning the "best k", because it came at absolutely no cost. Now we can build much better MOLS than that, because we have a LOT of constructions in OA/TD that MOLS can use, and so we can return MOLS that we would not have had with the previous constructions. On the other hand, if the "best k" we can now build is higher than what we could do before, it is not as easy to deduce because you have to explore stuff, in particular in the recursive constructions of OA/TD. Thus I removed this guessing, because it is not how this feature is to be implemented. The only way I see to implement it is to try all values and return the largest one found, and I have no idea what you can think about when you say that it "does not look like a good strategy". It is the only one we can implement. And we will implement this "best k" for all constructions at the same time. Or perhaps only for OA, and all others will ask it. Once, and for all constructors. But first, let them communicate. Nathann |
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:6
Hi Nathann, I added some documentation, please start editing from u/vdelecroix/16231 If
Vincent |
comment:7
Yo !
Okay, I'll look at that right now.
No idea. They return valid answers, but I have no idea if they are the same. I would say "no", but really who cares ? Let's keep only one.
Am I guilty for that ?...
I don't think we need two constructions of the same designs... I mean. AFTER this patch is merged, I don't think we need two, given that they all communicate with each other. BEFORE this patch, we actually need three different implementations Nathann |
comment:8
Okay, I agree with your modifications except one :
We shouldn't duplicate non-existence results but rather forward them, in this case forward it from OA to TD. The nice thing is that later we will be able to implement a 'non-existence result' exactly like a construction !! A 'non-existence result' will be a function taking a "k,n,existence=" as parameter, which can sometimes return "False" as an answer instead of "Unknown" Thiiiiiiiiiis code will become COOL. Nathann |
comment:9
Replying to @nathanncohen:
For the simple reason that in Vincent |
comment:10
Isn't the problem solved if we call Nathann |
comment:11
Replying to @nathanncohen:
It is if all easy checks of non-existence are done inside |
comment:12
Yo !
Why ? It would work anyway. The order changes the performances, not the existence of a result.
True. So you can either add something which we will remove in a patch today or tomorrow, or wait until we change "availability" to "existence" so that we can do this properly. Nathann |
Changed branch from u/ncohen/16231 to public/16231 |
comment:13
I changed the branch. You can append your commits to Nathann |
comment:14
(aaaaaand I just began to prepare the 1000 OA constructions I finished this morning) |
comment:15
About my check at the begining of TD, there is exactly the same code at the begining of MOLS... so what? |
comment:16
As I say, we can either include it now and remove it later or not do it, really it is up to you. I still consider this code as "being worked on" and everything in there is pretty new. For as long as it does not return wrong results, I do not mind if it is not "finished" given that I am working on it and that I know it will be patched soon Nathann |
comment:17
Gosh... The branch on #16277 will be awful. I have three dependencies which all have dependencies. There will be one thousand commit on the branch and actually only ONE which is just about that branch This would have been complicated with Mercurial I guess Nathann |
comment:19
Hi Nathann, I updated the code with what I proposed. Please check. |
comment:20
Yooooooooooo ! I agree with everything. Well. Except : Vincent, you are one of the guys who cannot stand to see
I am the kind of guy who cannot stand to see
Sooooooo could we coexist in the way that you don't change my writing unless you need to, and I don't change yours unless I need to ? Thaaaaaaanks. Good to go for me. And the constructions patch will be ready soon Nathann |
comment:21
Hi Nathann, I like both, but have a preference for the second one. Anyway I started doing it because both kinds were present. I will revert to the way you like. |
comment:22
Well it really doesn't matter, let's keep it as it is ! I just had many reviews on "you should not write it the way you like, write it the way I like instead" It's cool like that, we have more interesting wars to fight Nathann |
comment:23
I just tested, and all tests pass. So if it is okay for you, it can go too Nathann |
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:25
Added a trivial change for uniformization. Feel free to positive review it. I will start #16272 now. Vincent |
comment:26
Argggggggg... Nathann |
comment:27
Okay with your test. So I set this to If you want to work on designs you can look at #16277 in the meantime. The two tasks do not conflict. Nathann |
Reviewer: Vincent Delecroix |
comment:29
Replying to @nathanncohen:
Ok. I let you start. I am looking at the literature right now. |
Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:
|
comment:32
Still updating (and making mistakes in the commit messages) |
Changed branch from public/16231 to |
This branch implements the following equivalence result : there exists a TD(k,n) iif there exists a OA(k,n) iif there exists k+2 MOLS.
With this branch, the three constructors communicate with each other, and a construction of any of these objects can be used to create objects of the other kinds.
Because the constructor of OA calls the constructor of TD,and because the constructor of TD calls the constructor of OA, there is a new
who_asked
parameters in these constructors which can be used to remember who asked the question first.On the down side : the constructor of MOLS used to be able to return "the maximum number of MOLS of size nxn that Sage can build". With this patch, the feature is removed.
Explanation: I created this feature because we only had two simple constructions of MOLS, and because it was easy to guess this number k from those constructions. With the new equivalences, this is not as easy anymore, thus I removed it for the moment.
I think that it is not that bad, considering that it appeared very recently, and that not many people may even know that Sage can build MOLS yet.
This feature, however, can be interesting, and can be reimplemented. While with the two former constructions it was easy to guess in one line, we now have to try all possible parameters to find the largest integer k we are looking for. This is not necessarily very time-consuming given that all these objects now have an "availability" flag.
Hence it will be implemented again, this time for all constructions at the same time.
Two important points:
HEeeeeeeeeeeeeeeeeere it is !
:-)
Nathann
Depends on #15310
Depends on #16227
CC: @videlec @KPanComputes @dimpase
Component: combinatorics
Author: Nathann Cohen
Branch/Commit:
9e5e94f
Reviewer: Vincent Delecroix
Issue created by migration from https://trac.sagemath.org/ticket/16231
The text was updated successfully, but these errors were encountered: