Na página da Wikipedia para o algoritmo de Grover , é mencionado que:
"O algoritmo de Grover também pode ser usado para estimar a média e a mediana de um conjunto de números"
Até agora, eu só sabia como ele pode ser usado para pesquisar em um banco de dados. Mas não sei como implementar essa técnica para estimar a média e a mediana de um conjunto de números. Além disso, não há nenhuma citação (até onde eu notei) nessa página que explica a técnica.
algorithm
grovers-algorithm
Sanchayan Dutta
fonte
fonte
Respostas:
A idéia para estimar a média é aproximadamente a seguinte:
Para qualquer que fornece saídas em reais, defina um F ( x ) redimensionado que fornece saídas no intervalo de 0 a 1. Nosso objetivo é estimar a média de F ( x ) .f( X ) F( X ) F( X )
Defina um unitário cuja operação é U a : | 0 ⟩ | 0 ⟩ ↦ 1vocêuma É importante notar que esta unidade é facilmente implementada. Você começa com uma transformação Hadamard no primeiro registro, executa um cálculo def(x)em um registro ancilla, usa isso para implementar uma rotação controlada do segundo registro e, em seguida, não calcula o registro ancilla.
Definir o unitário .G = Uuma( I - 2 | 0 ⟩ ⟨ 0 | ⊗ | 0 ⟩ ⟨ 0 | ) U†umaI ⊗Z
A partir de um estado , utilize G assim como você usaria o Grover iterador para estimar o número de soluções a um problema de pesquisa.vocêuma| 0⟩ | 0⟩ G
A maior parte desse algoritmo é a amplificação de amplitude, conforme descrito aqui . A idéia principal é que você pode definir dois estados e esta define um subespaço para a evolução. O estado inicial éUa| 0⟩| 0⟩=( √
Aliás, é interessante comparar com o "poder de um qubit limpo", também conhecido como DQC1. Lá, se você aplicar a Ivocêuma , a probabilidade de obter a resposta 1 é igual à versão não acelerada e fornece uma estimativa da média.Eu2n⊗ | 0 ⟩ ⟨ 0 |
Obviamente, estou pulando alguns detalhes de tempos de execução precisos, estimativas de erro etc.
fonte