Estou procurando um algoritmo de uma passagem que calcule a paridade de uma permutação. Suponho que uma permutação de entrada seja dada pelo fluxo . A saída deve ser a paridade da permutação. A questão que me interessa é quanta memória um algoritmo determinístico deve usar. Existe algum algoritmo aleatório para o problema?
Eu sei que o número de inversões computadas em uma passagem usa a memória . O limite superior pode ser facilmente obtido com qualquer BST. O limite inferior é apresentado aqui: http://citeseerx.ist.psu.edu/viewdoc/versions?doi=10.1.1.112.5622
Infelizmente, a prova do limite inferior do artigo não pode ser estendida ao caso de paridade (ou não é tão óbvio para mim).
Também sei que a paridade de computação em um pequeno espaço com acesso aleatório a uma permutação pode ser feita no tempo e na memória pelo algoritmo determinístico ou em tempo e memória por um aleatório. Consulte http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.29.2256
A idéia principal é que a paridade de uma permutação possa ser calculada pela fórmula , onde é o número de ciclos e é o tamanho. Os autores fazem a decomposição do ciclo de uma permutação. Assim, pode-se calcular facilmente o número de ciclos.
Alguém conhece um algoritmo eficaz ou limite inferior na memória para calcular a paridade no modelo de streaming? Algoritmos aleatórios melhores que moedas aleatórias também são interessantes para mim.
fonte
Respostas:
Eu gostaria de pedir a todos que não votassem nisso, pois isso não é uma resposta, mas um comentário extenso, no qual gostaria de argumentar por que essa pergunta não recebeu nenhuma resposta. Meu ponto principal é que um limite inferior da complexidade da comunicação não funcionará. Com isso, quero dizer que não importa como cortamos a entrada em duas partes e a entregamos a dois jogadores, A e B, A pode transferir um único bit para B, a partir do qual ele pode calcular a paridade da permutação. (Isso se segue simplesmente considerando inversões.)
As provas que usam outro limite são difíceis. Veja este comentário aqui de Noam Nisan (para a versão não determinística): Limites no tamanho do menor NFA para L_k-distinct ,
essa pergunta relacionada, respondida por Hermann Gruber, que mostra que o limite inferior da complexidade da comunicação pode estar muito longe da verdade (novamente na versão não determinística) Limite inferior para a NFA que aceita linguagem de três letras .
Também relacionado que, para decidir se a permutação é um único ciclo, parece difícil, veja este artigo da FOCS de Ran Raz e Boris Spieker: http://www.computer.org/csdl/proceedings/focs/1993/4370/00 /0366870-abs.html .
Então, eu também estou muito interessado em aprender a resposta para esta pergunta.
fonte