Skip to content
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

Closed
wants to merge 2 commits into from
Closed

add mergeID #3027

wants to merge 2 commits into from

Conversation

lucaferranti
Copy link
Member

@lucaferranti lucaferranti commented Aug 6, 2022

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?

src/Sets/SparsePolynomialZonotope.jl Show resolved Hide resolved
Comment on lines +232 to +233
H = setdiff(idx2, idx1)
idx_new = vcat(idx1, H)
Copy link
Member

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?

Copy link
Member Author

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

Copy link
Member Author

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)

Copy link
Member

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?

Copy link
Member Author

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?

Copy link
Member Author

@lucaferranti lucaferranti Aug 8, 2022

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

Copy link
Member

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.

src/Sets/SparsePolynomialZonotope.jl Outdated Show resolved Hide resolved
@mforets
Copy link
Member

mforets commented Aug 20, 2022

What is the status of this PR?

@lucaferranti lucaferranti marked this pull request as draft August 27, 2022 12:04
@schillic
Copy link
Member

schillic commented May 5, 2023

Closing because we probably do not need this.

@schillic schillic closed this May 5, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants