Je recherche un algorithme à un passage qui calcule la parité d'une permutation. Je suppose qu'une permutation d'entrée est donnée par le flux . La sortie doit être la parité de la permutation. La question qui m'intéresse est la quantité de mémoire qu'un algorithme déterministe devrait utiliser. Existe-t-il un algorithme aléatoire pour le problème?
Je sais que le calcul du nombre d'inversions en un seul passage utilise la mémoire . La limite supérieure peut être facilement obtenue avec n'importe quel BST. La limite inférieure est présentée ici: http://citeseerx.ist.psu.edu/viewdoc/versions?doi=10.1.1.112.5622
Hélas, la preuve de la borne inférieure dans le papier ne peut pas être étendue au cas de parité (ou ce n'est pas si évident pour moi).
Je sais aussi que le calcul de la parité dans un petit espace avec un accès aléatoire à une permutation peut se faire en temps et en mémoire par un algorithme déterministe ou en temps et mémoire par randomisé. Voir http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.29.2256
L'idée principale est que la parité d'une permutation peut être calculée par la formule , où c est le nombre de cycles et n est la taille. Les auteurs font la décomposition en cycle d'une permutation. On peut donc facilement calculer le nombre de cycles.
Quelqu'un connaît-il un algorithme efficace ou une limite inférieure sur la mémoire pour calculer la parité dans le modèle de streaming? Les algorithmes randomisés mieux que la pièce aléatoire m'intéressent aussi.
la source
Réponses:
Je voudrais demander à tout le monde de ne pas voter positivement, car ce n'est pas une réponse, mais un commentaire étendu, dans lequel je voudrais expliquer pourquoi cette question n'a reçu aucune réponse. Mon point principal est qu'une complexité de communication inférieure ne fonctionnera pas. Par cela, je veux dire que peu importe la façon dont nous coupons l'entrée en deux parties et la donnons à deux joueurs, A et B, A peut transférer un seul bit vers B à partir duquel il peut calculer la parité de la permutation. (Cela suit simplement en considérant les inversions.)
Les preuves qui utilisent une autre borne sont difficiles. Voir ce commentaire ici de Noam Nisan (pour la version non déterministe): Limites sur la taille du plus petit NFA pour L_k-distinct ,
Hermann Gruber a moi-même répondu à cette question connexe qui montre que la limite inférieure de la complexité de la communication peut être très loin de la vérité (encore une fois dans la version non déterministe) Limite inférieure pour NFA acceptant le langage à 3 lettres .
Il semble également difficile de décider si la permutation est un cycle unique, voir ce document FOCS de Ran Raz et Boris Spieker: http://www.computer.org/csdl/proceedings/focs/1993/4370/00 /0366870-abs.html .
Donc, je suis également très intéressé par la réponse à cette question.
la source