笔试刷过的题---选择

news2024/12/28 16:41:19

1.若使求解TSP算法,则时间复杂度是()

2.用1*3的瓷砖密铺3*20的地板有()种方式

答:1278

3.可以用于路径规划的算法

有多种算法可以用于路径规划,以下是一些常见的算法:

  1. Dijkstra算法:Dijkstra算法用于在加权图中找到从起点到终点的最短路径。它基于贪婪策略,逐步选择离起点最近的节点,并更新到达每个节点的最短路径。Dijkstra算法适用于单源最短路径问题。

  2. A算法:A算法是一种启发式搜索算法,常用于解决图中的路径规划问题。它综合了广度优先搜索和启发式评估函数,以在图中找到最短路径。A*算法通过估计从当前节点到目标节点的代价,并考虑节点的距离和启发式函数的值来选择下一个节点进行扩展。

  3. Bellman-Ford算法:Bellman-Ford算法用于解决带有负权边的图中的单源最短路径问题。它通过进行多轮的松弛操作来逐步减小节点之间的距离估计值,从而找到最短路径。

  4. Floyd-Warshall算法:Floyd-Warshall算法是一种动态规划算法,用于解决所有节点对之间的最短路径问题。它通过逐步更新节点之间的最短路径长度来找到整个图的最短路径。

  5. 迪克斯特拉算法(D*算法):迪克斯特拉算法是一种增量路径规划算法,用于在存在未知障碍物的环境中进行路径规划。它通过根据实时感知信息动态调整路径,以适应动态环境的变化。

这些算法在不同的场景和要求下具有不同的特点和适用性。选择适当的算法取决于问题的规模、图的特性以及实际需求。

4.K-Mean算法的理解

K-Mean算法是一种常用的聚类算法,用于将一组数据点划分为K个不同的簇(cluster)。它是一种无监督学习算法,意味着它不需要标记或预先定义的类别信息来进行训练。

K-Mean算法的工作原理如下:

  1. 初始化:选择K个初始聚类中心点,可以是随机选择或根据特定的初始化方法。

  2. 分配:对每个数据点,计算其与每个聚类中心的距离,并将数据点分配给距离最近的聚类中心,形成K个簇。

  3. 更新:对于每个簇,计算该簇中所有数据点的均值,将均值作为新的聚类中心。

  4. 重复步骤2和步骤3,直到聚类中心不再变化或达到预定的停止条件。

K-Mean算法的目标是最小化数据点与其所属聚类中心之间的距离(一般使用欧氏距离)。通过迭代更新聚类中心和重新分配数据点的过程,K-Mean算法试图找到能够最好地将数据点分为K个簇的聚类中心。

K-Mean算法的优点包括简单易于理解和实现,对大规模数据集也有较好的可伸缩性。然而,K-Mean算法也有一些限制,例如对初始聚类中心的选择敏感,对离群值敏感,并且需要预先指定聚类数量K。

总结来说,K-Mean算法是一种用于数据聚类的无监督学习算法,通过迭代更新聚类中心和数据点的分配来实现聚类任务。

5.八叉树地图的优缺点

A.压缩性能较好

B.随时更新

C.存储空间大

D.灵活

答案:C  

优点:

  1. 空间划分:八叉树地图将空间划分为八个象限,使得空间的组织结构清晰,便于查找和索引。
  2. 空间适应性:八叉树地图可以根据需要动态调整空间划分的精度,以适应不同分辨率的地图需求。
  3. 空间压缩:八叉树地图可以有效地压缩空间,尤其在稀疏区域,只需存储有用的节点,减少了存储和处理的开销。
  4. 快速查询:由于树形结构的特性,八叉树地图可以快速查找指定位置的节点,以及判断是否存在障碍物等。

缺点:

  1. 空间占用:对于密集区域或高分辨率地图,八叉树地图可能需要较大的存储空间,尤其是在三维空间中。
  2. 节点数量:八叉树地图的节点数量与地图中的对象数量相关,如果对象很多,节点数量将增加,导致更高的存储和处理开销。
  3. 插入和删除开销:在八叉树地图中插入和删除节点需要进行空间的重新划分和调整,可能导致较高的时间复杂度。
  4. 精度问题:八叉树地图的精度受划分格子大小的影响,选择不合适的精度可能导致过度离散或精度不足的问题。

6.在对问题的解空间树进行搜索的方法中,一个结点有多次机会成为活结点的是

A.动态规划

B.回溯法

C.分支定界法

D.回溯法和分支定界法 

答案:B

在回溯法中,一个结点有多次机会成为活结点。回溯法是一种递归的搜索算法,它通过深度优先搜索的方式遍历解空间树。在搜索过程中,当遇到无法继续向下搜索的情况时,回溯到前一步进行其他选择,继续搜索其他分支。通过不断回溯和探索不同的选择,回溯法可以在解空间树中寻找问题的解。

分支限界法:

分支限界法常以广度优先或以最小耗费(最大效益)优先的方式搜索问题的解空间树。

在分支限界法中,每一个活结点只有一次机会成为扩展结点。活结点一旦成为扩展结点,就一次性产生其所有儿子结点。在这些儿子结点中,导致不可行解或导致非最优解的儿子结点被舍弃,其余儿子结点被加入活结点表中。

此后,从活结点表中取下一结点成为当前扩展结点,并重复上述结点扩展过程。这个过程一直持续到找到所需的解或活结点表为空时为止。

7.按深度方向遍历图和前序遍历树类似,得到的结果是唯一的?

按深度方向遍历图和前序遍历树的结果并不一定是唯一的。

前序遍历是一种树的遍历方式,按照根节点、左子树、右子树的顺序进行遍历。它可以唯一确定树的结构和节点的访问顺序。

而按深度方向遍历图时,具体的访问顺序可能会受到多种因素的影响,如图的结构、起始节点的选择等。不同的起始节点或不同的访问顺序可能导致不同的遍历结果。即使从同一起始节点开始,可能仍然存在多个合法的深度优先遍历结果。

因此,按深度方向遍历图的结果并不一定是唯一的。在图的遍历中,我们通常关注的是访问所有节点,并保证不重复遍历,而不关注具体的遍历顺序。

按深度方向遍历图是指从图的某个起始节点开始,沿着深度优先的方式遍历图中的所有节点。深度优先搜索(DFS)是一种图遍历算法,它从起始节点开始,沿着一条路径一直向下探索,直到无法继续下去,然后回溯到上一个未探索完全的节点,继续探索其他路径,直到遍历完所有的节点。

深度优先搜索可以使用递归或栈来实现。以下是按深度方向遍历图的基本步骤:

  1. 选择一个起始节点作为当前节点,并将其标记为已访问。
  2. 访问当前节点,执行相应的操作。
  3. 从当前节点的未访问邻接节点中选择一个,将其作为新的当前节点。
  4. 如果当前节点没有未访问的邻接节点,回溯到上一个节点。
  5. 重复步骤2到步骤4,直到遍历完所有的节点。

按深度方向遍历图的过程中,每个节点只会被访问一次,并且会保持深度优先的顺序进行探索。这种遍历方式常用于解决与连通性、路径搜索和回溯等相关的图问题,如寻找图中的路径、检测图的连通性、生成图的拓扑排序等。

8.动态规划算法的基本要素为:

  1. 最优子结构(Optimal Substructure):问题的最优解可以通过子问题的最优解来构造。即,问题可以被拆分为更小的子问题,并且子问题的最优解可以被组合以得到原问题的最优解。

  2. 重叠子问题性质(Overlapping Subproblems):在解决问题的过程中,子问题往往会被重复计算多次。动态规划利用了这个性质,通过记忆化或者自底向上的计算方式,避免了对同一子问题的重复计算,提高了效率。

  3. 状态转移方程(State Transition Equation):动态规划问题通常可以通过状态转移方程来描述。状态转移方程定义了问题的状态及其与其他状态之间的关系,通过状态之间的转移,可以逐步推导出最终问题的解。

  4. 初始条件和边界情况(Initial Conditions and Base Cases):动态规划算法需要定义问题的初始条件和边界情况,作为递归或迭代的起点。这些初始条件和边界情况提供了最简单的问题解决方法,为后续的状态转移提供基础。

这些基本要素共同构成了动态规划算法的核心。通过划分子问题、寻找状态转移方程、处理重叠子问题和设置初始条件,动态规划能够有效地解决一些具有重叠子问题性质的优化问题。

动态规划算法(Dynamic Programming)是一种通过将复杂问题分解为更小的子问题,并利用子问题的最优解构建原问题的最优解的优化技术。

动态规划算法通常用于解决具有最优化性质的问题,其中问题的最优解可以通过子问题的最优解来构造。该算法通过将问题划分为重叠子问题,并使用记忆化或自底向上的方式来避免对同一子问题的重复计算。

动态规划算法的基本步骤如下:

  1. 确定问题的状态:确定描述问题的状态,状态通常是一个或多个变量的值,这些变量代表问题的关键特征。

  2. 定义状态转移方程:建立问题的状态之间的转移关系,即通过状态之间的转移来描述问题的最优解。状态转移方程通常使用递推公式表示,它将问题的最优解与更小规模的子问题的最优解关联起来。

  3. 确定初始条件和边界情况:定义问题的初始条件和边界情况,作为递归或迭代的起点。初始条件提供了最简单的问题解决方法,而边界情况定义了问题的边界条件,用于终止递归或迭代的过程。

  4. 递归或迭代求解:根据状态转移方程和初始条件,通过递归或迭代的方式计算每个状态的最优解。通过记忆化或自底向上的计算方式,避免对同一子问题的重复计算,提高算法的效率。

  5. 构建最优解:根据计算得到的状态最优解,构建原问题的最优解。这通常涉及追踪记录状态的路径或选择,以得到最终的最优解。

动态规划算法的关键在于问题的划分和状态转移方程的定义。通过将复杂问题划分为更小的子问题,并使用最优子结构性质和重叠子问题性质,动态规划能够高效地求解一些具有最优化性质的问题。

问题:假设有一个数组nums,我们要找到这个数组中的一个子数组,使得该子数组的元素之和最大。请找出这个最大的子数组和。

例如,对于数组nums = [-2, 1, -3, 4, -1, 2, 1, -5, 4],最大子数组和为子数组[4, -1, 2, 1],其和为6。

解决方法:

  1. 确定问题的状态:我们可以定义问题的状态dp[i]为以第i个元素结尾的子数组的最大和。

  2. 定义状态转移方程:根据最优子结构性质,dp[i]可以由dp[i-1]和nums[i]组成。状态转移方程为:dp[i] = max(dp[i-1] + nums[i], nums[i])。

  3. 确定初始条件和边界情况:初始条件为dp[0] = nums[0],即以第一个元素结尾的子数组的最大和就是该元素本身。边界情况为数组的第一个元素。

  4. 递归或迭代求解:根据状态转移方程和初始条件,我们可以使用迭代的方式计算每个状态dp[i]的最大和。

#include <iostream>
#include <vector>
#include <algorithm>

int maxSubArray(std::vector<int>& nums) {
    int n = nums.size();
    std::vector<int> dp(n);
    dp[0] = nums[0];

    for (int i = 1; i < n; i++) {
        dp[i] = std::max(dp[i-1] + nums[i], nums[i]);
    }

    return *std::max_element(dp.begin(), dp.end());
}

int main() {
    std::vector<int> nums = {-2, 1, -3, 4, -1, 2, 1, -5, 4};
    int max_sum = maxSubArray(nums);
    std::cout << "最大子数组和: " << max_sum << std::endl;

    return 0;
}

输出结果为:最大子数组和: 6

通过动态规划算法,我们成功找到了给定数组的最大子数组和。在每个位置i处,我们计算以第i个元素结尾的子数组的最大和,然后取最大值作为当前位置的最优解。最后,我们返回所有位置的最优解中的最大值作为最终的最大子数组和。

这个例子展示了动态规划算法如何将原问题拆分为子问题,并通过状态转移方程和最优子结构性质求解最优解。

9.已知一颗二叉树,如果先序遍历的节点顺序是:ACEFHDG,中序遍历是:FEHCADG,则后序遍历结果为

先序遍历:中,左,右

中序遍历:左,中,右

后序遍历:左,右,中

所以:FHECGDA

先:54126  中:14256 后:12465 

10.关于线性回归说法错误的是:

A在现有的模型上,加入新的变量,所得到的R^2的值总会增加

B残差的方差无偏估计是SSE/(n-p)

C自变量和残差不一定保持相互独立

D线性回归的前提假设之一是残差必须服从独立的正态分布

线性回归模型基于以下前提假设:

  1. 线性关系:线性回归假设自变量和因变量之间存在线性关系。这意味着自变量对因变量的影响是线性的,即通过回归系数的线性组合来表示。

  2. 独立性:线性回归假设样本之间相互独立,即观测值之间的误差项(随机误差)是独立的。

  3. 同方差性:线性回归假设误差项具有同方差性,即在自变量的各个取值上,因变量的方差是相同的。这也称为“常方差性”或“等方差性”。

  4. 无多重共线性:线性回归假设自变量之间不存在高度线性相关性。多重共线性会导致回归系数估计不准确、不稳定,使得结果难以解释。

  5. 正态分布:线性回归假设误差项(随机误差)服从正态分布。这个假设对于对数线性回归和稳健回归等一些扩展形式可能不适用。

  6. 零均值:线性回归假设误差项的均值为零,即在所有自变量取值上,因变量的期望值与真实值之间没有偏差。

答案:D  在线性回归模型中,独立性假设要求自变量与残差之间没有相关性,即自变量的取值不受残差的影响,残差是通过回归模型无法解释的噪声。

11.以下哪个模型属于生成模型:()

A.支持向量机

B.逻辑回归

C.DNN

D.朴素贝叶斯

朴素贝叶斯模型属于生成模型。生成模型试图对观测数据的生成过程建模,包括了观测数据以及类别标签的生成。在朴素贝叶斯中,通过基于贝叶斯定理和特征独立性假设,对观测数据的类别条件概率进行建模,从而得到数据生成的概率模型。

支持向量机(Support Vector Machine, SVM),逻辑回归(Logistic Regression)和深度神经网络(Deep Neural Network, DNN)属于判别模型,它们关注的是学习输入到输出的映射关系,而不是关注数据的生成过程。这些模型通过学习决策边界或决策函数,直接进行分类或回归预测。

 12.以下算法中未用到贪心算法思想的是

A.迪杰斯特拉(Dijkstra)

B.库鲁斯卡尔(Kruskal)

C.普利姆算法(Prim)

D.KMP

答案:D. KMP

KMP算法是一种字符串匹配算法,它通过利用已匹配字符的信息来跳过不必要的比较,提高了匹配的效率。KMP算法不涉及贪心算法思想,它主要利用了字符串匹配中的前缀和后缀信息来优化匹配过程。

迪杰斯特拉算法(Dijkstra)、库鲁斯卡尔算法(Kruskal)和普利姆算法(Prim)都属于图算法中的最短路径或最小生成树算法。这些算法都涉及贪心算法的思想,通过每次选择局部最优解来逐步构建全局最优解。

因此,未用到贪心算法思想的是选项D. KMP算法。

贪心算法是一种在每一步选择中都采取当前状态下最优的选择,以期望最终能够达到全局最优解的算法思想。它通过贪心选择和无后效性两个核心概念来进行问题求解。

贪心选择:在每一步中,通过局部最优选择来构建问题的解。这意味着每次选择都是当前状态下最优的选择,不考虑未来可能出现的情况。贪心选择的关键是找到合适的贪心策略,使得每一步的选择都能朝着全局最优解的方向前进。

无后效性:贪心算法做出的每个局部最优选择都不会对之后的选择产生影响。即选择一旦确定,就不会再改变。这是因为贪心算法没有回溯和撤销选择的操作。

贪心算法通常适用于一些具有贪心选择性质和最优子结构性质的问题。最优子结构指的是问题的最优解可以通过子问题的最优解来构造。

然而,需要注意的是,贪心算法并不是适用于所有问题的通用解法。有些问题可能无法使用贪心策略得到全局最优解,因为局部最优解并不一定能够推导出全局最优解。在使用贪心算法时,需要仔细分析问题的特性,确保贪心策略的有效性。

13.应用Johnson

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在电脑上,一秒钟快速复制汇总上百成千个文件(夹》到指定文件夹中

在日常生活和工作中&#xff0c;我们经常需要对大量的文件进行重命名&#xff0c;以方便整理和管理。使用高效的文件批量改名软件可以极大地提高我们的工作效率。本文将介绍一款功能强大的文件批量改名软件&#xff0c;并演示如何使用它来实现快速的文件重命名。 该软件的名称…

Spring异常处理器

文章目录 1. 异常分析2. 异常处理器2.1 异常处理器核心2.2 异常处理顺序 3. 自定义异常 1. 异常分析 问题:   程序允许不免的在各层都可能会产生异常&#xff0c;我们该如何处理这些异常? 如果只是在方法里面单独使用 try… catch… 语句去一个一个的进行捕捉处理的话&#x…

【JUC并发编程】读写锁:ReadWriteLock

一、介绍 二、代码演示 1. 不使用读写锁 package readwritelock;import java.util.HashMap; import java.util.Map;/*** author swaggyhang* create 2023-07-09 11:16*/ public class Test01 {public static void main(String[] args) {MyCache myCache new MyCache();for (…

功夫这个词,西方语言中没有

功夫这个词&#xff0c;西方语言中没有 功夫一种意思是武侠片的武功之意 另一种意思就是【下功夫】 趣讲大白话&#xff1a;只要功夫深&#xff0c;铁棒磨成针 【趣讲信息科技220期】 #非著名IT人安志强的趣味笔记# **************************** 西方词语怎么翻译功夫的&#…

EtherNet/IP转CAN网关can协议分为几种

生产管理设备中&#xff0c;会有设备与其他设备的协议不同&#xff0c;数据无法互通&#xff0c;让你的工作陷入困境。这时&#xff0c;一款神奇的产品出现了——远创智控YC-EIP-CAN通讯网关&#xff01; 1, 这款通讯网关采用ETHERNET/IP从站功能&#xff0c;可以将各种CAN总…

什么事RPC并实现一个简单的RPC

1. 基本的RPC模型 主要介绍RPC是什么&#xff0c;基本的RPC代码&#xff0c;RPC与REST的区别&#xff0c;gRPC的使用 1.1 基本概念 RPC&#xff08;Remote Procedure Call&#xff09;远程过程调用&#xff0c;简单的理解是一个节点请求另一个节点提供的服务本地过程调用&am…

管理类联考——逻辑——技巧篇——数字编码——公式

&#x1f3e0;个人主页&#xff1a;fo安方的博客✨ &#x1f482;个人简历&#xff1a;大家好&#xff0c;我是fo安方&#xff0c;考取过HCIE Cloud Computing、CCIE Security、CISP、RHCE、CCNP RS、PEST 3等证书。&#x1f433; &#x1f495;兴趣爱好&#xff1a;b站天天刷&…

特斯拉12V低压系统存在问题:刹车失灵还能怪司机吗?

特斯拉汽车失控加速事件引发全球关注&#xff0c;美国NHTSA&#xff08;交通运输安全委员会&#xff09;和特斯拉之前将责任归咎于司机误操作。但一位研究人员提出新解释&#xff0c;并指出特斯拉的12V低压系统可能存在问题&#xff0c;特别是在高负载状态下。 此研究认为&…

git上传文件到Gitee报错“error: failed to push some refs to https://gitee.com/xxxx”

文章目录 前言一、创建项目仓库二、创建工作区三、配置 LFS四、上传镜像文件 前言 我要将一个 4.27 GB 的文件上传到 Gitee 上&#xff0c;但是出现了下面这样的报错 error: failed to push some refs to https://gitee.com/xxxx/centos.git 因此记录一下解决报错的方法。 一、…

基于粤嵌gec6818开发板嵌入式开发电子相册,音乐播放,视频播放,2048游戏

一、功能与要求 实现功能&#xff1a;本系统需要使用粤嵌的GEC-6818开发板设计一款娱乐影音系统&#xff0c;其中包括图片显示&#xff08;相册&#xff09;、音乐播放、视频播放&#xff0c;游戏四个部分&#xff0c;在每个部分内部&#xff0c;具有操控各个部分的功能触摸按…

UNIAPP调用讯飞语音评测API

1、历经千辛万苦&#xff0c;UNIAPP调用评测API终于完成&#xff0c;在此做下总结下&#xff1a;首先看效果&#xff01; 2、实现第1步&#xff0c;首先是鉴权&#xff0c;用到的CryptoJS等工具都可以从讯飞和uniapp官方获取 import * as base64 from "base-64" impo…

redis操作问题

使用redisTemplate 往set集合中批量添加值 # 第一种办法就是for循环&#xff0c;每次进行setfor (int i 0; i < 1000000; i) {redisTemplate.opsForSet().add("key",i);} # 第二中办法就是使用HashSet批量添加数据Set set new HashSet<>();for (int i 1…

mybatisplus生成代码

导包&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifactId></dependency><dependency><groupId>com.baomidou</groupId><artifactId>m…

CorelDRAW2023免费版平面设计矢量绘图工具

最初CorelDRAW 被开发运行于Windows版&#xff0c;数年后Macintosh版也随之发布。同时&#xff0c;CorelDRAW曾经存在过Linux的版本&#xff0c;但后来被放弃了。CorelDRAW简称cdr&#xff0c;是一款功能强大的矢量图制作软件&#xff0c;一说到矢量图制作&#xff0c;大家都会…

Go实现socks5服务器

SOCKS5 是一个代理协议&#xff0c;它在使用TCP/IP协议通讯的前端机器和服务器机器之间扮演一个中介角色&#xff0c;使得内部网中的前端机器变得能够访问Internet网中的服务器&#xff0c;或者使通讯更加安全。SOCKS5 服务器通过将前端发来的请求转发给真正的目标服务器&#…

应用层:万维网WWW

1.万维网WWW 笔记来源&#xff1a; 湖科大教书匠&#xff1a;应用层概述 湖科大教书匠&#xff1a;万维网WWW 声明&#xff1a;该学习笔记来自湖科大教书匠&#xff0c;笔记仅做学习参考 浏览器最重要的部分是渲染引擎&#xff0c;也就是浏览器内核。负责对网页内容进行解析和…

【触类旁通】编写代码和写小说的相似性

【触类旁通】编写代码和写小说的相似性 1&#xff0c;序2&#xff0c;对比分析2.1 相同点2.1.1 三要素2.1.2 读者-用户&#xff08;受众&#xff09;2.1.3 目录——功能模块2.1.4 故事情节——框架2.1.5 文笔——编程风格2.1.6 多部作品——多个阶段2.1.7 修辞——设计模式2.1.…

Mycat【Mycat分片规则(取模、分片枚举、范围约定)】(六)-全面详解(学习总结---从入门到深化)

目录 Mycat分片规则_取模 Mycat分片规则_分片枚举 Mycat分片规则_范围约定 Mycat分片规则_取模 实现方式 取模分片就是根据数据表的某一个字段&#xff0c;通常是某一个整数型的字 段&#xff0c;对其进行十进制的求模运算&#xff0c;将运算结果作为Mycat的路由结果。 注…

Element-案例-脚本页面布局

案例需求&#xff1a; 根据页面原型完成员工管理页面开发&#xff0c;并通过Axios完成数据异步加载 步骤 创建页面&#xff0c;完成页面的总体布局规划布局中各个组件的实现列表数据的异步加载&#xff0c;并渲染展示 1.创建页面&#xff0c;完成页面的总体布局规划 分析案…

代码随想录算法训练营第十三天 | 二叉树系列4

二叉树系列4 617 合并二叉树重点代码随想录的代码我的代码(晚上理解后自己编写) 700 二叉搜索树中的搜索未看解答自己编写看了解答后&#xff0c;精简了两个判断的写法重点代码随想录的代码我的代码(晚上理解后自己编写) 98 验证二叉搜索树重点看到二叉搜索树&#xff0c;就要想…