Encodage rapide de vecteurs équilibrés


10

Il est facile de voir que pour tout n il existe un mappage 1-1 F de {0,1} n à {0,1} n + O ( log n ) de telle sorte que pour tout x le vecteur F ( x ) est " équilibré ", c'est-à-dire qu'il a un nombre égal de 1 et de 0. Est-il possible de définir un tel F pour que, étant donné x, nous pouvons calculer F ( x ) efficacement?nn+O(logn)xF(x)FxF(x)

Merci.


Je suppose que par «efficace» vous voulez dire O (n) ou à peu près, excluant l'argument des «essais aléatoires répétés»?
Suresh Venkat

@Suresh, seriez-vous capable d'esquisser l'argument des "essais aléatoires répétés"?
Emil

une façon de prouver que la cartographie existe est par la méthode probabiliste: choisir F au hasard, puis la cartographie fonctionne avec une certaine probabilité. c'est ce que je voulais dire.
Suresh Venkat

1
La question est parfaitement bien définie mais, à mon avis, le titre est trompeur. Je n'appellerais pas un mappage F satisfaisant à la condition énoncée un «codage de vecteurs équilibrés» à moins que F ne soit bijectif. Cela ressemble plus à un codage d'une chaîne de n bits par un vecteur équilibré.
Tsuyoshi Ito du

«Parfaitement bien défini» jusqu'à des interprétations éventuellement différentes de «efficacement», je veux dire. Mais ce n'est pas le point de mon commentaire précédent.
Tsuyoshi Ito du

Réponses:


12

nx

  • f(x,i)xi
  • b(x)xx x

xg(i)=b(f(x,i))

  • g(0)=b(x)
  • g(n)=g(0)
  • |g(i)g(i+1)|=2i

i1g(i)+1

(n+O(logn))yf(x,i)iyO(logn)xy

O(logn)yO(logn)0


b (x) dans la 3e ligne doit être b (y).
Emil

Je pense que vous devez éventuellement ajouter un autre bit à la chaîne x pour vous assurer qu'il a une longueur égale (afin que vous puissiez être sûr que g (i) est nul pour certains i).
Emil

g(i)ig(i)i1i

@Jukka: Ah oui je vois.
Emil

1
g(i)ii01102log(n)

9

knn/2k(n-1)n/2n-1k-(n-1k(n1n/2)k(n1)n/2n1(n-1)n/2-1k(n1n/2)(n1)n/21


1
Et si vous réutilisez la valeur d'un coefficient binomial pour calculer le prochain coefficient binomial requis, l'algorithme entier s'exécute en temps O (n).
Tsuyoshi Ito du

Merci! C'est logique. Je suppose que le temps d'exécution dépendra du modèle de calcul. Si vous pouvez effectuer des opérations sur des nombres à n bits en temps unitaire, l'implémentation par Tsuyoshi Ito s'exécutera en temps O (n). D'un autre côté, si vous comptez les opérations sur les bits, le temps sera O (n ^ 2), je pense.
Piotr
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.