什么是异或(XOR)
异或:可以简称Xor,可以用数学符号⊕表示,计算机就一般可以用^表示了。
异或运算主要指二进制中。
0⊕0=0,0⊕1=1
1⊕0=1,1⊕1=0
可以看成是两个值相同得0,不同得1。
另一种求值方法就是两数相加,但是不进位,如1⊕1=0,可以看作1+1=10,但是不进位,所以1⊕1=0。
关于一些运算法则
1. a ⊕ a = 0
2. a ⊕ b = b ⊕ a
3. a ⊕b ⊕ c = a ⊕ (b ⊕ c) = (a ⊕ b) ⊕ c;
4. d = a ⊕ b ⊕ c 可以推出 a = d ⊕ b ⊕ c.
5. a ⊕ b ⊕ a = b.
我举例说明一下法则5的运用。
例题:已知一串只含大于0的int型整数的数字,其中大部分数都出现了两次,但只有一个数只出现了一次,求这个数的值。
如5 5 3 2 2 1 3,数字5,3,2都出现了两次,而只有1只出现了一次,所以这串数字的答案为1。又如3,4,5,5,4,2,3 的答案为2。
对于这题,可以使用hash数组,但可能会使用过大的空间。如果用异或就简单许多了。因为a⊕a=0; 0⊕b=b;a⊕b⊕a=b;
如5 5 3 2 2 1 3求异或 5 ⊕ 5 ⊕ 3 ⊕ 2 ⊕ 2 ⊕ 1 ⊕ 3 = 5 ⊕ 5 ⊕
3 ⊕ 3 ⊕ 2 ⊕ 2 ⊕ 1 = 0 ⊕ 0 ⊕ 0 ⊕ 1 =
1;数列中出现两次的数5,3,2在异或都将得出0,因此得出只出现一次的数字1。
这题只要将所有数字异或即可得只出现一次的数字。而且这方法极大的节约了空间和时间。
为什么感知机不能解决异或(XOR)
什么是感知器(单层神经网络)
Rosenblatt[1958]最早提出可以模拟人类感知能力的数学模型,并称之为感知器(Perceptron),并提出了一种接近于人类学习过程(迭代、试错)的学习算法。
感知器的原型是--神经元模型。1943年,由McCulloch和Pitts提出,所以也被叫做“M-P神经元模型”。
1.本神经元接受到来自N个外界(或者其他神经元)的输入信号,
2.这些输入信号通过带权重的连接进行传递,给本神经元,
3.本神经元接收到的总输入将于本神经元的阈值进行比较。
4.比较后,通过"激活函数"处理,产生输出。
异或问题
在二维分布表现为
这样可以把异或问题表现为点,在二维平面上的分布问题。
感知机的作用是,在平面上画一条线,线的一边为一类。如果感知机只有两个输入,就是在二维平面上,划线然后分类。
如上图所示,在"异或"问题上找不到一条直线能把X和O分开,就是说这是一个不能用直线分类的问题,这类问题叫非线性问题。同理,"同或"问题一样不能解决。
所谓感知机(单层神经网络)不能解决异或问题就是不能解决画一条线在平面实现所有分类的问题。