当前位置:文档之家› 基于依赖度求解属性约简的方法

基于依赖度求解属性约简的方法

基于依赖度求解属性约简的方法
基于依赖度求解属性约简的方法

粗糙集属性约简matlab程序

粗糙集-属性约简-matlab程序 Data2为条件属性,decision2为决策属性 %%%my_test函数实现 clc; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%读取信息系统文件 file = textread('data2.txt','%s','delimiter','\n','whitespace',''); %读取文件信息,每一行为一个胞元 [m,n]=size(file); %胞元的大小 for i=1:m words=strread(file{i},'%s','delimiter',' ');%读取每个胞元中字符,即分解胞元为新的胞元 words=words';%转置 X{i}=words; end X=X'; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% [B,num,AT]=my_reduct(X); %信息系统的约简 ind_A T=ind(X); %信息系统的不可等价关系 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%显示约简信息系统 disp('约简后的条件系统为:'); [m,n]=size(B); for i=1:m disp(B{i}); end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%读取决策系统文件 file = textread('decision2.txt','%s','delimiter','\n','whitespace',''); [m,n]=size(file); for i=1:m words=strread(file{i},'%s','delimiter',' '); words=words'; D{i}=words; end D=D'; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%决策系统的正域约简 X_D=X; [l,k]=size(X_D{1}); pos_d=pos(X_D,D);%正域 for i=1:m %%%%%%%%%%%%%%正域有问

属性约简(MATLAB算法)有实例有讲解

粗糙集属性约简 注:这是我学粗糙集时老师给的作业 属性约简的顺序如下:求正域、生成未经处理的区分矩阵、对区分矩阵进行化简、求核、对已经处理过的区分矩阵进行属性约简。约简后的决策表有26行,所有12个属性都是正域中的属性,核为空 程序: % main.m tic; a=[ 1,1,1,1,0,0,0,0,1,1,0,1; 0,0,0,0,0,0,0,0,0,0,0,0; 1,0,1,0,0,0,0,0,0,1,0,0; 0,0,0,1,1,1,1,0,1,0,1,1; 1,0,0,1,1,1,1,1,0,1,1,0; 0,1,0,1,1,1,1,1,1,0,0,1; 1,0,0,0,1,1,1,0,0,1,1,1; 1,1,1,1,0,0,0,0,1,1,0,1; 1,0,1,1,1,0,0,0,1,1,0,1; 1,1,1,1,0,0,0,0,1,1,0,1; 1,0,1,1,1,0,0,0,1,1,0,1; 1,0,1,1,1,0,0,0,1,1,0,1 ]; d=[1;0;0;0;0;0;0;1;1;1;1;1]; pos=posCD(a,d); dismat=dismatrix(a,d,pos); dism=disbe(dismat);

core=cor(dism); [red,row]=redu(dism); time=toc % dismatrix.m % 生成未经处理的区分矩阵dismat function dismat=dismatrix(a,d,pos) [m,n]=size(a); p=1; index1=0;index2=0;index=0; dis=-1*ones(m*(m-1)/2,n); for i=1:m for j=i+1:m if (isxbelongtopos(i,pos)&~isxbelongtopos(j,pos))... |(~isxbelongtopos(i,pos)&isxbelongtopos(j,pos))... |(isxbelongtopos(i,pos)&isxbelongtopos(j,pos)&~isxybelongtoindD(i,j,d)) index2=1; end if index2==0 continue; end for k=1:n if a(i,k)~=a(j,k) dis(p,k)=1; index1=1; else dis(p,k)=0; end end if index1==1 p=p+1;index=1; end index1=0; index2=0; end end if p<=m*(m-1)/2 if index==0 dismat=[]; return; end if dis(p,1)==-1 p=p-1; end else p=m*(m-1)/2; end

属性约简

粗糙集的几种属性约简算法分析 分类:默认栏目 2006.6.16 10:32 作者:万富| 评论:0 | 阅读:1628 陈淑珍,基于粗集的几种属性约简算法分析,武汉工业学院学报,Vol.2 4No.3,Sep .20 05 1.1 利用差别矩阵求最小约简 差别矩阵(Discernibility Matrix)是由波兰华沙大学的著名数学家Skowron[21 提出来的,利用这个工具,可以将存在于复杂的信息系统中的全部不可区分关系表达出来。利用差别矩阵求取最小约简的一个前提是:在数据表的预处理阶段要先对不相容的记录进行处理,即差别矩阵不处理不相容记录。预处理的方法如将冲突的记录数除以记录总数,得到一个粗糙度的量度,该量度可以作为数据表的一个特征。 通过差别矩阵可以很方便地求取核属性,以核属性为出发点,再求取差别函数的最小析取范式,则求析取范式的运算就可以得到很大的简化。而最后得到的每个析取分量对应着一个约简。因此,一定可以得到最小约简。 但该算法的缺陷十分明显:首先,当论域的对象与属性的规模较大时,差别矩阵将占有大量的存储空间口(n的二次方);其次,差别函数的化简本身就是一个NP一hard问题,因此只要数据集稍大一点,就不具备可操作性。 1.2 基于属性依赖度约简算法 求取所有约简是一个NP一hard问题,因此运用启发信息来简化计算以找出最优或次优约简显然是一种可取的方法。 许多启发式约简算法的基本步骤都是:由信息系统或决策表的核为起始点,然后根据属性重要性的某种测度,依次选择最重要的属性加人核中,直到满足终止条件。便得到信息系统或决策表的一个约简(更确切的说,是包含约简的一个属性集)。 一个信息系统中的所有属性对于决策来说并不是同等重要的,在粗集理论中,属性重要性可通过相依度来体现。 决策属性D对于属性R(R属于C)的相依度y(R,D)定义为[3]:显然有,O <,y(R,D), l,y(R,D)给出了决策D对属性R之间相依性的一种测度。它反映了属性R对于决策D的重要程度。在已知条件R的前提下,一个属性R对于决策D的重要度SGF(a,R,D)可以定义为如下的差值:SGF = (a ,R,D)=y(R+{a},D)一y(R,D),SG F= ( a,R,D)反映了把属性a加到R后,R 与D之间相依度的增长程度。事实上,属性对于R与之间相依性的影响越强,则SGF= (a,R,D)的值就越大。 1.3 基于条件信息嫡约简算法 基于属性依赖度的启发式约简方法在实际应用中遇到的一个重大困难是属性间不确定关系的表达。粗糙集约简表达的是属性间的确定性关系,正区域之外等价类族表达的属性间关系并不被粗糙集认可,因此除要求属性满足确定性关系外,挑选有强烈概率因果关系的属性集具有十分意义。 为了描述概率因果关系,人们在处理这类数据时,在约简算法中引人信息嫡来度量属性重要度。 事实上基于信息嫡与基于属性依赖度的启发式算法也是不完备的。 应当指出的是以上所分析的两种算法都只是搜索次优解的算法,采用属性重要性方法的约简算法并不能保证一定能够找到信息系统的最优解。出现这种情况的原因在于属性的“组合爆炸”。在信息系统中各个属性并不是孤立存在的,而是存在着互相之间的联系和影响。某些属性虽然它们的单个重要性都很小,但是当这些属性组合在一起时,却能对整个信息系统的正确分类产生很大的作用,而这一点有时仅仅凭借单个属性的重要性评价方法是很难发现的,因为那些重要性很小的属性很难被约简算法所选择。尽管采用每次属性扩张后都动态调整各属性重要性的办法能够在一定程度上克服这一问题,但还是无法从根本上解决问题。 利用启发式算法的确能够提高约简的求解速度,而且在解空间不复杂的情况下有可能得到最优解或次优解,但在解空间较复杂或属性间关系较为复杂的情况下,用这些方法找到的解极有可能陷人局部最优解,这种算法并非对所有的知识表达系统都适用。 1.4 基于遗传算法的属性约简 遗传遗传算法是一种自适应随机搜索方法,其搜索方式不是由单一的方向或结构,它将多个个体作为可能的解并考虑搜索空间全局范围内的抽样,从而导致以更大的可能性收敛到全局最优解,因此,人们把遗传算法引人粗集属性约简。 算法通过用计算机模拟生物进化过程,使群体不断优化,并在变化过程中找出最优解。在遗传算法中,适应度函数的设计是整个GA 算法的核心步骤,由于几个遗传算子都依赖于染色体的适应度值,因此适应度函数的设计目标,在很大程度上决定着迭代收敛的方向。而粗糙集的属性约简主要是为了求得最小的约简属性集。这样,在保证属性集满足一定精度的情况下,使其属性个数最小,即最终所

一致性哈希算法应用及优化(最简洁明了的教程)

一致性哈希算法的应用及其优化 一.简单哈希算法 哈希(Hash)就是把任意长度的输入通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,使得散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。哈希算法是一种消息摘要算法,虽然哈希算法不是一种加密算法,但由于其单向运算,具有一定的不可逆性使其成为加密算法中的一个重要构成部分。 二.分布式缓存问题 哈希算法除了在数据加密中的运用外,也可以用在常见的数据分布式技术中。哈希计算是通过求模运算来计算哈希值的,然后根据哈希值将数据映射到存储空间中。设有由N 个存储节点组成的存储空间,采用简单哈希计算将一个数据对象object 映射到存储空间上的公式为:Hash(object)% N。 现在假设有一个网站,最近发现随着流量增加,服务器压力越来越大,之前直接读写数据库的方式已经不能满足用户的访问,于是想引入Memcached作为缓存机制。现在一共有三台机器可以作为Memcached服务器,如下图1所示。

图1.三台memcached服务器 可以用简单哈希计算:h = Hash(key) % 3 ,其中Hash是一个从字符串到正整数的哈希映射函数,这样能够保证对相同key的访问会被发送到相同的服务器。现在如果我们将Memcached Server分别编号为0、1、2,那么就可以根据上式和key计算出服务器编号h,然后去访问。 但是,由于这样做只是采用了简单的求模运算,使得简单哈希计算存在很多不足: 1)增删节点时,更新效率低。当系统中存储节点数量发生增加或减少时,映射公式将发生变化为Hash(object)%(N±1),这将使得所有object 的映射位置发生变化,整个系统数据对象的映射位置都需要重新进行计算,系统无法对外界访问进行正常响应,将导致系统处于崩溃状态。 2)平衡性差,未考虑节点性能差异。由于硬件性能的提升,新添加的节点具有更好的承载能力,如何对算法进行改进,使节点性能可以得到较好利用,也是亟待解决的一个问题。 3)单调性不足。衡量数据分布技术的一项重要指标是单调性,单调性是指如果已经有一些内容通过哈希计算分派到了相应的缓冲中,当又有新的缓冲加入到系统中时,哈希的结果应能够保证原有已分配的内容可以被映射到新的缓冲中去,而不会被映射到旧的缓冲集合中的其他缓冲区。 由上述分析可知,简单地采用模运算来计算object 的Hash值的算法显得过于简单,存在节点冲突,且难以满足单调性要求。

粗糙集属性约简matlab程序

粗糙集-属性约简-m a t l a b程序 Data2为条件属性,decision2为决策属性 %%%my_test函数实现 clc; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%读取信息系统文件 file=textread('data2.txt','%s','delimiter','\n','whitespace','');%读取文件信息,每一行为一个胞元 [m,n]=size(file);%胞元的大小 fori=1:m words=strread(file{i},'%s','delimiter','');%读取每个胞元中字符,即分解胞元为新的胞元 words=words';%转置 X{i}=words; end X=X'; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% [B,num,AT]=my_reduct(X);%信息系统的约简 ind_AT=ind(X);%信息系统的不可等价关系%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%显示约简信息系统 disp('约简后的条件系统为:'); [m,n]=size(B); fori=1:m disp(B{i}); end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%读取决策系统文件 file=textread('decision2.txt','%s','delimiter','\n','whitespace',''); [m,n]=size(file); fori=1:m words=strread(file{i},'%s','delimiter',''); words=words'; D{i}=words; end D=D'; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%决策系统的正域约简 X_D=X; [l,k]=size(X_D{1}); pos_d=pos(X_D,D);%正域 fori=1:m%%%%%%%%%%%%%%正域有问题%%%%%%%%%%%%%%%%%%%%%%%%%%% if(~ismember(num(i),pos_d)) B{i}='';%若约简后的信息系统B{i}不在正域中则删除该行 end%因为相同的条件得到的决策不一样, end %将在正域规则下约简过的信息系统B连接决策系统D

属性约简方法概述

属性约简方法概述 属性约简又称维规约或特征选择,从数学的角度考虑,就是有p 维数据 x =(x 1,x 2……x p ),通过某种方法,得到新的数据 x’=(x’1,x’2…… x’k ) , k ≤p , 新的数据在某种评判标准下,最大限度地保留原始数据的特征。属性约简主要是为了解决高维数据计算的复杂性和准确性问题。目标是消除冗余和不相关属性对计算过程和最终结果造成的影响。 对数据进行属性约简的意义,主要从以下几个方面考虑: a) 从机器学习的角度来看,通过属性约简去除噪音属性是非常有意义的; b) 对一些学习算法来说,训练或分类时间随着数据维数的增加而增加,经过属性约简可以降低计算复杂度,减少计算时间; c) 假如不进行属性约简,噪音或不相关属性和期望属性对分类的作用一样,就会对最终结果产生负面影响; d) 当用较多的特征来描述数据时,数据均值表现得更加相似,难以区分。 为了描述属性约简方法,这里假设数据集合为D ,D ={x 1,x 2….x n }, x i 表示D 中第i 个实例,1≤i≤n ,n 为总的实例个数。每个实例包含p 个属性{|x i |=p }。从机器学习的角度来看,属性约简方法可以分为监督的和非监督的两类。下面是几种常用的方法。 (1) PCA 主成分分析 主成分概念是Karl parson 于1901年最先引进。1933年,Hotelling 把它推广到随机变量。主成分分析把高维空间的问题转换到低维空间来处理,有效的降低了计算的复杂度。通过主成分的提取,降低了部分冗余属性的影响,提高了计算的精度。 主成分分析的基本思想为:借助一个正交变换,将分量相关的原随机变量转换成分量不相关的新变量。从代数角度,即将原变量的协方差阵转换成对角阵;从几何角度,将原变量系统变换成新的正交系统,使之指向样本点散布最开的正交方向,进而对多维变量系统进行降维处理[43]。 定义4-1[44]:设12(,,...,)'p X X X X =为p 维随机向量,它的第i 主成分分量可表示'i i Y u X =,i =1,2,…, p 。其中i u 是正交阵U 的第i 列向量。并且满足: 1Y 是12,,...,p X X X 的线性组合中方差最大者; k Y 是与11,...k Y Y -不相关的12,,...,p X X X 的线性组合中方差最大。 (k =2,3,…p )。 定义4-2[45]: 设∑是随机向量12(,,...,)'p X X X X =的协方差矩阵,其特征值-特征向量对1122(,),(,),...(,)p p e e e λλλ,其中12...0p λλλ≥≥≥≥。则第i 个主成分为: 1122 '...i i i i i p p Y e X e X e X e X ==+++ i =1, 2, …p ………………….式

哈 希 常 见 算 法 及 原 理

数据结构与算法-基础算法篇-哈希算法 1. 哈希算法 如何防止数据库中的用户信息被脱库? 你会如何存储用户密码这么重要的数据吗?仅仅 MD5 加密一下存储就够了吗? 在实际开发中,我们应该如何用哈希算法解决问题? 1. 什么是哈希算法? 将任意长度的二进制值串映射成固定长度的二进制值串,这个映射的规则就是哈希算法,而通过原始数据映射之后得到的二进制值串就是哈希值。 2. 如何设计一个优秀的哈希算法? 单向哈希: 从哈希值不能反向推导出哈希值(所以哈希算法也叫单向哈希算法)。 篡改无效: 对输入敏感,哪怕原始数据只修改一个Bit,最后得到的哈希值也大不相同。 散列冲突: 散列冲突的概率要很小,对于不同的原始数据,哈希值相同的概率非常小。 执行效率: 哈希算法的执行效率要尽量高效,针对较长的文本,也能快速计算哈

希值。 2. 哈希算法的常见应用有哪些? 7个常见应用:安全加密、唯一标识、数据校验、散列函数、负载均衡、数据分片、分布式存储。 1. 安全加密 常用于加密的哈希算法: MD5:MD5 Message-Digest Algorithm,MD5消息摘要算法 SHA:Secure Hash Algorithm,安全散列算法 DES:Data Encryption Standard,数据加密标准 AES:Advanced Encryption Standard,高级加密标准 对用于加密的哈希算法,有两点格外重要,第一点是很难根据哈希值反向推导出原始数据,第二点是散列冲突的概率要小。 在实际开发中要权衡破解难度和计算时间来决定究竟使用哪种加密算法。 2. 唯一标识 通过哈希算法计算出数据的唯一标识,从而用于高效检索数据。 3. 数据校验 利用哈希算法对输入数据敏感的特点,可以对数据取哈希值,从而高效校验数据是否被篡改过。 4. 散列函数 1.如何防止数据库中的用户信息被脱库?你会如何存储用户密码这么重要的数据吗?

哈 希 常 见 算 法 及 原 理 ( 2 0 2 0 )

哈希算法乱谈(摘自知乎) 最近【现场实战追-女孩教-学】初步了解了Hash算法的相关知识,一些人的见解让我能够迅速的了解相对不熟悉的知识,故想摘录下来,【QQ】供以后温故而知新。 HASH【⒈】算法是密码学的基础,比较常用的有MD5和SHA,最重要的两【О】条性质,就是不可逆和无冲突。 所谓不【1】可逆,就是当你知道x的HASH值,无法求出x; 所谓无【б】冲突,就是当你知道x,无法求出一个y,使x与y的HA【9】SH值相同。 这两条性【⒌】质在数学上都是不成立的。因为一个函数必然可逆,且【2】由于HASH函数的值域有限,理论上会有无穷多个不同的原始值【6】,它们的hash值都相同。MD5和SHA做到的,是求逆和求冲突在计算上不可能,也就是正向计算很容易,而反向计算即使穷尽人类所有的计算资-源都做不到。 顺便说一下,王小云教授曾经成功制造出MD5的碰撞,即md5(a) = md5(b)。这样的碰撞只能随机生成,并不能根据一个已知的a求出b(即并没有破坏MD5的无冲突特性)。但这已经让他声名大噪了。 HASH算法的另外一个很广泛的用途,就是很多程序员都会使用的在数据库中保存用户密码的算法,通常不会直接保存用户密码(这样DBA就能看到用户密码啦,好危险啊),而是保存密码的HASH值,验

证的时候,用相同的HASH函数计算用户输入的密码得到计算HASH值然后比对数据库中存储的HASH值是否一致,从而完成验证。由于用户的密码的一样的可能性是很高的,防止DBA猜测用户密码,我们还会用一种俗称“撒盐”的过程,就是计算密码的HASH值之前,把密码和另外一个会比较发散的数据拼接,通常我们会用用户创建时间的毫秒部分。这样计算的HASH值不大会都是一样的,会很发散。最后,作为一个老程序员,我会把用户的HASH值保存好,然后把我自己密码的HASH值保存到数据库里面,然后用我自己的密码和其他用户的用户名去登录,然后再改回来解决我看不到用户密码而又要“偷窥”用户的需要。最大的好处是,数据库泄露后,得到用户数据库的黑客看着一大堆HASH值会翻白眼。 哈希算法又称为摘要算法,它可以将任意数据通过一个函数转换成长度固定的数据串(通常用16进制的字符串表示),函数与数据串之间形成一一映射的关系。 举个粒子,我写了一篇小说,摘要是一个string:'关于甲状腺精灵的奇妙冒险',并附上这篇文章的摘要是'2d73d4f15c0db7f5ecb321b6a65e5d6d'。如果有人篡改了我的文章,并发表为'关于JOJO的奇妙冒险',我可以立即发现我的文章被篡改过,因为根据'关于JOJO的奇妙冒险'计算出的摘要不同于原始文章的摘要。 可见,摘要算法就是通过摘要函数f()对任意长度的数据data计算出固定长度的摘要digest,目的是为了发现原始数据是否被人篡

决策系统中几种约简之间的关系

第45卷 第11A 期 2018年11月 计算机科学COMPUTER SCIENCE Vol.45No.11A Nov.2018 本文受国家自然科学基金(61473239) 资助三敬思惠(1993-),女,硕士生,主要研究方向为粗糙集理论;秦克云(1962-),男,教授,博士生导师,CCF 高级会员, 主要研究方向为粗糙集理论二粒计算二多值逻辑(通信作者) 三决策系统中几种约简之间的关系 敬思惠 秦克云 (西南交通大学数学学院 成都611756) 摘 要 不可区分关系是粗糙集理论的基础三首先,刻画了λ约简与最大分布约简二分布约简之间的相互关系,证明了λ协调集是最大分布协调集,也是分布协调集;其次,针对λ约简设计了一种基于区分矩阵中属性频率的启发式约简算法,可以降低约简计算的复杂度;最后,通过实例验证了所提算法的可行性与有效性三关键词 粗糙集,协调集,不可区分关系,区分矩阵中图法分类号 TP18 文献标识码 A Relationshi p s Between Several Reductions in Decision S y stem JING Si -hui QIN Ke -y un (Colle g e of Mathematic ,Southwest Jiaoton g Universit y ,Chen g du 611756,China ) Abssract The indiscernibilit y relation is the basis of rou g h set theor y .Firstl y ,this p a p er studied the relationshi p be -tween λ-reduction ,maximal distribution reduction and distribution reduction in decision table.It is p roved that a λ-con -sistent set is a maximal distribution consistent set and a distribution consistent set.Secondl y ,this p a p er desi g ned a heu -ristic reduction al g orithm based on the attribute fre q uenc y in the distin g uishin g matrix for λ-reduction ,which can reduce the com p lexit y of reduction calculation.Finall y ,the feasibilit y and effectiveness of the p ro p osed al g orithm was verified b y exam p les. Ke y words Rou g h set ,Consistent set ,Indiscernibilit y relationshi p ,Discernibilit y matrixes 1 引言 粗糙集理论是一种处理不确定性问题的数学工具,自1982年由波兰数学家Pawlak [1] 首次提出以来, 已经在理论和应用方面取得了长足的发展,受到了学术界的广泛关注三目前,粗糙集理论已经在人工智能二知识与数据发现二模式识别与分类二故障检测等方面得到了广泛的应用三 信息系统研究是粗糙集理论的一个重要方向,其中的约简问题是粗糙集理论和应用研究的热点问题三不可区分关 系[1-2] 是粗糙集理论的基础,其实质是指出这样一个事实:由于我们对问题认识的深入程度有限,或者可获得的数据样本不完备,使得我们缺乏足够的知识去区分论域中的某些数据对象三不可区分关系用于刻画信息系统中对象的相似性,具有明确的语义解释,即具有相同描述的对象相互之间不可区分三基于不可区分关系,人们从相关实际问题的研究背景出 发,提出了多种信息系统属性约简标准,如正域约简[2] 二分配约简[3]二分布约简[3]二最大分布约简[4-5] 二基于信息熵的约简[6]二λ约简[7]等, 并给出了多种协调集判定定理,如λ协调集二分布协调集二最大分布协调集二分配协调集二近似协调集 等,得出了属性约简方法三这些约简都可以通过Skowron [ 8] 提出的区分函数获得,但其中涉及的布尔合取范式到布尔析取范式的转换是NP - 难问题三因此,人们分别从属性依赖度二属性信息熵二属性在区分矩阵中出现的频率等角度提出了属 性重要度,进而基于属性重要度设计了一些计算约简的启发 式算法[9-13] 三决策表基于粗糙集理论有多种约简标准,对于这些约简标准之间的相互关系已有大量研究[3-6] ,本文在相关 研究的基础上进一步讨论了λ约简与最大分布约简二分布约简之间的相互关系,并且设计了一种基于属性频率的启发式约简算法三 2 决策表基于粗糙集理论的约简 Pawlak 粗糙集模型[1] 将知识理解为对对象进行分类的 能力,形式化的知识通过论域(即所讨论对象构成的集合)上的等价关系进行刻画三论域的子集从外延角度理解为概念三如果某子集恰好是若干等价类的并集,则它表示一个精确概念,否则表示不确定性概念三在粗糙集模型中,不确定性概念借助上二下近似算子通过精确概念进行逼近三 定义1[1] 设U 是非空集合,称为论域,R 是U 上的一个等价关系,称(U ,R )为一个近似空间三对于任意X ?U ,X 关于(U ,R ) 的上二下近似分别定义为:R (X )={x ?U ;[x ]R ?X ??}(1)R (X )={x ?U ;[x ]R ?X } (2) 其中,[x ]R ={y ?U ;(x ,y ) ?R }为x 关于R 的等价类三信息系统属性约简与知识获取是粗糙集理论的重要研究 方向三一个信息系统是一个四元组T =(U ,A ,V ,f ) ,其中U 是非空有限集合,称为论域,其元素称为对象;A 是非空有限 万方数据

哈希算法介绍

哈希算法简介

目录 1哈希算法概念 (2) 2哈希函数 (3) 3冲突的解决方法 (3) 4哈希算法应用 (4)

关键词: 算法、哈希、c语言 摘要: 哈希算法在软件开发和Linux内核中多次被使用,由此可以见哈希算法的实用性和重要性。本文介绍了哈希算法的原理和应用,并给出了简略的代码实现,以便读者理解。

1哈希算法概念 哈希(hash 散列,音译为哈希) 算法将任意长度的二进制值映射为固定长度的较小二进制值,这个小的二进制值称为哈希值。 哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希算法都将产生不同的值。要找到散列为同一个值的两个不同的输入,在计算上是不可能的,所以数据的哈希值可以检验数据的完整性。 哈希表是根据设定的哈希函数H(key)和处理冲突方法将一组关键字映象到一个有限的地址区间上,并以关键字在地址区间中的项作为记录在表中的存储位置,这种表称为哈希表,所得存储位置称为哈希地址。作为线性数据结构与表格和队列等相比,哈希表无疑是查找速度比较快的一种。 查找一般是对项的摸个部分(及数据成员)进行,这部分称为键(key )。例如,项可以由字符串作为键,附带一些数据成员。 理想的哈希表数据结构只不过是一个包含一些项的具有固定大小的数组。 通常的习惯是让项从0到 TableSize-1之间变化。 将每个键映射到0到TableSize-1 这个范围中的某个数 ,并且将其放到适当的单元中,这个映射就称为散列函数(hash funciton )。 如右图,john 被散列到3,phil 被散列到4,dave 被散列到6,mary 被散列到7. 这是哈希的基本思想。剩下的问题则是要选择一个函数,决定当两个键散列到同一个值的时候(称为冲突),应该做什么。

粗糙集属性约简matlab程序

粗糙集属性约简m a t l a b程序 (总3页) -CAL-FENGHAI.-(YICAI)-Company One1 -CAL-本页仅作为文档封面,使用请直接删除

粗糙集-属性约简-matlab程序 Data2为条件属性, decision2为决策属性 %%%my_test函数实现 clc; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%读取信息系统文件 file = textread('data2.txt','%s','delimiter','\n','whitespace',''); %读取文件信息,每一行为一个胞元 [m,n]=size(file); %胞元的大小 for i=1:m words=strread(file{i},'%s','delimiter',' ');%读取每个胞元中字符,即分解胞元为新的胞元 words=words';%转置 X{i}=words; end X=X'; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% [B,num,AT]=my_reduct(X); %信息系统的约简 ind_AT=ind(X); %信息系统的不可等价关系%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%显示约简信息系统 disp('约简后的条件系统为:'); [m,n]=size(B); for i=1:m disp(B{i}); end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%读取决策系统文件 file = textread('decision2.txt','%s','delimiter','\n','whitespace',''); [m,n]=size(file); for i=1:m words=strread(file{i},'%s','delimiter',' '); words=words'; D{i}=words; end D=D'; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%决策系统的正域约简 X_D=X; [l,k]=size(X_D{1}); pos_d=pos(X_D,D);%正域 for i=1:m %%%%%%%%%%%%%%正域有问题%%%%%%%%%%%%%%%%%%%%%%%%%%% if(~ismember(num(i),pos_d)) B{i}=''; %若约简后的信息系统B{i}不在正域中则删除该行 end %因为相同的条件得到的决策不一样, end %将在正域规则下约简过的信息系统B连接决策系统D [m,n]=size(B);

几种字符串哈希HASH算法的性能比较

几种字符串哈希HASH算法的性能比较 2011年01月26日星期三 19:40 这不就是要找hash table的hash function吗? 1 概述 链表查找的时间效率为O(N),二分法为log2N,B+ Tree为log2N,但Hash链表查找的时间效率为O(1)。 设计高效算法往往需要使用Hash链表,常数级的查找速度是任何别的算法无法比拟的,Hash 链表的构造和冲突的不同实现方法对效率当然有一定的影响,然而Hash函数是Hash链表最核心的部分,本文尝试分析一些经典软件中使用到的字符串 Hash函数在执行效率、离散性、空间利用率等方面的性能问题。 2 经典字符串Hash函数介绍 作者阅读过大量经典软件原代码,下面分别介绍几个经典软件中出现的字符串Hash函数。 2.1 PHP中出现的字符串Hash函数 static unsigned long hashpjw(char *arKey, unsigned int nKeyLength) { unsigned long h = 0, g; char *arEnd=arKey+nKeyLength; while (arKey < arEnd) { h = (h << 4) + *arKey++; if ((g = (h & 0xF0000000))) { h = h ^ (g >> 24); h = h ^ g; } } return h; } 2.2 OpenSSL中出现的字符串Hash函数 unsigned long lh_strhash(char *str) { int i,l; unsigned long ret=0; unsigned short *s; if (str == NULL) return(0); l=(strlen(str)+1)/2; s=(unsigned short *)str; for (i=0; i ret^=(s[i]<<(i&0x0f)); return(ret);

SHA-1(安全哈希算法实现)

SHA-1(安全哈希算法实现) 如题,不知道sha-1的自己百度吧。 1 #include 2 #include //定义vector数组 3 #include //记录消息 4usingnamespace std; 5 6constint NUM = 8; //一个字由32比特(或者8个16进制数) 7constint BIT = 512; //消息认证码要以512比特一组 8 9//字常量 10string H0 = "67452301"; 11string H1 = "EFCDAB89"; 12string H2 = "98BADCFE"; 13string H3 = "10325476"; 14string H4 = "C3D2E1F0"; 15 16//定义SHA1(安全哈希算法)类 17class SHA1 18 { 19public: 20//将一个字符串形式的字转化为vector数组 21 vector hex_into_dec(string word); 22 23//将vector转化为string字符串形式 24string num_into_message(vector A); 25 26//两个字X和Y的逻辑"和" 27 vector word_AND(vector A,vector B); 28 29//两个字X和Y的逻辑"或" 30 vector word_OR(vector A,vector B); 31 32//两个字X和Y的逻辑"异或" 33 vector word_XOR(vector A,vector B); 34 35//两个字X和Y的逻辑"补" 36 vector word_COMPLEMENT(vector A); 37 38//两个字X和Y的摸2^32整数加 39 vector word_ADD(vector A,vector B); 40

属性约简

粗糙集的研究对象是一个数据集,数据集一般被保存为数据表格形式,即数据库或信息系统。信息系统的形式是由研究对象和属性值关系构成的二维数据表,类似于基础数学中的关系数据库。信息系统实现了粗糙集模型的知识表示。 定义 2.1.1[46] 设(,,,)S U A V f =为一个数据库,即信息系统,也称为知识表示系统。其中12{,}U U x x x = 为一个非空的有限对象集,12{,,}A A a a a = 是属性的有限非空集合,a V V =?,a A ∈,a V 为属性a 的值域;定义信息函数 :U V c a f A ?→ . 例如表2.1.1是一个信息系统,其中12345{,,,,}U x x x x x =, 1234{,,,}A a a a a =,123a a a V V V ==={0,1},4a V ={0,1,2}. 表2.1.1 信息系统 定义2.1.2[46] 对于a A ?∈,x U ?∈,(,)a f x a V ∈,对于P A ??≠?,定义:{(,):(,)(,),}I x y U U f x q f y q q P =∈?=?∈, I U 称为上的不可分辨关系。 (1)若(,)x y I ∈,则称:x y 和是不可分辨的。 (2)不可分辨关系是等价关系,具有: 自反性:xIx ; 对称性:xIy yIx ?;

传递性:,xIy yIz xIz ? . (3) I 是U 上的一个等价关系,[]{,}I x y y U xIy =∈, 12{[]}{,}I k U I x x U X X X =∈= ,12,k X X X 称为U 关于I 的一个划分。 (4)P I ?≠?,1,2I I I ∈, 112{,}k U I X X X = ,212{,}l U I Y Y Y = , 12{,1,2,1,2}i j U I I X Y i k j l ?=?== ,()I P ind P I P ∈== , 则称:()ind P U 是上的一个等价关系,称为P 上的不可区分关系。 ()[][]ind P I I P x x ∈= 称为P 的基本知识。 当12()()ind I ind I ?,称1,I 比2I 细,21I I . 1.1.1粗糙集与近似 定义2.1.3[46] X U ?,I 是U 上的一个等价关系,12{,}k U I X X X = ,若存在1i X ,2i X j i X U I ∈,.st X =1 t j i t X = ,称X 是关于I 的精确集。否 则称X 是I 的粗糙集。 定义 2.1.4[46] 给定一个知识系统(,,,)S U A V f =,D A ?,X U ?, x U ∈,集合X 关于D 的下近似,上近似,负区域及边界区域分别为: 下近似:()D apr X DX ={:()}x U D x X = ∈? {,}Y U D Y X =∈? {[][],}D D x x X x U =?∈ ; 上近似: ()D apr X =DX = {:()}x U D x X ∈?≠? {,}Y U D Y X =∈?≠? {[][],}D D x x X x U =?≠?∈ ; 负区域:()D neg X =()D U apr X -= {:()}x U D x X ∈?=? ;

常见的Hash算法

常见的Hash算法 1.简介 哈希函数按照定义可以实现一个伪随机数生成器(PRNG),从这个角度可以得到一个公认的结论:哈希函数之间性能的比较可以通过比较其在伪随机生成方面的比较来衡量。 一些常用的分析技术,例如泊松分布可用于分析不同的哈希函数对不同的数据的碰撞率(collision rate)。一般来说,对任意一类的数据存在一个理论上完美的哈希函数。这个完美的哈希函数定义是没有发生任何碰撞,这意味着没有出现重复的散列值。在现实中它很难找到一个完美的哈希散列函数,而且这种完美函数的趋近变种在实际应用中的作用是相当有限的。在实践中人们普遍认识到,一个完美哈希函数的哈希函数,就是在一个特定的数据集上产生的的碰撞最少哈希的函数。 现在的问题是有各种类型的数据,有一些是高度随机的,有一些有包含高纬度的图形结构,这些都使得找到一个通用的哈希函数变得十分困难,即使是某一特定类型的数据,找到一个比较好的哈希函数也不是意见容易的事。我们所能做的就是通过试错方法来找到满足我们要求的哈希函数。可以从下面两个角度来选择哈希函数: 1.数据分布 一个衡量的措施是考虑一个哈希函数是否能将一组数据的哈希值进行很好的分布。要进行这种分析,需要知道碰撞的哈希值的个数,如果用链表来处理碰撞,则可以分析链表的平均长度,也可以分析散列值的分组数目。 2.哈希函数的效率 另个一个衡量的标准是哈希函数得到哈希值的效率。通常,包含哈希函数的算法的算法复杂度都假设为O(1),这就是为什么在哈希表中搜索数据的时间复杂度会被认为是"平均为O(1)的复杂度",而在另外一些常用的数据结构,比如图(通常被实现为红黑树),则被认为是O(logn)的复杂度。 一个好的哈希函数必修在理论上非常的快、稳定并且是可确定的。通常哈希函数不可能达到O(1)的复杂度,但是哈希函数在字符串哈希的线性的搜索中确实是非常快的,并且通常哈希函数的对象是较小的主键标识符,这样整个过程应该是非常快的,并且在某种程度上是稳定的。 在这篇文章中介绍的哈希函数被称为简单的哈希函数。它们通常用于散列(哈希字符串)数据。它们被用来产生一种在诸如哈希表的关联容器使用的key。这些哈希函数不是密码安全的,很容易通过颠倒和组合不同数据的方式产生完全相同的哈希值。 2.哈希方法学 哈希函数通常是由他们产生哈希值的方法来定义的,有两种主要的方法: 1.基于加法和乘法的散列 这种方式是通过遍历数据中的元素然后每次对某个初始值进行加操作,其中加的值和这个数据的一个元素相关。通常这对某个元素值的计算要乘以一个素数。

相关主题
文本预览
相关文档 最新文档