Improve connectivity code#49
Merged
Merged
Conversation
If nr_qubits = 0, the subtraction will wrap around and we get a panic because a Vec of usize::MAX can not be allocated. By changing to 1..nr_qubits the range will be empty if nr_qubits = 0 and hence edges will be [] without problems (and the i - 1 in the closure is also fine because i >= 1).
The code
while u != v {
if let Some(x) = ... {
}
}
will run forever if a None is encountered at a point. Breaking in that
case doesn't make sense because we are returning a partial path without
warning. Since we already checked that self.prev[u][v] is not None, we
expect there exists a path from u to v and, hence, self.prev should also
contain all nodes along this path.
Iterating over nodes seems to be the safer option in presence of removed nodes which could leave gaps in the node ids.
contains() and retain() were two passes over the array, pos() and swap_remove() only take one. Since we don't use the nodes afterwards (except for error reporting), order need not be preserved.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Various small changes in the
Connectivityimplementation. See the commit messages for details.