图中的边关系和节点关系之间的转换

图中的边关系和节点关系之间的转换

在这里插入图片描述

边关系转为图

在relation数组中记录的是从一个节点到一个节点,前面的就叫做from,后面的就叫做to,因此每次添加进节点关系的数组的时候,from就是数组索引,to就是需要加入的值。也就是graph.get(from).add(to)。因为需要对graph不停进行增加,所以数组采用List<List>。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后代码如下:

 public static int[][]  relation2graph(int[][] relation){
        List<List<Integer>> graph = new ArrayList<>();
        System.out.println(relation.length);
        for (int i = 0; i < relation.length; i++) {
            //节点
            int from = relation[i][0];
            //下一个节点
            int to = relation[i][1];

            //当该节点还没有一个下一个节点集合 为它新建一个
            while(from >= graph.size()){
                graph.add(new ArrayList<>());

            }
            //如果该节点已经有集合了 就将它的下一个节点加入
            graph.get(from).add(to);

        }

        System.out.println(graph);
        //将 List<List<Integer>> 转换为int[][]
        int[][] array = new int[graph.size()][];
        for (int i = 0; i < graph.size(); i++) {
            List<Integer> sublist = graph.get(i);
            array[i] = sublist.stream().mapToInt(Integer::intValue).toArray();
        }
        return array;
    }

如果输出不指定int[][]还是List<List> ,后面这一段转换可以不要。

图转为边关系

在这里插入图片描述

 public static int[][] graph2relation(int[][] graph){
        List<List<Integer>> relation = new ArrayList<>();
        for (int i = 0; i < graph.length; i++) {
            for (int j = 0; j < graph[i].length; j++) {
                List<Integer> ls = new ArrayList<>();
                //relation的from
                ls.add(i);
                //relation的to
                ls.add(graph[i][j]);
                relation.add(ls);
            }
        }
        System.out.println(relation);
        //转换
        int[][] array = new int[relation.size()][];
        for (int i = 0; i < relation.size(); i++) {
            List<Integer> sublist = relation.get(i);
            array[i] = sublist.stream().mapToInt(Integer::intValue).toArray();
        }

        return array;
    }

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

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

相关文章

揭秘最热门AI写作软件,看看有哪些值得推荐的AI写作神器

在快节奏的现代生活中&#xff0c;我们常常面临各种压力&#xff0c;例如工作、学习等。因此&#xff0c;一款能够提高写作效率的工具变得尤为重要。那么&#xff0c;有没有什么AI写作软件是比较好用的呢&#xff1f;下面小编给大家推荐几款热门的写作软件。 一.爱制作AI写作 …

打造稳定高效的会员系统:技术架构解析与优化策略

随着互联网时代的发展和用户需求的变化&#xff0c;会员系统成为了各行各业企业实现用户粘性和增长的重要手段。一个稳定高效的会员系统架构能够帮助企业更好地管理会员数据、提供个性化服务和增加用户价值。本文将深入探讨会员系统的技术架构&#xff0c;分析其重要性和挑战&a…

Transformer的前世今生 day02(神经网络语言模型、词向量)

神经网络语言模型 使用神经网络的方法&#xff0c;去完成语言模型的两个问题&#xff0c;下图为两层感知机的神经网络语言模型&#xff1a; 假设词典V内有五个词&#xff1a;“判断”、“这个”、“词”、“的”、“词性”&#xff0c;且要输出P(w_next | “判断”、“这个”、…

Linux东方通下载及使用

把压缩包拖进去 解压文件 mkdir /usr/local/java

新品发布 | Ftrans FIE文件安全导入导出系统

关于飞驰云联 飞驰云联是中国领先的数据安全传输解决方案提供商&#xff0c;长期专注于安全可控、性能卓越的数据传输技术和解决方案&#xff0c;公司产品和方案覆盖了跨网跨区域的数据安全交换、供应链数据安全传输、数据传输过程的防泄漏、FTP的增强和国产化替代、文件传输自…

加速您的 AI 开发:NVIDIA AI Workbench 正式发布

加速您的 AI 开发&#xff1a;NVIDIA AI Workbench 正式发布 NVIDIA AI Workbench 是一款面向 AI 和 ML 开发人员的工具包&#xff0c;现已普遍提供免费下载。 它具有自动化功能&#xff0c;可以消除新手开发人员的障碍并提高专家的工作效率。 无论技能水平如何&#xff0c;开…

使用倒模耳机壳UV树脂胶液制作舞台监听耳返入耳式耳机壳有哪些优点?

使用倒模耳机壳UV树脂胶液制作舞台监听耳返入耳式耳机壳有很多优点&#xff0c;具体如下&#xff1a; 高音质表现&#xff1a;通过倒模工艺制作的耳机壳能够更好地贴合耳朵&#xff0c;减少声音散射和反射&#xff0c;提高声音的清晰度和质感。这对于舞台监听来说非常重要&…

【漏洞复现】福建科立迅通信指挥调度平台down_file.php sql注入漏洞

漏洞描述 福建科立迅通信调度平台 20240318 以及之前版本存在一个严重漏洞,影响了文件 api/client/down_file.php 的一个未知功能。攻击者可以通过操纵参数 uuid 发起 SQL 注入攻击。攻击者可以远程发起攻击。 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守…

OpenGL学习笔记【3】—— GLAD配置

一、为什么用GLAD 由于OpenGL驱动版本众多&#xff0c;它大多数函数的位置都无法在编译时确定下来&#xff0c;需要在运行时查询。所以任务就落在了开发者身上&#xff0c;开发者需要在运行时获取函数地址并将其保存在一个函数指针中供以后使用。取得地址的方法因平台而异&…

Redis 大 Key 对持久化有什么影响?

资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) Redis 的持久化方式有两种&#xff1a;AOF 日志和 RDB 快照。 所以接下来&#xff0c;针对这两种持久化方式具体分析分析 大 Key 对 AOF 日志的影响 先说说 AOF 日志三种写回磁盘的策略 Redis 提供了 3…

如何让 string 型的字符串变成 int 型的整数

之前我们讲过了如何裁剪字符串和如何反转字符串&#xff0c;具体情况可以看看我前几期发的博客&#xff0c;今天我们就来讲讲怎么将 string 型的字符串变成 int 型的整数。 我们可以使用在 <bits/stdc.h> 中的 atoi 函数来处理这种形式转变&#xff0c;如下&#xff1a;…

如何使用Android平板公网访问本地Linux code-server

文章目录 1.ubuntu本地安装code-server2. 安装cpolar内网穿透3. 创建隧道映射本地端口4. 安卓平板测试访问5.固定域名公网地址6.结语 1.ubuntu本地安装code-server 准备一台虚拟机,Ubuntu或者centos都可以&#xff0c;这里以VMwhere ubuntu系统为例 下载code server服务,浏览器…

设计模式之单例模式解析

单例模式 1&#xff09;动机 对于软件系统的某些类&#xff0c;无须创建多个实例&#xff0c;如 Windows 系统的任务管理器&#xff0c;重复对象会浪费系统资源。 2&#xff09;概述 1.定义 确保某个类只有一个实例&#xff0c;而且自行实例化&#xff0c;并向整个系统提供…

vue中循环数据,添加展开、收起操作

1.在data中定义变量 expandedIndex&#xff0c;默认展开第一条 expandedIndex:0,2.标题栏展开、收起显示判断&#xff0c;并填加点击事件 toggleVisibility <h5 class"titleLine">{{item.checkPart}} <span click"toggleVisibility(index)">…

【GPT概念04】仅解码器(only decode)模型的解码策略

一、说明 在我之前的博客中&#xff0c;我们研究了关于生成式预训练转换器的整个概述&#xff0c;以及一篇关于生成式预训练转换器&#xff08;GPT&#xff09;的博客——预训练、微调和不同的用例应用。现在让我们看看所有仅解码器模型的解码策略是什么。 二、解码策略 在之前…

【LVGL-按钮按钮矩阵部件】

LVGL-按钮&按钮矩阵部件 ■ LVGL-按钮部件■ 按钮部件&#xff1a; 点击三个按钮一个回调函数修改label值。 ■ LVGL-按钮矩阵部件■ 示例一&#xff1a;按钮换行&#xff0c;和宽度设置。■ 示例二&#xff1a;设置按钮宽度为2倍■ 示例三&#xff1a;获取点击的按钮下标&…

【以图搜图】GPUNPU适配万物识别模型和Milvus向量数据库

目录 以图搜图介绍项目地址Milvuscv_resnest101_general_recognition 代码使用流程结果展示模型部署环境Milvus部署及使用docker安装docker-compose安装Milvus可视化工具Attu进入网页端 Data数据示例点个赞再走呗&#xff01;比心&#x1f49e;️ 以图搜图 • &#x1f916; Mo…

【java】10.面向对象

一、类和对象 1.1 类和对象的理解 客观存在的事物皆为对象 &#xff0c;所以我们也常常说万物皆对象。 * 类 * 类的理解 * 类是对现实生活中一类具有共同属性和行为的事物的抽象 * 类是对象的数据类型&#xff0c;类是具有相同属性和行为的一组对象的集合 * 简单理解&am…

C#、.NET版本、Visual Studio版本对应关系及Visual Studio老版本离线包下载地址

0、写这篇文章的目的 由于电脑的环境不同&#xff0c;对于一个老电脑找到一个适配的vscode环境十分不易。总结一下C#、.NET、Visual Studio版本的对应关系&#xff0c;及各个版本Visual Studio的下载地址供大家参考 1、C#、.NET版本、Visual Studio版本对应关系如下 2、Visua…

使用paddleocr

paddle快速开始 具体安装流程 安装shapely库报错怎么办&#xff1f; 选定下载paddleocr2.2时报错 原因是因为python版本不支持&#xff1a; 之后重新创建新的环境&#xff0c;安装python3.8再来一遍 【重新选取对应whl文件&#xff0c;确认文件名是否可用】 之后是可以了…