复杂网络数据挖掘

2024-05-24

复杂网络数据挖掘(精选十篇)

复杂网络数据挖掘 篇1

大数据时代中数据挖掘与机器学习领域图文检索、主题发现、语义分析等工作十分困难,其主要原因是大数据涉及复杂的类型、复杂的结构和复杂的模式,数据本身具有很高的复杂性。目前,人们对大数据背后的物理机制缺乏理解,对数据之间的关联规律认识不足。面对新的数据形式,相应的基础理论的缺乏制约了人们对大数据潜在模式的发现和高效计算方法的设计。为了理解大数据的本质特征和生成机理、简化大数据的表征以及构建大数据的学习模型,需要深入研究数据复杂性的内在机理。

无论大数据的分析理解还是计算应用都离不开对其复杂性的理解。大数据技术和人类探索复杂性的努力有密切关系。复杂性科学是大数据技术的科学基础,大数据方法可以看作复杂性科学的技术实现。复杂性科学是指以复杂性系统为研究对象,以超越还原论为方法论特征,以揭示和解释复杂系统运行规律为主要任务,以提高人们认识世界、探究世界和改造世界的能力为主要目的的一种“跨学科”的新兴科学研究形态。由于大数据的复杂性主要体现在数据之间的相互关联,数据科学需要复杂网络理论来理解信息之间的相互关联,因此复杂网络理论成为数据科学的关键方法论引擎之一。换句话说,数据科学离不开网络科学,因为隐藏在大数据之中的秘密主要是数据之间的网络(数据网络)。

二、多层复杂网络理论

复杂网络是一种将复杂系统表示为网络结构的研究范式,其中网络节点表示复杂系统中的对象,网络连边表示对象之间的关联关系。随着近年来复杂网络理论的快速发展,复杂网络研究范式已在多个领域(交通网络、信息网络、社交网络等)取得了成功。然而,传统的复杂网络研究范式有着无法回避的缺陷,即只包含一种对象类型和关联关系,忽略了复杂系统的异构性。这导致复杂系统的很多重要信息遗失,使得基于传统复杂网络的模型方法不能广泛适用于实际问题。“多层复杂网络理论”可以同时包含多种不同类型的对象和关系,比传统复杂网络表征更丰富的信息,更好地支持建模求解和分析预测任务。

多层复杂网络根据层与层之间耦合性质的不同,可以分为多层依赖网络(interdependent networks)和多层关联网络(interconnected networks)。多层依赖网络中各层网络节点往往属于不同实体对象类型,且各层网络节点之间存在强依赖关系。某一层网络节点的失效会直接导致其它层中与之关联节点的失效,从而呈现出级联失败过程。多层关联网络中层与层的节点之间只是相互关联,而不存在强依赖关系。多层关联网络中一种关联关系连接各层网络中的共同个体,这些共同个体具有相同网络状态,同时每层网络内部的关系类型不同。例如:在社会关系网络中,同时存在同学关系网络和同事关系网络,且往往存在同学关系网络中的个体也属于同事关系网络。多层关联网络中另外一种关联关系连接属于不同实体对象类型的多层网络,为关联节点提供信息和负载传输的路径。

三、多层复杂网络相关问题

(一)多层复杂网络的必要性。

尽管多层网络表征存在多种对象和关系类型的系统,但是这些复杂系统是否确实需要多层网络研究范式呢?文献[1]基于真实数据集对网络层次不断融合情况下的网络结构特征进行实证研究。结果强调了基于多层网络进行建模的必要性,证实了对多层网络进行融合会丢失重要信息。另外,文献[2]也表明对多层网络中每个网络独立计算节点中心性或者将多层网络融为一层网络进行计算会导致错误结果。

(二)节点中心性度量。

节点排序与传播、博弈、控制等问题密切相关。就网络节点排序在传播中的作用来讲,重要的网络节点是疾病传播防控中首要的免疫对象,同时也是实现信息传播最大化的最优传播源,加强对重要节点的控制可以有效调控网络的传播动态性。传统节点中心性度量方法包括网络结构相关的Betweeness、Closeness、K-shell,随机行走相关的PageRank、HITS,矩阵分解相关的Eigenvalue,节点度相关的Degree、Expected Force等。当前,对于多层网络节点中心性度量的研究较少,已有的研究[3]主要是对传统方法的泛化和扩展。

(三)多层复杂网络结构分析。

在多层复杂网络中进行协同社团检测能够刻画网络节点在多种关联关系中的社团结构,从而可以有效提高社团划分的准确性。当前关于多层复杂网络的社团检测的研究[4]主要是矩阵分解相关方法。另外,如何根据观测到的各层内部以及多层网络之间的链路预测其它潜在的链路也是一个重要问题。

(四)多层复杂网络动力学过程。

多层网络动力学模型主要包括3个方面:一是多层网络上的疾病传播和信息传播;二是基于博弈理论的多层网络上节点之间的竞争、合作关系分析;三是多层网络上动态同步机制。多层网络动力学模型,特别是疾病传播和信息传播方面,近年来已经出现了许多研究成果。另外,与传播紧密相关的传播控制,影响力最大化以及疾病免疫方面也有明显的研究进展。

(五)多层复杂网络功能失效与网络鲁棒性。

网络功能失效主要有级联失败和人为攻击两方面的原因。级联失败过程主要可以分为两类,一类是网络过载导致的级联失效,例如电力网络、交通网络等。此类研究表明一个节点过载失效会导致负载分布发生变化,从而引起其它节点的过载失效。如此迭代,使得整个网络功能瘫痪。另一类是本地网络结构基础上基于模型的级联失败,例如局部决策模型。其中,节点的状态与它的邻居节点的状态紧密相关,一个节点的状态转变会导致其邻居节点以某一概率发生状态转变。人为攻击导致网络功能失效包括随机、针对性的节点及链路攻击。

复杂网络研究的一个问题是网络的鲁棒性。网络鲁棒性问题研究网络节点及链路失效如何影响网络功能,是保证网络功能正常的基础和关键。例如:在Internet网络中,估算路由器的故障如何影响网络整体通信能力。类似地,在社会接触网络中,理解如何通过免疫有效控制疾病传播。面对复杂网络系统中节点和链路失效,如何度量网络系统的鲁棒性对实际系统的设计和优化至关重要。随着网络节点和链路的不断失效,网络功能主要依赖于网络结构的完整性。所以,网络鲁棒性可以通过分析网络结构的变化情况进行计算。根据渗流理论的观点,连续的人为攻击或者级联失败导致网络结构渗流相变的发生,以至于完全破坏网络结构。所以,许多研究工作基于渗流理论计算网络的渗流门限值以度量网络鲁棒性。虽然渗流门限值方法被广泛应用,但在很多现实应用中效果并不好。例如:渗流门限值不能度量网络结构已遭严重破坏但还没有完全崩溃的情况。因此,一种新的、基于整个网络失效过程中最大子图规模的鲁棒性度量被提出。

多层复杂网络的鲁棒性问题在原有问题的基础上研究网络之间的链路如何影响网络的鲁棒性。文献[5]发现单层复杂网络中需要随机移除大量节点才能够导致网络崩溃,而仅仅移除小部分网络节点可能导致多层网络中结构的碎裂。另外,节点度分布越广泛,单层复杂网络对随机节点故障越鲁棒,而多层网络对随机节点故障越脆弱。近年研究也发现面对级联失败,稀疏的多层关联网络比稠密的多层关联网络更脆弱。另外,多层网络同质性耦合形成的网络比异质性耦合产生的网络更鲁棒。当网络之间的耦合程度降到某一个阈值以下时,级联失败将从一阶不连续相变转变为二阶连续相变。综上,影响多层网络鲁棒性的因素主要有节点度分布、网络稀疏性、多层网络的耦合方式、多层网络的耦合程度等因素。

四、结语

当前多层复杂网络研究主要有直接面向应用的数据导向型研究(重要节点、结构模式、优化方法等)和模型导向型研究(构建多层网络的理论模型)。本文尽可能从相关概念以及相关研究问题的角度对近期代表性的研究成果进行了梳理。综合来看,多层复杂网络理论未来有以下几个方面可突破:一是构建严谨、规范的概念框架、清晰的问题定义和评价方法;二是存在理论研究和实际应用需求脱离的趋势,急需整理、开放公共的现实多层复杂网络数据集,促进对现实问题的研究;三是对复杂网络的研究不能停留在理论分析层次,需要采用理论与实际相结合的研究方法,推动复杂网络研究取得实质性的进展。

摘要:本文讨论数据科学和网络科学的关系,指出网络科学是大数据分析的重要基础理论,并详细介绍了网络科学的最新进展:多层复杂网络理论的概念和相关问题。

关键词:数据科学,网络科学,多层复杂网络

参考文献

[1]Cardillo A,Gómez-Gardees J,Zanin M,et al.Emergence of network features from multiplexity[J].Scientific Reports,2013,3(2):1344~1344

[2]De D M,Soléribalta A,Omodei E,et al.Ranking in interconnected multilayer networks reveals versatile nodes[J].Nature Communications,2015,6

[3]Domenico M D,Soléribalta A,Omodei E,et al.Centrality in Interconnected Multilayer Networks[J].Nature Communications,2013,6

[4]Ni J,Tong H,Fan W,et al.Flexible and Robust MultiNetwork Clustering[C].KDD,2015:835~844

[5]Buldyrev S V,Parshani R,Paul G,et al.Catastrophic cascade of failures in interdependent networks[J].Nature,2010,464(7291):1025

[6]冯芷艳.大数据背景下商务管理研究若干前言课题[M].管理科学学报,2013,1

[7]赵国栋,易欢欢,糜万年.鄂维南大数据时代的历史机遇[M].北京:清华大学出版社,2013

[8]张影强.将大数据提升为国家战略[J].中国经济报告,2014,1

[9]牛禄青.构建大数据产业环境[J].新经济导刊,2012,12

[10]刘小刚.国外大数据产业的发展及启示[J].金融经济,2013,18

复杂网络交叠团模糊分析与信息挖掘 篇2

摘 要:针对复杂网络交叠团的聚类与模糊分析方法设计问题,给出一种新的模糊度量及相应的模糊聚类方法,并以新度量为基础,设计出两种挖掘网络模糊拓扑特征的新指标:团间连接紧密程度和模糊点对交叠团的连接贡献度,并将其用于网络交叠模块拓扑结构宏观分析和团间关键点提取。实验结果表明,使用该聚类与分析方法不仅可以获得模糊团结构,而且能够揭示出新的网络特征。该方法为复杂网络聚类后分析提供了新的视角。

针对复杂网络交叠团的聚类与模糊剖析办法设计Issue(问题),给出一种新的模糊度量及对应的模糊聚类办法,并以新度量为根底,设计出两种发掘网络模糊拓扑特征的新目标:团间衔接严密水平和模糊点对交叠团的衔接奉献度,并将其用于网络交叠模块拓扑构造微观剖析和团间关键点提取。实验后果标明,运用该聚类与剖析办法不只能够取得模糊勾结构,并且可以提醒出新的网络特征。该办法为复杂网络聚类后剖析提供了新的视角。

关键词:网络模糊聚类;团—点相似度;团间连接紧密度;团间连接贡献度;对称非负矩阵分解;网络宏观拓扑

团结构是复杂网络普遍而又重要的拓扑属性之一,具有团内连接紧密、团间连接稀疏的特点。网络团结构提取是复杂网络分析中的一个基本步骤。揭示网络团结构的复杂网络聚类方法[1~5]对分析复杂网络拓扑结构、理解其功能、发现其隐含模式以及预测网络行为都具有十分重要的理论意义和广泛的应用前景。目前,大多数提取方法不考虑重叠网络团结构,但在多数网络应用中,重叠团结构更为普遍,也更具有实际意义。

现有的网络重叠团结构提取方法[6~10]多数只对团间模糊点进行初步分析,如Nepusz等人[9,10]的模糊点提取。针对网络交叠团结构的深入拓扑分析,本文介绍一种新的团—点相似度模糊度量。由于含有确定的物理含意和更为丰富的拓扑信息,用这种模糊度量可进一步导出团与团的连接紧密程度,以及模糊节点对两团联系的贡献程度,并设计出新指标和定量关系来深度分析网络宏观拓扑连接模式和提取关键连接节点。本文在三个实际网络上作了实验分析,其结果表明,本方法所挖掘出的网络拓扑特征信息为网络的模糊聚类后分析提供了新的.视角。

1 新模糊度量和最优化逼近方法

设A=[Aij]n×n(Aij≥0)为n点权重无向网络G(V,E)的邻接矩阵,Y是由A产生的特征矩阵,表征点—点距离,Yij>0。假设图G的n个节点划分到r个交叠团中,用非负r×n维矩阵W=[Wki]r×n来表示团—点关系,Wki为节点i与第k个团的关系紧密程度或相似度。W称为团—点相似度矩阵。令

Mij=?rk=1WkiWkj(1)

若Wki能精确反映点i与团k的紧密度,则Mij可视为对点i、j间相似度Yij的一个近似。所以可用矩阵W来重构Y,视为用团—点相似度W对点—点相似度Y的估计:

W ?TW→Y(2)

用欧式距离构造如下目标函数:

minW≥0 F?G(Y,W)=‖Y-W ?TW‖?F=?12?ij[(Y-W ?TW)。(Y-W ?TW)]ij(3)

其中:‖•‖?F为欧氏距离;A。B表示矩阵A、B的Hadamard 矩阵乘法。由此,模糊度量W的实现问题转换为一个最优化问题,即寻找合适的W使式(3)定义的目标函数达到最小值。

式(3)本质上是一种矩阵分解,被称为对称非负矩阵分解,或s-NMF (symmetrical non-negative matrix factorization)。?s-NMF的求解与非负矩阵分解NMF[11,12]的求解方法非常类似。非负矩阵分解将数据分解为两个非负矩阵的乘积,得到对原数据的简化描述,被广泛应用于各种数据分析领域。类似NMF的求解,s-NMF可视为加入限制条件(H=W)下的NMF。给出s-NMF的迭代式如下:

Wk+1=W?k。[W?kY]/[W?kW ?T?kW?k](4)

其中:[A]/[B]为矩阵A和B的Hadamard矩阵除法。

由于在NMF中引入了限制条件,s-NMF的解集是NMF的子集,即式(4)的迭代结果必落入NMF的稳定点集合中符合附加条件(H=W)的部分,由此决定s-NMF的收敛性。

在求解W之前还需要确定特征矩阵。本文选扩散核[13]为被逼近的特征矩阵。扩散核有明确的物理含义,它通过计算节点间的路径数给出任意两节点间的相似度,能描述网络节点间的大尺度范围关系,当两点间路径数增加时,其相似度也增大。扩散核矩阵被定义为

K=exp(-βL)(5)

其中:参数β用于控制相似度的扩散程度,本文取β=0.1;L是网络G的拉普拉斯矩阵:

Lij=-Aiji≠j

?kAiki=j(6)

作为相似度的特征矩阵应该是扩散核矩阵K的归一化?形式:

Yij=Kij/(KiiKjj)??1/2(7)

基于扩散核的物理含义,团—点相似度W也具有了物理含义:团到点的路径数。实际上,W就是聚类结果,对其列归一化即可得模糊隶属度,需要硬聚类结果时,则选取某点所对应列中相似度值最大的团为最终所属团。

2 团—团关系度量

团—点相似度W使得定量刻画网络中的其他拓扑关系成为可能。正如W ?TW可被用来作为点与点的相似度的一个估计,同样可用W来估计团—团关系:

Z=WW ?T(8)

其物理含义是团与团间的路径条数。很明显,Z的非对角元ZJK刻画团J与团K之间的紧密程度,或团间重叠度,对角元ZJJ则刻画团J的团内密度。?

以图1中的对称网络为例,二分团时算得

Z=WW ?T=1.337 60.035 3

0.035 31.337 6

由于图1中的网络是对称网络,两团具有同样的拓扑连接模式,它们有相同的团内密度1.337 6,而团间重叠度为?0.035 3。

用大数据创造复杂的人工智能 篇3

比如,我们可以问“为什么外部传感器发现湿度突然大幅上升时,自动驾驶系统会将飞机抬高五度?”今天的电脑代码可以被打开检查,人们可以追踪并理解运算的基础,无论这个基础如何复杂。

但是,有了大数据分析之后,这种追踪就会变得困难许多。算法预言的基础可能会复杂得让常人难以理解。

大数据的“不可解释”性

当电脑根据程序编写的明确要求遵循系列指令,比如IBM在1954年发展的将俄语翻译为英语的程序,人可以轻易理解为什么软件会用一个词代替另一个词。但谷歌翻译在判断英语单词“light”是该翻译成法语的“lumière”还是“léger”时(即描述“光”还是“重量”),却动用了数十亿页的翻译资料。一个人不可能追踪到程序作出最后选择的准确原因,因为这些选择是基于海量的数据和大量的统计运算的。

大数据运作的规模也超乎我们的想象。比如,谷歌分辨几个搜寻关键词和流感的关联是测试4.5亿个数学模型的结果。相对地,麻省理工学院统计学助理教授辛西娅·鲁丁(Cynthia Rudin),为检修孔是否会着火设计了106个预测指标,而且她可以向联合爱迪生电力公司的经理们解释,为什么她的程序优先了某些检查位置。

人工智能界所说的“可解释性”,对于我们常人来说是很重要的,我们总是想知其所以然,而不仅是知其然。可是,如果系统自动生成了601个预报,而不是106个呢?如果这601个中大多数都不是特别重要,但把它们放在一起,就会提升模型的精确性?任何预报的基础都可能非常复杂。要说服经理们重新分配有限的预算,她该告诉他们什么呢?

在这个情景中,我们可以看到,大数据预报的风险,及其背后的算法和数据集,可以变成不可说明、不可追踪,甚至不可信的黑匣子。要防止这样的事情发生,大数据需要监控和透明,这就要求新的专业知识和机构。这些新成员会帮助社会仔细检查某些领域的大数据预报,会让被数据伤害的人得到平反。

算法师的崛起

在社会上,当一个特定领域的复杂性和专业性大幅上升,因而对管理新技术的专家产生紧急需求时,我们常会看到这些新实体出现。法学、医学、会计和工程学的专业人才在超过一世纪前就经历了这种巨变。最近,电脑安全和隐私专家突然冒起,以保证公司遵从诸如国际标准组织这样的机构订立的最佳操作准则。

大数据会需要新的一群人来担当这个角色。也许他们会被称为“算法师”。他们可能分两类——从外部监测公司的独立实体,或从内部监测公司的雇员或部门——就像公司有内部会计师和外来审计师来检查财务一样。

这些专业人士会是计算机科学、数学和统计学方面的专家;他们会检查大数据的分析和预报。算法师必须中立并保密,就像会计师和其他一些职业现在所做的那样。他们会评价数据源的选择,分析和预报工具的选择,包括算法和模型,以及对结果的阐释。在有争议时,他们会获取得出某个结果的算法、统计方法和数据集。

如果2004年的时候国土安全局有算法师,他就可能防止该局产生一张如此多错误的禁飞名单,上面竟然还有参议员肯尼迪。在日本、法国、德国和意大利,最近都有算法师本可以有所作为的例子,这些国家的人们抱怨说谷歌的“自动完成”功能诽谤了他们,这个功能会根据一个输入的名字产生一系列常见的搜索关键词。这些词基本是基于过往搜索的频率得出的:词语根据概率排列。尽管如此,当一个潜在的商业伙伴或情人上网查我们的时候,我们的名字跟“罪犯”或“妓女”放在一起的,谁能不生气呢?

我们预想的算法师是为像这样的问题提供市场导向的解决方法的人,他们的存在可能减少过分的规范管制。他们满足的需求与会计师和审计师在20世纪早期出现应对泛滥的金融资讯所满足的需求是相似的。汹涌而来的数字让人难以理解。它要求专家以灵活而自律的方式组织在一起。市场的反应是让专门进行财务监察的有竞争力的公司形成一个新兴行业。通过提供这种服务,新型职业提升了社会对经济的信心。算法师可提供类似的信心提升,大数据按说能够并应该从中获益。

打开黑匣子

复杂网络数据挖掘 篇4

1 数据通信网络的特点

现代计算机网络稳定性技术的主要特点有四类;1) 数据信息传递的比较快, 对于当前的计算机通信技术采用的是一种二进制的数字信号传递技术, 这种信号传递方式与以前的那种传统的信号传递方式相比, 在速度上有了非常大的提升。2) 通信时的响应时间短, 针对于计算机通信技术的广泛应用性, 还有一个重要原因就是它本身在通信时的响应时间较短。因为计算机通信技术在通信时使用的是双胶线的电缆, 这种数据的传输渠道在进行信息传递时比较快, 其具体的响应时间大概只有一秒, 可以说是瞬间反应。3) 数据信息的安全性比较高, 在采用计算机通信技术通信时, 其信息在传播中, 能有效的避免各种的病毒影响, 从而使信息不会泄露或丢失。这主要是因为计算机通信技术在通信的过程中使用的独有加密方法, 保护着整个数据信息的传输过程, 使数据信息只有到了接受者的终端接收器上, 进行对应的反向加密才能够读取。这种加密传输的方式大大的提高了数据信息传输时的安全性。

2 数据通信网络稳定性评估的模型

现在一般网络稳定性评估研究具有很强的针对性, 主要针对小型数据通信网络。这种小型数据通信网络从网络架构上进行评估, 架构非常简单, 因为网络中有很少的节点数量, 在这种情况下对其进行与之相关的建模行为非常容易, 并且对稳定性的评估相对简单。随着科技不断的发展, 计算机不断高科化, 网络规模也越来越大, 其中也提升了结构的复杂性。利用传统式的稳定性评估指标对全面数据通信网络的稳定性情况来进行评估, 在传统的基础上稳定性评估会大大降低它的可靠性和可信度, 这其中最主要的一个原因就是现在计算机发展的精确度在很大程度上根本适应不了一些复杂性数据通信网络的稳定性评估, 一大部分初步性的数据很难根据有效测量来进行完善获取, 比如, 信息指标和网络节点数据等, 很大一部分的数据还需要有一个系统的理论推算演变过程。数据通信网络稳定性评估对数据的依赖性和一些简便的网络结构相比较之下, 只需节点设备中2个过程中的参数指标即可。对于相对比较复杂的网络而言就需要使数据在每个状态之间进行相应的转移行为, 这种转移数据需要根据参数估计方法, 通过对原始资料进行统计分析来进行取得。

3 数据通信网络稳定性评估办法状态枚举法

状态枚举法也叫状态穷举法, 这种叫法主要是由这种方法中的性质来决定的。这种方法的主要特征从状态集合中逐一列举各种发生状态, 列举这种发生状态主要是从利用概率, 从最大的状态开始, 于此同时, 根据他们之间一些与之相关的条件来进行合理的计算, 从而确切的合理分析。状态枚举法的基础展开式为:

展开式中:P1, q1分别指的是第i个节点设备处在工作状态时和失效时的概率;

N代表网络系统中的节点量;

T (s) 指的是系统状态概率;

Nf, N-Nf分别是状态失效和正常的节点量。

由上面的式子不难看出, 任何相互之间的枚举状态相互排斥, 由此可知道累计失效概率在实际工作中的表现形式是各失效状态概率之间的和。对于此中的枚举终止, 枚举法则是把枚举终止于通过失效阶数而确定的层次。

4 结束语

综上所述, 计算机通信技术是一种现代较为先进的通信技术, 其主要以数据形式出现的, 在计算机与计算机或者计算机与终端设备之间的信息传递技术, 由于其自身的信息传递快, 数据安全性高, 以及抗干扰的能力强。所以, 在现代化的社会各项领域中得到了较为广泛的应用。

摘要:现代的通信技术的主要发展源泉就是计算机通信技术, 计算机通信技术也是信息通信时代的基础, 在当前的信息发展建设中扮演着非常重要的角色。在21世纪的今天, 计算机通信技术的主要发展方向就是实现全球性的统一高效的通信环境, 虽然这一目标还很遥远, 不过我认为只要我们去不断的探索和研究, 计算机通信技术在未来的发展中就一定会有更好的发展景象。使我们的通信技术变得更加的先进, 让人们的生活变得更加的便利。

关键词:数据通信网络,网络稳定性,评估研究

参考文献

[1]纪勇, 张伟华, 张证崎, 张文娟.复杂数据通信网络风险评估研究[J].东北师大学报 (自然科学版) , 2013.

[2]晏蒲柳, 侯杰昌.数据通信网络的稳定性与优化控制[J].电子学报, 1997.

[3]周牧.多层卫星网络稳定性设计研究[D].哈尔滨工业大学, 2008.

基于复杂网络的疾病传播 篇5

基于复杂网络的疾病传播

疾病传播问题的研究,一直是科学家所关注的焦点.近几年兴起研究的复杂网络,真实地反映出现实中系统的某些重要特性,成为研究现实网络的有效手段.在介绍复杂网络的基础上,着重阐述了复杂网络描述疾病传播的研究工作及成果,特别指出其应用于SARS病毒传播研究得到的.一些有意义的结论,从而为控制病毒的传播提供了一种重要的参考依据.

作 者:王F 郑应平WANG Min ZHENG Ying-ping  作者单位:同济大学控制科学与工程系,上海,92 刊 名:科技导报  ISTIC PKU英文刊名:SCIENCE & TECHNOLOGY REVIEW 年,卷(期): 23(5) 分类号:N94 R18 关键词:复杂网络   疾病传播   小世界   无标度   SARS  

复杂网络数据挖掘 篇6

近些年,复杂网络分析已经成为数据挖掘领域的重要研究内容之一。复杂网络分析可广泛应用于社会学、生物学、信息科学等众多领域[1,2]。在对这些复杂网络进行分析的方法之中,社团挖掘是最重要的研究内容之一。在复杂网络中,社团又被称为聚类,是一组紧密相连的节点集合。社团内部节点的链接是紧密的,而不同社团节点之间的链接是松散的[3]。通过社团检测,研究人员可以深入地了解网络的结构信息[4],网络中节点之间的交互关系[5],以及节点在网络的进化中起到的作用[6]。

社团检测往往需要很大的计算量,各种社团挖掘算法很难扩展到含有数十亿边规模的复杂网络上。在2013年,Yang等[7]给出了真实网络的基准测试数据集,并包含了数据集中社团的正确划分。在该研究中,他们测试了不同最新社团挖掘算法[8,9,10,11,12]的执行时间,通过对比发现这些算法很难扩展到边规模为数千条的复杂网络。虽然Big Clam[7]算法是针对大规模网络设计的,但是该算法仍然不能处理含有20亿条边的Friendster数据集。此外,虽然Louvain算法[8]可以处理和Friendster数据集具有相同规模的数据集,但是社团挖掘的质量却很低。

为了保持社团挖掘结果的准确性,同时提高应对海量数据的能力,本文提出一种两阶段的社团挖掘算法。在第一个阶段,采用聚类系数作为启发式方法获得网络的初始社团分割。在第二阶段,通过对不同社团中的节点进行移动对第一阶段得到的初始分割进行优化。在每次的社团调整过程中,通过增加社团的WCC[13]进行节点的移动。为了加速第二阶段的社团调整过程,本文提出一种新的WCC评估器。该WCC评估器类似于传统的WCC评价方法,但是却有着更高的计算效率。

1 基于WCC的社团挖掘算法

对于给定的无向无权图G=(V,E),本文的目标是通过最大化WCC值来挖掘图中的不相交社团。本节首先描述了社团挖掘的WCC指标,然后基于WCC指标提出了相应的社团挖掘算法,接下来分析如何应用提出的算法对WCC值进行估计,最后分析了算法的复杂性。

1.1 WCC指标

WCC是一种复杂网络社团挖掘评价指标,该指标认为真实网络中的社团结构往往含有大量的三角。由于社团是由紧密相连的节点组成,那么这些节点构成三角的概率要相对较高,WCC应用该特征对图的节点集合划分(即社团划分)进行量化。

给定图G=(V,E),节点x以及社团C,令t(x,C)表示x与C中节点构成的三角的个数,vt(x,C)表示C中能与x构成三角的节点的个数,那么将节点x与社团C的凝聚水平WCC(x,C)进行如下定义:

基于式(1),社团C的WCC的计算公式为:

给定集合C,WCC(C)是C中所有节点的WCC的值的平均值。给定图分割P={C1,C2,…,Cn},并且C1∩…∩Cn,那么P的WCC为该划分中所有社团的WCC的加权平均值,其计算公式如下:

1.2 社团挖掘算法

为了对图G进行划分得到P,本文提出一种最大化WCC(P)社团挖掘算法。该算法包含数据的预处理、初始划分和划分改进三部分。

1.2.1 预处理

在图G=(V,E)的加载时,进行如下的预处理操作:对于G中的每条边e∈E,计算e可以构成的不同三角的个数,并移除那些不能构成三角的边。

在预处理结束后,得到的图为G'。预处理操作存在如下两个优点:(1)WCC的计算并不依赖于这些边,因而可以提高计算效率;(2)通过移除不能构成三角的边可以大幅压缩图的存储空间,从而节省内存开销。

1.2.2 初始划分

该阶段对预处理得到的图G'进行初始划分,其基本思想是:节点的聚类系数越大,那么该节点与邻居节点形成的三角个数越多,因而该节点的邻居节点形成三角的概率也越大。依据式(1),如果节点的聚类系数越大,那么与该节点同属于一个社团的那些邻居节点的WCC概率越大。

在初始划分时,首先计算所有节点v∈V的聚类系数,其中k为v的邻居节点数,n为v的所有邻居节点形成的边数。然后,根据节点的聚类系数对节点进行降序排列。当两个节点的聚类系数相同时,按照节点的邻居个数k进行降低排列。接下来,遍历所有的节点进行划分。对于每个节点v∈V,创建一个社团C,使得C包含v及其邻居节点,并且C中的节点没有包含在其他的社团中。最后,将C加入到划分P中,并将C中的节点设置为已经遍历过。当V中的所有节点遍历完毕时,初始划分结束,得到的划分P为初始划分。

1.2.3 划分改进

在得到初始划分后,需要对划分进行不断改进直到找到最优划分。在划分改进阶段,使用爬山搜索策略。在每次迭代中,通过一系列变换操作(3种),依据原有的划分得到WCC值更高的划分。迭代终止的条件为迭代前后划分的WCC值变化小于阈值,或者迭代到一定的次数。

在每次迭代中,对于图中的所有节点v∈V,在下列三种变换操作中选取一个最佳变换,使得变化后得到的划分较变换之前是最优的:

不进行变换:使节点v处于原来的划分C中。

移除:将节点v从原来的划分C中移除并作为单体社团。用WCCR(v,C)来表示移除操作得到的WCC提升值,令P={C1,…,C,…,Ck}为原来的划分,P'={C1,…,C',…,Ck,{v}}为变换后的划分,对于给定的图G=(V,E),WCCR(v,C)的计算公式如下:

其中C=C'∪{v}。

转移:将节点v从原来的划分C1中移除并加入到社团C2中。用WCCT(v,C1,C2)来表示移除操作得到的WCC提升值,P={C1,C2,…,Ck}为原来的划分,P={C'1,C'2,…,Ck}为变换后的划分,对于给定的图G=(V,E),那么WCCT(v,C1,C2)的计算公式如下:

其中C1=C'1∪{v},C'2=C2∪{v}。

在每次迭代中,由于每个节点之间的变换操作是相互独立的,所以可以并行地运行,因此可以大大提高算法的运行效率。

1.3 WCCI值估计

WCC值的精确计算需要知道目标节点及其邻居节点构成的三角个数,对于含有d个邻居的节点,该操作的计算复杂度为O(d2)。由于网络节点度数的幂率分布特征,在并行计算模式下,极少数度数大的节点的计算时间往往影响着整个算法的运行效率。此外,在每次迭代过程中都需要计算WCC的提高值WCCI,因此WCCI的计算性能决定着算法的整体效率。为了加速WCCI的计算,本文提出了一种近似计算方法,该方法的基本思想如图1所示。

当节点v被加入到社团C时,WCC值的提高值为WCCI。对于节点v,仅仅考虑C中与v相连的节点的个数din。对于每个社团C,记录如下的统计量:节点个数r,边的密度δ,社团边界的边的个数b。同时,保存着图G的聚类系数ω(常数)。基于上述统计量,应用如下公式得到WCCI的估计值:)

其中θ1、θ2和θ3分别为相应变量的系数,并且和为1。

2 实验结果与分析

本节通过大量的真实数据集实验对算法的性能进行了评估。

2.1 数据集与性能指标

本文的实验采用Stanford提供的公开网络数据集SNAP(http://snap.stanford.edu),其中包括Amazon、Dblp、Youtube、LiveJournal、Orkut和Friendster六个网络数据集。这些数据集的基本统计信息如表1所示。

为了评价不同算法在社团挖掘时的性能,本文对比了算法的准确性和执行时间。在准确性的评价指标中,采用了F1值和NMI(Normalized Mutual Information)。给定预测结果集合A和真实结果集合B,算法的查准率为,召回率为,F1值为。NMI的定义源于信息理论,它比较了两个集合的相似性,并返回介于0和1之间的实数[14]。

2.2 实验结果

在实验中,我们将本文提出的可扩展的社团检测算法记为scd,并将该算法与walktrap[8]、louvain[9]、oslom[10]、infoman[11]和bigclam[12]五种社团挖掘算法进行了对比。

首先,应用六种社团挖掘算法对上述的6个网络数据集进行社团检测,并对比了社团挖掘结果的准确性。图2和图3分别为六种算法在不同数据集上的F1值和NMI对比图。在这两个柱状图中,如果数据集对应的柱为空,说明相应算法的F1值或NMI值几乎为0。从这两幅图中可以看出,除了walktrap和louvain两种算法在Amazon数据集上的NMI值大于scd算法外,scd算法在其他数据集上的NMI和F1值都高于其他算法。这说明本文提出的社团挖掘算法对于不同类型的网络都具有更好的社团检测性能。

其次,通过实验对比了六种算法在这些数据集上的执行效率,实验结果如图4所示。在该组实验中,我们省略了那些准确性几乎为0的算法,令相应的柱值为空。从该图可以看出本文提出的算法的执行时间在6个数据集上的执行时间都是最短的,而louvain算法次之。我们对算法进行并行化,分析了scd算法在不同数量线程下的运行效率。在图5中,横轴表示算法的线程数量,纵轴为算法的运行时间,由于算法在单线程下的运行时间大于1秒,为了更好地对实验结果进行展示并在1秒处进行了截断。从图5可以看出,由于对scd算法进行了并行化,因此算法的执行时间明显减少了,并且在Live Journal、Orkut和Friendster三个数据集上的并行效果要优于其他三个数据集。

最后,我们进一步分析了scd算法的并行化性能。图6为scd算法在不同算法下的运行时间,横轴表示网络中边的规模,纵轴为scd算法在相应网络中进行社团挖掘所需的执行时间。图6表明当网络中边的数量不断增加时,scd算法的执行时间近似呈线性增长,因而可以认定scd算法具有更好的并行化性能,其执行时间随着网络规模的增长具有很好的可扩展性。

3 结语

复杂网络数据挖掘 篇7

1.1一般性原则

为了便于数据采集系统进行二次开发及出于使用的便捷性考虑, 在进行系统设计时应注意以下几个原则: (1) 平台化原则。方便后期用户根据自己的实际需求随时进行变更; (2) 开放性原则。确保设计系统与既有其他系统协调一致, 便于进行数据传输; (3) 易维护原则。系统尽量采用模块化设计, 便于进行周期性维护和错误定位; (4) 安全性原则。确保系统配套有完备的安全体系。

1.2特殊考虑原则

厂级数据采集系统的主要功能是在电厂工作时, 能够实时地进行数据采集并传输到信息网络, 让终端数据作为操作人员决策的依据。所以, 系统设计的关键原则就是确保DCS等控制系统的安全, 与此同时提高系统的效率以及可靠性。

2主站采集系统

2.1系统功能

2.1.1接收实时数据

接受来自脱硫/脱硝工作站传送的实时数据包。

2.1.2通讯协议转换

(1) 发送协议转换:接收来自不同DCS系统的通讯格式实时数据, 并将其转换成统一的UDP协议, 以便传输给横向隔离装置。

(2) 上传协议转换:将横向隔离装置传来的实时数据转换成系统管理中心统一的通信格式, 再上传数据中心。

2.1.3数据预处理

进行数据计算以及格式的转换, 为系统提供必要的前期数据处理。

2.2采集框架图

采集框架图, 见图1。

注:先由电厂代理端主动发送心跳请求包, 服务器端回应心跳应答包, 其他顺序不变。

2.3报文规范

*包头

*长度:1个字节。

*内容:0x7B。

*包类型

*长度:一个字节。

*内容:

登录请求包0x01;登录应答包0x81;心跳请求包0x02;心跳应答包0x82;数据请求包0x04;数据应答包0x84。

*包长度

*长度:2个字节。

*内容:长度就是整个数据报文的长度 (例如:0x00 0x10代表的是16个字节的长度) 。

*采集代理ID

*长度:11个字节。

*内容:每个脱硫设施对应的ID号 (在主站系统中是唯一的且是由主站来指定) 。

*数据内容

*长度:根据数据的长度变化而变化。

*内容:见下面登陆报文、心跳报文、数据报文的具体描述。

*CRC校验位

*4个字节。

*包尾

*长度:1个字节。

*内容:0x7B。

2.3.1登陆报文

(1) 登陆请求包。

数据内容就是登陆密码和ip地址, 密码长度为6个字节。报文总长度为26+ip地址的字节长度。

(2) 登陆应答包。

数据内容根据登陆请求包来定, 长度为1个字节, 分三种情况:登陆失败、登陆成功和已登陆。报文总长度为21个字节, 具体数据内容如下:

登陆失败:0x01。登陆成功:0x00。已登陆:0x02。

2.3.2心跳报文

(1) 心跳请求报文。

数据内容为当前的时间, 格式为yyyy-MM-dd HH:mm:ss。长度为19个字节。报文总长度是39个字节。

(2) 心跳应答报文。

数据内容为心跳应答标识 (0x0A) , 报文总长度是21个字节。

2.3.3数据报文

(1) 数据请求报文。

数据内容格式为:## (2字节) 、type、time、## (2字节) 。报文总长度为44个字节。

*type:一个字节。

*type=1代表正常采集。

*type=2代表数据补采。

*time:19个字节。

*当前的时间, 格式为yyyy-MM-dd HH:mm:ss。

(2) 数据应答报文。

数据内容格式为:采集点id (服务器端分配给代理端) 、type、time、信息体。报文总长度为50+信息体长度。

*## (2字节) 。

*采集点id:10个字节。

*type:一个字节。

*type=1代表正常采集。

*type=2代表数据补采。

3脱硫脱硝系统的复杂网络中的双向数据传输方案设计

3.1方案设计

3.1.1对数据双向通信时, 可进行以下定义

(1) 定义了无数据传输的中断的时间长度。

(2) 定义了允许通过的最大字节数。

(3) 定义了传输中数据包的类型为登录包、登录应答包、测试链路包、测试连接应答包、数据请求包、数据请求应答包。

(4) 登录包和测试包的字节数都小于允许通过的最大字节数。

3.1.2工控机端的具体实现方式

(1) 获取统一的编码, TCP连接成功后立刻发送登录包, 并等待登录应答包。

(2) 等待30s后, 如果未收到登录应答包, 就自动断开TCP连接, 并重复3.1.2 (1) 。

(3) 在收到登录应答包时, 启动测试链路线程, 每隔3.1.1 (1) 定义的时间长度进行链路测试, 并在三次未收到测试链路应答包的情况下, 自动断开TCP连接, 重复3.1.2 (1) , 同时关闭测试链路线程。

3.1.3服务器端的具体实现方式

(1) 获取各个电厂工控机统一编码值。

(2) 启动服务器数据接收程序和数据采集程序。

(3) 等待工控机和服务器建立TCP连接。

数据采集程序, 将采集的命令转化成字节数组, 根据允许通过的最大字节数对数据进行分包, 并构建数据请求包, 然后发送给工控机。

(1) 等待接收数据请求应答包。 (2) 在收到数据请求应答包时, 确定请求的包是否是分包传输或单包传输。如果是分包传输, 则需等待其他分包的数据, 并进行分包合并, 形成数据请求应答包, 最后解析数据入库。

3.2实施方式

实施具体方式如下。

(1) 在服务器端开启数据采集的服务端程序。 (2) 等待电厂侧工控机的TCP网络连接及登录。 (3) 工控机端启动TCP连接程序, 等待数据请求。 (4) 双方进行双向的数据传输。

4结语

作为二氧化碳排放“大户”, 电厂应该做好数据采集平台的建设, 保证数据传输的有效性以及可靠性。该文基于目前数据采集系统数据双向传输存在的问题, 设计出一种可行的优化方案, 提高了双向传输数据的质量, 对保护生态环境必将发挥积极的作用。

参考文献

[1]孙栓柱, 代家元, 高进, 等.江苏省火电机组节能减排在线监测系统的开发及应用[J].电力科技与环保, 2014 (1) :50-53.

[2]林廷, 谢小鹏, 龙建平, 等.广东电网并网火电厂脱硫脱硝监测研究与应用[J].自动化技术与应用, 2014 (8) :101-104.

复杂网络数据挖掘 篇8

关键词:算法,平均复杂度,最坏复杂度,分组算法,数据查找,数据序列

序言

对无序数据表的查询一般采用顺序查找方法。实际工作中会出现部分有序的现象, 即在由若干个数据组成的一组内部数据中, 数据排列是无序的, 但数据组与数据组之间是有序的。此时既可以采用顺序查找方法, 也可以将数据序列分为若干组, 然后仅对待查数据所在组进行顺序查找, 而避开其他数据组, 如此可以在很大程度上提高查询效率、优化程序设计。这种查找方法的代价与顺序查找的代价[1]用“平均复杂度O (n) ”和“最坏情形复杂度W (n) ”来衡量, 都可以得到很大改善。

一、算法的平均情形复杂度和最坏情形复杂度

设Sn是一个有n个元素序列Ii (i=1…n) 的集合。Ii在集合中出现的概率为p (Ii) , t (Ii) 是算法在输入Ii时所执行的基本运算次数[2], 则:

二、顺序查询复杂性分析

2.1算法。一个含有n个数据项的升序排列表R, 给定一个数据值key, 在表R中寻找key出现的位置 (可能是数组下标) , 若在表R中key不存在, 则返回结果0。算法如下[5,6]:

设Ii表示key出现在表中的第i个位置的情况。t (Ii) 表示输入Ii的比较次数, 所以在顺序比较的情况下, 下式成立[7]:

设q表示key出现在整个表R中的可能性, 并假定它出现在表R中的任何位置的可能性是一样的。那么出现在某个位置上的可能性为p (Ii) =q/n。当比较位置出现在n+1时属于key不可能出现的情况, 即不出现的概率, 因此有p (In+1) =1-q。

2.2平均复杂度。作为顺序表R[1, 2…, n]的某个项R[i], 为了防止下标溢出监视节点, 如R[n+1], 让其值等于要查找的值, i逐次加1, 这样如果查找不成功, 则i=n+1, 所以有:

式 (1) 中, q (n+1) /2部分表示key出现在表R中的情况; (1-q) (n+1) 为key为不出现的情况。

1) key肯定出现在表R中:

即q=1, 则O (n) = (n+1) /2

表明平均要查找半个数据列表。

2) key出现在线性表R中的可能性为二分之一:

即q=1/2, 则O (n) = (n+1) /4+ (n+1) /2≈3/4*n[6]

表明平均需要查找线性表中3/4的数据元素。

3) key肯定不出现在表R中:

即q=0, 则O (n) =n+1

表明平均需要查找整个表。

2.3最坏复杂度。算法在最坏情况下, 比较次数是:

即key不出现在表R中或出现在表R的最后一个位置时, 都要查找整个线性表R。

三、分组拆分算法

顺序查找算法简单, 容易实现, 但无论是平均复杂度, 还是最坏情形复杂度都比较大, 效率低。而分组算法比顺序算法有较大的改进, 查找效率有较大的提高。为提高查找速度, 最好的方法是二分算法即折半法, 但二分法要求数据列完全保持有序, 当数据集上有频繁的插入或删除操作时, 这种有序极易遭到破坏, 那么为了能继续保持有序, 需要大量移动数据的存储位置。此时可以将二分法与顺序查找法综合运用, 即分组拆分查找算法。这种分组不要求每组的数据量相同, 但是必须制作一张索引表[8], 索引表中记录了每组的长度mi和其中的最大值Rim,

首先将关键数据key与索引表中第i段的最大值Rim进行比较, 如果key=Rim, 比较成功;如果key<Rim则表明key处在第i段中, 然后在第i段中进行顺序比较, 比较次数为mi;如果key>Rim, 将key与第i+1段中的最大数据项Ri+1m进行比较;如果最终未比较成功, 则返回i=0。

3.1算法描述。假设有以下数据序列:

将它们划分为四个子序列, 第一组有3个元素, 第二组有5个元素, 第三组有3个, 第四组有6个。其中, 第一组的全部数据均小于第二组, 第二组的全部数据均小于第三组, 以此类推。但是各组内部数据是无序的。

索引表由两部分组成, 一部分为每组的长度描述, 用数组c[5]表示, 图1中索引表的最后一位是索引表的结束标志。另一部分为每组中的最大值, 用数组m[5]表示。

分组拆分算法描述:

如果比较成功, 输出该数据所在的位置, 否则输出标志0。

3.2平均复杂度。平均复杂度的计算由两部分组成, 一是对索引表的折半查找, 一是对关键段内的顺序查找。

折半查找复杂度。用int (x) 表示小于或等于x的最大正整数。假设key出现在表R中的概率为1。将n个数据分为y段, 对于y个数据, 它出现在表R以及索引表中任何一个位置的可能性为1/y。

假设有以下y=15个有序数据列:2, 4, 7, 10, 14, 15, 18, 21, 22, 25, 26, 29, 33, 37, 39, 在采用二分算法的情况下, 其查找顺序如图2所示。由图可见, 查找某些数据的最大次数 (即二叉树的层) 是c=int (y/4) +1。

假设所查询的数据a肯定出现在图2中, 且落在所有位置上的可能性是相同的, 则p (Ii) =1/y。又由于每次二分就是一次折半, 它是一种二进制关系, 因此图2中的层数c与数据总量y的关系大致满足[4]:

y越大, 式 (3) 越精确。式中, 应当保证c是一个整数, 因此由式 (3) 得到:

对这y个数据进行二分查找, 则平均性态为:

段内顺序查找复杂度。假设段内有数据z个, 由前述已知, 顺序查找的平均复杂度为:

分组拆分复杂度。假设数据项为n, 划分为k段, 每段内的数据量为z, 则分组拆分算法的平均复杂度为:

由于z随不同的分组块其大小有所不同, 因此, 当key处于不同的分组段时, 其平均性态有所差异。总的平均性态可以将分组视为平均分组, 此时可以得到平均复杂性态为:

3.3最坏复杂度。在二分算法情况下, 最坏复杂度即式 (4) 所表达的最大层数, 即:

在段内顺序查找情况下, 最坏复杂度为:

所以, 分组拆分最坏复杂度为:

由式 (7) 可见, 分组拆分算法的最坏复杂度比顺序查找得到了明显改善, 其关键在于减小z值, 因此, 在分组环境允许的情况下, 尽量增大y使得z尽量小。

四、分组拆分算法在题库建设中的应用

本院每学期的高等数学、计算机基础等课程的考试均采用计算机程序随机抽题的方式进行选题。题目是按照教材的章节等因素分类的, 或是分组的。在题库建设过程中, 要不断地增加新题目, 另外, 题目的难度、区分度、猜测度等参数也在不断变化, 它们在题库中的顺序也在不断地被调整, 有些题目还将被删除。为了提高服务器抽题效率, 设计一种好的算法是十分必要的。此时的抽题解决方案可以是对题库重新全部排序, 也可以是分组排序。如果采用全部排序, 则抽题的算法可以采用二分法或分组拆分算法, 如果是分组排序则应当采用分组拆分算法。

本文所讨论的算法可以做为题库建设过程中的程序设计依据。

五、结束语

每一种算法都针对某一种数据结构[9,10], 分组拆分算法则主要针对分组式排序的数据序列, 也针对全排序数据序列。作为一种顺序查询和二分法查询的综合查询法, 其性能表现在既提高了数据查询效率, 又适应非完全排序的数据序列, 在数据序列的顺序有一定变化的情况下显示出较大的优势。

参考文献

[1]Hector Garcia-Molina, Jeffrey D.ullman, Jennifer Widom.Database System Implementation[M].北京.机械工业出版社, 2012, 8.

[2]覃贤立.并行排序算法的设计与分析[J].电脑与信息技术, 2014, 3:14-16.

[3]王晓东.计算机算法设计与分析[M].北京:电子工业出版社, 2012, 2.

[4]苏德富, 钟诚.计算机算法设计与分析[M].北京:电子工业出版社, 2001, 1.

[5]丁亚涛.C语言程序设计[M].北京:中国水利水电出版社, 2010, 1.

[6]刘模群.排序算法时间复杂度研究[J].软件导刊, 2012, 6:35-38.

[7]杨绣丞, 李彤, 赵娜, 等.计算排序算法设计与分析[J].计算机应用研究, 2014, 31 (3) :120-125.

[8]王哲.计算机程序设计中查找算法的效率分析[J].城市建设理论研究, 2012, 22:46-49.

[9]包振宇, 孙干, 陈勇.数据结构[M].北京:中国铁道出版社, 2009, 6.

数据库复杂查询的教学研究 篇9

1 子查询

子查询是嵌套在另一个查询中的T-SQL查询, 子查询可以用来将一个复杂查询分解为几个简单步骤, 为WHERE子句和[IN|EXISTS|ANY|ALL]提供一个目标列表, 为父查询中记录提供一个查询表。

有些子查询容易得到和创建, 有些就比较复杂, 其复杂程度取决于内部查询与外部查询之间关系的复杂度, 另外, 大部分子查询均可以用关系连接来替换, 但子查询的系统开销更小。

2 嵌套子查询

嵌套子查询返回在外部查询中使用的单个值, 或者与IN运算符一起使用, 在使用“=”运算符时, 将使用一个返回单个值的查询, 若使用IN运算符, 将返回一个值列表, 例如:

SELECT

FROM

WHEREIN (

SELECT

FROM

WHERE)

在大部分情况下SQL SERVER会将嵌套子查询方法解析为和使用连接一样的查询计划, 但当查询计划不同时, 连接更高效。

3 关联子查询

与嵌套子查询不同, 其信息传递是双向的, 嵌套子查询中, 内部查询只处理了一次, 然后将信息传递到外部查询, 而外部查询也只执行一次, 而在关联子查询中, 内部查询用外部查询提供的信息运行这一过程分三步走。

1) 外部查询获得一个记录, 然后将该记录传递到内部查询。

2) 内部查询根据传递的值执行

3) 内部查询将结果值传回外部查询, 外部查询利用这些值完成处理过程

以Adventure Works2008数据库为例, 若讨论查看第一天放置到系统中的订单的查询, 并且需要知道客户第一天下订单的日期和订单ID。如果用两个单独的查询来完成, 只需创建一个临时表, 在与之连接。如果希望在一个查询中进行那么需要好到一种方法来查看每个客户。可以让内部查询基于当前外部查询的Customer ID来执行查找。然后将返回值传递给外部查询, 这样可基于最早的订单日期进行匹配。

代码如下:

SELECT OD1.CUSTOMERID, OD1.SALESORDERID, OD1.ORDERDATE

FROM SALES.SALESORDERHEADER OD1

WHERE OD1.ORDERDATE= (SELECT MIN (OD2.ORDERDATE)

FROM SALES.SALESORDERHEADER OD2

WHERE OD2.CUSTOMERID=OD1.CUSTOMERID)

在查询中要注意, 是否使用别名由自己决定, 但对于关联子查询通常是需要的, 既然两个查询都需要从对方获取信息, 如果没有别名, 就无法知道需要的数据来自那个表。

4 派生表

有时, 对于给定表的每个行, 可能在子查询中有多个结果, 但需要比IN运算符提供更复杂操作, 这种情况下需要在子查询中使用JOIN运算符。

派生表由一个查询结果集的列和行组成, 将生成结果集的查询用小括号括起来, 给查询结果其别名, 使其可作为表被引用, 语法如下:

SELECT

参考文献

[1]黄德才.数据库原理及其应用教程[M].北京:科学出版社, 2010.

[2]王能斌.数据库系统教程[M].北京:电子工业出版社, 2002.

复杂网络数据挖掘 篇10

随着当今社会的不断发展, 对象与对象之间的关系越来越呈现出复杂化、多元化等特点, 在对现有对象进行建模的过程中, 慢慢地发现用原有的关系型数据库来存储建模对象的复杂程度越来越高。首先, 用关系型数据库进行对象建模, 对象会存在非常庞大的子表, 加大了对数据库维护的负担和成本;其次, 在进行对象模型提取时, 需要进行非常庞大的表连接过程, 严重影响对象提取信息的效率。针对上述存在的一些问题, 本文提出了一种基于图形数据结构来进行对象建模的概念, 用于降低对复杂对象的查询时间开销, 并且结合图数据库这一新型的非结构化数据库, 针对实际例子, 对其建模进行了设计与实现, 具有较强的现实价值与意义。

1 图与图形存储

1.1 图的基本定义

图是由顶点的有穷非空集合和顶点之间的边的集合组成, 以下简称G (Graph) 。可以看出G是一个有序二元组 (V, E) , 其中V称为顶点集 (Vertices Set) , E称为边集 (Edges set) , E与V不相交, 它们亦可写成V (G) 和E (G) 。其中, 边集E (G) 也是一个二元组, 用来表示[1]。

对于一个图G, 针对其边集E (G) , 如果给定边集E (G) 中的每一个元素, 规定一个方向, 如规定边e (u, v) 为u指向v的一条边, 则图G便称之为有向图。相反, 边没有方向称之为无向图[6]。

1.2 图形存储系统——图数据库

图数据库是当前比较热门的非结构化数据库 (NOSQL) 之一, 它用图这一数据结构来存储数据, 是最接近高性能的一种用于存储数据的数据结构方式。为了使读者更加清晰的理解我们复杂对象建模的过程, 本章节对图形存储系统[9]——图数据库进行简单介绍。

图数据库基本的构造模式如图1:

在一个基本图数据库中, 一张图由无数的节点和关系组成 (分别对应于概念中的点集V (G) 和边集E (G) 。节点包括了许多类型和属性, 用以描述当前节点对象自身的基本信息, 一个节点可以从单属性开始, 逐渐扩展到成千上万的属性。关系则是节点与节点之间连接的桥梁, 它可以将无数的节点组织成任意的结构, 允许一张图被组织成一个列表, 一棵树, 一张地图, 或者一个复杂的实体——这个实体本身也是由复杂的, 关系高度关联的结构组成。一条关系同样包括了许多的属性, 用以描述2 个节点之间具体的关联关系信息, 不同于节点, 一条关系还有另外一个重要特性, 那就是方向, 可以将其看作一种特殊的属性。另外, 节点集V和边集E, 除了具有自己的属性信息, 还具有类型信息。根据不同的应用场景, 一个节点或一个关系可以具有一个或者多个分类, 用来对检索数据的过程进行过滤。

对于一个数据库, 用户关心最多的一定是数据库的新增、删除、查询、修改功能, 这也是传统数据库设计必须考虑的前提条件。下面对图数据库的用户操作进行一些简单梳理:

当需要新增一个对象时, 图形数据库只需要为其建立一个新的节点, 将该对象的信息存储在该节点的属性中, 然后再根据对象与对象之间的关联关系, 在节点与节点之间建立相对应的关系, 并且为此关系维护相关的关系属性和方向。

当需要删除一个对象时, 图数据库首先需要删除该对象对应节点拥有的所有关系, 然后再删除该对象对应节点即可。

当需要查找一个对象时, 针对不同的应用场景有2 种查询模式。第一种查询模式是索引查询, 即用户只想通过对象和关系的属性单一查询节点和关系, 图数据库会提供索引查询模式, 用以快速查询对象与关系;第二种查询模式是图遍历查询, 这是一种复杂查询, 通过设定用户关心的复杂查询条件, 利用不同的图论算法进行查询。举个简单例子, “我家人喜欢但我不喜欢的吃的东西是什么呢?”。结合图论算法来进行查询控制与性能优化, 这也是图数据库的一定很强大的优势。

当需要修改一个对象时, 图数据库利用查询功能找到需要被修改的节点对象, 修改其属性与关系即可。

2 基于图形数据库的复杂对象建模设计

2.1 复杂对象建模范式约束

2.1.1 基本模型约束

对于关系型数据库来说, 其基本模型为行列式, 这是关系型数据库的模型定义 (约束) 。在1.2 章节提到, 在简单的图形存储系统中, 用点集和边集来存储用户关心的数据和数据之间的关联关系, 即对于图形数据库, 其基本模型定义 (约束) 为有向图G (V, E) 。

对象实体信息存放在图G的实体节点V中, 数据关联关系信息存放在图G的边集E中。每一个实体节点是一个独立存在的个体, 有多种属性P, 可以通过ID属性唯一确定实体节点。同时, 实体节点集V和边集E必须具有分类特性, 分类具有多重性, 同一类型下可有多个节点或多条边, 一个节点和一条边也可以有多个类型, 本文用》符号表示节点v和边e属于某一类型。设类型集合为T, 则有

基于图形数据库这个模型定义, 我们可以对节点集和边集给定一些约束, 类似于关系数据库的范式, 用来更加直观的表述复杂对象的模型设计, 并且提高复杂模型的可扩展性和保证查询的高效性。

2.1.2 数据建模约束

模型约束G (V, E) 是图形数据库区别于其他关系型数据库及非关系型数据库的关键点, 在模型约束的基础上, 为了提高对复杂对象的查询效率, 以及复杂对象模型的表述能力和可扩展性, 本文对图形数据建模方式进行了进一步规范与约束。和关系型数据库有些不同, 因为图形数据库的模型约束[13]为G (V, E) , 所以, 在对图形数据建模方式进行约束时, 需要同时对点集V和边集E分别进行约束。

(1) 点集V的约束

在2.1.1 章节提到, 点集V在建模过程中用来存储复杂对象的实体信息, 这些实体信息描述了该实体具有的所有属性, 其中能够唯一确定该实体节点的属性将其称为主属性, 对同一节点有多个值的属性将其称为非主属性。约束规定, 实体节点集是不可分割的基本数据项, 即建模过程中实体节点集的所有属性均为主属性。如果某个属性对同一节点有多个值或者有重复的属性 (非主属性) , 就需要构建新的属性节点, 新的属性节点通过边集和实体节点进行连接, 这种边将其称为属性边。同时约定, 属性节点除了用属性边连接外不特殊标注, 因为为了有更好的扩展性, 属性节点本身就是特殊的实体节点, 一样具有主属性和非主属性, 可以继续扩展属性节点和进行实体间关系互连。

(2) 边集E的约束

在模型约束中提到, 边集E是用来表示节点集V之间的关联关系。边集V的约束主要包括对实体节点到属性节点的约束、节点集之间关联关系的约束[12]等。

实体节点到属性节点的边集本文将其称之为属性边集Ep。属性边集Ep是一种特殊的边集, 对于属性边集Ep, 约束要求了边集Vp除了边集标志 (Type:property) 不能具备其他额外属性, 并且边集Vp均为实体节点指向属性节点的有向边。在2, 2 章节的实例中, 会用虚线来标注属性边集。

节点集之间的关联关系本文将其称为关系边集Er。对于关系边集Er, 约束要求边集Er具有边集标志 (Type:relation) , 并且允许边集Er拥有自己的属性。同时, 为了降低图的粘稠度, 同时不改变模型的描述意义, 对关系边集作了如下约束:

(1) 如果2 个实体节点的关联关系是可逆反关系, 即存在以下规律, 如亲戚, 同事, 同学关系等, 那么用AB之间的无向边 (双向边) 来表示2 者之间的关联关系;

(2) 如果2 个实体节点的关联关系是不是可逆反关系, 则用A到B的有向边来表示A到B者之间的关联关系, B到A的有向边来表示B到A之间的关联关系;

(3) 如果2 个实体节点有多种关联关系, 则对每一条不同种类的关联关系要求都建立一条关系边, 对其类型赋予不同的类型值, 并且不同类型的边允许拥有不同的属性。

在2, 2 章节的实例中, 会用实线来标注属性边集。

2.1.3 复杂对象模型的查询

完成对复杂对象的建模后, 读者最关心的应该是如何对构建的模型进行查询。本文用图的遍历来规定复杂对象模型的查询方式[10]。

对于一个节点, 要查询对应复杂对象的详细信息, 约束规定从节点A开始进行图的深度优先遍历[11]。从节点开始进行一层遍历的约束如下:

(1) 如果当前边类型为指向其他节点的property边, 记录当前property边指向节点, 继续从开始遍历所有的相连边, 重复步骤 (1) , 直到存在一个节点, 不存在指向其他节点的property边, 停止。

(2) 如果存在从当前节点出发指向其他节点的relation边, 记录当前relation边指向节点, 进入步骤 (3) , 否则将加入到复杂对象查询的结果集。

(3) 寻找指向当前节点的property边, 记录当前property边的起始节点, 继续从开始遍历所有的相连边, 重复步骤 (3) , 直到存在一个节点, 不存在指向当前节点的property边, 停止。将将加入我们的结果集中, 得到一个节点和的完整关联关系路径。

仔细观察可以发现, 根据规定的约束, 可以通过一层遍历完整的查询得到复杂对象所有存储在图形数据库中直接关系。如果想进行多层遍历, 查询得到更多的间接关系, 那么在一层遍历的算法基础上, 使用一个实体节点记录表来保存已经被访问过的实体节点, 以预防图中环的出现。

2.2 复杂对象建模方法

给定一个如下的建模背景, 展示如何对复杂对象的关系模型进行建模。

当前社会中, “人”与“人”之间存在复杂的朋友圈, 这个朋友圈的既包括现实的亲朋好友之间的关系, 也包括以虚拟身份活在虚拟网络中的朋友关系。为了方便建模的进行, 规定现实的朋友圈关系均用“friend”类型标签进行标识, 虚拟网络中的朋友圈关系包括利用手机进行的通话和利用微信号进行的聊天, 分别用“Call”和“Chat”类型标签进行标识。

“人”这一对象的自身固有属性非常之多, 这里本文选取身份证号 (GONGMINSFHM) 来作为对象的主属性, 手机和微信号 (WEIXIN) 作为对象的非主属性。同时一个手机可以使用多个手机号码, 所以规定手机对象的IMEI号为主属性, 手机使用过的手机号码为非主属性。

由2.1 章节的约束可知, 对于“人”这一实体, 需要构建实体节点Person, 同时需要对非主属性手机Phone和微信WEIXIN建立相关的属性节点, 同时对手机节点Phone而言, 需要对非主属性手机号码Phone Num建立相关的属性节点。对于节点Person具体建模模型如图2 所示:

考虑朋友圈中“人”与“人”复杂关系。在建模背景中提到, 有3 种不同的关系, 分别是人与人之间的亲朋好友关系, 通过电话号码通话得到的通话关系, 以及通过微信进行聊天的网络好友关系。根据这3 种关系对各节点之间进行节点链接, 构建关系边, 如图3所示:

这样就成功建立起了符合背景规定的“人”与“人”之间的朋友关联关系, 当要查一个“人”的直接相关联的朋友时, 只需要从该节点遍历所有的一层relation边所指向的实体节点即可, 不需要像关系型数据库一样去对Person, WEIXIN, Phone, Phone Num等对象进行复杂的表链接操作, 提高了复杂对象的查询效率。

3 结束语

本文设计了一种基于图形数据存储系统的规范约束, 用来对复杂对象进行建模, 用以增强复杂对象模型的表述能力;结合高效图论算法, 使复杂对象的信息查询效率得到了极大的提高, 避免了关系数据库中庞大的表连接过程。

今后还有许多后续工作, 将将在以下方面做进一步的研究:

(1) 目前的约束只适用于分析类型相同的对象之间的关联关系, 不同的对象均放入属性节点之中。下一步将会对不同类型对象的建模方法进行进一步分析研究;

上一篇:静压导轨下一篇:能源生态模式