28 votos

¿Demostrar que XOR es conmutativo y asociativo?

A través de la uso del álgebra de Boole demuestre que el operador XOR es a la vez conmutativo y asociativo.

Sé que puedo demostrarlo utilizando una tabla de verdad. ¿Pero usando álgebra booleana? ¿Cómo lo muestro? No tengo ni idea. ¿Alguna ayuda por favor?

3 votos

¿Qué tiene esto que ver con la demostración automática de teoremas?

0 votos

Respuesta intuitiva: Para un solo bit, XOR es lo mismo que la suma módulo 2, que como es bien sabido es conmutativa y asociativa. Para números de varios bits, cada posición de bit se trata por separado, por lo que el resultado es el mismo.

37voto

Robert Mastragostino Puntos 10105

Utilizo $\cdot$ para denotar AND y $+$ para indicar OR. $a \oplus b$ viene dado por $a\cdot\bar{b}+b\cdot\bar{a}$ . ¿Ves por qué? ¿Ves por qué es conmutativo?

Para la asociatividad, se quiere demostrar que $(a \oplus b) \oplus c=a \oplus (b \oplus c)$ . El lado izquierdo se expande como

$$(a \oplus b)\cdot\bar{c}+\overline{(a \oplus b)}\cdot c$$ $$(a\cdot\bar{b}+b\cdot\bar{a})\cdot\bar{c}+\overline{(a\cdot\bar{b}+b\cdot\bar{a})}\cdot c$$

Utiliza las reglas del álgebra booleana (leyes de Demorgan, leyes de distribución, etc.) para ampliarlo. Luego haz lo mismo para el otro lado y demuestra que las expansiones son iguales.

27voto

user3208430 Puntos 6

Una forma intuitiva de entender por qué XOR es asociativo es la siguiente:

Primero hay que reconocer que XOR es conmutativo, es decir, $a \oplus b = b \oplus a$ . Esto se puede hacer utilizando una tabla de verdad o como en la respuesta de Robert Mastragostino.

Entonces, piense en el operador XOR como un operador de "volteo condicional", es decir, piense en $a \oplus b$ como diciendo si $a$ es 1, toma volteado $b$ como salida, mientras que si $a$ es 0, toma $b$ como salida. Debido a la propiedad conmutativa, $a \oplus b$ es completamente equivalente a $b \oplus a$ que dice que $b$ voltea condicionalmente $a$ .

Consideremos ahora $a \oplus (b \oplus c)$ . Esto quiere decir que $b$ voltea condicionalmente $c$ cuyo resultado se invierte condicionalmente por $a$ . Debido a la naturaleza de la operación de volteo, en última instancia $c$ se invierte condicionalmente tanto por $b$ y $a$ y no importa en qué orden se realicen estas dos operaciones. Debido a esto, se ve que $a \oplus (b \oplus c)$ es equivalente a $b \oplus (a \oplus c)$ .

Por último, utilizando la conmutatividad, se puede escribir $a \oplus (b \oplus c) = (b \oplus c) \oplus a$ que acaba de demostrarse que es equivalente a $b \oplus (a \oplus c)$ que a su vez equivale a $b \oplus (c \oplus a)$ por conmutatividad.

Por lo tanto, $(b \oplus c) \oplus a = b \oplus (c \oplus a)$ lo que demuestra la asociatividad.

4voto

ndrizza Puntos 228

Una forma intuitiva de convencerse de que $\oplus$ es asociativa es la siguiente. (Nota: en realidad no lo estamos demostrando con álgebra rígida - pero creo que es un argumento muy intuitivo y muestra otra manera agradable de ver $\oplus$ .)

Primero echemos un vistazo de nuevo a la tabla de verdad: \begin{array}{cc|c} x & y & x\oplus y\\ \hline 0 & 0 & 0\\ 0 & 1 & 1\\ 1 & 0 & 1\\ 1 & 1 & 0\\ \end{array} Conmutatividad: A partir de la tabla de verdad, podemos convencernos fácilmente de que podemos conmutar los argumentos. Ya que en cualquier caso, conmutarlos nos dará el mismo resultado.

Asociatividad: Además, vemos en la tabla de verdad que podemos reescribir $x\oplus y$ como predicado y adición: $$ x\oplus y \quad\Longleftrightarrow \quad \text{odd}(x+y) $$ Ahora bien, utilizando esta forma de reescribir el $\oplus$ podemos ver fácilmente que $\oplus$ es asociativo. $$ \begin{align*} x\oplus (y\oplus z) &\Longleftrightarrow \text{odd}(x+\text{odd}(y+z))\\ &\Longleftrightarrow \text{odd}(x+y+z)\\ &\Longleftrightarrow \text{odd}(\text{odd}(x+y)+z)\\ &\Longleftrightarrow (x\oplus y)\oplus z \end{align*} $$

2voto

Saif Bechan Puntos 3916

Supongo que se le da una definición de $\oplus$ en términos de $\vee$ y $\wedge$ como $a \oplus b = (a \wedge \neg b) \vee (\neg a \wedge b)$ ou $a\oplus b = (a\vee b) \wedge \neg(a \wedge b)$ . Tienes que demostrar $a \oplus b = b \oplus a$ y $a \oplus (b \oplus c) = (a \oplus b) \oplus c$ utilizando las normas para $\vee$ y $\wedge$ . Por ejemplo, puede utilizar la conmutatividad y asociatividad de $\vee$ y $\wedge$ las leyes distributivas o leyes de De Morgan (véase aquí para una lista completa de dichas leyes). La conmutatividad es sencilla, la asociatividad es un cálculo fácil pero bastante largo. Un procedimiento estándar sería poner ambos lados de $a \oplus (b \oplus c) = (a \oplus b) \oplus c$ en forma normal conjuntiva o disyuntiva y luego comparar.

0voto

Homer Puntos 198

Escriba el operador xor en términos de los operadores estándar de las álgebras booleanas (y, o, no) y, a continuación, utilice las propiedades de las álgebras booleanas para demostrar que xor es conmutativo y asociativo.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X