Add probability normalization to DynamicsBackend sampling routine #239
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.
Summary
Closes #237
Details and comments
When looking at the implementation I realized that two normalizations are necessary; it isn't possible to only normalize the probability before sampling. The state needs to be normalized before calculating probabilities so that the
QuantumState.probabilities_dict
function doesn't raise an error, and the resultant probabilities need to then be normalized to avoid numerical error in the probability computation.As a result of this, I've kept
options.normalize_states
, and modified the code that samples the outcomes to also normalize the probabilities ifoptions.normalize_states == True
. I've modified the description of thenormalize_states
option to describe this, and added a "fixes" release note for this.