-
Notifications
You must be signed in to change notification settings - Fork 32
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
add mergeID #3027
add mergeID #3027
Conversation
H = setdiff(idx2, idx1) | ||
idx_new = vcat(idx1, H) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am not sure this is correct. It seems non-symmetric. Does the test still work in the other order?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it's symmetric up to permutation. That is the merged zonotopes will have the same parameters, but these will not necessarily ordered by index (i.e. the index vector is not ordered). If one also sorted the index vector, then it would be symmetric I think
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
at least looking at the algorithm description on page 35 of Niklas' thesis, the algorithm doesn't seem to be symmetric (because it doesn't fix the order)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So when you do mergeID(PZ2, PZ1)
in the test case, you get the IDs [2, 4, 1, 3]
. Is this acceptable or should the indices be sorted?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
based on today's conversation, should we normalize the order?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if in functions that require the same idvector (quadratic map, exact sum) you so something like
indexvector(PZ1) == indexvector(PZ2) || (PZ1, PZ2 = mergeID(PZ1, PZ2)
I think even without normalizing the order it would be correct, because calling mergeID
would not change PZ1, PZ2
as setdiff(idx2, idx1)
would be empty on the other hand, I don't see harm in normalizing the order either
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would not be surprised if some operations assume the same order after mergeID
. So I would sort.
ff53d77
to
87ef0a6
Compare
What is the status of this PR? |
Closing because we probably do not need this. |
this is probably a brute force implementation of the pseudocode in niklas thesis (page 35), not sure if one can squeeze some more performance... I doubt that would be the bottleneck in any application anyway
Another question, should we have also an in-place version?