- Регистрация
- 1 Мар 2015
- Сообщения
- 1,481
- Баллы
- 155
Operação comutativa, mas não-associativa
Vou usar uma notação levemente diferente, mas gosto de usar para esse assunto, então prefiro descrever a operação abaixo da mesma forma. Vou usar a média de dois números racionais ( Q\mathbb{Q}Q ).
p⋆q≜p+q2 p \star q \triangleq \frac{p + q}{2} p⋆q≜2p+q
Média é uma operação comutativa
p⋆q=p+q2=q+p2=q⋆p p \star q = \frac{p + q}{2} = \frac{q + p}{2} = q \star p p⋆q=2p+q=2q+p=q⋆p
Mas média não é associativa
(p⋆q)⋆r=p+q2+r2=p2+q2+r2=p4+q4+r2 p⋆(q⋆r)=p+q+r22=p+q2+r22=p2+q4+r4 p4+q4+r2≠p2+q4+r4→(p⋆q)⋆r≠p⋆(q⋆r) (p \star q) \star r = \frac{\frac{p + q}{2} + r}{2} = \frac{\frac{p}{2} + \frac{q}{2} + r}{2} = \frac{p}{4} + \frac{q}{4} + \frac{r}{2} \\~\\ p \star (q \star r) = \frac{p + \frac{q + r}{2}}{2} = \frac{p + \frac{q}{2} + \frac{r}{2}}{2} = \frac{p}{2} + \frac{q}{4} + \frac{r}{4} \\~\\ \frac{p}{4} + \frac{q}{4} + \frac{r}{2} \neq \frac{p}{2} + \frac{q}{4} + \frac{r}{4} \to (p \star q) \star r \neq p \star (q \star r) \\~\\ (p⋆q)⋆r=22p+q+r=22p+2q+r=4p+4q+2r p⋆(q⋆r)=2p+2q+r=2p+2q+2r=2p+4q+4r 4p+4q+2r=2p+4q+4r→(p⋆q)⋆r=p⋆(q⋆r)
Dando um exemplo com números.
p=1;q=2;r=3 (p⋆q)⋆r=(1⋆2)⋆3=1+22+32=32+32=34+32=34+64=94 p⋆(q⋆r)=1⋆(2⋆3)=1+2+322=1+522=12+54=24+54=74 94≠74 p = 1; \qquad q = 2; \qquad r = 3 \\~\\ (p \star q) \star r = (1 \star 2) \star 3 = \frac{\frac{1 + 2}{2} + 3}{2} = \frac{\frac{3}{2} + 3}{2} = \frac{3}{4} + \frac{3}{2} = \frac{3}{4} + \frac{6}{4} = \frac{9}{4} \\~\\ p \star (q \star r) = 1 \star (2 \star 3) = \frac{1 + \frac{2 + 3}{2}}{2} = \frac{1 + \frac{5}{2}}{2} = \frac{1}{2} + \frac{5}{4} = \frac{2}{4} + \frac{5}{4} = \frac{7}{4} \\~\\ \frac{9}{4} \neq \frac{7}{4} p=1;q=2;r=3 (p⋆q)⋆r=(1⋆2)⋆3=221+2+3=223+3=43+23=43+46=49 p⋆(q⋆r)=1⋆(2⋆3)=21+22+3=21+25=21+45=42+45=47 49=47
Operação associativa, mas não comutativa
O concatenação de strings (encadeamento de sequências de símbolos) é um exemplo de operação que é associativa, mas não é comutativa. Para diferenciar um símbolo que seja uma variável de um que seja o valor de uma vou usar aspas duplas para os valores.
x eˊ uma variaˊvel "x" eˊ um valor x \text{ é uma variável} \\~\\ "x" \text{ é um valor} x eˊ uma variaˊvel "x" eˊ um valor
Primeiro um símbolo infixo para concatenação, vou usar o mesmo da linguagem de programação Julia.
"a"∗"b"≜"ab" "\text{a}" * "\text{b}" \triangleq "\text{ab}" "a"∗"b"≜"ab"
Concatenação de strings não é comutativa
Parece óbvio, mas vou dar só um contraexemplo.
"a"∗"b"="ab" "b"∗"a"="ba" "ab"≠"ba"→"a"∗"b"≠"b"∗"a" "\text{a}" * "\text{b}" = "\text{ab}" \\~\\ "\text{b}" * "\text{a}" = "\text{ba}" \\~\\ "\text{ab}" \neq "\text{ba}" \to "\text{a}" * "\text{b}" \neq "\text{b}" * "\text{a}" "a"∗"b"="ab" "b"∗"a"="ba" "ab"="ba"→"a"∗"b"="b"∗"a"
Concatenação de strings é associativa
Dadas 3 strings x,y e zx, y \text{ e } zx,y e z quaisquer, vale o abaixo.
x∗y∗z=x∗(y∗z)=(x∗y)∗z x * y * z = x * (y * z) = (x * y) * z x∗y∗z=x∗(y∗z)=(x∗y)∗z
Para um exemplo com valores:
x="obrigado" y=" por ler"(observe o espac¸o no inıˊcio) z=" ateˊ aqui"(observe o espac¸o no inıˊcio) x∗(y∗z)="obrigado"∗(" por ler"∗" ateˊ aqui")="obrigado"∗" por ler ateˊ aqui"="obrigado por ler ateˊ aqui" (x∗y)∗z=("obrigado"∗" por ler")∗" ateˊ aqui")="obrigado por ler"∗" ateˊ aqui"="obrigado por ler ateˊ aqui" x∗(y∗z)=(x∗y)∗z=x∗y∗z="obrigado por ler ateˊ aqui" x = "\text{obrigado}" \\~\\ y = "\text{ por ler}" \qquad \text{(observe o espaço no início)} \\~\\ z = "\text{ até aqui}" \qquad \text{(observe o espaço no início)} \\~\\ x * (y * z) = "\text{obrigado}" * ("\text{ por ler}" * "\text{ até aqui}") = "\text{obrigado}" * "\text{ por ler até aqui}" = "\text{obrigado por ler até aqui}" \\~\\ (x * y) * z = ("\text{obrigado}" * "\text{ por ler}") * "\text{ até aqui}") = "\text{obrigado por ler}" * "\text{ até aqui}" = "\text{obrigado por ler até aqui}" \\~\\ x * (y * z) = (x * y) * z = x * y * z = "\text{obrigado por ler até aqui}" x="obrigado" y=" por ler"(observe o espac¸o no inıˊcio) z=" ateˊ aqui"(observe o espac¸o no inıˊcio) x∗(y∗z)="obrigado"∗(" por ler"∗" ateˊ aqui")="obrigado"∗" por ler ateˊ aqui"="obrigado por ler ateˊ aqui" (x∗y)∗z=("obrigado"∗" por ler")∗" ateˊ aqui")="obrigado por ler"∗" ateˊ aqui"="obrigado por ler ateˊ aqui" x∗(y∗z)=(x∗y)∗z=x∗y∗z="obrigado por ler ateˊ aqui"
Muito obrigado por ler até aqui. Esses exemplos junto com o produto de matrizes (que também é associativo, mas não comutativo) me ajudaram muito numa das vezes que tentei estudar Teoria das Categorias. Espero que seja útil para mais alguém.
Vou usar uma notação levemente diferente, mas gosto de usar para esse assunto, então prefiro descrever a operação abaixo da mesma forma. Vou usar a média de dois números racionais ( Q\mathbb{Q}Q ).
p⋆q≜p+q2 p \star q \triangleq \frac{p + q}{2} p⋆q≜2p+q
Média é uma operação comutativa
p⋆q=p+q2=q+p2=q⋆p p \star q = \frac{p + q}{2} = \frac{q + p}{2} = q \star p p⋆q=2p+q=2q+p=q⋆p
Mas média não é associativa
(p⋆q)⋆r=p+q2+r2=p2+q2+r2=p4+q4+r2 p⋆(q⋆r)=p+q+r22=p+q2+r22=p2+q4+r4 p4+q4+r2≠p2+q4+r4→(p⋆q)⋆r≠p⋆(q⋆r) (p \star q) \star r = \frac{\frac{p + q}{2} + r}{2} = \frac{\frac{p}{2} + \frac{q}{2} + r}{2} = \frac{p}{4} + \frac{q}{4} + \frac{r}{2} \\~\\ p \star (q \star r) = \frac{p + \frac{q + r}{2}}{2} = \frac{p + \frac{q}{2} + \frac{r}{2}}{2} = \frac{p}{2} + \frac{q}{4} + \frac{r}{4} \\~\\ \frac{p}{4} + \frac{q}{4} + \frac{r}{2} \neq \frac{p}{2} + \frac{q}{4} + \frac{r}{4} \to (p \star q) \star r \neq p \star (q \star r) \\~\\ (p⋆q)⋆r=22p+q+r=22p+2q+r=4p+4q+2r p⋆(q⋆r)=2p+2q+r=2p+2q+2r=2p+4q+4r 4p+4q+2r=2p+4q+4r→(p⋆q)⋆r=p⋆(q⋆r)
Dando um exemplo com números.
p=1;q=2;r=3 (p⋆q)⋆r=(1⋆2)⋆3=1+22+32=32+32=34+32=34+64=94 p⋆(q⋆r)=1⋆(2⋆3)=1+2+322=1+522=12+54=24+54=74 94≠74 p = 1; \qquad q = 2; \qquad r = 3 \\~\\ (p \star q) \star r = (1 \star 2) \star 3 = \frac{\frac{1 + 2}{2} + 3}{2} = \frac{\frac{3}{2} + 3}{2} = \frac{3}{4} + \frac{3}{2} = \frac{3}{4} + \frac{6}{4} = \frac{9}{4} \\~\\ p \star (q \star r) = 1 \star (2 \star 3) = \frac{1 + \frac{2 + 3}{2}}{2} = \frac{1 + \frac{5}{2}}{2} = \frac{1}{2} + \frac{5}{4} = \frac{2}{4} + \frac{5}{4} = \frac{7}{4} \\~\\ \frac{9}{4} \neq \frac{7}{4} p=1;q=2;r=3 (p⋆q)⋆r=(1⋆2)⋆3=221+2+3=223+3=43+23=43+46=49 p⋆(q⋆r)=1⋆(2⋆3)=21+22+3=21+25=21+45=42+45=47 49=47
Operação associativa, mas não comutativa
O concatenação de strings (encadeamento de sequências de símbolos) é um exemplo de operação que é associativa, mas não é comutativa. Para diferenciar um símbolo que seja uma variável de um que seja o valor de uma vou usar aspas duplas para os valores.
x eˊ uma variaˊvel "x" eˊ um valor x \text{ é uma variável} \\~\\ "x" \text{ é um valor} x eˊ uma variaˊvel "x" eˊ um valor
Primeiro um símbolo infixo para concatenação, vou usar o mesmo da linguagem de programação Julia.
"a"∗"b"≜"ab" "\text{a}" * "\text{b}" \triangleq "\text{ab}" "a"∗"b"≜"ab"
Concatenação de strings não é comutativa
Parece óbvio, mas vou dar só um contraexemplo.
"a"∗"b"="ab" "b"∗"a"="ba" "ab"≠"ba"→"a"∗"b"≠"b"∗"a" "\text{a}" * "\text{b}" = "\text{ab}" \\~\\ "\text{b}" * "\text{a}" = "\text{ba}" \\~\\ "\text{ab}" \neq "\text{ba}" \to "\text{a}" * "\text{b}" \neq "\text{b}" * "\text{a}" "a"∗"b"="ab" "b"∗"a"="ba" "ab"="ba"→"a"∗"b"="b"∗"a"
Concatenação de strings é associativa
Dadas 3 strings x,y e zx, y \text{ e } zx,y e z quaisquer, vale o abaixo.
x∗y∗z=x∗(y∗z)=(x∗y)∗z x * y * z = x * (y * z) = (x * y) * z x∗y∗z=x∗(y∗z)=(x∗y)∗z
Para um exemplo com valores:
x="obrigado" y=" por ler"(observe o espac¸o no inıˊcio) z=" ateˊ aqui"(observe o espac¸o no inıˊcio) x∗(y∗z)="obrigado"∗(" por ler"∗" ateˊ aqui")="obrigado"∗" por ler ateˊ aqui"="obrigado por ler ateˊ aqui" (x∗y)∗z=("obrigado"∗" por ler")∗" ateˊ aqui")="obrigado por ler"∗" ateˊ aqui"="obrigado por ler ateˊ aqui" x∗(y∗z)=(x∗y)∗z=x∗y∗z="obrigado por ler ateˊ aqui" x = "\text{obrigado}" \\~\\ y = "\text{ por ler}" \qquad \text{(observe o espaço no início)} \\~\\ z = "\text{ até aqui}" \qquad \text{(observe o espaço no início)} \\~\\ x * (y * z) = "\text{obrigado}" * ("\text{ por ler}" * "\text{ até aqui}") = "\text{obrigado}" * "\text{ por ler até aqui}" = "\text{obrigado por ler até aqui}" \\~\\ (x * y) * z = ("\text{obrigado}" * "\text{ por ler}") * "\text{ até aqui}") = "\text{obrigado por ler}" * "\text{ até aqui}" = "\text{obrigado por ler até aqui}" \\~\\ x * (y * z) = (x * y) * z = x * y * z = "\text{obrigado por ler até aqui}" x="obrigado" y=" por ler"(observe o espac¸o no inıˊcio) z=" ateˊ aqui"(observe o espac¸o no inıˊcio) x∗(y∗z)="obrigado"∗(" por ler"∗" ateˊ aqui")="obrigado"∗" por ler ateˊ aqui"="obrigado por ler ateˊ aqui" (x∗y)∗z=("obrigado"∗" por ler")∗" ateˊ aqui")="obrigado por ler"∗" ateˊ aqui"="obrigado por ler ateˊ aqui" x∗(y∗z)=(x∗y)∗z=x∗y∗z="obrigado por ler ateˊ aqui"
Muito obrigado por ler até aqui. Esses exemplos junto com o produto de matrizes (que também é associativo, mas não comutativo) me ajudaram muito numa das vezes que tentei estudar Teoria das Categorias. Espero que seja útil para mais alguém.