https://eksisozluk.com/xor--31896?p=2
x ^ y = z dogru ise, x, y ve z'nin her siralamasinda 1.si ^ 2.si = 3.su olur. yani:
y ^ x = z
x ^ z = y
z ^ x = y
y ^ z = x
z ^ y = x dir.
bunun
nedeni x ^ y = z demenin aslinda x, y ve z'den cift sayida (0 yada 2)
tanesi 1 demekle denk olmasidir. siralarini degistirseniz de kac
tanesinin 1 oldugunu degistirmeyeceginiz icin her siralamada dogru olur.
bu sayede and ve or'un
tersine, isleme sokulanlardan birini ve sonucu biliyorsaniz, diger
elemanin ne oldugunu her durumda kesin olarak hesaplayabilirsiniz
basitce.
hatta aslinda 3 elemanla kisitli degildir bu kural. yani istediginiz kadar eleman olsun,
x1
^ x2 ^ ... ^ xn = x(n+1) ^ x(n+2) ^ ... ^ x(m) ise (0<=n<=m
tabiki), m'den kucuk esit bir k sayisi secin, verilen denklemdeki
x'lerden istediginiz k tanesini istediginiz sirada xor'layin, geri kalanlarin herhangi bir sirada xor'lanmasina esit olacaktir bu. denklemin herhangi bir tarafinda eleman yoksa o tarafi 0 olarak dusunmeniz gerekir.
bunun
ispati da yuzeysel olarak su sekilde anlatilabilir: once x1 ^ x2 = x2 ^
x1 tespitinden yola cikarak herhangi n elemanin xor'lanma sirasinin
aslinda sonucu degistirmedigi ispatlanir. sonra st'nin bana mesaj atarak belirttigi gibi:
(x1 ^ x2 ^ ...) ^ y = z ise, iki tarafi da y ile xor'layarak:
(x1 ^ x2 ^ ...) ^ (y ^ y) = z ^ y,
(x1
^ x2 ^ ...) = z ^ y gorulur. bu demektir ki sirf xorlardan olusan bir
denklemde esitligin herhangi bir tarafinda en son xorlanan degisken
esitligin diger tarafina istenildigi gibi alinabilir. ayrica onceden
ispatlandigi gibi xor'lamanin sirasi da farketmedigi icin her eleman
istenilen tarafa, istenilen sirada yazilabilir.
aslinda muhtemelen bu
ispat tumevarimla, sadece xor islemi kullanan tum denklemlerde cift
sayida 1 olmasi gerektigi ve cift sayida 1 ve istenilen sayida 0'in
xorlanmasi ile olusturulmus tum denklemlerin dogru oldugu gosterilerek
cok daha temiz bir sekilde yapilabilir.
sonuc olarak boylelikle birlesme ozelligine apayri bir boyut kazandirir xor.
(bkz: baldan tatli)
Hiç yorum yok:
Yorum Gönder