Skip to content

LinearCombination should not be Hermitian #1782

@petim0

Description

@petim0

Right now the adjoint() of LinearCombination is defined as such:

def adjoint(self) -> 'LinearCombination':
        return self

LCU is defined as:
$$LCU = \sum_i \alpha_i U_i$$
And thus:
$$LCU^\dagger = \sum_i \alpha_i^* U_i^\dagger$$

So LCU is hermitian if and only if $\alpha_i \in \mathbb{R}$ (which is required by the class) and all the added unitaries are Hermitian.

We can therefore generalize the LinearCombination class and let the Hermicity be implemented by passing Hermitian bloqs to LinearCombination.

This is actually what is happening in LCUBlockEncoding.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions