代码随想录day50 || 图论基础

news/2024/9/20 16:40:03/文章来源:https://www.cnblogs.com/zhougongjin55/p/18396243

图论

基础定义

image

图的构造方式

1,邻接矩阵

image

矩阵位置array[i][j] = k, i表示节点i,j表示节点j,[i][j] 表示i-->j存在一条边,k表示的是边的权重邻接矩阵的优点:
表达方式简单,易于理解
检查任意两个顶点间是否存在边的操作非常快
适合稠密图,在边数接近顶点数平方的图中,邻接矩阵是一种空间效率较高的表示方法。缺点:
遇到稀疏图,会导致申请过大的二维数组造成空间浪费 且遍历 边 的时候需要遍历整个n * n矩阵,造成时间浪费

2,邻接表

image

邻接表的数组存放的所有节点,每个位置对应的链表保存了该节点的所有度,eg: 1-->3-->5 代表节点1分别指向了节点3 和 节点5邻接表的优点:
对于稀疏图的存储,只需要存储边,空间利用率高
遍历节点连接情况相对容易缺点:
检查任意两个节点间是否存在边,效率相对低,需要 O(V)时间,V表示某节点连接其他节点的数量。
实现相对复杂,不易理解

797 图所有路径

var path []int
var res [][]intfunc allPathsSourceTarget(graph [][]int) [][]int {// 本体是一个有向图,参数已经给出了邻接表的结构// 本题是搜索路径,先考虑dfs,深度优先,原理是先一条路走到头,然后回溯,走下一条路path = []int{0}res = [][]int{}dfs(graph, graph[0], len(graph)-1)return res
}func dfs(graph [][]int, route []int, target int) {  // 回溯参数返回值// 回溯终止条件 + 收集结果if path[len(path) - 1] == target{var copypath = make([]int, len(path))copy(copypath, path)res = append(res, copypath)return}if len(route) == 0{return}// for{单次回溯逻辑}for i:=0; i<len(route); i++ {path = append(path, route[i])dfs(graph, graph[route[i]], target)path = path[ : len(path) - 1]}return
}

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

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

相关文章

Victoria 3 入门心得

一、简介 Victoria 3是一款模拟策略类游戏。系统需求如下:二、开局 1. 外交 外交有两个原则,一是平等,二是市场。平等要求这个国家不能有敌意,且政🍊稳定。还要搞清楚国与国之间的关系,要站好队。至于市场,看国内有什么需求,在满足平等的条件下进行外交。注意,一但建…

DNF完美仿官90版本单机安装教程 + 虚拟机一键端

前言 今天给大家带来一款单机游戏的架设:地下城与勇士 90 版单机安装。 另外:本人承接各种游戏架设(单机+联网) 本人为了学习和研究软件内含的设计思想和原理,带了架设教程仅供娱乐。 教程是本人亲自搭建成功的,绝对是完整可运行的,踩过的坑都给你们填上了。 如果你是小…

Electron32-ViteOS桌面版os系统|vue3+electron+arco客户端OS管理模板

基于electron32+vue3 setup+pinia2桌面端os管理解决方案ElectronVue3OS。 vue3-electron32-os全新原创Electron32+Vite5+Vue3+Pinia2+ArcoDesign+Echarts+Swiper搭建桌面版os管理模板。内置macos+windows两种桌面布局风格、自研可拖拽式栅格布局模板引擎、支持JSON动态配置桌面…

【日记】想见珍一面怎么就这么难(985 字)

正文想见珍一面怎么就这么难…… 事故频发。昨天说考试时间跟机票时间冲突了,最后结果出来了,改签了,并且差价不补。我不干,他们也不干。因为上级行给我们行长施压,于是我们行长给我施压。最后要到了国庆之前拔智齿的一天假期。我随即改签机票,改签只能改同一个航空公司,…

万字长文浅谈三高系统建设方法论和实践

1 概述 整个软件的发展历程是一部软件复杂性对抗史,软件的复杂性分为技术复杂性和业务复杂性,业务复杂性主要是建模和抽象设计,技术复杂性主要是三高(高性能,高并发,高可用)的应对,C端的业务一般以技术复杂性为主,业务复杂性为辅,而B端或者M端的业务通常以业务复杂性…

Vision Pro开发实践(结合24黑马idea)

这是我参与创作者计划的第1篇文章 开篇 之前写过一篇文章,主要介绍visionPro基本信息、操作和基础适配的文章: http://sd.jd.com/article/30242?shareId=152384&isHideShareButton=1 恰逢2024黑客马拉松举行,我结合本次参赛的一个idea,介绍一下visionOS的开发实践,希…

买药秒送 JADE动态线程池实践及原理浅析

一、背景及JADE介绍 买药秒送是健康即时零售业务新的核心流量场域,面对京东首页高流量曝光,我们对频道页整个技术架构方案进行升级,保障接口高性能、系统高可用。 动态线程池是买药频道应用的技术之一,我们通过3轮高保真压测最终初步确定了线程池的核心参数。但我们仍面临一…

Camstar MDB setfieldex 修改建模字段不記錄Audit Trail

1. 在clf中使用setfieldex直接賦值,對於的建模對象不會記錄Audit Trail2.現在需求是:clf通過setfieldex修改對應建模的字段,需要記錄對於的Audit Trail3.步驟1:先確保對於的見面對象有記錄Audit Trail 4.步驟2:除了setfieldex 直接賦值邏輯外,需要調用對於建模的Maint服…

把python项目部署在docker上

前提,已经安装好docker了,docker的安装,请见另一篇博客 介绍一下需要运行的python项目结构,平时在pycharm里面只需要运行app.py文件即可 项目步骤如下: 1:创建一个上传到Centos系统的文件夹(名字随意) docker_svnhook是要上传到Linux系统,生成Dokcer镜像的文件夹这个…

超级快速搜索重复文件并批量删除重复文件的AutoHotkey辅助脚本 2024年9月4日

超级快速搜索重复文件并批量删除重复文件的AutoHotkey辅助脚本 2024年9月4日; 超级快速搜索重复文件并批量删除重复文件的AutoHotkey辅助脚本 2024年9月4日/* 用法:1、安装 MasterSeeker 1.5.1 by DxCK 或者安装 UltraSearch Professional Version 4.2.0.925 64位2、安装 Dupl…

pip install 安装时,提示【 Could not install packages due to an OSError: [Errno 13] Permission denied】

参考资料:【Python】已解决:ERROR: Could not install packages due to an OSError: [WinError 5] 拒绝访问。 我的问题: 使用pip install 安装时,遇到【Could not install packages due to an OSError: [Errno 13] Permission denied】的错误,提示可能需要【--user】选项…

使用PyTorch从零构建Llama 3

我们上次发了用PyTorch从零开始编写DeepSeek-V2的文章后,有小伙伴留言说希望介绍一下Llama 3。那么今天他就来了,本文将详细指导如何从零开始构建完整的Llama 3模型架构,并在自定义数据集上执行训练和推理。[图1]:Llama 3架构展示训练和推理流程。因为官方Llama 3论文中未提…