Quelle est la différence entre l'égalité et l'équivalence?
J'ai lu quelques instances de lecture, de mathématiques et d'informatique qui utilisent le symbole d'équivalence ≡
, (en gros un '=' avec trois lignes) et il a toujours fait du sens pour moi de lire ce comme si c'était l'égalité. Quelle est la différence entre ces deux concepts?
- J'aimerais quitter le sarcastique répondre à "l'égalité == équivalence", mais qui prend la valeur false, donc je sais qu'il serait juste de descendre-voté dans l'oubli. 🙂
- Smalltalk fait la distinction entre ces 2: l'Équivalence (==) est le test de savoir si deux objets sont le même objet. D'égalité (=) est le test de savoir si deux objets représentent le même composant. (Source: Smalltalk-80 Bluebook, page 96, Objets de Comparaison)
Vous devez vous connecter pour publier un commentaire.
Wikipédia: relation d'Équivalence:
En d'autres termes, = n'est qu'un exemple de relation d'équivalence.
Modifier: Ce qui semble être un critère simple d'être réflexive, symétrique et transitive ne sont pas toujours trivial. Voir Bloch Effectif de Java 2nd ed. p. 35 par exemple,
Ci-dessus est égal à la mise en œuvre brise la symétrie, car
CaseInsensitiveString
connaîtString
classe, mais laString
classe ne sais pas à propos deCaseInsensitiveString
.Je prends votre question à propos de notation mathématique plutôt que de la programmation. Le triple signe égal de vous référer à peut être écrit
≡
en HTML ou\equiv
en LaTeX.a ≡ b plus couramment signifie "est défini à b" ou "a est égal à b".
Donc 2+2=4 mais φ ≡ (1+sqrt(5))/2.
Voici une représentation de l'équivalence de la table:
(Les autres réponses sur les relations d'équivalence sont correct aussi, mais je ne pense pas que ceux qui sont en commun. Il y a aussi une ≡ b (mod m) qui se prononce "a est congru à b mod m" et programmeur langage serait exprimé en tant que mod(a,m) == mod(b,m). En d'autres termes, a et b sont à égalité après les mod communique par m. m.)
Beaucoup de langues la distinction entre l'égalité des objets et de l'égalité de la valeur de ces objets.
Ruby, par exemple, a 3 façons différentes pour tester l'égalité. La première, de l'égalité?, compare deux variables pour voir s'ils pointent vers la même instance. C'est l'équivalent en C-langage de style de faire une vérification pour voir si les 2 pointeurs reportez-vous à la même adresse. La deuxième méthode, ==, les tests de valeur de l'égalité. Donc 3 == 3.0 serait vrai dans ce cas. La troisième, eql?, compare la fois de la valeur et le type de classe.
Lisp a aussi des différentes conceptions de l'égalité en fonction de ce que vous essayez de test.
Dans des langues que j'ai vu qui font la différence entre l'égalité et l'équivalence, l'égalité signifie habituellement le type et valeur sont les mêmes, alors que l'équivalence signifie que les valeurs sont les mêmes. Par exemple:
i et d serait d'avoir une équivalence de la relation, car ils représentent la même valeur mais pas l'égalité puisqu'ils ont différents types. D'autres langues peuvent avoir des idées différentes de l'équivalence (comme si deux variables représentent le même objet).
Le prendre à l'extérieur du domaine de la programmation.
(31) de même -- (ayant la même quantité, la valeur, ou de la mesure comme une autre; "sur un pied d'égalité"; "tous les hommes sont égaux devant la loi")
équivalent, revient -- (essentiellement égale à quelque chose; "c'était aussi bon que l'or"; "un voeu qui a été équivalent à une commande"; "sa déclaration équivaut à un aveu de culpabilité"
Au moins dans mon dictionnaire, 'equivelance' signifie que ses un bon-assez de suppléant pour l'original, mais pas nécessairement identiques, et même de "l'égalité" véhicule complet à l'identique.
( Certaines personnes utilisent ≈ représenter nonidentical valeurs à la place )
La différence réside surtout dans le niveau auquel les deux concepts sont introduits. '≡' est un symbole de la logique formelle, où, en raison de deux propositions a et b, a ≡ b signifie que a => b ET b => un).
'=' est plutôt l'exemple typique d'une relation d'équivalence sur un ensemble, et suppose au moins une théorie des ensembles. Quand on définit un ensemble particulier, généralement il fournit, il convient avec une notion d'égalité, qui se présente sous la forme d'une relation d'équivalence et utilise le symbole '='. Par exemple, lorsque vous définir l'ensemble Q des nombres rationnels, vous définir l'égalité a/b = c/d (où a/b et c/d sont rationnels) si et seulement si ad = bc (où ad et bc sont des entiers, la notion d'égalité pour les entiers ayant déjà été définies ailleurs).
Parfois, vous trouverez de l'informel, la notation f(x) ≡ g(x), où f et g sont des fonctions: Il signifie que f et g ont le même domaine et que f(x) = g(x) pour chaque x dans tel domaine (c'est de nouveau une relation d'équivalence). Enfin, parfois, vous trouverez ≡ (ou ~) comme un symbole générique pour désigner une relation d'équivalence.
Les réponses ci-dessus sont à droite /en partie, mais ils n'expliquent pas la différence, c'est exactement. En informatique théorique (et probablement dans d'autres branches des mathématiques), il a à voir avec une quantification de variables indépendantes de l'équation logique (c'est quand nous utilisons les deux notations à la fois).
Pour moi le meilleur moyen de comprendre la différence est là:
Par définition
A ≡ B
moyen
Pour toutes les valeurs possibles des variables libres dans A et B, A = B
ou
A ≡ B <=> [A = B]
Par exemple
x=2x
iff (en fait le forum est le même que ≡)
x=0
x ≡ 2x
iff (car il n'est pas le cas x = 2x pour toutes les valeurs possibles de x)
Faux
J'espère que cela aide
Edit:
Une autre chose qui est venu à ma tête est la définitions des deux.
A = B est défini comme Un <= B et A >= B, où <= (plus petit de l'égalité, et non l'indique) peut être n'importe quelle commande de rapport
A ≡ B est défini comme Un <=> B (iff, si et seulement si, implique des deux côtés), intéressant de noter que cette implication est également une commande de rapport et il est donc possible (mais moins précis et souvent à confusion) à utiliser = au lieu de ≡.
Je suppose que la conclusion est que, quand vous voyez =, alors vous devez comprendre les auteurs intention en fonction du contexte.
Vous pourriez avoir deux états qui ont la même valeur de vérité (l'équivalent) ou deux instructions sont les mêmes (l'égalité). Ainsi le "signe" égal "avec trois barres" peut aussi signifier "est défini comme."
L'égalité est vraiment un type particulier de relation d'équivalence, en fait. Compte de ce que cela signifie de dire:
Qui suggère que l'égalité est juste une relation d'équivalence sur "chaîne de nombres" (qui sont définies de façon plus formelle comme des fonctions de Z -> {0,...,9}). Et nous pouvons voir à partir de ce cas, les classes d'équivalence ne sont même pas des singletons.