Подтвердить что ты не робот

В чем разница между равенством и эквивалентностью?

Я читал несколько примеров при чтении математики и компьютерных наук, которые используют символ эквивалентности , (в основном, "=" с тремя строками), и мне всегда было разумно прочитайте это так, как если бы это было равенство. В чем разница между этими двумя понятиями?

4b9b3361

Ответ 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 совпадает с ≡)
    х = 0

    x ≡ 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}). И мы можем видеть из этого случая, что классы эквивалентности не являются даже одиночными.