Igraph入门指南 6

3、make_系列:igraph的建图工具

按照定义,正则图是指各顶点的度均相同的无向简单图,因为我目前没有找到描述度相等的有向(或自环图)的标准名称,所以在本文中借用一下这个概念,并加上定语有向无向,用以描述那些图中所有顶点度相同的有向图或无向图,包括简单图和多重图。

3-1 弦环图:make_chordal_ring(),返回无向正则图,d=4

我不是学数学的,平时用不上这个概念。百度半天,没有满意的解答。在igraph官网中找到这样一句话:

A graph is chordal if and only if any two neighbors of a vertex which are higher in rank than it are connected to each other.翻译过来,是图是弦图,当且仅当比一个顶点的秩高的任意两个邻居会彼此连接。

这里顶点的秩(rank)似乎指数按照顶点ID排序得到的顺序数。这种图的创建方法,首先创建一个环图,然后按照参数w的值,为图添加边,从而创建一个正则图(图中各个顶点的度相同)。因为得到的是一个正则图,所以各个顶点的度都相同,也就是参数矩阵的元素个数。而矩阵中的元素值,则规定了对应的顶点具体和图中哪些顶点连接而生成边。

igraph包帮助文档翻译过来大致是:

创建一个扩展弦环。扩展弦环是正则图,每个节点都有相同的度。它可以通过添加矩阵指定的一些额外边从简单环中获得。设p表示“W”矩阵中的列数。顶点i的额外边是根据“W”中的列i mod p添加的。额外边的数量是“W”中的行数:对于每一行j,如果i+W[ij]小于总节点的数量,则添加一条边i->i+W[ij]

虽然里面说了怎样计算,但我水平太低,没整明白,主要是平时用不上。
在这里插入图片描述

3-2 德布鲁因图:make_de_bruijn_graph,返回有向正则图(d=2m)

德布鲁因图可以百度出很多链接,据说是目前二代测序组装基因组的工具的核心基础,但对我这种小白而言太高大上了,用不上。

igraph帮助文档说:德布鲁因图表示字符串之间的关系。使用m个字母的字母表,并考虑长度为n的字符串。一个顶点对应于每一个可能的字符串,如果v的字符串可以通过删除其第一个字母并在其上附加一个字母来转换为w的字符串,则从顶点v到顶点w有一条有向边。请注意,该图将有m到n次方的顶点,甚至有更多的边,所以你可能不想为m和n提供太大的数字。

> g <- make_de_bruijn_graph(3,3)
> table(degree(g))
6 
27 

在这里插入图片描述

德布鲁因图是正则图,每个顶点的度是make_de_bruijn_graph(m, n)中参数m的两倍(2m),顶点总数是m的n次方。

3-3 完全图: make_full_graph返回无向正则图,d=gorder(g)

假设一个图有n个顶点,那么如果任意两个顶点之间都有边的话,该图就称为完全图。
在这里插入图片描述

3-4 完全引文图:make_full_citation_graph,返回有向正则图(d=gorder(g)-1)

在这里插入图片描述

> g <- make_full_citation_graph(10)
> print_all(g)
IGRAPH f03e9bf D--- 10 45 -- Full citation graph
+ attr: name (g/c)
+ edges:1 ->                      2 -> 1                3 -> 1 2                  4 -> 1 2 3            5 -> 1 2 3 4              6 -> 1 2 3 4 5        7 -> 1 2 3 4 5 6          8 -> 1 2 3 4 5 6 7    9 -> 1 2 3 4 5 6 7 8     10 -> 1 2 3 4 5 6 7 8 9
3-5 空图:make_empty_graph

igraph中,空图是不含边的图,所以,本函数可以设置顶点数、是否有向。
在这里插入图片描述

3-6 Prufer序列:make_from_prufer

根据知乎:Prufer序列,又称Prufer code。

对于一棵n(n>=2) 个节点的标定树(节点带编号),其Prufer序列是一个长度为 n-2 ,值域为[1,n] 的整数序列。

每棵树必定存在Prufer序列且唯一,每个Prufer序列对应的树也必定存在且唯一,即二者为双射关系。

将树转化为Prufer序列:

①从树上选择编号最小的叶子节点,序列的下一位为其父节点的编号。

②删去该叶子节点。

③重复①和②,直到树只剩下两个节点,此时序列的长度刚好为n-2

在这里插入图片描述

上图中,1中所有叶节点包括1、4、5、6、7,其中最小的是节点1;

2中,删除叶节点1,并把节点1的父节点编号2存入Prufer序列,序列更新为:2

3中,删除当前最小的叶节点4,并把节点4的父节点编号2存入Prufer序列:2,序列更新为:2,2

4中,删除当前最小的叶节点5,并把节点5的父节点编号3存入Prufer序列:3,序列更新为:2,2,3

5中,删除当前最小的叶节点6,并把节点5的父节点编号3存入Prufer序列:3,序列更新为:2,2,3,3

6中,删除当前最小的叶节点3,并把节点3的父节点编号2存入Prufer序列:3,序列更新为:2,2,3,3,2,至此,树只剩下两个节点,算法结束。

Prufer序列的性质:

1)构造完后剩下的两个节点里,一定有一个是编号最大的节点。

2)对于一个 n度的节点,其必定在序列中出现 n-1次,因为每次删去其子节点它都会出现一次,最后一次则是删除其本身。一次都未出现的是原树的叶子节点。

igraph是这样做的:

如果图有两个以上的顶点,请找到一个阶度为1的顶点(等同叶节点),将其从树中移除,并将其连接到的顶点的标签添加到序列中。重复此操作,直到剩余图形中只有两个顶点为止。

> g <- make_tree(13,3)
> plot(g,layout=layout_as_tree)
> to_prufer(g)[1] 2 2 2 1 3 3 3 1 4 4 4

在这里插入图片描述

3-7 二部图:make_full_bipartite_graph
g <- make_full_bipartite_graph(2, 3)
plot(g,layout=layout.bipartite)

在这里插入图片描述

本函数默认参数有from_type\to_type,用于设置边的方向

> g <- make_full_bipartite_graph(2, 3,directed = TRUE,mode = 'in')
> plot(g,layout=layout.bipartite)
> igraph::as_long_data_frame(g)from to from_type to_type
1    3  1      TRUE   FALSE
2    4  1      TRUE   FALSE
3    5  1      TRUE   FALSE
4    3  2      TRUE   FALSE
5    4  2      TRUE   FALSE
6    5  2      TRUE   FALSE
3-7 特殊结构图:make_graph
  • Bull:公牛图有5个顶点和5条边,如果绘制得当,它类似于公牛的头部
    在这里插入图片描述

Chvatal:这是最小的无三角形图,既是4色图,也是4-正则图。根据Grunbaum猜想,对于每m>1和n>2,存在一个具有n个顶点的m-正则m-色图。Chvatal图是m=4和n=12的一个例子。它有24条边。
在这里插入图片描述

  • Coxeter:具有28个顶点和42条边的非Hamilton三次对称图
    在这里插入图片描述

  • Cubical:立方体的柏拉图图形。一种有8个顶点和12条边的凸正多面体。
    在这里插入图片描述

  • Diamond:一个有4个顶点和5条边的图,如果正确绘制,则类似于示意图中的菱形
    在这里插入图片描述

  • Dodecahedron:具有20个顶点和30条边的另一个柏拉图式实体。
    在这里插入图片描述

  • Folkman:具有最小顶点数、20和40条边的半对称图。半对称图是正则的,边可传递的,而不是顶点可传递的

在这里插入图片描述

  • Franklin:这是一个嵌入到克莱因瓶上的图,它可以用六种颜色来着色,它是对克莱因瓶Heawood猜想必要性的反例。它有12个顶点和18条边。
    在这里插入图片描述

  • Frucht:Frucht图是最小的三次图,其自同构群仅由单位元素组成。它有12个顶点和18条边
    在这里插入图片描述

  • Grotzsch:是一个无三角形图,有11个顶点,20条边,色数为4。它是以德国数学家Herbert Groetzsch的名字命名的,它的存在证明了平面性的假设在Groetzsh定理中是必要的,即每个无三角形平面图都是3-色的
    在这里插入图片描述

  • Heawood:是一个有14个顶点和21条边的无向图。图是三次图,图中的所有循环都有六条或更多条边。每一个较小的三次图都有较短的循环,所以这个图是6笼,周长为6的最小三次图
    在这里插入图片描述

  • Herschel:是最小的非哈密尔顿多面体图。它是11个节点上唯一的此类图,具有18条边
    在这里插入图片描述

  • House:是一个5顶点、6边的图,如果直接绘制,基本上是正方形顶部的三角形
    在这里插入图片描述

  • HouseX:House图的正方形中带有X。5个顶点和8条边。
    在这里插入图片描述

  • Icosahedron:二十面体,具有12个顶点和30条边的柏拉图式实体
    在这里插入图片描述

  • Krackhardt kite:一个有10个顶点和18条边的社交网络
    在这里插入图片描述

  • Levi:该图是一个4弧传递三次图,它有30个顶点和45条边
    在这里插入图片描述

  • McGee:麦基图是唯一的3-正则7-笼图,它有24个顶点和36条边。
    在这里插入图片描述

  • Meredith:是一个在70个节点和140条边上的四次图,这是对每个4-正则4-连通图都是Hamilton图的猜想的反证。
    在这里插入图片描述

  • Noperfectmatching:一个有16个顶点和27条边的连通图,不包含完全匹配。图中的匹配是一组成对的不相邻边;也就是说,没有两条边共享一个公共顶点。完美匹配是覆盖图的所有顶点的匹配
    在这里插入图片描述

  • Nonline:一个图的连通分量是图中作为顶点诱导子图存在的9个图,它构成了一个非线性图。它有50个顶点和72条边。
    在这里插入图片描述

  • Octahedron:具有6个顶点和12条边的八面体柏拉图立体
    在这里插入图片描述

  • Petersen:一个有10个顶点和15条边的3-正则图。它是最小的次哈密尔顿图,即它是非哈密尔顿的,但从中去掉任何一个顶点都使它成为哈密尔顿的

在这里插入图片描述

  • Robertson:唯一的(4,5)-笼图,即周长为5的4-正则图。它有19个顶点和38条边。

在这里插入图片描述

  • Smallestcyclicgroup:一个最小的非平凡图,其自同构群是循环的。它有9个顶点和15条边
    在这里插入图片描述

  • Tetrahedron:具有4个顶点和6条边的柏拉图立体
    在这里插入图片描述

  • Thomassen:最小的可形图,在34个顶点和52条边上。可形图不包含哈密顿路径,但在从图中移除任何单个顶点后,剩余的图总是包含哈密顿路径。包含哈密顿路径的图称为可追踪图。

在这里插入图片描述

  • Tutte:Tait的哈密尔顿图猜想指出,每一个3-连通的3-正则平面图都是哈密尔顿图。这张图是一个反例。它有46个顶点和69条边
    在这里插入图片描述

  • Uniquely3colorable:返回一个12顶点的无三角形图,其色数为3,唯一为3色

在这里插入图片描述

  • Walther:一个有25个顶点和31条边的恒等图。一个恒等图有一个单图自同构,平凡图

在这里插入图片描述

  • Zachary:20世纪70年代,美国一所大学的空手道俱乐部34名成员之间的友谊社交网络。
    在这里插入图片描述

手工输入建图的语法:

make_graph 也可以手动输入边来创建图。此时,函数的参数是一个定义边的向量,第一个边从第一个元素指向第二个元素,第二个边从第三个指向第四个元素,以此类推。对于数字向量,这些被解释为内部顶点id。对于字符向量,它们被解释为顶点名称。

从igraph 0.8.0开始,您还可以通过igraph的formula表示法在此处包含文字(请参见graph_from_literal())。在这种情况下,公式的第一项必须以“~”字符开头,就像R中的正则公式一样。参见以下示例

make_graph(~ A - B - C - D - A, E - A:B:C:D,F - G - H - I - F, J - F:G:H:I,K - L - M - N - K, O - K:L:M:N,P - Q - R - S - P, T - P:Q:R:S,B - F, E - J, C - I, L - T, O - T, M - S,C - P, C - L, I - L, I - P
)

在这里插入图片描述

注意: 参数必须以~开头,:不再是向量中序列的用法,1:4不再表示1,2,3,4四个元素的向量,而是表示拥有{1,4}两个元素的集合。

3-8 make_kautz_graph,与德布鲁因图相似,返回有向正则图(d=2m)

Kautz图是表示字符串重叠的定标图(Labeled graph)

Kautz图是一个定标图(Labeled graph),顶点由长度为n+1的字符串标记,字符串位于m+1个字母的字母表之上,限制条件是字符串中的每两个连续字母必须不同。如果可以通过移除第一个字母并在其上附加一个字母将v的字符串转换为w的字符串,则存在从顶点v到另一个顶点w的有向边

在这里插入图片描述

3-9 栅格图:make_lattice

在这里插入图片描述

3-10 图的线图:make_line_graph

G无向图的线图L(G)定义如下。L(G)对于G中的每条边都有一个顶点,并且如果它们的对应边共享一个端点,则L(G)中的两个顶点通过一条边连接。G有向图的线图L(G)略有不同,如果第一个顶点的对应边的目标与第二个顶点的相应边的源相同,则L(G)。

注意:本函数的参数是图(graph类),不是顶点或边。

3-11 环图:make_ring

在这里插入图片描述

3-12 星形图:make_star

在这里插入图片描述

3-13 树图:make_tree

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/739690.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3.1_3 连续分配管理方式

3.1_3 连续分配管理方式 连续分配&#xff1a;指为用户进程分配的必须是一个连续的内存空间。 &#xff08;一&#xff09;单一连续分配 在单一连续分配方式中&#xff0c;内存被分为系统区和用户区。 系统区通常位于内存的低地址部分&#xff0c;用于存放操作系统相关数据&am…

原生高性能抓包工具Proxyman,送给爱学习的你

现在的抓包工具可谓是五花八门&#xff0c;比如Fiddler&#xff0c;Charles&#xff0c;LightProxy等&#xff0c;各有各的优缺点&#xff0c;最近又看到一个新的抓包工具&#xff0c;像我这样一个有强烈好奇心的人&#xff0c;怎么能错过&#xff0c;我们一起来学习下吧&#…

Python 导入Excel三维坐标数据 生成三维曲面地形图(面) 4-2、线条平滑曲面(原始颜色)但不去除无效点

环境和包: 环境 python:python-3.12.0-amd64包: matplotlib 3.8.2 pandas 2.1.4 openpyxl 3.1.2 scipy 1.12.0 代码: import pandas as pd import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from scipy.interpolate import griddata fro…

3.8_理解代码(3)

fliplr函数 其中fliplr函数为flip array left to right&#xff0c;此处fliplr(i)的输出结果为[4 3 2 1] 我的代码实验 area1 fill(i,u_up(i),cyan,FaceAlpha,0.3);把我都弄得无语了&#xff0c;就实现fill怎么这么难 真是不知道向量长度哪里不同&#xff0c;知道了哈哈 终于…

[Java安全入门]三.CC1链

1.前言 Apache Commons Collections是一个扩展了Java标准库里的Collection结构的第三方基础库&#xff0c;它提供了很多强大的数据结构类型和实现了各种集合工具类。Commons Collections触发反序列化漏洞构造的链叫做cc链&#xff0c;构造方式多种&#xff0c;这里先学习cc1链…

知识文档管理系统平台:企业管理的王炸

无论是企业内部的文件共享&#xff0c;还是团队之间的协作编辑&#xff0c;知识文档管理系统都能发挥巨大的作用。它帮助企业整理、存储和查找各种文档资料&#xff0c;这不仅能提高企业的工作效率&#xff0c;还能增强企业的竞争力。今天就跟着LookLook同学一起来深入了解知识…

仿牛客项目Day6:账号设置——检查登录状态

账号设置 这个功能主要就是上传头像 在账户设置页可以点击上传头像&#xff0c;然后在首页可以改变头像&#xff08;获取头像&#xff09; 访问账号设置页面 controller getSettingPage的方法就是返回html页面 前端 改一下setting页面&#xff0c;index账号设置的url就可…

ARMv8架构特殊寄存器介绍-1

1&#xff0c;ELR寄存器&#xff08;Exception Link Register &#xff09; The Exception Link Register holds the exception return address。 异常链接寄存器保存异常返回地址。最常用也很重要。 2&#xff0c;SPSR&#xff08;Saved Process Status Register&#xff09;…

TypeScript 哲学 - Generic 和 ts表示构造函数

ts中 类的二义性 &#xff1a;做类型 和作为构造函数

基于PHP的店家服务与管理交互平台

目 录 摘 要 I Abstract II 引 言 1 1相关技术 3 1.1 PHP 3 1.2 ThinkPHP框架 3 1.2.1 Struts结构 3 1.2.2 MVC 3 1.2 Tomcat服务器 3 1.3 MySQL数据库 3 1.4 LayUI框架 4 1.5 ECharts 4 1.6 本章小结 4 2 系统分析 5 2.1 功能需求 5 2.2 用例分析 6 2.3 非功能需求 8 2.4 本章…

Vue3全家桶 - Vue3 - 【8】模板引用【ref】(访问模板引用 + v-for中的模板引用 + 组件上的ref)

模板引用【ref】 Vue3官网-模板引用&#xff1b;如果我们需要直接访问组件中的底层DOM元素&#xff0c;可使用vue提供特殊的ref属性来访问&#xff1b; 一、 访问模板引用 在视图元素上采用ref属性来设置需要访问的DOM元素&#xff1a; 该 ref 属性可采用 字符串 值的执行设…

RabbitMQ - 02 - 基本消息模型

目录 部署demo项目 什么是基本消息模型 实现基本消息模型 部署demo项目 首先配置好一个mq的练习demo,并配置好相关依赖 链接&#xff1a;https://pan.baidu.com/s/1oXAqgoz9Y_5V7YxC_rLa-Q?pwdv2sg 提取码&#xff1a;v2sg 如图 父xml文件已经配置好了 AMQP依赖了 什么…

计算机408炸了给25考研人的几点警示

25年408考研&#xff0c;如果只用王道的复习资料&#xff0c;最多考100-120分 就是这么的现实&#xff0c;王道的资料虽然好&#xff0c;但是并不能覆盖全部的知识点和考点&#xff0c;而且24年的408真题考的很怪&#xff0c;总结起来就是下面这些特点&#xff1a; 偏&#xff…

安装PyTorch详细过程

安装anaconda 登录anaconda的官网下载&#xff0c;anaconda是一个集成的工具软件不需要我们再次下载。anaconda官网 跳转到这个页面如果你的Python版本正好是3.8版&#xff0c;那便可以直接根据系统去选择自己相应的下载版本就可以了。 但是如果你的Python版本号不是当前页面…

seata入门到实战三

seata datasourceProxy connectionProxy statementProxy和PreparedStatementProxy abstractStatementProxy SqlRecognizer Executor AT模式二阶段提交 一阶段 二阶段提交 全部事务执行成功 释放锁 提交并删除undo日志 二阶段回滚

【LeetCode: 380. O(1) 时间插入、删除和获取随机元素 + 数据结构设计】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

【maven下载、安装、配置教程】

一、下载 maven 官网&#xff1a;Maven – Download Apache Maven 注意&#xff1a;idea 和 maven 的版本问题&#xff0c;不然 idea 启动项目会发生兼容性错误。如 2020 版本 idea 支持 3.6.3 左右的 maven 版本&#xff0c;用 3.9版本的 maven 会报错。 二、配置maven全局配置…

JS-06-数组

一、数组的创建与访问 见&#xff1a;JS-04-javaScript数据类型和变量 JavaScript的Array可以包含任意数据类型&#xff0c;并通过索引来访问每个元素。 要取得Array的长度&#xff0c;直接访问length属性&#xff1a; let arr [1, 2, 3.14, Hello, null, true]; console.l…

​LeetCode解法汇总1261. 在受污染的二叉树中查找元素

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给出一个满足下述规则的二叉树&#xff1…

京东商品详情接口数据采集—价格,库存,支持高并发

初识API调用 为帮助商家及开发者快速掌握京东API调用方法&#xff0c;本文为大家提供的万邦API工具为例&#xff0c;为读者演示一例API调用过程&#xff0c;并做相应讲解。 item_get-获得JD商品详情 1、API公共参数示例 请求地址: https://api-gw.onebound.cn/jd/item_get …