平等和等同之间有什么区别?

时间:2008-11-23 00:09:34

标签: math computer-science symbols

我读过几个使用等效符号 的数学和计算机科学的实例,(基本上是一个带有三行的'=')它总是有意义的我把它看成是平等的。这两个概念有什么区别?

9 个答案:

答案 0 :(得分:14)

Wikipedia: Equivalence relation

  

在数学中,是等价的   关系是两者之间的二元关系   组中的两个元素组   他们在一起是“等同”的   某种方式。设a,b和c是任意的   一些集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

答案 1 :(得分:12)

我的问题是关于数学符号而不是编程。您引用的三重等号可以在HTML中编写≡或在LaTeX中编写\equiv

a≡b最常见的意思是“a被定义为b”或“让a等于b”。

所以2 + 2 = 4但是φ≡(1 + sqrt(5))/ 2。

这是一个方便的等价表:

Mathematicians      Computer scientists
--------------      -------------------
      =                      ==
      ≡                      =

(关于等价关系的其他答案也是正确的,但我不认为那些是常见的。还有一个≡b(mod m),发音为“a与b,mod m一致”,并且在程序员的说法中将表示为mod(a,m)== mod(b,m)。换句话说,a和b在用m修改之后是相等的。)

答案 2 :(得分:11)

许多语言区分对象的相等性和这些对象的值的相等性。

例如,Ruby有3种不同的方法来测试相等性。第一个,相等?,比较两个变量,看它们是否指向同一个实例。这相当于一种C风格的语言,即检查2个指针是否指向同一地址。第二种方法==,测试值相等性。所以3 == 3.0在这种情况下是正确的。第三个是eql ?,比较值和类类型。

Lisp也有不同的平等概念,具体取决于你要测试的内容。

答案 3 :(得分:7)

在我看过的区分平等和等价的语言中,平等通常意味着类型值相同,而等价意味着只有值相同。例如:

int i = 3;
double d = 3.0;

我和d将具有等价关系,因为它们代表相同的值但不相等,因为它们具有不同的类型。其他语言可能有不同的等价思想(例如两个变量是否代表同一个对象)。

答案 4 :(得分:4)

把它带到编程领域之外。

  • (31)相等 - (具有与另一个相同的数量,价值或尺度;“在平等条件下”;“在法律面前人人平等”)

  • 等同,等于 - (基本上等于什么;“它和黄金一样好”;“一个等同于命令的愿望”;“他的陈述等于承认有罪”< / p>

至少在我的字典中,'equivelance'意味着它是原始的,但不一定完全相同,同样“平等”表示完全相同。

null == 0   # true , null is equivelant to 0 ( in php ) 
null === 0  # false, null is not equal to 0 ( in php )  

(有些人使用≈代表不相同的值)

答案 5 :(得分:4)

差异首先在于引入两个概念的水平。 '≡'是形式逻辑的符号,其中给定两个命题 a和b,a≡b表示(a => b AND b =&gt; 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(这又是等价关系)。最后,有时你会发现≡(或〜)作为通用符号来表示等价关系。

答案 6 :(得分:4)

上面的答案是正确的/部分正确的,但它们没有解释确切的区别。在理论计算机科学中(可能在数学的其他分支中),它与逻辑方程的自由变量的量化有关(即当我们一次使用两个符号时)。

对我而言,理解差异的最佳方法是:

  1. 根据定义
    A≡B
    意味着
    对于A和B中所有可能的自由变量值,A = B

    A≡B&lt; =&gt; [A = B]

  2. 以示例为例 X = 2×
    iff(实际上iff与≡相同)
    x = 0的

    x≡2x
    iff(因为对于x的所有可能值,x = 2x不是这种情况)

  3. 我希望它有所帮助

    修改

    我想到的另一件事是两者的定义。

    A = B定义为A&lt; = B且A&gt; = B,其中&lt; =(小于等于,不暗示)可以是任何有序关系

    A≡B被定义为A =&lt; =&gt;。 B(iff,当且仅当,暗示双方都有),值得注意的是暗示也是一种排序关系,因此使用=而不是≡是可能的(但不太精确且常常令人困惑)。

    我猜结论是,当你看到=时,你必须根据上下文找出作者的意图。

答案 7 :(得分:2)

你可以有两个具有相同真值的语句(等价)或两个相同的语句(相等)。同样,“三条等号”也可以表示“被定义为”。

答案 8 :(得分:2)

事实上,平等确实是一种特殊的等价关系。考虑一下它的含义:

0.9999999999999999... = 1

这表明,平等只是“字符串数字”的等价关系(它更正式地定义为Z - > {0,...,9}的函数)。我们可以从这个案例中看出,等价类甚至不是单例。