math - muchas - igualmente existe
¿Cuál es la diferencia entre igualdad y equivalencia? (9)
En los idiomas que he visto que diferencian entre igualdad y equivalencia, la igualdad generalmente significa que el tipo y el valor son los mismos, mientras que la equivalencia significa que solo los valores son los mismos. Por ejemplo:
int i = 3;
double d = 3.0;
I y D tendrían una relación de equivalencia ya que representan el mismo valor pero no la igualdad ya que tienen diferentes tipos. Otros lenguajes pueden tener diferentes ideas de equivalencia (por ejemplo, si dos variables representan el mismo objeto).
He leído algunas instancias en lectura de matemáticas e informática que usan el símbolo de equivalencia ≡
, (básicamente un ''='' con tres líneas) y siempre tiene sentido para mí leer esto como si fuera igualdad. ¿Cuál es la diferencia entre estos dos conceptos?
La igualdad realmente es un tipo especial de relación de equivalencia, de hecho. Considera lo que significa decir:
0.9999999999999999... = 1
Eso sugiere que la igualdad es solo una relación de equivalencia en "números de cuerda" (que se definen más formalmente como funciones de Z -> {0, ..., 9}). Y podemos ver a partir de este caso, las clases de equivalencia no son ni siquiera singletons.
Muchos idiomas distinguen entre la igualdad de los objetos y la igualdad de los valores de esos objetos.
Ruby, por ejemplo, tiene 3 formas diferentes de probar la igualdad. El primero, "igual", compara dos variables para ver si apuntan a la misma instancia. Esto es equivalente en un lenguaje estilo C de hacer una verificación para ver si 2 punteros se refieren a la misma dirección. El segundo método, ==, prueba la igualdad de valores. Entonces 3 == 3.0 sería cierto en este caso. El tercero, eql ?, compara el valor y el tipo de clase.
Lisp también tiene diferentes conceptos de igualdad en función de lo que intentas probar.
Podría tener dos declaraciones que tengan el mismo valor de verdad (equivalente) o dos declaraciones que sean iguales (igualdad). Además, el "signo igual con tres barras" también puede significar "se define como".
Tómelo fuera del ámbito de la programación.
(31) igual - (teniendo la misma cantidad, valor o medida que otro, "en igualdad de condiciones", "todos los hombres son iguales ante la ley")
equivalente, equivalente - (siendo esencialmente igual a algo; "era tan bueno como el oro"; "un deseo que era equivalente a una orden"; "su declaración era equivalente a una admisión de culpa")
Al menos en mi diccionario, "equivalencia" significa que es un sustituto lo suficientemente bueno para el original, pero no necesariamente idéntico, y del mismo modo "igualdad" transmite íntegro completo.
null == 0 # true , null is equivelant to 0 ( in php )
null === 0 # false, null is not equal to 0 ( in php )
(Algunas personas usan ≈ para representar valores no idénticos en su lugar)
La diferencia reside sobre todo en el nivel en el que se introducen los dos conceptos. ''≡'' es un símbolo de lógica formal donde, dadas dos proposiciones a y b, a ≡ b significa (a => b AND b => a).
''='' es en cambio el ejemplo típico de una relación de equivalencia en un conjunto , y presume al menos una teoría de conjuntos. Cuando uno define un conjunto particular, generalmente le proporciona una noción adecuada de igualdad, que viene en forma de una relación de equivalencia y usa el símbolo ''=''. Por ejemplo, cuando define el conjunto Q de los números racionales, define la igualdad a / b = c / d (donde a / b y c / d son racionales) si y solo si ad = bc (donde ad y bc son números enteros , la noción de igualdad para los enteros ya se ha definido en otro lugar).
A veces encontrará la notación informal f (x) ≡ g (x), donde f y g son funciones: Significa que f y g tienen el mismo dominio y que f (x) = g (x) para cada x en tal dominio (esto es nuevamente una relación de equivalencia). Finalmente, a veces encuentras ≡ (o ~) como un símbolo genérico para denotar una relación de equivalencia.
Considero que su pregunta se trata de notación matemática en lugar de programación. El triple signo igual al que se refiere puede escribirse ≡
en HTML o /equiv
en LaTeX.
a ≡ b comúnmente significa que "a se define como b" o "que a sea igual a b".
Entonces 2 + 2 = 4 pero φ ≡ (1 + sqrt (5)) / 2.
Aquí hay una útil tabla de equivalencia:
Mathematicians Computer scientists
-------------- -------------------
= ==
≡ =
(Las otras respuestas sobre las relaciones de equivalencia también son correctas, pero no creo que sean tan comunes. También hay una ≡ b (mod m) que se pronuncia "a es congruente a b, mod m" y en el lenguaje del programador se expresaría como mod (a, m) == mod (b, m). En otras palabras, ayb son iguales después de modificar por m.)
Las respuestas anteriores son correctas / parcialmente correctas, pero no explican cuál es la diferencia exactamente. En la informática teórica (y probablemente en otras ramas de las matemáticas) tiene que ver con la cuantificación de las variables libres de la ecuación lógica (es decir, cuando utilizamos las dos notaciones a la vez).
Para mí, la mejor forma de entender la diferencia es:
Por definición
A ≡ B
medio
Para todos los valores posibles de las variables libres en A y B, A = Bo
A ≡ B <=> [A = B]
Por ejemplo
x = 2x
iff (de hecho, iff es lo mismo que ≡)
x = 0x ≡ 2x
iff (porque no es el caso que x = 2x para todos los valores posibles de x)
Falso
Espero que ayude
Editar:
Otra cosa que me vino a la cabeza es la definición de los dos.
A = B se define como A <= B y A> = B, donde <= (menor igual, no implica) puede ser cualquier relación de ordenamiento
A ≡ B se define como A <=> B (iff, si y solo si, implica ambos lados), vale la pena señalar que la implicación es también una relación de ordenamiento y por lo tanto es posible (pero menos preciso y a menudo confuso) usar = en su lugar de ≡.
Supongo que la conclusión es que cuando ve =, entonces debe averiguar la intención del autor en función del contexto.
Wikipedia: relación de equivalencia :
En matemáticas, una relación de equivalencia es una relación binaria entre dos elementos de un conjunto que los agrupa como "equivalentes" de alguna manera. Deje a, b y c ser elementos arbitrarios de un conjunto X. Entonces "a ~ b" o "a ≡ b" denota que a es equivalente a b.
Una relación de equivalencia "~" es reflexiva, simétrica y transitiva.
En otras palabras, = es solo una instancia de relación de equivalencia.
Editar : Este criterio aparentemente simple de ser reflexivo, simétrico y transitivo no siempre es trivial. Ver Bloch''s Effective Java 2nd ed p. 35 por ejemplo,
public final class CaseInsensitiveString {
...
// broken
@Override public boolean equals(Object o) {
if (o instance of CaseInsensitiveString)
return s.equalsIgnoreCase(
((CaseInsensitiveString) o).s);
if (o instanceof String) // One-way interoperability!
return s.equalsIgnoreCase((String) o);
return false;
}
...
}
Lo anterior es igual a la implementación rompe la simetría porque CaseInsensitiveString
sabe acerca de String
clase String
, pero la clase String
no sabe acerca de CaseInsensitiveString
.