R语言igraph包的使用

2023-05-16

igraph包是一个用来解决图与网络问题以及对其进行可视化的包,前几天数学建模做图论的作业我就是用的这个包,这篇博客就写一下如何解决图论中的最短路问题,最大流问题和最小生成树问题,以及图的可视化。

需要声明,我是在看了这个文档(密码为jyhn)之后才写的这篇博客,但该文档之中有些内容已经过时

首先自然要创建一个图的对象,igraph包中创建图的对象的函数是

make_graph(edges, ..., n = max(edges), isolates = NULL,directed = TRUE,dir = directed, simplify = TRUE)
  1. 其中edges参数为边组成的向量,这个向量中的元素既可以是数字也可以是字符,也可以是literals参数(但不经常用)。比如如果是数字,c(1,2)表示一条从点1到点2的边,c(1,2,2,3)表示两条边,一条从1到2,另一条从2到3,注意图中的点的编号不能用0来命名,否则会报错,至于原因就不太清楚啦;字母的原理与数字相同
  2. n为最大边数,只在edges参数中的元素是数字的时候有用,但我还是不太清楚这个参数的实质作用是什么,好像一般情况下用不到。
  3. isolates为孤立的点组成的向量,但只有在edges参数中的元素是字符时才有用,比如make_graph(c('a','b','b','c'),isolates = c('d','e'))这个图有两条边ab,bc,还有两个孤立的点d和e.
  4. directed为一个布尔型参数,TRUE表示有向图,FALSE表示无向图,dir参数与directed参数是一样的,但两者不能同时出现(为什么不干脆去掉一个。。。汗)。
  5. simplify参数只有在edges参数使用literals时才有用。

可以用如下语句创建一个图的对象

library(igraph)
m <- matrix( c(0,1,5, 0,2,4, 0,3,3, 1,5,3, 1,4,5, 2,5,3, 2,6,2, 3,6,2, 4,1,5, 4,7,4, 5,7,3, 6,7,5) + 1,ncol = 3,byrow = T)
#创建一个有向图
g <- make_graph(t(m[,1:2]),directed = TRUE)
#创建一个无向图
h <- make_graph(t(m[,1:2]),directed = FALSE)

我们有时候研究的有些图是有权的,怎么给图赋权呢

graph_attr(g,'weight') <- m[,3]
#或
g <- set_graph_attr(g,'weight',m[,3]) 
#也可以用第一个函数获得图的权
graph_attr(g,'weight')#得到g的权

图已经创建好了,怎么把它画出来呢?这时候就要用到万能的plot()函数了,plot()函数是一个泛型函数,如果第一个参数是图对象,那么它实际上调用的是plot.graph()函数

plot(graph_object,edge.label,vertex.label,...)
  1. edge.label参数控制点的标签,
  2. vertex.label参数控制边的标签
  3. ...plot()函数原有的控制大小颜色等的参数和plot.graph()中新增的参数,这些都可以通过帮助文档找到
plot(g)
plot(h)
plot(g,edge.label = graph_attr(g,'weight'))
plot(g,edge.label = graph_attr(g,'weight'),vertex.label = c('A','B','C','D','E','F','G','H'))

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

得到图的对象之后就可以求解最短路,最小生成树和最大流问题了。

#求最大流,source为起点,target为终点,capcity为每条边的最大容量,要注意与边的顺序
#对应
graph.maxflow(g,source = 1,target = 8,capacity = graph_attr(g,'weight'))
#会返回一个列表,里面有各个需要的值
#求最小生成树
mst(g,weights = graph_attr(g,'weight'))
#注意:这里的weights如果缺省,则会使用NULL,并不会使用图自身的权重,感觉这里
#略坑
#求最短路
#shortest_paths(graph, from, to = V(graph), mode = c("out", #"all", "in"),
#  weights = NULL, output = c("vpath", "epath", "both"),
#  predecessors = FALSE, inbound.edges = FALSE)
#最重要的几个参数为graph,from,to,weights,from为起点,to为终点,可以缺
#省,如果缺省则会计算起点到其他所有点的最短路,weights为权重
shortest_paths(g,1,weights = graph_attr(g,'weight'))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R语言igraph包的使用 的相关文章

  • 配置并上传FCKEditor.net

    前天使用CSDN翻译文章 xff0c 翻译了一大部分 xff0c 可是最终因为没能上传成功而报废 那时候真的很郁闷 xff01 于是决定在自己的系统上配置和CSDN用的Web编辑器一样的一个FCKEditor系统 xff0c 再写文章的时候
  • 在 ASP.NET 中执行 URL 重写

    发布日期 xff1a 8 23 2004 更新日期 xff1a 8 23 2004 Scott Mitchell 4GuysFromRolla com 适用范围 xff1a Microsoft ASP NET 摘要 xff1a 介绍如何使用
  • 我的近况(随时更新)

    2007年9月23日 最近在开发ASP NET Web服务器 xff0c 因为使用IIS 太受限制了 xff0c 要升级还得升级操作系统 现在的开发阶段为内核开发 xff0c 已经完成基本的开发 xff0c 还没有包装起来
  • adb dumpsys命令用法

    dumpsys命令功能很强大 xff0c 能dump系统服务的各种状态 xff0c 非常有必要熟悉该命令的用法以及含义 一 概述 1 1 dumpsys命令用法 可通过dumpsys命令查询系统服务的运行状态 对象的成员变量属性值 xff0
  • Python if-else使用

    1 从键盘上输 个数 xff0c 显示它的绝对值 不允许使 abs num 61 float input 34 请输入一个实数 xff1a 34 if num gt 0 print num else print num 2 假设 户名为ad
  • Ubuntu 串口工具 —— cutecom

    串口调试工具 xff1a cutecom xff08 非常好用 xff09 安装 xff1a span class token function sudo span span class token function apt get spa
  • Android Camera 预览拉伸问题

    预览会出现拉伸的问题代码 xff1a 预览拉伸Demo 预览画面拉伸问题改正的 gitee 代码在文章最后给出 预览拉伸的原因 xff1a 每颗Camera都支持一些分辨率 xff0c Camera的这些图像如果和预览画面的宽高比例不一致就
  • Dockerfile关键字详解

    文章目录 一 Dockerfile基础知识二 Dockerfile常用的指令三 Dockerfile实战测试1 编写如下Dockerfile文件 xff0c 创建自己的centos镜像2 编译镜像3 测试运行 一 Dockerfile基础知
  • docker search 命令详解

    原文链接 docker search 命令详解 文章目录 一 docker search 命令选项二 docker search 使用实例2 1 通过指定镜像名搜索2 2 搜索结果不进行截断显示2 3 设置搜索结果只显示10个2 4 搜索结
  • “lib32ncurses5 : Depends: libc6-i386 (>= 2.18) but it is not going to be installed”类似问题解决办法

    问题背景 在64位Linux操作系统的主机上安装32位的交叉编译链时 xff0c 如果64位系统与32位的工具链不兼容 xff0c 在我们使用工具链对代码进行交叉编译时 xff0c 往往会出现明明工具链已经安装到了指定的目录下 xff0c
  • Spring框架基础知识概述

    目录 第一章 xff1a Spring概述第二章 xff1a Spring的第一个核心功能 xff1a ioc第三章 xff1a spring的第二个核心功能 xff1a aop第四章 xff1a 把mybatis框架和spring集成在一
  • 有关Opencv Undefined Reference to cv::Mat::updateContinuityFlag()编译问题的解决

    VScode编译中opencv的undefined reference 问题 一般来说 xff0c undefined reference to cv 等的问题是关于编译时依赖文件的问题 xff0c 应该将包含库的路径弄好了就没问题 xff
  • 利用MVC编写GUI程序-----梯形的面积(JAVA实用教程2-第五版 第九章 编程题 三(3)小题)

    span class token punctuation span span class token number 3 span span class token punctuation span 编写一个体现MVC结构的GUI程序 首先编
  • VMware安装Centos7系统(命令行模式)

    文章目录 一 准备软件 系统镜像二 创建新虚拟机三 安装CentOS7系统四 配置固定IP便于远程管理 一 准备软件 系统镜像 软件 xff1a VMware 14 镜像 xff1a CentOS7 镜像官网下载地址 xff1a http
  • mariadb(mysql)数据库字符集设置(二)(centos7)

    mariadb xff08 mysql xff09 数据库在存储数据时 xff0c 默认编码为latinl xff0c 当存储数据为中文字符时 xff0c 在显示或者web调用时会显示为乱码 xff0c 为解决该乱码问题 xff0c 需修改
  • 「第四范式」2023届-秋季校园招聘正式启动!

  • ubuntu安装chrome报错libnss3

    1 下载官网提供的最新版本 xff08 注意区分32位和64位 xff09 2 进入到文件所在路径 xff0c 执行安装命令 xff1a cd Downloads Downloads sudo dpkg i google chrome st
  • 16-命令模式Quarkus实现

    摘要 xff1a 本文用一个实例场景描述Gof 23设计模式中的命令 xff08 Command xff09 模式 xff0c 并用Quarkus框架代码给予实现 xff0c 同时也给出实现代码的UML模型 关键字 xff1a Gof 23
  • ubuntu16.04设置root用户登陆图形界面的方法

    因为 ubuntu 默认不能使用root登录图形界面 xff0c 且Ubuntu默认的是root用户不能登录图形界面的 xff0c 只能以其他用户登录图形界面 这样就很麻烦 xff0c 因为权限的问题 xff0c 不能随意复制删除文件 xf
  • 详解MariaDB数据库的存储过程

    1 什么是存储过程 很多时候 xff0c SQL语句都是针对一个或多个表的单条语句 但是也有时候有的查询语句需要进行多次联表查询才能完成 xff0c 此时就需要用到存储过程了 存储过程 xff08 Stored Procedure xff0

随机推荐

  • Tensorflow读取数据--TFrecord格式

    一 什么是Tfrecord xff1f TFRecords可以允许你讲任意的数据转换为TensorFlow所支持的格式 xff0c 这种方法可以使TensorFlow的数据集更容易与网络应用架构相匹配 这种建议的方法就是使用TFRecord
  • kafka架构、producer及consumer流程图

    1 kafka架构 xff1a 2 producer流程 xff1a 3 consumer流程 xff1a
  • Ubuntu18.04下安装OpenCv依赖包libjasper-dev

    问题 Ubuntu18 4下使用sudo apt get install libjaster dev安装包时提示找不到这个包 解决办法 终端中输入以下代码即可解决 span class token function sudo span ad
  • Nginx应用知识汇总

    一 Nginx是什么 xff1f Nginx engine x 是一个高性能的HTTP和反向代理web服务器 Nginx是一款轻量级的Web 服务器 反向代理服务器及电子邮件 xff08 IMAP POP3 xff09 代理服务器 xff0
  • JAVA学习代码——txt写入学生信息

    涉及 xff1a list的使用和遍历 文件的读 循环控制语句的使用 文件操作类 xff1a FileOperation package file import java io BufferedReader import java io B
  • 怎样把WORD中的错误一次性全部忽略

    1 审阅 选项 拼写和语法 点击全部忽略 2 或者打开word选项 校对 将键入时检查拼写勾选项去掉 xff0c 或者勾选下面的两项例外项 xff0c 不显示拼写和语法错误 xff0c 确定 这样就不会再检查你的拼写 xff0c 不用忽略了
  • 知识图谱前沿技术课程(华东师范大学站)

    知识图谱表达了各类实体 概念及其之间的各种语义关系 xff0c 成为了大数据时代知识表示的主要形态之一 知识图谱是目前人工智能领域的一个重要支撑 xff0c 已经在诸如智能问答 搜索 推荐等具体领域得到很好的应用 华东师范大学计算机应用研究
  • Win10白色图标制作及替换

    win10白色图标制作 xff1a 一 软件准备 IcoFX xff1a 提取图标 生成图标 Photoshop xff1a 修改编辑图标 二 制作步骤 1 提取图标 打开IcoFX xff0c 直接在桌面上选择快捷方式 xff0c 拉拽以
  • Java中输出当前时间的各种方法

    import java text import java util class Example public static void main String args TimeZone setDefault TimeZone getTime
  • VMware无法打开已存在虚拟机vmx文件解决办法

    复制过来的虚拟机文件 在 VMware 无法直接打开 xff08 文件 打开 无反应 xff09 解决办法 xff1a 1 首先打开vmx文件 xff0c 将ios路径设置正确 2 将虚拟机进程关闭 3 在文件管理器中右键vmx文件 xff
  • 使用cmd命令行查看wifi密码

    1 xff1a 在命令行输入下面命令 xff0c 查询本机存储WIFI xff1a netsh wlan show profiles 2 xff1a 输入下面命令查询WIFI密码 xff0c 第二张图显示的就是WIFI密码 netsh wl
  • Kettle 7.1 资源库配置&&无法配置资源库&&自定义配置文件路径

    资源库配置 1 kettle 7 1 资源库配置在左上角的Connect 2 点击Connect xff0c 弹出默认资源库 xff1a Pentaho Repository 3 在弹出窗口选择other Repositories 选择对应
  • oracle 数据库 日期时间整理

    oracle 数据库 日期时间整理 一 xff1a 日期格式 1 xff09 年 xff1a YYYY或yyyy xff08 可以截取1 4位 xff09 select to char sysdate 39 yyyy 39 from dua
  • 指针+1,怎么加?

    指针 43 1 指针 xff0b 1 xff0c 是加一个单元格还是加一个字节呢 xff0c 先看一个程序 xff1a include lt stdio h gt int main int arr 61 1 2 3 4 5 6 7 8 9
  • kail linux 虚拟机安装

    kail linux 虚拟机安装 系统介绍 Kali Linux是基于Debian的Linux发行版 xff0c 设计用于数字取证操作系统 每一季度更新一次 由Offensive Security Ltd维护和资助 最先由Offensive
  • kali 桌面设置:风格设置

    sudo apt install lightdm sudo dpkg reconfigure lightdm lightdm gdm3 事件的起因是kali安装wine32 Kali中安装wine是能成功的 xff0c 三十使用tim需要w
  • CentOS yum方式升级内核kernel

    xff08 此方法只限于CentOS派系的yum rpm 补充 xff1a 限于64Bit CentOS7的32位 xff0c 我试过用CentOS6的32位内核来升级 xff0c 可升级可重启可使用 xff0c 半个小时后删除了此系统没再
  • dlang语法的简单整理

    dlang整理 为什么使用dlang 优点 xff1a 快速 xff0c 开发高效的 xff0c 方便 xff0c 无虚拟机的 xff0c 快速的 xff0c 高性能的 垃圾回收 缺点 xff1a 语法较为复杂 xff0c 支持gc 曾经很
  • Linux基础命令-netstat显示网络状态

    Linux基础命令 ss显示socket信息 文章目录 netstat 命令介绍 语法格式 基本参数 显示各列内容分析 1 xff09 netstat a显示各列内容分析 2 xff09 netstat r显示各列内容分析 3 xff09
  • R语言igraph包的使用

    igraph包是一个用来解决图与网络问题以及对其进行可视化的包 前几天数学建模做图论的作业我就是用的这个包 xff0c 这篇博客就写一下如何解决图论中的最短路问题 xff0c 最大流问题和最小生成树问题 xff0c 以及图的可视化 需要声明