图的基本知识

一.图的基本知识

1.图的表示

由点与边构成的数据结构,顶点表示研究对象,边表示两个研究对象之间特定的关系

图的分类:
  • 无向图与有向图
    • 有向图:图中的边存在方向性
    • 无向图:边无方向性
  • 非加权图与加权图
    • 加权图:图中的每一条边都一个实数预置对应,即每条边都对应于一个权重
    • 非加权图:默认为每条边的权重都是一致的
  • 连通图与非连通图
    • 连通图:图中每个顶点都可达
    • 非连通图:图中存在孤立的点,即没有任何边与之连接
  • 二部图
    • 将图中的顶点分为两类(A,B),对于每一条边,它一端的顶点属于A,一端的顶点属于B;它描述了两类对象之间的关系。
图的数据结构:

邻接矩阵可以来描述图中顶点之间的关系

  • 用一个一维数组表示顶点的集合
  • 用一个二维数组表示邻接矩阵
    • 如果节点 i i i与节点 j j j之间相连接,则矩阵中的元素 A i j = 1 A_{ij}=1 Aij=1,否则 A i j = 0 A_{ij}=0 Aij=0

2.图的特性

1.邻居与度
  • 邻居:一条边连接的两个顶点互为邻居
  • 度:一个顶点的邻居数目称之为度
    • 对于有向图,有入度与出度之分
      • 入度:顶点作为终点的边的数目
      • 出度:顶点作为起点的边的数目
2.子图与路径:
  • 子图
    • G ′ G' G的顶点和变的集合都是另一个图 G G G的顶点和边的集合的子集,则图 G ′ G' G为图 G G G的子图
  • 路径
    • 从一个顶点 V i V_i Vi出发,沿着一些边和顶点到达另一个顶点 V j V_{j} Vj,沿途边的的序列称之为从顶点 V i V_i Vi到顶点 V j V_j Vj的路径
  • 路径长度
    • 路径中所经过边的数目称之为路径的长度
  • 顶点的距离
    • 两个顶点之间距离最短路径的长度为此两个顶点的距离
3.图的遍历

图的遍历是指从图中某一个顶点出发,按照某种算法,沿着图中的边,对图中所有顶点访问且仅访问一次。

常见图的遍历算法

  • 深度优先算法(DFS)
  • 广度优先算法(WFS)

3.图中心性

为什么引入中心性?

中心性是衡量某个节点在图中重要性或地位的重要指标。

如在社交网络分析某个用户的社会影响力,在商品用户中分析商品在用户中的重要性

度中心性:

度 中 心 性 = N d e g r e e n − 1 度中心性=\frac{N_{degree}}{n-1} =n1Ndegree , N d e g r e e N_{degree} Ndegree代表节点的度,N为图中节点总数量

背景:度是与节点相连边的数目,度越大,与节点相连的边就越多,节点在图中的重要性也就越高;除以 n − 1 n-1 n1的原因是每个节点最多与剩余 n − 1 n-1 n1个节点相连。

特征向量中心性

图的邻接矩阵为 A A A,有 A X = λ X AX=\lambda X AX=λX算出图的邻接矩阵的特征值与特征向量,找出最大那个特征值对应的特征向量,特征向量本质代表矩阵运动的方向性,特征值代表矩阵在对应方向上运动的距离,最大特征值对应的特征向量最能体现邻接矩阵的趋势。

特征向量对应位置值与相应的节点对应

在这里插入图片描述

观察各个顶点对应的值,顶点1与顶点5值最大,应为两者在图中度最大; V 2 , V 3 , V 4 V_2,V_3,V_4 V2,V3,V4的度虽然都为2,但 V 4 V_4 V4所对应的值比另外两者都大,那是应为 V 4 V_4 V4的两个邻居都为度最大的顶点。

背景:这一定程度上体现了你的朋友在社会的地位高,一定程度上也会提升你的社会地位;即使你有很多社会地位低的朋友,你的社会地位也不一定会很高。

中介中心性

中 介 中 心 性 = 图 中 经 过 该 节 点 最 短 路 径 的 数 目 图 中 最 短 路 径 的 总 数 中介中心性=\frac{图中经过该节点最短路径的数目}{图中最短路径的总数} =

背景:图中非邻居的两个节点之间必须依靠中心节点才会建立练习,一个节点如果在其他任意两个节点的最短路径中频繁出现,那么该节点的重要性也会非常高。

连接中心性

连 接 中 心 性 = n − 1 节 点 到 其 他 节 点 最 短 路 径 之 和 , 其 中 n 为 图 中 节 点 数 目 连接中心性=\frac{n-1}{节点到其他节点最短路径之和},其中n为图中节点数目 =n1n

背景:连接中心性也是从整个网络的布局来考虑的,可能存在这种情况,一个节点与其他节点之间都可达,但其到达其他节点的距离都非常远,那么这类节点他的重要性也不会很高;所以引入连接中心性,其到其他节点距离之和越短,其在整个图中处于越核心的位置。

PageRank

4.编程实现图的创建及其特性的计算

#关于图的操作,Python中含有库  networkx
import networkx as nx
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#创建图
edges=pd.DataFrame()
edges["sources"]=[1,1,1,2,2,3,3,4,4,5,5,5] #源节点
edges["targets"]=[2,4,5,3,1,2,5,1,5,1,3,4] #目的节点
edges["weights"]=[1,1,1,1,1,1,1,1,1,1,1,1] #边的权值
#创建
G=nx.from_pandas_edgelist(edges,source="sources",target="targets",edge_attr="weights")
#将图表示出来
nx.draw_networkx(G)

在这里插入图片描述

图的特性的计算:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值