Я читал несколько примеров при чтении математики и компьютерных наук, которые используют символ эквивалентности ≡
, (в основном, "=" с тремя строками), и мне всегда было разумно прочитайте это так, как если бы это было равенство. В чем разница между этими двумя понятиями?
В чем разница между равенством и эквивалентностью?
Ответ 1
Википедия: отношение эквивалентности:
В математике эквивалентность отношение - двоичное отношение между два элемента множества, группы их вместе как "эквивалентные" в в некотором роде. Пусть а, Ь и с произвольны элементов некоторого множества X. Тогда "a ~ b" или "a ≡ b" означает, что a является эквивалентно b.
Отношение эквивалентности "~" рефлексивно, симметрично и транзитивно.
Другими словами, = является просто экземпляром отношения эквивалентности.
Изменить. Эти, казалось бы, простые критерии рефлексивного, симметричного и транзитивного не всегда тривиальны. См. Bloch Effective Java 2nd ed p. 35, например,
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;
}
...
}
Вышеупомянутая реализация равна разрыву симметрии, потому что CaseInsensitiveString
знает о String
классе, но класс String
не знает о CaseInsensitiveString
.
Ответ 2
Многие языки различают равенство объектов и равенство значений этих объектов.
Ruby, например, имеет 3 разных способа проверки равенства. Первый, равный?, Сравнивает две переменные, чтобы увидеть, указывают ли они на один и тот же экземпляр. Это эквивалентно на языке C-стиля для проверки, если 2 указателя ссылаются на один и тот же адрес. Второй метод, ==, проверяет значение равенства. Таким образом, 3 == 3.0 было бы правдой в этом случае. Третий, eql?, Сравнивает как значение, так и тип класса.
Lisp также имеет разные концепции равенства в зависимости от того, что вы пытаетесь проверить.
Ответ 3
Я беру на себя вопрос о математической нотации, а не о программировании. Тройной знак равенства, на который вы ссылаетесь, можно записать ≡
в HTML или \equiv
в LaTeX.
a & equiv; b чаще всего означает, что "a определено как b" или "пусть a будет равным b".
So 2 + 2 = 4, но & phis; & Эквив; (1 + SQRT (5))/2.
Здесь удобно таблица эквивалентности:
Mathematicians Computer scientists
-------------- -------------------
= ==
≡ =
(Другие ответы об отношениях эквивалентности также верны, но я не думаю, что они являются общими. Также существует & equiv; b (mod m), который произносится как "a, является конгруэнтным для b, mod m" и в программисте выражение будет выражено как mod (a, m) == mod (b, m). Иными словами, a и b равны после mod'ing на m.)
Ответ 4
В языках, которые я видел, которые различают равенство и эквивалентность, равенство обычно означает, что значение типа и одинаково, а эквивалентность означает, что только значения одинаковы. Например:
int i = 3;
double d = 3.0;
i и d будут иметь отношение эквивалентности, поскольку они представляют одно и то же значение, но не равенство, поскольку они имеют разные типы. Другие языки могут иметь разные идеи эквивалентности (например, представляют ли две переменные один и тот же объект).
Ответ 5
Возьмите его за рамки программирования.
-
(31) равно - (с тем же количеством, значением или мерой как другое, "на равных условиях", "все мужчины равны перед законом" )
-
эквивалент, равносильный - (по существу равный чему-то, "он был хорош как золото"; "желание, которое было эквивалентно команде"; "его выражение было равносильно признанию вины"
По крайней мере, в моем словаре "equivelance" означает его достаточно хорошую подставку для оригинала, но не обязательно идентичную, а также "равенство" полностью идентично.
null == 0 # true , null is equivelant to 0 ( in php )
null === 0 # false, null is not equal to 0 ( in php )
(Некоторые люди используют & асимптому для представления неидентичных значений)
Ответ 6
Разница находится прежде всего на уровне, на котором вводятся два понятия. '≡' является символом формальной логики, где, учитывая два предложения a и b, a ≡ b означает (a = > b AND b = > a).
'=' вместо этого является типичным примером отношения эквивалентности на множестве и предполагает, по крайней мере, теорию множеств. Когда человек определяет конкретное множество, обычно он предоставляет ему подходящее понятие равенства, которое приходит в виде отношения эквивалентности и использует символ '='. Например, когда вы определяете множество Q рациональных чисел, вы определяете равенство a/b = c/d (где a/b и c/d рациональны) тогда и только тогда, когда ad = bc (где ad и bc являются целыми числами, понятие равенства для целых чисел, уже определенных в другом месте).
Иногда вы найдете неофициальную нотацию f (x) ≡ g (x), где f и g - функции: это означает, что f и g имеют одну и ту же область и f (x) = g (x) для каждого x в такой области (это опять-таки отношение эквивалентности). Наконец, иногда вы находите ≡ (или ~) в качестве общего символа для обозначения отношения эквивалентности.
Ответ 7
Ответы выше правы/частично правы, но они не объясняют, в чем разница. В теоретической информатике (и, возможно, в других областях математики) она связана с количественной оценкой по свободным переменным логического уравнения (то есть, когда мы используем две записи сразу).
Для меня лучшие способы понять разницу:
-
По определению A ≡ B
означает
Для всех возможных значений свободных переменных в и B A = Bили
A ≡ B <= > [A = B]
-
Пример: х = 2х
iff (фактически, если f совпадает с ≡)
х = 0x ≡ 2x
iff (потому что это не тот случай, когда x = 2x для всех возможных значений x)
False
Я надеюсь, что это поможет
Edit:
Еще одна вещь, которая пришла мне в голову, - это определения двух.
A = B определяется как A <= B и A >= B, где <= (меньшее, не следует) может быть любым отношением упорядочения
A ≡ B определяется как A <= > B (iff, тогда и только тогда, когда подразумеваются обе стороны), стоит отметить, что импликация также является отношением упорядочения, и поэтому это возможно (но менее точное и часто запутывающее) использовать = вместо ≡.
Я предполагаю, что вывод состоит в том, что когда вы видите =, вам нужно выяснить намерение авторов на основе контекста.
Ответ 8
У вас может быть два оператора, которые имеют одинаковое значение истинности (эквивалент) или два утверждения, одинаковые (равенство). Также "знак равенства с тремя барами" также может означать "определяется как".
Ответ 9
Равенство действительно является особым видом отношения эквивалентности, на самом деле. Подумайте, что это значит:
0.9999999999999999... = 1
Это говорит о том, что равенство - это просто отношение эквивалентности к "строковым номерам" (которые более формально определяются как функции из Z → {0,..., 9}). И мы можем видеть из этого случая, что классы эквивалентности не являются даже одиночными.