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.