追加のベクトルを必要とせずにこの一般化されたxorを構築する方法は?


9

演算子-一般化された対称差

バイナリxorを取り、それを他の基数に一般化する場合、基数ベクトルの各要素の差の絶対値によってそれを行うことができます。ただし、これには、バイナリ対称ディフェンと同じ特性はありません。その理由は、差の「兆候」を捨てる場合、バイナリxorでできるように、結果とその他を指定すると、オペラを再構築することができないためです。だから私たちは素敵な財産を失う

ABA = B

ただし、次のような他の優れたプロパティを保持します

A0 = A

AA = 0

このプロパティを維持する方法があります。ただし、私が知る限り、結果には3つのベクトルを放出する必要があります。最初のベクトルは通常の対称差であり、他の2つのベクトルは、最初のオペランドと等しい長さのバイナリベクトルであり、結果の符号を記録します。このようにして、結果と他のオペランド、および他のオペランドの「符号」ベクトルを指定すると、元のオペランドを復元できます。

例えば ​​:

1137と9284に対応する2つの基底10ベクトルがあるとします。基底10のこれら2つの数値のxorは何ですか?

        7  3  1  1              4  8  2  9


        4  8  2  9              7  3  1  1

Signed
Result  3 -5 -1 -8             -3  5  1  8

Sign
Vector  0  1  1  1              1  0  0  0

Symmetric
Difference              3 5 1 8

8153および9284を指定して1137を回復

3  5  1  8
+  -  -  -
4  8  2  9

7  3  1  1

私の質問は、「符号を覚えておく」必要がないように、基数> 2で一般化された対称差のより良い構成はありますか?

回答:


6

の最も一般的な定義xorab=a+bモッド2、もちろんすべての座標に個別に適用された頂点。base-10の場合、2つの操作を導入する必要があります:と。(base-2の場合は一致することに注意してください)。今あなたは持っていますab=a+bモッド10ab=abモッド10

c=abコーディング用そしてa=cbデコード用。

実際には、両方の操作にを使用できます。

c=baコーディング用そしてa=bcデコード用。

これは、。a=bc=bcモッド10=bbaモッド10 =bbaモッド10モッド10=aモッド10=a


私はこれが好き。これは素晴らしい。ずっといい。「なぜ5は機能するのか」など、2つの演算子からこの結合された演算子をどのように導出したかについて、少し考えてみてください。また、三項のような奇数の基数で可能なことはありますか?
Cris Stringfellow

@Crisこの場合、任意の数が機能することがわかりました。そのためも;)編集を参照してください。0
よ '

それで、あなたが言っているのは、減算modのベースがどのベースでもxorとして機能するということですか?
Cris Stringfellow

はい。暗号化/コーディングの意味で、はい。が対称的でないことに注意して。それでも、が固定コードであり、を定義している場合、はボリューション、つまりすべてのに対してであることがます。(まあ、このように定義されたなる任意のアーベル群なので、なぜないのですか?)bfbバツ=bバツfbfbfbバツ=バツバツfbZ10
yo '

@tohecz数字全体でこれを行うことが可能かどうか、何か考えはありますか?たとえば、簡潔な演算f(7311、4829)= 3518はありますか?
user16859 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.