6.2.1 邻接矩阵

邻接矩阵

      • 表示方法:
      • 优点:
      • 缺点:
      • 适用情况:
      • 案例
      • 代码

邻接矩阵是一种常见的图的存储结构,用于表示图中顶点之间的连接关系。它是一个二维数组,其中行和列分别表示图中的顶点,而数组中的值表示连接顶点之间的边或权重。邻接矩阵适用于表示稠密图,其中大部分顶点之间都有连接。

表示方法:

假设图中有n个顶点,那么邻接矩阵是一个n x n的矩阵。如果图是无向图且存在边(i, j),则矩阵中的第i行第j列和第j行第i列都会标记为1或表示边的权重值。对于有向图,矩阵中的元素表示从顶点i到顶点j的边或权重。
在这里插入图片描述

优点:

  1. 对于小规模的图,邻接矩阵可以提供快速的查找和更新操作。
  2. 判断任意两个顶点之间是否存在连接的边非常高效,只需访问对应的矩阵元素即可。
  3. 对于密集图,邻接矩阵比较节省存储空间,因为它只存储了实际存在的连接关系。

缺点:

  1. 对于稀疏图,邻接矩阵会浪费大量的存储空间,因为它需要存储许多不存在的边,这会增加存储开销。
  2. 当图中的顶点数非常大时,邻接矩阵可能会占用过多的内存空间。
  3. 在添加或删除顶点时,邻接矩阵的操作可能比较费时,因为它需要调整整个矩阵的结构。

适用情况:

邻接矩阵适用于静态图或者稠密图,其中大部分顶点之间都有连接。它特别适合用于快速查找和更新顶点之间的连接关系,以及执行基于矩阵的算法,比如矩阵运算和图论算法。然而,在面对稀疏图时,邻接矩阵可能不是最优的选择,因为它会浪费大量的存储空间。

案例

让我们以一个简单的无向图为例来说明邻接矩阵的概念。

考虑以下这个无向图:

   (0)
   / \
  /   \
 /     \
(1)-----(2)
  \     /
   \   /
    \ /
    (3)

这个图有4个顶点和5条边。我们可以用邻接矩阵来表示这个图。假设顶点0到3分别表示矩阵的行和列,那么对应的邻接矩阵如下:

   | 0 | 1 | 2 | 3 |
---|---|---|---|---|
0  | 0 | 1 | 1 | 0 |
1  | 1 | 0 | 1 | 1 |
2  | 1 | 1 | 0 | 1 |
3  | 0 | 1 | 1 | 0 |

在这个矩阵中,1表示对应的顶点之间有边相连,0表示没有边相连。因为这是一个无向图,所以邻接矩阵是对称的。例如,矩阵中的(0,1)和(1,0)、(1,2)和(2,1)的值都是1,表示顶点0和1之间、1和2之间有边相连。

使用邻接矩阵,我们可以快速查找任意两个顶点之间的连接关系,并进行图的遍历和其他算法操作。同时,这个矩阵表示了图的结构,使得图的分析和处理更加直观和方便。

代码

以下是Java中实现零阶矩阵的示例代码:

public class ZeroOrderMatrix {
    private int[][] matrix;

    // 构造函数用于初始化零阶矩阵
    public ZeroOrderMatrix(int rows, int columns) {
        matrix = new int[rows][columns];
    }

    // 获取矩阵行数
    public int getRowCount() {
        return matrix.length;
    }

    // 获取矩阵列数
    public int getColumnCount() {
        if (matrix.length > 0) {
            return matrix[0].length;
        }
        return 0;
    }

    // 输出矩阵
    public void printMatrix() {
        for (int i = 0; i < getRowCount(); i++) {
            for (int j = 0; j < getColumnCount(); j++) {
                System.out.print(matrix[i][j] + " ");
            }
            System.out.println();
        }
    }

    public static void main(String[] args) {
        // 创建一个3行3列的零阶矩阵
        ZeroOrderMatrix zeroOrderMatrix = new ZeroOrderMatrix(3, 3);

        // 输出矩阵
        zeroOrderMatrix.printMatrix();
    }
}

运行这段代码将输出一个3行3列的零阶矩阵:

0 0 0 
0 0 0 
0 0 0 

您可以根据需要对代码进行调整和扩展。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Geotrust的企业型通配符SSL证书申请

Geotrust作为世界知名的CA认证机构之一&#xff0c;颁发了各种SSL证书&#xff0c;其签发的数字证书被广泛应用于电子商务、企业间通信、网络安全等领域&#xff0c;SSL数字证书可以验证网络中用户的身份&#xff0c;确保数据的机密性和完整性。今天随SSL盾小编了解如何申请Geo…

FPGA UDP RGMII 千兆以太网(1)

1 RGMII 接口 PHY 的 MII 接口有很多种, 例如 MII、 GMII、 RGMII、 SGMII、 XGMII、 TBI、 RTBI 等。其中 RGMII的主要优势在于,它可同时适用于 1000M、 100M、 10M 三种速率,而且接口占用引脚数较少。但也存在缺点,其一, PCB 布线时需要尽可能对数据、控制和时钟线迚行…

GitHub Copilot Chat将于12月全面推出;DeepLearning.AI免费新课

&#x1f989; AI新闻 &#x1f680; GitHub Copilot Chat将于12月全面推出&#xff0c;提升开发者的生产力 摘要&#xff1a;GitHub宣布将于12月全面推出GitHub Copilot Chat&#xff0c;这是GitHub Copilot的一个新功能&#xff0c;旨在帮助开发者编写代码。它能够集成到开…

不定积分第一类换元法(凑微分法)

将其中的 分解为 相当于 令 那么. 就可以得到 例题1 令 那么 因为 所以 利用基本积分公式 结果 例题2 上下同除 接下来需要一些技巧 这个形式需要联想到一个基本积分公式 不巧是这里是2不是1需要利用技巧把2变成1

在Rust中使用多线程并发运行代码

1.Rust线程实现理念 在大部分现代操作系统中&#xff0c;已执行程序的代码在一个 进程&#xff08;process&#xff09;中运行&#xff0c;操作系统则会负责管理多个进程。在程序内部&#xff0c;也可以拥有多个同时运行的独立部分。这些运行这些独立部分的功能被称为 线程&am…

竞赛选题 深度学习猫狗分类 - python opencv cnn

文章目录 0 前言1 课题背景2 使用CNN进行猫狗分类3 数据集处理4 神经网络的编写5 Tensorflow计算图的构建6 模型的训练和测试7 预测效果8 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习猫狗分类 ** 该项目较为新颖&a…

GUI:贪吃蛇

以上是准备工作 Data import javax.swing.*; import java.net.URL;public class Data {public static URL headerURLData.class.getResource("static/header.png");public static ImageIcon header new ImageIcon(headerURL);public static URL upURLData.class.getR…

【vector题解】连续子数组的最大和 | 数组中出现次数超过一次的数字

连续子数组的最大和 连续子数组的最大和_牛客题霸_牛客网 描述 输入一个长度为n的整型数组array&#xff0c;数组中的一个或连续多个整数组成一个子数组&#xff0c;子数组最小长度为1。求所有子数组的和的最大值。 要求:时间复杂度为 O(n)&#xff0c;空间复杂度为 O(n) 进…

Python爬虫框架Scrapy:实现高效数据抓取

目录 一、引言 二、Scrapy框架概述 1、Scrapy框架特点 2、Scrapy框架结构 三、Scrapy框架的使用 1、安装Scrapy框架 2、创建Scrapy项目 3、创建爬虫 4、运行爬虫 四、Scrapy框架常见问题及解决方案 1、请求被网站封禁 2、处理动态加载的页面 3、避免被网站检测到爬…

C#查看启用或关闭的Windows功能

通过命令查看启用或关闭的Windows功能&#xff0c;以管理员身份打开powershell&#xff0c;输入命令get-windowsoptionalfeature -online 得出结果如下&#xff1a; 如果使用C#查看&#xff0c;需要先安装System.Management 代码如下&#xff1a; private void isInstall() …

pinpoint监控tomcat应用,页面显示No data collected

pinpoint安装部署教程大家都可以搜到。这里就不说了。单说一下 页面没有数据的情况。 部署环境&#xff0c;pinpoint安装部署在A服务器上。现在是在C、D、E、F……linux机器上安装pinpoint-agnet 1. 将文件 pinpoint-agent-1.8.5.tar.gz 上传到 服务器C、D、E、F…… 2. 解压…

MQTT协议消息代理服务公网远程连接

文章目录 前言1. Linux 搭建 Mosquitto2. Linux 安装Cpolar3. 创建MQTT服务公网连接地址4. 客户端远程连接MQTT服务5. 代码调用MQTT服务6. 固定连接TCP公网地址7. 固定地址连接测试 前言 Mosquitto是一个开源的消息代理&#xff0c;它实现了MQTT协议版本3.1和3.1.1。它可以在不…

Spring Cloud 微服务入门篇

文章目录 什么是微服务架构 Microservice微服务的发展历史微服务的定义微小的服务微服务 微服务的发展历史1. 微服务架构的发展历史2. 微服务架构的先驱 微服务架构 Microservice 的优缺点1. 微服务 e Microservice 优点2. 微服务 Microservice 缺点微服务不是银弹&#xff1a;…

C语言---插入排序、希尔排序、冒泡排序、选择排序、快速排序简单介绍

文章目录 插入排序希尔排序冒泡排序选择排序快速排序 本文主要介绍用C语言实现的一些排序方法&#xff0c;有插入排序、希尔排序、冒泡排序、选择排序和快速排序&#xff0c;文章中给出的例子都是按照升序排列的。 插入排序 若数组只有一个元素&#xff0c;自然不用排序&#…

和数链“分布式存储”技术结合隐私计算让数据更安全

存储是IT业的核心技术&#xff0c;全球存储行业历经半个世纪的洗礼&#xff0c;在技术和需求相互促进的演变下沧桑变幻&#xff0c;经历桌面级存储、企业级存储、云存储多次迭代变迁。 目前的存储方式主要是“大数据中心”等集中式存储&#xff0c;随着数据规模和复杂度的迅速…

如何用Java实现一个基于机器学习的情感分析系统,用于分析文本中的情感倾向

背景&#xff1a;练习两年半&#xff08;其实是两周半&#xff09;&#xff0c;利用工作闲余时间入门一下机器学习&#xff0c;本文没有完整的可实施的案例&#xff0c;由于知识体系不全面&#xff0c;目前代码只能运行&#xff0c;不能准确的预测 卡点&#xff1a; 1 由于过…

Java自学第6课:电商项目(2)

1 创建工具类并连接数据库 在工程src右键单击new&#xff0c;新建util包 再创建DBUtil类 数据库交互需要有数据库支持的包&#xff0c;这是官方给出的类库。 先声明1个代码块 // 静态代码块 只加载1次static{try {Class.forName("com.mysql.jdbc.Driver");} catch (…

Kotlin文件和类为什么不是一对一关系

在Java中&#xff0c;一个类文件的public类名必须和文件名一致&#xff0c;如何不一致就会报异常&#xff0c;但是在kotlin的文件可以和类名一致&#xff0c;也可以不一致。这种特性&#xff0c;就跟c有点像&#xff0c;毕竟c的.h 和 .cpp文件是分开的。只要最终编译的时候对的…

无人机红外相机的畸变矫正

在项目开展过程中&#xff0c;发现大疆M30T的红外相机存在比较明显的畸变问题&#xff0c;因此需要对红外图像进行畸变矫正。在资料检索过程中&#xff0c;发现对红外无人机影像矫正的资料较少&#xff0c;对此&#xff0c;我从相机的成像原理角度出发&#xff0c;探索出一种效…

史上第一款AOSP开发的IDE (支持Java/Kotlin/C++/Jni/Native/Shell/Python)

ASFP Study 史上第一款AOSP开发的IDE &#xff08;支持Java/Kotlin/C/Jni/Native/Shell/Python&#xff09; 类似于Android Studio&#xff0c;可用于开发Android系统源码。 Android studio for platform&#xff0c;简称asfp(爱上富婆)。 背景&下载&使用 背景 由…