【 算法设计与分析-回顾算法知识点】福建师范大学数学与计算机科学学院 2006 — 2007学年第二学期考试 A 卷

一.填空题(每空2分,共30分)

1.算法的时间复杂性指算法中 元运算 的执行次数。

2.在忽略常数因子的情况下,O、和三个符号中, O 提供了算法运行时间的一个上界。

3.设Dn表示大小为n的输入集合,t(I)表示输入为I时算法的运算时间, p(I)表示输入I出现的概率,则算法的平均情况下时间复杂性A(n)= 在这里插入图片描述

4.分治算法的时间复杂性常常满足如下形式的递归方程:
在这里插入图片描述

其中,g(n)表示 将规模为n的问题分解为子问题以及组合相应的子问题的解所需的时间

  1. 分治算法的基本步骤包括 分解,递归,组合

6.回溯算法的基本思想是 在问题的状态空间树上作带剪枝的DFS搜索(或:DFS+剪枝)

7.动态规划和分治法在分解子问题方面的不同点是 前者分解出的子问题有重叠的,而后者分解出的子问题是相互独立(不重叠)的

8.贪心算法中每次做出的贪心选择都是 局部 最优选择。

9.PQ式的分支限界法中,对于活结点表中的结点,其下界函数值越小,优先级越

10.选择排序、插入排序和归并排序算法中, 归并排序算法 算法是分治算法。

11.随机算法的一个基本特征是对于同一组输入, 不同的运行可能得到 不同 的结果。

12.对于下面的确定性快速排序算法,只要在步骤3前加入随机化步骤 v=random (low, high); ,就可得到一个随机化快速排序算法,该随机化步骤的功能是 交换A[low]和A[v]的值
随机选主元

算法 QUICKSORT
输入:n个元素的数组A[1…n]。
输出:按非降序排列的数组A中的元素。

1.  quicksort(1, n)
end QUICKSORT
过程 quicksort(A, low, high)
// 对A[low..high]中的元素按非降序排序。2.  if low<high then
3.    w=SPLIT(A, low, high) 
//算法SPLIT以A[low]为主元将A[low..high]划分成两部 //分,返回主元的新位置。
4.    quicksort (A, low, w-1)
5.    quicksort (A, w+1, high)
6. end if
end quicksort

13.下面算法的基本运算是 比较 运算,该算法的时间复杂性阶为( n )。
算法 SPLIT
输入:正整数n,数组A[1…n]。
输出:…。
i=1
x=A[1]
for j=2 to n
if A[j]<=x then
i=i+1
if ij then A[i]A[j]
end if
end for
A[i]A[1]
w =i
return w, A
end SPLIT

二.计算题和简答题(每小题7分,共21分)

1.用O、、表示函数f与g之间阶的关系,并分别指出下列函数中阶最低和最高的函数:

(1) f (n)=100 g(n)= 在这里插入图片描述

(2) f(n)=6n+n

g(n)=3n

(3) f(n)= n/logn-1 g(n)=在这里插入图片描述

(4) f(n)=在这里插入图片描述
g(n)=在这里插入图片描述

(5) f(n)= 在这里插入图片描述
g(n)= 在这里插入图片描述

1. 阶的关系: 
(1) f(n)= O(g(n))(2) f(n)=(g(n))(3) f(n)=(g(n))(4) f(n)= O(g(n))
(5) f(n)=(g(n))
阶最低的函数是:100
阶最高的函数是:

2.下面是一个递归算法,其中,过程pro1和pro2的运算时间分别是1和。给出该算法的时间复杂性T(n)满足的递归方程,并求解该递归方程,估计T(n)的阶(用表示)。
算法 EX1
输入:正整数n,n=2k。
输出:…
ex1(n)
end EX1
过程 ex1(n)
if n=1 then
pro1(n)
else
pro2(n)
ex1(n/2)
end if
return
end ex1

  1. 该递归算法的时间复杂性T(n)满足下列递归方程:
    在这里插入图片描述

在这里插入图片描述

3.用Floyd算法求下图每一对顶点之间的最短路径长度,计算矩阵D0,D1,D2和D3,其中Dk[i, j]表示从顶点i到顶点j的不经过编号大于k的顶点的最短路径长度。

在这里插入图片描述
在这里插入图片描述

三.算法填空题(共34分)
1.(10分)设n个不同的整数按升序存于数组A[1…n]中,求使得A[i]=i的下标i 。下面是求解该问题的分治算法。
算法 SEARCH
输入:正整数n,存储n个按升序排列的不同整数的数组A[1…n]。
输出:A[1…n]中使得A[i]=i的一个下标i,若不存在,则输出 no solution。

i=find (      (1)      )
if i>0 then output i
else output “no solution”
end SEARCH
过程 find (low, high)// 求A[low..high] 中使得A[i]=i的一个下标并返回,若不存在, //则返回0。if         (2)        then return 0elsemid=if        (3)       then return midelse 
if A[mid]<mid then 
return find(        (4)       )
else
return          (5)        end ifend ifend if
end find

2.(10分) 下面是求解矩阵链乘问题的动态规划算法。
矩阵链乘问题:给出n个矩阵M1, M2, …, Mn , Mi 为riri+1阶矩阵,i=1, 2, …, n,求计算M1M2…Mn所需的最少数量乘法次数。
记 Mi, j=MiMi+1…Mj , i<=j。设C[i, j], 1<=i<=j<=n, 表示计算Mi, j的所需的最少数量乘法次数,则算法 MATCHAIN
输入:矩阵链长度n, n个矩阵的阶r[1…n+1], 其中r[1…n]为n个矩阵的行数,r[n+1]为第n个矩阵的列数。

输出:n个矩阵链乘所需的数量乘法的最少次数。

	for i=1 to n  C[i, i]=1for d=1 to n-1   for i=1 to n-d  j=     (2)     
C[i, j]=for k=i+1 to jx=       (3)       if x<C[i, j] then(4)     =xend if         end forend forend forreturn      (5)     
end MATCHAIN

3.(14分) 下面是用回溯法求解马的周游问题的算法。
马的周游问题:给出一个nxn棋盘,已知一个中国象棋马在棋盘上的某个起点位置(x0, y0),求一条访问每个棋盘格点恰好一次,最后回到起点的周游路线。(设马走日字。)
算法 HORSETRAVEL
输入:正整数n,马的起点位置(x0, y0),1<=x0, y0<=n 。
输出:一条从起点始访问nxn棋盘每个格点恰好一次,最后回到起点的周游路线;若问题无解,则输出no solution。

tag[1..n, 1..n]=0  dx[1..8]={2, 1, -1, -2, -2, -1, 1, 2}
dy[1..8]={1, 2, 2, 1, -1, -2, -2, -1}flag=false  x=x0; y=y0 ; tag[x, y]=1 m=n*n  i=1; k[i]=0while   (1)    and not flag 
while k[i]<8 and not flagk[i]=   (2)    x1= x+dx[k[i]]; y1= y+dy[k[i]]if  ((x1,y1)无越界and tag[x1, y1]=0) or ((x1,y1)=(x0,y0) and i=m) then    x=x1; y=y1tag[x, y]=   (3)     if i=m then flag=trueelse
i=    (4)   (5)     end ifend if  end while
i=i-1(6)    (7)    end whileif flag then outputroute(k) //输出路径else output “no solution” 
end HORSETRAVEL

四.算法设计题(15分)

  1. 一个旅行者要驾车从A地到B地,A、B两地间距离为s。A、B两地之间有n个加油站,已知第i个加油站离起点A的距离为公里,0=,车加满油后可行驶m公里,出发之前汽车油箱为空。应如何加油使得从A地到B地沿途加油次数最少?给出用贪心法求解该最优化问题的贪心选择策略,写出求该最优化问题的最优值和最优解的贪心算法,并分析算法的时间复杂性。

贪心选择策略:从起点的加油站起每次加满油后不加油行驶尽可能远,直至油箱中的油耗尽前所能到达的最远的油站为止,在该油站再加满油。 算法
MINSTOPS
输入:A、B两地间的距离s,A、B两地间的加油站数n,车加满油后可行驶的公里数m,存储各加油站离起点A的距离的数组d[1…n]。
输出:从A地到B地的最少加油次数k以及最优解x[1…k](x[i]表示第i次加油的加油站序号),若问题无解,则输出no solution。
d[n+1]=s; //设置虚拟加油站第n+1站。
for i=1 to n
if d[i+1]-d[i]>m then output “no solution”; return //无解,返回 end if
end for
k=1; x[k]=1 //在第1站加满油。
s1=m //s1为用汽车的当前油量可行驶至的地点与A点的距离
i=2
while s1<s if d[i+1]>s1 then //以汽车的当前油量无法到达第i+1站。 k=k+1; x[k]=i //在第i站加满油。 s1=d[i]+m //刷新s1的值 end if i=i+1
end while
output k, x[1…k] MINSTOPS

最坏情况下的时间复杂性:Θ(n)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式技术之Linux(Ubuntu) 一

一、Linux入门 1.硬件和操作系统以及用户的关系 一个传感器&#xff0c;获得数据后&#xff0c;需要向服务器发送数据。传感器传数据给上位机。 上位机需要一个程序来接收数据&#xff0c;那么这个上位机是什么机器&#xff1f; 我们的笔记本电脑就可以当成上位机。 两个手…

Flink系统知识讲解之:如何识别反压的源头

Flink系统知识之&#xff1a;如何识别反压的源头 什么是反压 Ufuk Celebi 在一篇古老但仍然准确的文章中对此做了很好的解释。如果您不熟悉这个概念&#xff0c;强烈推荐您阅读这篇文章。如果想更深入、更低层次地了解该主题以及 Flink 网络协议栈的工作原理&#xff0c;这里有…

浙江安吉成新的分布式光伏发电项目应用

摘 要&#xff1a;分布式光伏发电站是指将光伏发电组件安装在用户的建筑物屋顶、空地或其他适合的场地上&#xff0c;利用太阳能进行发电的一种可再生能源利用方式&#xff0c;与传统的大型集中式光伏电站相比&#xff0c;分布式光伏发电具有更灵活的布局、更低的建设成本和更高…

IDEA 字符串拼接符号“+”位于下一行的前面,而不是当前行的末尾

效果图 IDEA 默认效果是“历史效果”&#xff0c;经过修改后为“预期效果” 设置方式 在设置中找到Editor > Code Style > Java > Wrapping and Braces > Binary expressions > 勾选 Operation sign on next line 即可实现。具体设置如图。

基于phpstudy快速搭建本地php环境(Windows)

好好生活&#xff0c;别睡太晚&#xff0c;别爱太满&#xff0c;别想太多。 声明 仅作为个人学习使用&#xff0c;仅供参考 对于CTF-Web手而言&#xff0c;本地PHP环境必不可少&#xff0c;但对于新手来说从下载PHP安装包到配置PHP环境是个非常繁琐的事情&#xff0c;因此笔者…

后台管理系统引导功能的实现

引导是软件中经常见到的一个功能&#xff0c;无论是在后台项目还是前台或者是移动端项目中。 那么对于引导页而言&#xff0c;它是如何实现的呢&#xff1f;通常情况下引导页是通过 聚焦 的方式&#xff0c;高亮一块视图&#xff0c;然后通过文字解释的形式来告知用户该功能的作…

vscode通过ssh连接服务器实现免密登录

一、通过ssh连接服务器 1、打开vscode&#xff0c;进入拓展&#xff08;CtrlShiftX&#xff09;&#xff0c;下载拓展Remote - SSH。 2、点击远程资源管理器选项卡&#xff0c;选择远程&#xff08;隧道/SSH&#xff09;类别。 3、点击SSH配置。 4、在中间上部分弹出的配置文件…

解决HBuilderX报错:未安装内置终端插件,是否下载?或使用外部命令行打开。

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 错误描述 在HBuilderX中执行npm run build总是提醒下载插件&#xff1b;图示如下&#xff1a; 但是&#xff0c;下载总是失败。运行项目时候依然弹出上述提醒。 解决方案 …

Wi-Fi Direct (P2P)原理及功能介绍

目录 Wi-Fi Direct &#xff08;P2P&#xff09;介绍Wi-Fi Direct P2P 概述P2P-GO&#xff08;P2P Group Owner&#xff09;工作流程 wifi-Direct使用windows11 wifi-directOpenwrtwifi的concurrent mode Linux环境下的配置工具必联wifi芯片P2P支持REF Wi-Fi Direct &#xff…

分享:osgb倾斜数据转cesium-3dtiles 小工具.

背景: 很多知识殊途同归,在三维软件这块,少不了要和各种各样的数据格式打交道.osgb,stl,obj,3dtiles,3ds等等..虽然里面本质核心基本都是几何数据拓扑数据材质纹理数据等等,但是由于其组织方式不同和特殊的应用场景,导致很多模型需要转来转去...相信很多人在这方面都或多或少吃…

spring boot 多数据源集成mysql、postgresql、phoenix、doris等

如何搭建多数据源项目只要以下简单几步; 一. 创建核心在config.datasource文件夹里 二. 引入相对应的jar包 三. 创建数据库连接配置 四. 写逻辑代码进行验证 1.DataSource package com.irootech.config.datasource;import java.lang.annotation.*;Target({ElementType.MET…

25年01月HarmonyOS应用基础认证最新题库

判断题 “一次开发&#xff0c;多端部署”指的是一个工程&#xff0c;一次开发上架&#xff0c;多端按需部署。为了实现这一目的&#xff0c;HarmonyOS提供了多端开发环境&#xff0c;多端开发能力以及多端分发机制。 答案&#xff1a;正确 《鸿蒙生态应用开发白皮书》全面阐释…

uniapp 导入uview-plus,使用组件出现,页面出现<up-parse>元素不存在,请检查你的代码

错误截图&#xff1a; 原因&#xff1a; 未按照官网方式进行配置&#xff0c;需要进行以下配置。具体详情 // pages.json {"easycom": {"autoscan": true,// 注意一定要放在custom里&#xff0c;否则无效&#xff0c;https://ask.dcloud.net.cn/question…

unity 播放 序列帧图片 动画

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、方法一&#xff1a;代码控制播放序列帧1、设置图片属性2、创建Image组件3、简单的代码控制4、挂载代码并赋值 二、方法二&#xff1a;直接使用1.Image上添加…

使用JMeter玩转tidb压测

作者&#xff1a; du拉松 原文来源&#xff1a; https://tidb.net/blog/3f1ada39 一、前言 tidb是mysql协议的&#xff0c;所以在使用过程中使用tidb的相关工具连接即可。因为jmeter是java开发的相关工具&#xff0c;直接使用mysql的jdbc驱动包即可。 二、linux下安装jmet…

CANN 学习——基于香橙派 KunpengPro(1)

异构计算架构CANN&#xff08;Compute Architecture for Neural Networks&#xff09;是昇腾针对AI场景推出的异构计算架构&#xff0c;向上支持多种AI框架&#xff0c;包括MindSpore、PyTorch、TensorFlow等&#xff0c;向下服务AI处理器与编程。 1CANN 总体架构 CANN 软件架…

计算机毕业设计Python中华古诗词知识图谱可视化 古诗词智能问答系统 古诗词数据分析 古诗词情感分析模型 自然语言处理NLP 机器学习 深度学习

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

海陵HLK-TX510人脸识别模块 stm32使用

一.主函数 #include "stm32f10x.h" // Device header #include "delay.h" #include "lcd.h" #include "dht11.h" #include "IOput.h" #include "usart.h" //#include "adc.h" …

apex安装

安装过程复杂曲折&#xff0c;网上说的很多办法&#xff0c;貌似成功了&#xff0c;实际还是没起作用。 先说成功过程&#xff0c;执行下面命令&#xff0c;安装成功&#xff08;当然&#xff0c;前提是你要先配置好编译环境&#xff09;&#xff1a; &#xff08;我的环境&a…

虹软人脸识别

虹软人脸识别 一.虹软人脸识别1. 获取APP_ID与SDK_KEY2. 获取SDK二.Spring整合1. jar包引入2. yaml配置3. 配置类4. 工具类5. api接口6. 启动加载三.前端四.相关文献一.虹软人脸识别 开发者平台 1. 获取APP_ID与SDK_KEY 2. 获取SDK 开发文档 jar包与dll文件