Contexto:
Eu tenho tentado entender o algoritmo genético discutido no artigo Decomposição de matrizes unitárias para encontrar circuitos quânticos: Aplicação a Hamiltonianos moleculares (Daskin & Kais, 2011) (PDF aqui ) e Algoritmo de Otimização de Líderes de Grupo (Daskin & Kais, 2010) . Vou tentar resumir o que entendi até agora e depois declarar minhas consultas.
Vamos considerar o exemplo do portão de Toffoli na seção III-A no primeiro artigo. Sabemos de outras fontes como esta , que são necessários cerca de 5 portas quânticas de dois qubit para simular o portão de Toffoli. Portanto, escolhemos arbitrariamente um conjunto de portas como . Nós nos restringimos a um máximo de portas e nos permitimos usar apenas as portas do conjunto de portas . Agora, geramos grupos de seqüências aleatórias, como:
1 3 2 0,0; 2 3 1 0,0; 3 2 1 0,0; 4 3 2 0,0; 2 1 3 0,0
Na sequência de números acima, os primeiros números em negrito são o número de índice dos portões (ou seja, ), os últimos números são os valores dos ângulos em e os números inteiros do meio são o qubit alvo e os qubits controle respectivamente. Haveria outras seqüências geradas aleatoriamente.
Nossos grupos de ficar assim (na imagem acima) com e . A adequação de cada corda é proporcional à fidelidade do traço ondeé a representação da matriz unitária correspondente a qualquer cadeia que geramos eé a representação da matriz unitária da porta Toffoli de 3 qubit. O líder do grupo em qualquer grupo é a que tem o valor máximo de.
Quando tivermos os grupos, seguiremos o algoritmo:
A Eq. (4) mencionado na imagem é basicamente:
1 3 2 0.0; 2 3 1 0.0; 3 2 1 0.0; 4 3 2 0.0; 2 1 3 0.0
3
Além disso,
Questões:
Após a parte (em "Contexto") discutir a seleção do conjunto de portas e o número de portas, minha explicação / entendimento (parágrafo 3 em diante) do algoritmo está correta?
fonte
Respostas:
Sugiro analisar como um algoritmo genético funciona em um contexto de variáveis discretas para entendê-lo. Eles fornecem uma metodologia, mas você pode aplicar outras técnicas de mutação / cruzamento.
Resumidamente, em um simples problema de otimização em que as variáveis são discretas, podemos resolver heuristicamente com algoritmos genéticos (que pertencem aos algoritmos evolutivos de classe). Geramos uma população de candidatos (aleatoriamente) e alteramos os candidatos a cada iteração para tentar encontrar uma boa solução minimizando / maximizando uma função objetiva (denominada fitness). Você pode representar os candidatos por uma sequência de valores (chamados cromossomos em geral). Se você inserir essa sequência de valores para a função objetivo, estará avaliando o candidato ou atribuindo uma aptidão. As operações de cruzamento / mutação têm como objetivo alterar candidatos e esperar alcançar nosso objetivo de uma maneira relacionada ao que acontece na genética.
O GLOA é apenas mais um algoritmo genético, mas com a diferença de ter diferentes grupos populacionais com um ótimo local (líder como melhor candidato, se você preferir) para cada um e, é claro, uma estratégia ligeiramente diferente para mutação / cruzamento. Normalmente, temos um grupo de candidatos com um melhor candidato em cada iteração.
Agora, para suas perguntas:
1. Você pode escolher qualquer conjunto de portas que desejar (como o exemplo de um conjunto). Isso também se aplica ao número máximo de operações de gate que você deseja restringir sua decomposição. Esses são apenas parâmetros para o algoritmo. Eu diria que isso é completamente arbitrário (não muita lógica necessariamente apenas heurística), mas talvez o que eles escolheram tenha sido mais adaptado ao exemplo ou à configuração do trabalho. Na prática, você precisaria tentar muitos parâmetros.
2. Você está meio que retomando as explicações originais e especialmente o diagrama, então acho que está resumindo bem.
Para sua visualização, observe a sequência de exemplo que você fornece:
1 3 2 0.0
4. Isso também é arbitrário, dependendo do que você deseja. Pode ser um número fixo de iterações ou até atingir um critério de limite / convergência.
fonte