抗冲突算法
1. 冲突算法是什么
冲突算法(或者碰撞算法)是指当多个对象争夺有限资源产生发生“撞车”现象时,快速决定把现有资源分配给哪个对象。比如说:
1、计算机科学中常见的Hash(哈希)算法,要把多个数据分散放到有限空间去,由于空间限制(如空间数量少于数据的个数)以及分配算法设计(如采用简单的取模算法)问题等,很容易导致两个数据被分到同一个空间地址,这时就会发生冲突,称为Hash冲突。哈希冲突解决算法,一般是采用“拉链法”,即将冲突的数据顺序排放在冲突空间的下一个位置,如果该位置也有数据,就再下一个,以此类推。
2、RFID应用中的碰撞最典型的情况是:当一辆货车中满载多个贴有RFID标签的木箱通过RFID读写器时,RFID读写器会同时收到多个标签的响应,此时称为RFID读写冲突,如何防止读写过程中的重复读取和漏读是RFID冲突算法需要解决的问题。RFID冲突算法,往往需要分群避让、检测、仲裁等多种处理。
3、其他的如医院中的多个紧急呼叫器同时呼叫服务台,以及通讯中的一台电话同时有多个人呼叫,都会发生“冲突”。一般遵循“先来先服务”、按紧急划分优先级、随机抉择等方法
2. hash函数强抗碰撞性和弱碰撞性的区别
假如有两个不同的数据(或字符串)生成的散列值相同,这就说明哈希值碰撞了,这时候就需要单独开一个表,用另一种哈希算法重新提取这两个数据(或字符串)的散列值放入其中,这个新散列表中的数据还可以用相同的方法再开新表,开出的新表越多抗碰撞性就越强
3. 以太网中采用什么机制来尽量避免冲突的发生
答案为d,二进制指数退避算法的核心是随机进行监听,这个退避时间片的大小范围和冲突的次数有关,比如冲突次数n=2,避让的时间片的取值范围是r={0,1,2,3}。该问题的冲突是12次,因此最大的值是
2^12-1。你要注意的是在这种算法中要预先设定一个可以选择的最大时间片数k,也就是说当你采用避让算法时最终取值是min(k,r)。(超出了预设的时间片数时随机避让的时间片大小就只能是k)
4. 冲突检测的二进制指数退避算法
在CSMA/CD协议中,一旦检测到冲突,为降低再冲突的概率,需要等待一个随机时间,然后再使用CSMA方法试图传输。为了保证这种退避维持稳定,采用了二进制指数退避算法的技术,其算法过程如下:
1. 将冲突发生后的时间划分为长度为2t的时隙
2. 发生第一次冲突后,各个站点等待0或1个时隙在开始重传
3. 发生第二次冲突后,各个站点随机地选择等待0,1,2或3个时隙在开始重传
4. 第i次冲突后,在0至2的i次方减一间随机地选择一个等待的时隙数,在开始重传
5. 10次冲突后,选择等待的时隙数固定在0至1023(2的10次方减一)间
6. 16次冲突后,发送失败,报告上层。
5. redis使用什么算法来解决hash冲突
因为Memcached的哈希策略是在其客户端实现的,因此不同的客户端实现也有区别,以Spymemcache、Xmemcache为例,都是使用了KETAMA作为其实现。
因此,我们也可以使用一致性hash算法来解决Redis分布式这个问题。在介绍一致性hash算法之前,先介绍一下我之前想的一个方法,怎么把Key均匀的映射到多台Redis Server上。
6. 射频识别时,aloha算法是怎样解决冲突的
目前的防冲突算法分两大类【一是基于曼彻斯特编码的二进制搜索算法及其改进算法, 二是基于随机数产生器的时隙算法及其改进算法下面分别介绍。二进制搜索算法及其改进算法在二进制搜索算法中电子标签的旧号必须采用曼彻斯特编码。曼彻斯特码可在多个射频卡同时响应时, 译出错误位置,以按位定出发生冲突的位置。根据冲突的位置搜索标签。二进制搜索算法只能识别旧号唯一的情况。改进的算法有动态二进制搜索算法算法改进的地方是对没有发生冲突的旧位只传送一次。这样就减少了重传的数据提高了效率。图二所提的基于动态二进制的二叉树搜索结构旧反冲突算法是对二进制搜索算法的改进。它的思想是对每次识别的冲突位进行分类, 分成、两部分从而形成一棵二叉树,