当前位置: 首页 > news >正文

广度优先搜索算法及其matlab程序详解

 #################本文为学习《图论算法及其MATLAB实现》的学习笔记#################

算法用途

广度优先搜索算法的应用

算法思想

广度优先搜索算法的步骤:

\forall v\in V(G),标号l(v)=0,令l=0
②当所有标号为 l 的、与顶点 u 相关联的边的端点都已标号时,则停止;否则,把与 u 相关联的边的未标号的顶点标以l+1,并记录这些边,令l=l+1,转②。

根据广度优先搜索算法思想,不难得出定理4.18,并且根据该定理,不难得出,用BFS算法不仅可以判定图的连通性,而且还可以找出连通图的一棵生成树。

定理4.18若BFS终止时仍有未标号的顶点,则G不连通:否则,由记录下的边导出的子图是G的一棵生成树。

 程序参数说明

 G: 邻接矩阵
W: 图顶点的标号

算法程序详解

%广度优先搜索算法
function [ W ] = BFSf1( G )
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%% 输入:     G: 邻接矩阵
%%%%%%%%% 输出:     W: 图顶点的标号
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%n = size(G,1);      % 计算顶点树
W = zeros(1,n);     % 构建标号数组
l = 0;
v = 1;
a1 = find(G(v,:) == 1);  % 寻找与第一个顶点相关联的顶点
G(v,a1) = 2;        % 对其关联边标号为2
G(a1,v) = 2;
W(a1) = l+1;        % 更新标号数组
S1 = union(a1,v);   % S1 为已标号的顶点
l = l+1;while ~isempty(G == 1)%%%%%%% 寻找与已经标号的顶点相关联且未被标号的顶点集合 %%%%%%a1 = find( G(S1,:) == 1 );  % 返回图中已标号的顶点与其他点有关联边的索引值t = length(S1);             % 计算已标号的顶点数d = [];%%%%% 寻找与已经标号的顶点相关联的顶点 %%%%%for i = 1:length(a1)if a1(i)/t > floor( a1(i)/t )t2 = floor( a1(i)/t )+1;elset2 = floor( a1(i)/t );endif isempty( intersect(d,t2) )  % 是否已标号d = union(d,t2);           % 返回关联点数组endendd1 = setdiff(d,S1);     % 返回与已标号顶点相关联且未被标号的顶点集合%%%%% 对找到的顶点集合进行标号 %%%%%if isempty(d1)break;elseW(d1) = l+1;        % 对找到的顶点进行标号G1 = G(S1,:);G(a1) = 2;G(S1,:) = G1;G(:,S1) = G1';S1 = union(S1,d1);  % 更新已标号数组l = l+1;            % 更新标号数end
end

http://www.lryc.cn/news/442629.html

相关文章:

  • 力扣 438找到字符串中所有字母异位词
  • 图像滤波---各项异性扩散滤波使用笔记及代码
  • 用Go语言构建健壮的并发系统:深入理解错误传播与处理
  • 掌握C#中的动态规划技术
  • C语言进阶【5】---数据在内存中的存储【2】(小数存储很难吗?)
  • 如何更新至CDS-Beta下载ERA5数据
  • SQL编程题复习(24/9/20)
  • react crash course 2024 (1)理论概念
  • 有关JS下隐藏的敏感信息
  • Kafka 基于SASL/SCRAM动态认证部署,kafka加账号密码登录部署
  • 富格林:积攒经验阻挠欺诈套路
  • 51单片机-红外遥控器(NEC标准)-实验(红外遥控及调速电机)
  • 云手机的便捷性和安全性体现在哪?
  • 漫谈由标准输入\输出\错误输出引发的思考
  • 利用 IDEA 快速管理 k8s 集群
  • 【自然语言处理】实验三:新冠病毒的FAQ问答系统
  • 「C++系列」文件和流
  • 视频美颜SDK核心功能解析:打造高效直播美颜工具方案详解
  • 深入解析:高性能 SSE 服务器的设计与实现
  • C#为任意组件开发登录功能的记录
  • AI免费UI页面生成
  • 2024新动态:低代码开发占领新常态市场
  • 【SQL 用大白话描述事务并发 可能会遇到的问题】及解决策略
  • nginx安装及vue项目部署
  • 第十三周:机器学习笔记
  • HarmonyOS学习(十三)——数据管理(二) 关系型数据库
  • 【工具变量】科技金融试点城市DID数据集(2000-2023年)
  • import torch import torchIllegal instruction的可能解决方法
  • [SDX35+WCN6856]SDX35 + WCN6856 WiFi导致系统crash问题分析及解决方案
  • 力扣题解2376