【数据结构】——图的相关习题

news/2024/7/20 22:49:53 标签: 数据结构, 算法, 图论, 深度优先, 广度优先

目录

  • 一、选择填空判断题
    • 题1
    • 题2
    • 题3
  • 二、应用题
    • 题1

一、选择填空判断题

题1

1、无向图G=(V,E),其中:V={a,b,c,d,e,f},E={(a,b),(a,c),(a,e),(b,e),(c,f),(f,d),(e,d)},以顶点a为源点对该图进行深度优先遍历,得到的顶点序列正确的是()。
A、a,b,e,c,d,f
B、a,c,f,e,b,d
C、a,e,b,c,f,d
D、a,e,d,f,c,b

解析:(D)
如下可画出该无向图:
在这里插入图片描述
图的深度优先搜索(DFS)【类似树的先序遍历,先访问结点,然后递归向外层结点遍历,尽可能深地搜索一个图,都采用回溯算法】。
DFS算法是一个递归过程,其中需借助栈完成操作。首先选取图中某一顶点vi,访问后,任意选取一个与vi邻接的顶点,且该顶点未被访问,……,继续重复该过程,直到图中所有与vi连通的顶点都被访问到;若还有顶点未被访问到,则另外选取一个未被访问的顶点再次作为起始点,重复以上步骤,继续直至图中所有结点被访问。

以顶点a为源点对该图进行深度优先遍历,然后选择与a邻接的任一顶点,由于与a邻接的顶点有b,c,e,可有以下三种访问序列{a,b,……}或{a,c,……}或{a,e,……},
在这里插入图片描述
然后,选择访问顶点d,也可以选择还未被访问的顶点。由于先前选择访问的序列是{a,d},此时访问与顶点d相邻的顶点f,得到序列{a,d,f};再访问与顶点f相邻的顶点c,得到序列{a,d,f,c};由于此时与c邻接的顶点a和f都被访问过,回退到f,继续检查d,与d邻接的顶点也被访问过,……,最后直到顶点d还未被访问,访问它,可得到序列{a,e,d,f,c,b}。

题2

2、如下所示的图进行从顶点1开始的广度优先搜索遍历,可得到的顶点访问序列为()。
A、1,3,2,4,5,6,7
B、1,2,4,3,5,6,7
C、1,2,3,4,5,7,6
D、2,5,1,4,7,3,6

在这里插入图片描述
解析:(B)
图的广度优先搜索(BFS)【类似树的层序遍历,一层一层向外遍历】。
首先选取一个起始点顶点vi,访问后将其入队并标记为已访问(使用队列用于避免重复访问,存放已经访问过的各邻接顶点);当队列不为空时检查出队顶点的所有邻接顶点,访问未被访问的邻接顶点并将其入队,……,继续重复该过程,直到图中所有与vi连通的顶点都被访问到;当队列为空时跳出循环,则此时遍历完成。

以顶点1为源点对该图进行广度优先遍历,选择与其邻接的所有顶点进行访问,有2和3,可得序列{1,2,3}或{1,3,2};然后,再访问与2和3邻接的其他顶点,直到所有顶点被访问。例如,选择访问顶点2,然后访问与顶点2邻接的4;此时访问顶点4的邻接顶点,由于顶点2已经被访问,可选择访问顶点3和顶点5和顶点6,选择顶点3,此时的序列为{1,2,4,3};再访问与顶点4邻接的顶点5和6,序列为{1,2,4,3,5,6};最后还有顶点7还未访问,可得序列{1,2,4,3,5,6,7}。

题3

3、具有n个顶点的有向完全图有()条边。
A、n(n-1)/2
B、n(n-1)
C、n(n+1)/2
D、n(n+1)

解析:(B)
若一个有向图中,若每个顶点都有互相相反的两条弧连接,则称为有向完全图,在一个含有n个顶点的有向完全图中,共有n(n-1)条弧。

例如,含有4个顶点的有向完全图中,共有n(n-1)=4×3=12条弧,如下:
在这里插入图片描述

二、应用题

题1

题型根据图的邻接表存储结构,画出图以及图的深度/广度优先生成树

1、设G=(V,E)以邻接表存储,如下图所示,画出该图的深度优先生成树和广度优先生成树。

在这里插入图片描述

解:由该邻接表可知,顶点1与2,3,4邻接,顶点2与1,3,4,5邻接,顶点3与1,2,4邻接,顶点4与1,2,3,5邻接,顶点5与2,4邻接,画出该图:在这里插入图片描述
图的深度优先遍历序列步骤:
1、首先访问顶点1,访问后标记已访问过,此时序列为{1};
2、查看单链表1,其第一个未访问的邻接顶点为2,再以顶点2为出发点继续深度遍历,此时序列为{1,2};
3、查看单链表2,顶点1已经访问过,所以其未访问的邻接顶点为3,再以顶点3为出发点继续深度遍历,此时序列为{1,2,3};
4、查看单链表3,顶点1和顶点2已经访问过,所以其未访问的邻接顶点为4,再以顶点4为出发点继续深度遍历,此时序列为{1,2,3,4};
5、查看单链表4,顶点1、顶点2、顶点3已经访问过,所以其未访问的邻接顶点为5,再以顶点5为出发点继续深度遍历,此时序列为{1,2,3,4,5};
6、已经不存在未访问的顶点,遍历完成。

图的广度优先遍历序列步骤:
1、首先访问顶点1,访问后标记已访问过,使其入队,然后删除当前队头结点,此时序列为{1};
2、遍历单链表1,使其未访问的邻接顶点2、3、4入队并标记,此时序列为{1,2,3,4};
3、遍历单链表2,使其未访问的邻接顶点5入队并标记,此时序列为{1,2,3,4,5};
4、已经不存在未访问的顶点,遍历完成。

深度优先生成树:
在这里插入图片描述
广度优先生成树:
在这里插入图片描述


http://www.niftyadmin.cn/n/470054.html

相关文章

RabbitMQ高可用集群部署

文章目录 1.RabbitMQ常见的集群模式2.部署基于镜像队列模式的RabbitMQ高可用集群2.1.镜像队列集群原理2.2.分别在两台机器中部署RabbitMQ2.2.1.基础环境配置2.2.2.安装Erlang环境2.2.3.部署RabbitMQ并开启管理界面2.2.4.配置RabbitMQ各节点变量信息2.2.5.访问RabbitMQ后台管理系…

前端JavaScript入门-day03

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 1、循环-for 1. for 循环-基本使用 1. for循环语法 2. 退出循环 2. for 循环嵌套 2、数组 1 数组是…

[STC32F12k54入门第一步]GPIO驱动(GPIO输出、GPIO输入、外部中断)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、环境配置?二、GPIO驱动1、GPIO输出2、GPIO输入3、引脚外部中断总结STC出了一款60MHZ的32位单片机追风剑,博主刚好在群里面就提前购买了。用起来还不错,老规矩写一个教程出来。 全部包括内容…

数据库监控与调优【六】—— SQL性能分析

SQL性能分析 TIPS 本文基于MySQL 8.0 EXPLAIN分析SQL它不香吗?如何更加细致分析SQL的性能呢?深入SQL内部分析性能! 常用三种方式对比 SHOW PROFILE:简单、方便,已废弃INFORMATION_SCHEMA.PROFILING:和SHO…

MiniGPT4模型训练与部署

第二式:MiniGPT4模型训练与部署 1.环境搭建1.1 下载MiniGPT-4代码1.2 创建虚拟环境 2.Vicuna模型准备2.1 下载vicuna delta weights2.2 下载原始llama weights2.3 合成真正的working weights2.4 配置Vicuna模型路径 3. MiniGPT-4 checkpoint准备3.1 下载MiniGPT-4 c…

SLAM之反求运动和地图点(对极几何)

简介 前面的文章介绍了如何在已知空间点的情况下在不同坐标系中的表示(刚体的坐标变换),以及如何将空间中的点投影到相机中生成图像,但是现实中的情况却是相反的情况(空间点以及坐标系之间的变换未知)&…

【正点原子STM32连载】 第四十二章 DS18B20数字温度传感器实验 摘自【正点原子】STM32F103 战舰开发指南V1.2

1)实验平台:正点原子stm32f103战舰开发板V4 2)平台购买地址:https://detail.tmall.com/item.htm?id609294757420 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html# 第四…

第四章.­ ­ Feasibility of Learning

第四章. Feasibility of Learning 本章主要介绍机器学习的可行性,讨论问题是否可以使用机器学习来解决。 4.1 Learning is Impossible 1.示例描述 1).九宫格样本类型的预测描述: 图中有6个样本,分成两个类别(1和-1&#xff09…