【算法】BFS(最短路径问题、拓扑排序)

【算法】BFS(最短路径问题、拓扑排序)

🌈个人主页:秦jh_-ZEEKLOG博客
🔥 系列专栏:https://blog.ZEEKLOG.net/qinjh_/category_12862161.html?fromshare=blogcolumn&sharetype=blogcolumn&sharerId=12862161&sharerefer=PC&sharesource=qinjh_&sharefrom=from_link

 ​ 

目录

边权为1的最短路径问题

 多源BFS最短路问题

BFS解决拓扑排序

有向无环图(DAG图)

AOV网:顶点活动图

拓扑排序

 实现拓扑排序


前言

💬 hello! 各位铁子们大家好哇。

             今日更新了最短路径问题和拓扑排序的相关内容
🎉 欢迎大家关注🔍点赞👍收藏⭐️留言📝

边权为1的最短路径问题

只要边权都是相同的,就可以看作是边权为1的最短路径问题。

上图中的数字就是权值,比如a和b之间的长度是3。最短路径问题就是从某个点到另外一个点的最短长度。最简单的最短路径问题,就是边权都为1的。 

这里是一道例题:. - 力扣(LeetCode)  题解在这:  . - 力扣(LeetCode)

 多源BFS最短路问题

单源最短路问题就是只有一个起点和一个终点。

多源最短路问题是可以有多个起点和一个终点。

多源bfs:用bfs解决边权为1的多源最短路问题。

如上图,解法:把所有的源点当成一个“超级源点”。问题就变成单一的单源最短路问题。

绿色是源点(起点)。

例题:. - 力扣(LeetCode)    题解:. - 力扣(LeetCode)

BFS解决拓扑排序

有向无环图(DAG图)

如上图,由顶点和有方向的边连接起来的图,就是有向图。 ”无环“是指不会形成回路。



如上图,4指向5,5指向6,6又指向4,形成了一个环,此时就是有环的。


对于顶点的概念:

入度: 有多少条边指向该顶点

出度:由该顶点出去有几条边。

如上图,绿色代表入度,红色代表出度。1的入度是0,因为没有边指向它。1的出度是2,因为有两条边指向外面。

AOV网:顶点活动图

在有向无环图中,用顶点来表示一个活动,用边来表示活动的先后顺序的结构。

如上方的青椒炒肉工程图就是一个AOV网。 

拓扑排序

拓扑排序简单来说,就是找到做事情的先后顺序,并且结果可能不能唯一的。

在这个工程图中,有些活动必须得在某些活动完成后才能执行。 

如何排序?

最开始只能选择准备厨具或者买菜,他们两个其实都是入度为0的点。因此,活动的执行顺序其实就是把入度为0的点拿出来,然后把该点连接的边都删除,让别的点的入度减少。

操作:

        1.找出图中入度为0的点,然后输出。

        2.删除与该点连接的边。

        3.重复1,2操作,直到图中没有点或者没有入度为0的点为止。

为什么要加上没有入度为0的点为循环结束条件呢?
因为我们并不知道图中是否有环。

所以拓扑排序有一个重要应用:判断有向图中是否有环。

 实现拓扑排序

借助队列,进行一次bfs即可。

1.初始化:把所有入度为0的点加入到队列中

2.当队列不为空时:

        1.拿出队头元素,加入到最终结果中;

        2.删除与该元素相连的边;

        3.判断:与删除边相连的点,是否入度变为0。如果入度为0,就加入到队列中。

例题:. - 力扣(LeetCode)   题解:. - 力扣(LeetCode)

Read more

FPGA实现HDMI输出完全攻略:从接口原理到4K显示全流程(附代码模板+调试技巧)

FPGA实现HDMI输出完全攻略:从接口原理到4K显示全流程(附代码模板+调试技巧) 📚 目录导航 文章目录 * FPGA实现HDMI输出完全攻略:从接口原理到4K显示全流程(附代码模板+调试技巧) * 📚 目录导航 * 概述 * 一、HDMI基础概念 * 1.1 HDMI接口介绍 * 1.1.1 HDMI接口历史与发展 * 1.1.2 HDMI接口引脚定义 * 1.1.3 HDMI版本对比 * 1.2 HDMI版本演进 * 1.2.1 HDMI 1.4特性 * 1.2.2 HDMI 2.0特性 * 1.2.3 HDMI 2.1特性

By Ne0inhk
Nano Banana进行AI绘画中文总是糊?一招可重新渲染,清晰到可直接汇报

Nano Banana进行AI绘画中文总是糊?一招可重新渲染,清晰到可直接汇报

文章目录 * 1. 为什么 Nano Banana 生成的中文经常不清晰? * 2. 解决思路:Nano Banana + Seedream 4.5 的两段式工作流 * 3. 实战:先用 Nano Banana 生成架构图(中文会糊) * 4. 部署 Personal LLM API,并配置 Seedream 4.5 * 5. 用 Cherry Studio 配置已部署的 LLM 接口 * 6. 关键一步:用 Seedream 4.5 对“中文文字重新渲染” * 7. 效果对比:字清晰、无错位、图形保持不变

By Ne0inhk

5分钟部署麦橘超然Flux,低显存设备也能玩转AI绘画

5分钟部署麦橘超然Flux,低显存设备也能玩转AI绘画 1. 为什么你值得花5分钟试试这个Flux控制台 你是不是也遇到过这些情况: * 想试试最新的Flux模型,但显卡只有8GB甚至6GB,一加载就报“CUDA out of memory”; * 下载完模型还要手动配置路径、改代码、调参数,折腾两小时还没看到一张图; * 网页版用着方便,但担心隐私泄露、生成被限速、图片被缓存; 别再纠结了——麦橘超然 - Flux 离线图像生成控制台,就是为这类真实场景而生的。它不是又一个需要编译、调参、查文档的实验项目,而是一个开箱即用的本地Web服务:模型已打包进镜像,float8量化技术让DiT主干网络显存占用直降近一半,Gradio界面简洁到连提示词输入框都标好了占位符,连SSH隧道怎么转发都给你写好了命令。 更重要的是,它真的能在你的旧笔记本、远程小内存服务器、甚至实验室里那台只配了RTX 3060的工位机上跑起来。本文不讲原理推导,不堆术语,就带你从零开始,5分钟内完成部署、打开浏览器、输入第一句描述、亲眼看到AI画出赛博朋克雨夜街道——所有操作一步接一步,复制粘贴就能

By Ne0inhk

简单易学的分离式部署小米智能家居Miloco方法

一、安装环境 * Windows用户:安装WSL2以及Docker * macOS/Linux用户:安装Docker 此处不再赘述,网上随便找个教程即可。特别地,对于Windows用户来说,你需要将 WSL2 的网络模式设置为 Mirrored。 二、使用Docker部署Miloco后端 以下均为bash命令。请Windows用户进入WSL2 / Linux、macOS用户进入终端操作: mkdir miloco cd milico vi docker-compose.yml 以下是compose的内容(不会使用vi的同学可以傻瓜式操作:先按i,再使用粘贴功能,然后按冒号,输入wq然后回车,记得关闭输入法): services:backend:container_name: miloco-backend image: ghcr.nju.edu.cn/xiaomi/miloco-backend:latest network_mode:

By Ne0inhk