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,一经查实,立即删除!

相关文章

C++关键字——explicit

一、作用 在C中&#xff0c;explicit关键字通常用于修饰只有一个参数的构造函数&#xff0c;其作用包括&#xff1a; 禁止隐式类型转换&#xff1a;使用explicit关键字修饰构造函数可以防止编译器进行隐式类型转换。如果一个构造函数被声明为explicit&#xff0c;则在使用该构…

3.1_3 连续分配管理方式

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

微信小程序-wxml语法

介绍 WXML&#xff08;WeiXin Markup Language&#xff09;是框架设计的一套标签语言&#xff0c;可以进行页面布局&#xff0c;声明事件&#xff0c;数据绑定&#xff0c;条件判断。 语法 数据绑定 <view> {{message}} </view>// page.js Page({data: { // 状态…

原生高性能抓包工具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…

抓包是什么?我们为什么要抓包?

一、什么是抓包? 抓包&#xff08;packet capture&#xff09;就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作&#xff0c;也用来检查网络安全。抓包也经常被用来进行数据截取等。 二、抓包做什么&#xff1f; 不管做什么事情&#xff0c;首先要有明确的…

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链…

python使用国内镜像源

使用格式 格式为&#xff1a;pip install 库名 -i 镜像地址&#xff08;注意空格的存在&#xff09; pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple 推荐的镜像源&#xff1a; 清华大学&#xff08;推荐&#xff09;&#xff1a;https://pypi.tuna.tsing…

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

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

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

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

uView Toast 消息提示

Toast 组件主要用于消息通知、加载提示、操作结果提示等醒目提示效果&#xff0c;我们为其提供了多种丰富的API。 注意&#xff1a; 由于uni中无法通过js创建元素&#xff0c;所以需要在页面中调用<toast />组件&#xff0c;再通过ref开启 #平台差异说明 App&#xf…

代码随想录算法训练营第五十八天 739. 每日温度、 496.下一个更大元素 I

代码随想录算法训练营第五十八天 | 739. 每日温度、 496.下一个更大元素 I 739. 每日温度 题目链接&#xff1a;739. 每日温度 - 力扣&#xff08;LeetCode&#xff09; 情况一&#xff1a;当前遍历的元素T[i]小于栈顶元素T[st.top()]的情况 此时满足递增栈&#xff08;栈头…

安卓 修改系统时间

安卓 修改系统时间 参考资料实践修改 参考资料 链接&#xff1a;Android App 设置系统时间&#xff0c;语言和时区、系统重启_android断电重启后设置系统时间的类在哪-CSDN博客链接&#xff1a;【Android 应用】简单实测可行的获取NTP时间实例_android ntp地址-CSDN博客 实践…

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;…

react hook: useId

在 React 中直接编写 ID 并不是一个好的习惯。一个组件可能会在页面上渲染多次&#xff0c;但是 ID 必须是唯一的&#xff01;不要使用自己编写的 ID&#xff0c;而是使用 useId 生成唯一的 ID。 现在&#xff0c;即使 PasswordField 多次出现在屏幕上&#xff0c;生成的 ID 并…

Java中实现双向链表

一、目标 最近项目中实现双向链表&#xff0c;同时转为满二叉树。 二、代码 用java实现双向链表的代码如下&#xff1a; class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) { val x; } }public class FullBinaryTree {public TreeNode createTree(int[…

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 属性可采用 字符串 值的执行设…