矩阵与图的关系:矩阵是图,图是矩阵

原文连接

线性代数最被低估的一个事实:矩阵是图,图是矩阵。

(非负)矩阵及其图

将矩阵编码为图是一种取巧的行为(cheat code),它其使复杂的行为变得易于研究。

让我告诉你怎么做!

1. 非负矩阵的有向图 (The directed graph of a nonnegative matrix)

如果你看了上面的例子,你可能就明白了这个规则。

每一行都是一个节点,每个元素代表一条有向加权边。零元素的边被省略。第 i 行第 j 列中的元素对应于从 i 到 j 的一条边。

得到的图称为矩阵的有向图(或有向图)。

为了稍微展开一下定义,让我们检查第一行,它对应于从第一个节点传出的边。

在这里插入图片描述
第一行对应于从第一个节点传出的边

类似地,第一列对应于传入第一个节点的边。
在这里插入图片描述
第一列对应于传入第一个节点的边

这是完整的图片,节点被明确标记。
在这里插入图片描述

2. 图表示的好处(Benefits of the graph representation)

为什么有向图表示对我们有益?

其一,矩阵的幂对应于图中的转移(the powers of the matrix correspond to walks in the graph)。

看一下方阵的元素。所有可能的 2 步 转移(2-step walk)均计入定义 A² 元素的总和中。
在这里插入图片描述

如果有向图表示马尔可夫链的状态,则其转移概率矩阵的平方本质上表示该链在两步后具有某种状态的概率
.
这种联系还有更多内容。

例如,它让我们深入了解非负矩阵的结构。

为了了解图表示为矩阵的情况,我们来讨论一下强连通分量的概念。

3. 图的连通性(The connectivity of graphs)

如果每个节点都可以从每个其他节点到达,则有向图是强连通的。

如果这不成立,则该图不是强连通的。

下面,您可以看到两者的示例。

在这里插入图片描述

对应于强连通图的矩阵称为不可约矩阵。所有其他非负矩阵都称为可约矩阵。很快,我们就会知道原因。(判断矩阵是否是一个不可约矩阵还有一个等价方式,就是看矩阵对应的有向图是否是强连通图)

在这里插入图片描述

(为简单起见,我假设每条边都有一个单位权重,但现实中每个权重可以是任意非负数。)

在这里插入图片描述

回到一般情况!

尽管并非所有有向图都是强连通的,但我们可以将节点划分为强连通的 子组件。

在这里插入图片描述

让我们标记这个图的节点并构造相应的矩阵!

在这里插入图片描述

(为简单起见,假设所有边都有单位权重。)您注意到某种模式了吗?

图对应的矩阵可以简化为更简单的形式!

在这里插入图片描述

它的 对角矩阵 由图强连通的 子矩阵块组成。 (也就是说,子矩阵块是不可约的。)此外,对角线下方的块为零。

对于所有非负矩阵都是如此吗?

你猜猜。下边进入Frobenius normal form。

4. The Frobenius normal form

一般来说,我们刚刚看到的这种块矩阵结构称为Frobenius normal form。
在这里插入图片描述

如果你的眼睛很敏锐,并且有点强迫症,你可能会注意到我稍微改变了颜色。从现在开始,不可约块(又名对应于强连接图的矩阵)将是米黄色,而可约块将是浅蓝色。

让我们把问题反过来:我们可以将任意非负矩阵转换为 Frobenius normal form?

是的,在有向图的帮助下,这比纯粹使用代数更容易显示。

这是著名定理的完整形式。

在这里插入图片描述

但什么是置换矩阵(permutation matrices)?

5. Permutation matrices 置换矩阵

让我们看一个特殊情况:如果我们 将 2 x 2 矩阵乘以
在这里插入图片描述

一个简单的零一矩阵 ?通过快速计算,您可以验证

当从左边相乘时它会切换行,

当从右侧相乘时它会切换列。

像这样:
在这里插入图片描述

从左侧和右侧乘以 P 会产生复合效果:它会切换行和列。
在这里插入图片描述

(顺便说一下,这是一个相似变换,因为我们特殊的零一矩阵是它自己的逆矩阵。这不是偶然的;稍后会详细介绍。)

我们为什么要看这个?因为在幕后,这种转换(相似变换即从左侧和右侧乘以 P )不会改变底层的图结构,只是重新标记其节点!

您可以轻松地手动验证这一点,但我在下面为您可视化了它。

在这里插入图片描述

在一般的 n x n 情况下也存在类似的现象。在这里,我们通过交换单位矩阵的第 i 行和第 j 行来定义所谓的转置矩阵:
在这里插入图片描述

与转置矩阵(transposition matrix)相乘具有相同的效果:从左侧切换行,从右侧切换列。

我们不会详细说明它(因为过于复杂的符号使它特别痛苦),但您可以手动验证这确实是正在发生的事情。

这是一个简短的总结。请记下这些,因为它们很快就会变得至关重要。

在这里插入图片描述

对我们来说最重要的性质:使用转置矩阵(transposition matrix)的相似变换只是重新标记两个节点,但在其他方面使图结构保持不变。

现在,关于前面提到的置换矩阵(permutation matrices)。置换矩阵只是转置矩阵( transposition matrices)的乘积。

在这里插入图片描述

置换矩阵(Permutation matrices)从其构建块继承了一些性质。最重要的是,

their inverse is their transpose,

  • 它们的逆是它们的转置,

  • 它们的相似变换只是节点的重新标记,使图结构保持不变。

要了解后一个,请考虑下面的论点。

在这里插入图片描述

(Recall that transposing a matrix product switches up the order, and transposition matrices are their own transposes.)

(回想一下,转置 一个 矩阵乘积 会改变顺序,而转置矩阵就是它们自己的转置。)

Conversely, every node relabeling is equivalent to a similarity transformation with a well-constructed permutation matrix.

相反,每个节点重新标记相当于具有构造良好的置换矩阵(permutation matrix)的相似变换。

我们为什么要谈论这个?因为节点的正确标记是 Frobenius normal form的关键。

6. 有向图及其强连通分量(Directed graphs and their strongly connected components)

现在,我们来谈谈图。我们将看到每个有向图如何分解为强通的分量。为此,让我们看一个具体的。

在这里插入图片描述
这将是我们的教科书示例。

从给定节点可以到达多少个节点?不一定是全部。比如说,对于右下角的那个,只能访问图表的一部分。

在这里插入图片描述

然而,相互可达的节点集要小得多。

在这里插入图片描述

从代数上来说,“a和b互可达”的关系是等价关系。换句话说,它将节点集划分为不相交的子集,使得

  • 来自同一子集的两个节点相互可达,

  • 并且来自不同子集的两个节点不能相互可达。

(等价关系是数学的主力。如果您不熟悉它们,请查看这篇关于分区的维基百科文章,了解它们之间的关系。)

该分区的子集称为强连通分量,我们总是可以用这种方式分解有向图

在这里插入图片描述

现在,让我们将所有内容连接在一起! (不是以图的方式,但你知道,以健康的数学方式。)

7. 将图和置换矩阵放在一起 (Putting graphs and permutation matrices together)

我们距离证明每个非负方阵都可以通过置换矩阵变换为 Frobenius normal form还有两步。

这是计划

  • 为我们的非负矩阵构建图。

  • 找到强连通分量。

  • 以巧妙的方式重新标记节点。

就是这样!为什么?因为,正如我们所见,重新标记图节点与使用置换矩阵(permutation matrix)的相似变换相同。

只有一个小问题:最好的实现方法是什么?接着往下看!

首先,我们“骨架化”图:将 组件(components) 以及它们之间的任何边合并在一起。将每个 组件 视为一个黑盒子:我们不关心里面有什么,只关心它们的外部连接。

在这里插入图片描述

在这个骨架中,我们可以发现无法从其他组件进入的组件。这些将是我们的起点,即第零类组件。在我们的示例中,我们只有一个。

在这里插入图片描述

Now, things get a bit tricky. We number each component by the longest path from the farthest zero-class component from which it can be reached.

现在,事情变得有点棘手。我们按照距离最远的零类组件的最长路径对每个组件进行编号。

这甚至都很难阅读,更不用说理解了。所以,这就是发生的事情。

在这里插入图片描述

要点是,如果您可以从第 n 级到达第 m 级,则 n < m。

最后,我们有以下内容。

在这里插入图片描述

这定义了组件的顺序。 (如果您想更精确,则为部分排序。)

现在,我们标记里面的节点,这样

  • 高阶类优先(higher-order classes come first,)

  • 如果可能的话,连续索引是来自同一组件的标签节点。(and consecutive indices are labeling nodes from the same component if possible.)

就是这样。
在这里插入图片描述

如果图本身来自实际矩阵,则这种重新标记会产生 Frobenius normal form!

下面是这个特定示例中的矩阵,为了简单起见,使用了 0 和 1:

在这里插入图片描述

我们巧妙标记的图的邻接矩阵

现在一切都已完成,Frobenius normal form变换背后的“证明”也完成了!

提醒您,这是该定理的完整形式:

在这里插入图片描述

8. 结论

我们所看到的只是冰山一角。例如,借助矩阵,我们可以定义图的特征值!这个想法催生了谱图理论这个迷人的话题,这是一个美丽的数学领域。

利用矩阵和图之间的关系对于图论和线性代数来说都是非常有利可图的。

如果你对细节感兴趣,我有两本书推荐给你。其中之一是 Richard A. Brualdi 和 Dragos Cvetkovic 撰写的精彩的《矩阵理论及其应用的组合方法》,这是我最喜欢的关于该主题的学习资源。

其次,我最近写完了机器学习的线性代数书。虽然这篇文章的内容还不是本文的一部分,但电子书格式的好处是我可以随时返回并添加新的章节。

因此,我计划将这篇文章扩展为类似教科书的章节,并可能附带交互式代码示例。如果您有兴趣,请查看我的书的前两章!

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

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

相关文章

验证码识别DLL ,滑块识别SDK,OCR图片转文字,机器视觉找物品

验证码识别DLL ,滑块识别SDK 你们用过哪些OCR提取文字&#xff0c;识图DLL&#xff0c;比如Opencv,Labview机器视觉找物品之类&#xff1f;

高等数学之洛必达法则

第二种 由小到大 其他形式 解题步骤 分子分母的式子是乘积的时候可以用等价无穷小替换&#xff0c;如果是-则不允许

数据分析实战│时间序列预测

时间序列预测问题是一类常见的数据分析问题。数据中往往包含时间标签,这类问题往往根据过去一段时间的数据,建立能够比较精确地反映序列中所包含的动态依存关系的数学模型,并对未来的数据进行预测。 01、问题描述及数据挖掘目标 本案例给出二战时期的某气象站温度记录值,通…

Golang Gorm 高级查询之where查询

插入测试数据 package mainimport ("fmt""gorm.io/driver/mysql""gorm.io/gorm" )type Student struct {ID int64Name string gorm:"size:6"Age intEmail *string }func (*Student) TableName() string {return "student&q…

ChatGPT帮助提升工作效率和质量:完成时间下降40%,质量评分上升 18%

自ChatGPT去年11月发布以来&#xff0c;人们就开始使用它来协助工作&#xff0c;热心的用户利用它帮助撰写各种内容&#xff0c;从宣传材料到沟通话术再到调研报告。 两名MIT经济学研究生近日在《科学》杂志上发表的一项新研究表明&#xff0c;ChatGPT可能有助于减少员工之…

RedisTemplate和StringRedisTemplate的区别、对比

学习 Jedis、RedisTemplate、StringRedisTemplate之间的比较 博客中提到&#xff1a;一. Jedis是Redis官方推荐的面向Java的操作Redis的客户端。 二. RedisTemplate,StringRedisTemplate是SpringDataRedis中对JedisApi的高度封装。SpringDataRedis相对于Jedis来说可以方便地更…

maven工程的目录结构

https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html maven工程的目录结构&#xff1a; 在maven工程的根目录下面&#xff0c;是pom.xml文件。此外&#xff0c;还有README.txt、LICENSE.txt等文本文件&#xff0c;便于用户能够…

精密图纸被窃,知名手表品牌Seiko遭BlackCat勒索软件攻击

据BleepingComputer消息&#xff0c;日本著名手表制造商Seiko在7月末遭到了网络攻击&#xff0c;8月21日&#xff0c;BlackCat&#xff08;又名ALPHV&#xff09;勒索软件组织在其网站上宣布对这起攻击事件负责。 8 月 10 日&#xff0c;Seiko发布了一份数据泄露通知&#xff0…

IPv4,IPv6,TCP,路由

主要回顾一下TCP&#xff0f;IP的传输过程&#xff0c;在这个过程中&#xff0c;做了什么事情 ip : 网际协议,IP协议能让世界上任意两台计算机之间进行通信。 IP协议的三大功能&#xff1a; 寻址和路由传递服务&#xff1a;不可靠&#xff08;尽最大努力交付传输数据包&…

基于ssm校园快递代取系统源码和论文

基于ssm校园快递代取系统源码和论文056 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;…

matlab实现输出的几种方式(disp函数、fprintf函数、print函数)

matlab实现输出的几种方式&#xff08;disp函数、fprintf函数、print函数&#xff09; 输出为文本、文件、打印 1、disp函数 显示变量的值&#xff0c;如果变量包含空数组&#xff0c;则会返回 disp&#xff0c;但不显示任何内容。 矩阵 A [1 0]; disp(A)结果 字符串 S …

「UG/NX」Block UI 选择特征SelectFeature

✨博客主页何曾参静谧的博客📌文章专栏「UG/NX」BlockUI集合📚全部专栏「UG/NX」NX二次开发「UG/NX」BlockUI集合「VS」Visual Studio「QT」QT5程序设计「C/C+&#

银河麒麟arm版服务器安装docker

安装 在线安装&#xff1a;输入下面命令&#xff0c;等待安装完成即可 #关闭防火墙 systemctl stop firewalld.service systemctl disable firewalld.serviceyum install -y docker# 修改docker拉取源为国内 rm -rf /etc/docker mkdir -p /etc/docker touch /etc/docker/da…

Jetpack Compose UI架构

Jetpack Compose UI架构 引言 Jetpack Compose是我职业生涯中最激动人心的事。它改变了我工作和问题思考的方式&#xff0c;引入了易用且灵活的工具&#xff0c;几乎可轻松实现各种功能。 早期在生产项目中尝试了Jetpack Compose后&#xff0c;我迅速着迷。尽管我已有使用Co…

小项目01:尿试纸条没有放到位问题检测

目录 一、完整代码1.1 返回值含义1.2 main1.3 bvdetector.h1.4 bvdetector.cpp 二、图例1. 原图scrImg2.灰度图img_gray3.二值图binImg4.反二值图invImg 一、完整代码 1.1 返回值含义 0:表示正常&#xff08;有角度&#xff09;&#xff1b;1&#xff1a;表示没有图片&#x…

C语言实现:从RSA PEM文件中提取私钥n/e/d/p/q/dp/dq/qp因子

我们知道使用openssl命令行openssl rsa -in test_priv.pem -text 即可实现从私钥PEM文件中提取私钥因子&#xff1a;n/e/d/p/q/dp/dq/qp. 那么如何用C语言实现呢&#xff1f;如何在代码中实现呢&#xff1f; #include <stdio.h> #include <stdlib.h> #include &l…

el-button实现按钮,鼠标移入显示,移出隐藏

2023.8.18今天我学习了 如何实现鼠标移入显示按钮&#xff0c;鼠标移出隐藏按钮。 效果如图&#xff1a; 鼠标移入时&#xff1a; 鼠标移出时&#xff1a; mouseover //鼠标移入事件 mouseleave //鼠标移出事件 原本我是想直接在el-button写入这两个方法&#xff0c;但是elem…

Nuxt3环境变量配置

Nuxt3 正式发布还不到半年&#xff0c;在投入生产环境使用后&#xff0c;遇到了不少问题&#xff0c;很难找到合适的解决方案&#xff0c;其中环境变量配置就是其中一个&#xff0c;之前一直未能解决&#xff0c;最近要上持续集成&#xff0c;无法绕过这个问题&#xff0c;所以…

工厂方法模式介绍

韩敬海 设计模式&#xff08;Java版&#xff09; &#xff08;一&#xff09;定义 定义一个创建对象的接口&#xff0c;让子类决定实例化哪个类。工厂方法使一个类的实例化延迟到其子类。 工厂方法涉及的角色有&#xff1a; 1 .抽象工厂角色&#xff1a;工厂方法模式的核心&am…

clion软件ide的安装和环境配置@ubuntu

1.官网&#xff1a; Download CLion 2.安装Clion 直接在官网下载并安装即可&#xff0c;过程很简单 https://www.jetbrains.com/clion/ https://www.jetbrains.com/clion/download/#sectionlinux 3.激活码 4.配置Clion 安装gcc、g、make Ubuntu中用到的编译工具是gcc©…