LeΘ(n)⊕
- aba⊕b⊕
- a⊕(b⊕c)=(a⊕b)⊕c
- a⊕b=b⊕a
- ⊖(a⊕b)⊖b=anO(n)
(Si le type ne peut prendre qu'un nombre fini de valeurs distinctes, ces propriétés sont suffisantes pour en faire un groupe abélien ; même si ce n'est pas le cas, ce sera au moins un semi-groupe annulatif commutatif .)
⊕a=(a1,a2,…,an)
(⊕a)=a1⊕a2⊕⋯⊕an.
b=(b1,b2,…,bn,bn+1)ax(⊕b)=(⊕a)⊕xx=(⊕b)⊖(⊕a).
⊕⊖⊕⊖
Plus généralement, nous pouvons même appliquer la méthode XOR au niveau du bit à des chaînes de longueur variable, en les remplissant jusqu'à la même longueur que nécessaire, tant que nous avons un moyen de supprimer de manière réversible le remplissage à la fin.
Dans certains cas, c'est trivial. Par exemple, les chaînes d'octets terminées par N de style C codent implicitement leur propre longueur, donc appliquer cette méthode pour elles est trivial: lorsque XORing deux chaînes, remplissez la plus courte avec des octets nuls pour que leur longueur corresponde, et coupez toutes les null finales supplémentaires de le résultat final. Notez que les chaînes de somme XOR intermédiaires peuvent contenir des octets nuls, cependant, vous devrez donc stocker leur longueur explicitement (mais vous n'en aurez besoin que d'un ou deux au maximum).
1001232octets de long, nous pourrions encoder la longueur de chaque chaîne sous forme d'entier 32 bits et l'ajouter à la chaîne. Ou nous pourrions même encoder des longueurs de chaînes arbitraires en utilisant un code de préfixe et les ajouter aux chaînes. Il existe également d'autres codages possibles.
Θ(n)
La seule partie potentiellement délicate est que, pour que l'annulation fonctionne, nous devons choisir une représentation de chaîne de bits canonique unique pour chaque valeur, ce qui pourrait être difficile (en fait, potentiellement même indécidable sur le plan des calculs) si les valeurs d'entrée dans les deux tableaux peuvent être données dans différentes représentations équivalentes. Ce n'est cependant pas une faiblesse spécifique de cette méthode; toute autre méthode de résolution de ce problème peut également échouer si l'entrée est autorisée à contenir des valeurs dont l'équivalence est indécidable.