数据结构之生成树及最小生成树

数据结构之生成树及最小生成树

  • 1、生成树概念
  • 2、最小生成树

  数据结构是程序设计的重要基础,它所讨论的内容和技术对从事软件项目的开发有重要作用。学习数据结构要达到的目标是学会从问题出发,分析和研究计算机加工的数据的特性,以便为应用所涉及的数据选择适当的逻辑结构、存储结构及其相应的操作方法,为提高利用计算机解决问题的效率服务。
  数据结构是指数据元素的集合及元素间的相互关系和构造方法。元素之间的相互关系是数据的 逻辑结构,数据元素及元素之间关系的存储称为 存储结构(或物理结构)。数据结构按照逻辑关系的不同分为 线性结构非线性结构两大类,其中,非线性结构又可分为树结构和图结构。
  树结构是一种非常重要的非线性结构,该结构中的一个数据元素可以有两个或两个以上的直接后继元素,树可以用来描述客观世界中广泛存在的层次结构关系。

1、生成树概念

  对于有n个顶点的连通图,至少有n-1条边,而生成树中恰好有n-1条边,所以连通图的生成树是该图的极小连通子图。若在图的生成树中任意加一条边,则必然形成回路。下图(a)所示的无向图的一个生成树如下图(b)所示,下图(c)不是生成树,因为存在回路。
在这里插入图片描述

  图的生成树不是唯一的。从不同的顶点出发,选择不同的存储方式,用不同的求解方法,可以得到不同的生成树。对于非连通图而言,每个连通分量中的顶点集和遍历时走过的边集一起构成若干棵生成树,把它们称为非连通图的生成树森林。按深度和广度优先搜索进行遍历将得到不同的生成树,分别称为深度优先生成树和广度优先生成树。例如,下图所示的是上图(a)的一棵深度优先生成树和一棵广度优先生成树。
在这里插入图片描述

2、最小生成树

  对于连通网来说,边是带权值的,生成树的各边也带权值,因此把生成树各边的权值总和称为生成树的权,把权值最小的生成树称为最小生成树。求解最小生成树有许多实际的应用。
  常用的最小生成树求解算法有普里姆(Prim)算法和克鲁斯卡尔(Kruskal)算法。
  (1)普里姆(Prim)算法
  假设N=(V,E)是连通网,TE是N上最小生成树中边的集合。算法从顶点集合U={u0}(u0∈V)、边的集合TE={}开始,重复执行下述操作:在所有u∈U, v∈V-U的边(u,v)∈E中找一条代价最小的边(u0,v0),把这条边并入集合TE,同时将v0并入集合U,直到U=V时为止。此时TE中必有n-1条边,T=(V,{TE})为N的最小生成树。
  由此可知,普里姆算法构造最小生成树的过程是以一个顶点集合U={u0}作为初态,不断寻找与U中顶点相邻且代价最小的边的另一个顶点,扩充U集合直到U=V时为止。
  用普里姆算法构造最小生成树的过程如下图所示。
在这里插入图片描述

  普里姆算法的时间复杂度为0(n2),与图中的边数无关,因此该算法适合于求边稠密的网的最小生成树。
  (2)克鲁斯卡尔(Kruskal)算法。
  克鲁斯卡尔求最小生成树的算法思想为:假设连通网N(V,E),令最小生成树的初始状态为只有 n 个项点而无边的非连通图 T=(V,{}),图中每个顶点自成一个连通分量。在E选择代价最小的边,若该边依附的项点落在T中不同的连通分量上,则将此边加入到T中,否则舍去此边而选择下一条代价最小的边。依此类推,直到T中所有顶点都在同一连通分量上为止。
  用克鲁斯卡尔算法构造上图(a)所示网的最小生成树的过程如下图所示。
在这里插入图片描述

  克售斯卡尔算法的时间复杂度为 O(e㏒e),与图中的顶点数无关,因此该算法适合于求边稀疏的网的最小生成树。

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

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

相关文章

centos7 挂载windows共享文件夹报错提示写保护

centos7挂载windows共享时,提示被共享的位置写保护,只能以只读方式挂载,紧接着就是以只读方式挂载失败 原因是组件少装了 yum install cifs-utils 安装完后,正常挂载使用。 下载离线安装包 下载离线包下载工具 下载离线安装包…

神经网络:表述(Neural Networks: Representation)

1.非线性假设 无论是线性回归还是逻辑回归,当特征太多时,计算的负荷会非常大。 案例: 假设我们有非常多的特征,例如大于 100 个变量,我们希望用这 100 个特征来构建一个非线性的多项式模型,结果将是数量非…

在windows环境下安装hadoop

Hadoop是一个分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。但这个架构是基于java语言开发的,所以要先进行jdk的安装,如果电脑已经配置过jdk或者是曾经运行成功过java文件,那就可以跳过第一步。 …

可解释性人工智能(XAI)概述

文章目录 每日一句正能量前言可解释性人工智能(XAI)定义研究的作用应用领域XAI的目标后记 每日一句正能量 一个人若想拥有聪明才智,便需要不断地学习积累。 前言 人工智能(AI)的发展速度迅猛,并在许多领域…

消息中间件之八股面试回答篇:三、RabbitMQ如何解决消息堆积问题(100万条消息堆积)+RabbitMQ高可用性和强一致性机制+回答模板

RabbitMQ中的消息堆积问题 当生产者发送消息的速度超过了消费者处理消息的速度,就会导致队列中的消息堆积,直到队列存储消息达到上限。之后发送的消息就会成为死信,可能会被丢弃,这就是消息堆积问题。 解决消息堆积有三种种思路…

【学网攻】 第(13)节 -- 动态路由(OSPF)

系列文章目录 目录 系列文章目录 文章目录 前言 一、动态路由是什么? 二、实验 1.引入 实验拓扑图 实验配置 实验验证 总结 文章目录 【学网攻】 第(1)节 -- 认识网络【学网攻】 第(2)节 -- 交换机认识及使用【学网攻】 第(3)节 -- 交换机配置聚合端口【学…

什么是数据库的三级模式两级映象?

三级模式两级映象结构图 概念 三级模式 内模式:也称为存储模式,是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。定义所有的内部记录类型、索引和文件组织方式,以及数据控制方面的细节。模式:又称概念…

Ubuntu20.04安装Google浏览器

一.在 Ubuntu 上安装 Google Chrome Chrome 不是一个开源的浏览器,并且它不被包含在标准的 Ubuntu 软件源中。在 Ubuntu 中安装 Google Chrome 是一个非常直接的过程。我们将会从官方网站下载安装文件,并且通过命令行工具来安装它。 1.1 下载 Google Ch…

Cesium材质特效

文章目录 0.引言1.视频材质2.分辨率尺度3.云4.雾5.动态水面6.雷达扫描7.流动线8.电子围栏9.粒子烟花10.粒子火焰11.粒子天气 0.引言 现有的gis开发方向较流行的是webgis开发,其中Cesium是一款开源的WebGIS库,主要用于实时地球和空间数据的可视化和分析。…

函数式接口当参数使用

如果函数式接口作为一个方法的参数,就以为着要方法调用方自己实现业务逻辑,常见的使用场景是一个业务整体逻辑是不相上下的,但是在某一个步骤有不同的逻辑,例如数据处理有不同的策略。上代码 package com.dj.lambda;import java.…

加密域可逆信息隐藏算法分类及评价指标

一、加密域可逆信息隐藏算法框架分类 加密图像可逆信息隐藏(RDHEI)是将图像加密和信息隐藏结合使用的一种技术。图像拥有者先对原始图像使用加密密钥keyc进行加密,信息隐藏者根据隐藏密钥keyd将秘密信息嵌入到密文图像中去。在接收端,接收者根据密钥key…

【Docker】快速入门手册

目录 1.概述 1.1.安装 1.2.阿里云镜像加速 1.3.运行原理 2.常用操作 2.1.帮助命令 2.2.镜像操作 2.3.容器操作 2.3.1创建、启动 2.3.2.退出、停止 2.3.3.进入交互式界面 2.3.4.守护式容器交互 2.3.5.查看 2.3.6.删除 2.3.7.拷贝 3.容器数据卷 3.1.概述 3.2.使…

linux03 用户权限

01.三种权限 02.UGO(root账号) 查看权限 不在root文件中写,是因为其他用户不能进来 举个例子 ll是ls -l 第一部分:权限(11个字节) 第一个:d/- d表示文件夹 - 表示一般文件 二到四&#xff1a…

R语言学习case6:ggplot基础画图(Scatter散点图)

step1: 导入ggplot2库文件 library(ggplot2)step2&#xff1a;带入自带的iris数据集 iris <- datasets::irisstep3&#xff1a;查看数据信息 dim(iris)维度为 [150,5] head(iris)查看数据前6行的信息 step4&#xff1a;利用ggplot工具包绘图 plot1 <- ggplot(iris…

人工智能的圣杯:关于可解释AI(XAI)的一切

​​​​​​​ 在过去十年间&#xff0c;无数个人工智能解决方案在各大企业得到部署。 智能受众评测系统、智能财务合规系统、智能人员招聘系统&#xff0c;不一而足。 这期间&#xff0c;在企业客户却也始终存在一种怀疑态度&#xff1a;AI系统做出的产品部署是否真的值得…

初识人工智能,一文读懂机器学习之逻辑回归知识文集(6)

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

QT之 QDebug 调试(一)

在QT中&#xff0c;进行调试&#xff0c;则需要在头文件地方加上 #include <QDebug> 加上之后&#xff0c;在编译之后则其输出的信息则在应用程序输出那里显示信息。 其QDebug 信息调试则如&#xff1a; qDebug() << " 需要插入的信息 "…

以太网交换基础VLAN原理与配置

目录 7.以太网交换基础 7.1.以太网协议 7.2.以太网帧介绍 7.3.以太网交换机 7.4.同网段数据通信全过程 8.VLAN原理与配置 8.1.VLAN的基本概念 8.2.VLAN的应用 7.以太网交换基础 7.1.以太网协议 以太网是当今现有局域网(Local Area Network,LAN)采用的最通用的通信协议…

【王道数据结构】【chapter2线性表】【P44t16】

设有一个长度为n&#xff08;n为偶数&#xff09;的不带头结点的单链表且结点值都大于0&#xff0c;设计算法求这个单链表的最大的孪生和。孪生和的定义为一个结点值与其孪生结点值的和&#xff0c;对于第i个结点&#xff08;从0开始&#xff09;&#xff0c;其孪生结点为第n-i…

【RT-DETR有效改进】EfficientFormerV2移动设备优化的视觉网络(附对比试验效果图)

前言 大家好&#xff0c;我是Snu77&#xff0c;这里是RT-DETR有效涨点专栏。 本专栏的内容为根据ultralytics版本的RT-DETR进行改进&#xff0c;内容持续更新&#xff0c;每周更新文章数量3-10篇。 专栏以ResNet18、ResNet50为基础修改版本&#xff0c;同时修改内容也支持Re…