Làm thế nào để xây dựng xor tổng quát này mà không cần thêm một vectơ?


9

Toán tử - Sự khác biệt đối xứng tổng quát

Nếu bạn lấy xor nhị phân và khái quát nó cho các radice khác, bạn có thể làm như vậy bằng giá trị tuyệt đối của sự khác biệt của từng phần tử trong một vectơ cơ số. Tuy nhiên, điều này không có các tính chất giống như differene đối xứng nhị phân. Lý do là vì khi vứt bỏ "dấu hiệu" của sự khác biệt, chúng tôi không thể tái tạo lại một vở opera cho kết quả và cái khác như chúng ta có thể trong xor nhị phân. Vì vậy, chúng tôi mất tài sản tốt đẹp

ABA = B

Tuy nhiên, chúng tôi giữ các thuộc tính tốt đẹp khác như

A0 = A

Aa = 0

Có một cách để duy trì tài sản này. Tuy nhiên, theo như tôi có thể nói nó liên quan đến việc phát ra 3 vectơ cho bất kỳ kết quả nào. Vectơ đầu tiên là sự khác biệt đối xứng thông thường, hai vectơ còn lại là vectơ nhị phân có độ dài bằng nhau đầu tiên ghi lại dấu hiệu của kết quả, một vectơ như vậy cho mỗi thứ tự của toán hạng, là phần bù nhị phân của phần tử kia. Theo cách này, một toán hạng gốc có thể được phục hồi, đưa ra kết quả và opernad khác, VÀ rằng các toán hạng "ký hiệu" khác.

Ví dụ :

Giả sử chúng ta có 2 vectơ cơ sở 10 tương ứng với các số 1137 và 9284, tôi là xor của hai số này trong cơ sở 10 là gì?

        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

Phục hồi 1137 cho 8153 và 9284

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

7  3  1  1

Câu hỏi của tôi là: có sự xây dựng tốt hơn về sự khác biệt đối xứng tổng quát trong bất kỳ cơ số> 2 nào mà chúng ta không cần phải 'nhớ dấu hiệu' không?

Câu trả lời:


6

Định nghĩa phổ biến nhất xorlà , trên các đỉnh được áp dụng cho mọi tọa độ riêng biệt. Trong trường hợp cơ sở 10, bạn phải giới thiệu hai thao tác: và . (Lưu ý rằng trong trường hợp cơ sở 2 chúng trùng nhau). Bây giờ bạn cómộtb= =(một+b)mod2mộtb= =(một+b)mod10mộtb= =(một-b)mod10

c= =mộtbđể mã hóamột= =cbđể giải mã.

Trên thực tế, bạn có thể sử dụng cho cả hai thao tác, chỉ cần khéo léo hơn một chút:

c= =bmộtđể mã hóamột= =bcđể giải mã.

Điều này hoạt động vì .một= =bc= =(b-c)mod10= =(b-(bmột))mod10 = =(b-(b-một)mod10)mod10= =mộtmod10= =một


Tôi thích điều này. Điều đó thật tuyệt. Tốt hơn nhiều. Bạn có thể giải thích một chút về suy nghĩ của bạn về cách bạn bắt nguồn toán tử kết hợp này từ hai toán tử, chẳng hạn như "tại sao 5 hoạt động?" Ngoài ra có bất cứ điều gì có thể cho các căn cứ kỳ lạ như ternary?
Cris Stringfellow

@Cris Tôi chỉ thấy rằng bất kỳ số nào cũng hoạt động trong trường hợp này, do đó cũng vậy;) xem chỉnh sửa. 0
yo '

Vì vậy, những gì bạn đang nói là phép trừ mod cơ sở hoạt động như xor trong bất kỳ cơ sở nào?
Cris Stringfellow

Đúng. Theo nghĩa của mật mã / mã hóa, vâng. Chỉ cần cẩn thận rằng không đối xứng. Tuy nhiên, cho là một mã cố định và xác định , chúng ta có là một phép biến đổi, tức là với mọi . (Chà, được định nghĩa theo cách này sẽ là một cuộc là bất kỳ nhóm abelian nào, vậy tại sao không có trong ?)bfb(x)= =bxfbfb(fb(x))= =xxfbZ10
yo '

@tohecz Bất cứ ý tưởng nào nếu có thể làm điều này cho toàn bộ số? Ví dụ: Có hoạt động cô đọng f (7311, 4829) = 3518 không?
dùng16859
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.