自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 收藏
  • 关注

原创 【计算方法】数值积分

牛顿-科特斯求积公式数值积分是为了解决在求定积分时原函数复杂时的情形,通过采用p(x)来近似代替f(x);p(x)通常采用拉格朗日插值多项式。对于公式的证明,由上述提到的用拉格朗日插值法做p(x),然后换元求导证明,下面证明,辛普森公式组合求积公式但是单一的公式并不能具备很好的精度,这个时候我们通过组合求积公式来减小误差。组合梯形公式例题【问题描述】组合梯形公式求函数f(x)=2+sin(2*sqrt(x))的积分近似值。【输入形式】在屏幕上依次输入积分上限、下限和等距子区间个数

2021-06-08 09:13:20 1218

原创 eclipse连接sql server2019数据库

包的安装首先在微软的官网下载对应的包.下载好之后,找到你安装的java的路径,将刚刚下载好的文件整个解压到C:\Program Files\AdoptOpenJDK\jdk-11.0.10.9-hotspot\lib调用相关包打开后呈现如下界面选中Modulepath后,方可选择右边的按钮的Add Extemal JAR…然后找到刚刚解压的文件,找到chs文件夹,根据不同的版本选择不同的jar压缩包。代码测试package sql;import java.sql.*;imp

2021-06-08 00:56:00 1597

原创 【ML】偏差和方差

概述偏差:预测值与真实值的差距——算法本身的拟合能力。方差:预测值的变化范围——数据扰动所造成的影响。在这里,我们对数据集还要进行划分,分为训练集(训练模型)、验证集(模型选择,模型的最终优化)、测试集(利用训练好的模型进行测试),通常他们的比例为6:2:2而在我们的模型中由于特征的数量,样本大小,lamda值的选取,所训练出来的模型或多或少都会有偏差,而我们便采用偏差(bias)和方差(variance)来描述,并根据不同情况采取不同的解决办法learning curse在这里,我们最需要

2021-05-16 17:28:41 275

原创 【计算方法】曲线拟合——多项式拟合

概述给出n个数据点,并给定m个线性无关的函数f(x),则F(x)为几个f(x)的线性组合。抽象起来,其实在机器学习中相当于给n个训练样本,m个特征值,那么显然这里可以使用正规方程进行求解正规方程推导过程例题【问题描述】根据N个数据点构造最小二乘多项式拟合。【输入形式】在屏幕上依次输入多项式的次数m,数据点的个数N,和N对数据点的x和y坐标。【输出形式】输出最小二乘多项式和误差。如果有多位小数,则保留6位有效数字。【样例1输入】24-3 30 12 14 3【样例1输出】0.

2021-05-14 12:24:56 2363

原创 【ML】neural network

NN神经网络就是模拟人脑中神经元的工作方式,我们主要输入层、隐藏层、输出层。我们通过我们对应的参数进行拟合数据传入隐藏层,再进行激活,一层层传递直至传至最后一层。这也就是我们的前向传播。BP神经网络很好理解,但是相对应的,我们也需要对他的参数进行拟合,假设我们用来处理的多分类问题,我们还需要对分类进行一个预处理one-hot编码为了训练神经网络,我们需要对y做变换,这个变换为one-hot编码。每个样本中只有1位处于状态1,其它的都是0.costfunction谈到拟合参数,我们就离不开损

2021-05-10 21:24:37 129

原创 【计算方法】曲线拟合-最小二乘拟合

曲线拟合综述为什么要曲线拟合呢。由于我们的数据总归是有限的,我们无法做到我们的模拟出来的数据满足每个点,因而我们需要做的是拟合出这样一条曲线,使它的代价最小即可。其实这和机器学习很像,该拟合也可以用正规方程来解的。误差分析公式推导而在运用来求拟合直线时,我们可以这么看待公式指数函数的拟合这里指数函数的底数默认为e在处理如y=Ceax形式的指数时,我们可以取对数,将式子写作lny=ax+lnc,那么我们令Y=lny,b=lnc即可写作拟合直线的式子Y=ax+b,这是再将我们的数据进行线性

2021-05-07 18:00:07 3498

原创 【ML】逻辑回归

逻辑回归Hypothesis:当我们去预测一个值的时候,我们可以采用线性回归。而当我们去做分类问题时,线性回归的方法并不总是那么适用。在这里我们选择逻辑回归。实际上是在线性回归的基础上做出一点改变,进行修正。正如线性回归的假设为hθ(x)=θ0+θ1x1+θ2x2在逻辑回归中,我们采用一个激活函数对其进行修正,使其变得可以处理二分类问题。我们如此假设为什么采用这个激活函数呢,我们不妨看看激活函数的函数图便知道了,这个函数在x=0时对应的值恰好为0.5,它将我们的的值给拟合成适合做判断的曲线,在

2021-05-07 00:05:45 196 1

原创 【ML】线性回归

单变量线性回归模型描述对于受单个变量影响的模型,我们通常抽象成为一元一次函数的形式,我们假设一个假设函数h(θ)=θ0+θ1x代价函数当我们作出假设函数时,我们需要去确定θ0和θ1两个系数的值,以便求解出来的假设函数能更好的拟合数据。此时我们就需要引入代价函数,来计算每次系数的值所确定函数求取的值与原本数据对应的值的差距。具体公式如下:梯度下降在有了代价函数,我们需要通过代价函数来不断缩小代价,以达到较优解,这时候就需要采用梯度下降,这也是在之后诸多算法会用到的一个方法。具体形式如下:

2021-05-04 10:45:47 148

原创 【计算方法】牛顿插值法

牛顿多项式拉格朗日多项式的公式不具备递推性,每个多项式需要单独构造。但很多时候我们需要从若干个逼近多项式选择一个。这个时候我们就需要一个具有递推关系的方法来构造——牛顿多项式这里的的a0,a1…等可以通过逐一带入点的值来求得。但是当项数多起来时,会发现式子变得很大,这个时候我们便要引入差商的概念(利用差分思想)具体见式子能更好理解这里在编程实现中我们可以推出相应的差商推导方程d(k,0)=y(k)d(k,j)=(d(k,j-1)-d(k-1,j-1)) / (x(k)-x(k-j))例题

2021-04-30 12:20:31 2909 2

原创 【计算方法】拉格朗日插值法

概念设f(x)在N+1个点(x0,y0)…(xn,yn)处的值已知,其中值xk在区间【a,b】上,xk互不相同,满足a≤x0<x1<…<xn≤b,yk=f(xk)。求任一插值点x对应的y。插值法的思路在于通过构造一个N次多项式P(x),使其通过N+1个点,然后求x处的函数值y。拉格朗日逼近例题【问题描述】考虑[0.0,1.2]内的函数y=f(x)=cos(x)。利用多个(2,3,4等)节点构造拉格朗日插值多项式。【输入形式】在屏幕上依次输入在区间[0.0,1.2]内的一个值

2021-04-27 08:41:17 2713 7

原创 【计算方法】迭代法(线性方程组求解)

解线性方程组的方法有如下两类直接法:高斯消去法,三角分解法等,这些方法可用于求解低阶稠密方程组迭代法:雅可比迭代法,高斯-赛德尔迭代法等,用于求解高阶稀疏方程组雅可比迭代法高斯-赛德尔迭代法收敛问题首先时矩阵A应具有严格的对角优势–在矩阵的每一行中,对角线的上的元素的绝对值大于其它元素的绝对值的和。当且仅当此时,雅可比迭代才具有唯一解。且经过数学家证明此时高斯-赛德尔迭代法同样会收敛。那么如何判断收敛呢?迭代跳出条件个人所设置的最大迭代次数。收敛时所计算的精度问题。具体展示为前后

2021-04-24 16:51:23 3868

原创 【计算方法】三角分解法(线性方程组的求解)

接着我们联立AX=B,A=LU可得到LUX=B;到这里我们假设UX=Y,则原式又转变为LY=B。到这里我们需要逆向思维进行求解,我们采用前向替代法解的Y,然后对UX=Y采用回代法也就是求解上三角线性方程组的方法进行求解,最终解的X。回代法在之前blog写过了,这里不再赘述。前向替代法其实就是将回代法反过来用。例题【问题描述】为求解一个线性方程组,首先采用偏序选主元策略的三角分解法构造矩阵L,U和P,再用前向替换法对方程组LY=PB求解Y,最后用回代法对方程组UX=Y求解X。【输入形式】在屏幕上.

2021-04-24 15:30:31 2655

原创 【计算方法】高斯消去法(线性方程组的求解)

在本章,我们需要了解一些基本的线性代数基础知识。如非奇异矩阵,矩阵的初等变换等。高斯消元法我们以一个例子来讲解高斯消元法那么,我们可以将它抽象为一个增广矩阵,该矩阵由系数矩阵和y矩阵组成。我们采用初等变换的方法将系数矩阵转换为上三角矩阵,该做法即为高斯消去法。其中要注意,在做初等交换时,若akk=0,则为需要将k行去与其下面的行进行交换,寻求非零元,若不存在非零元,则该系数矩阵时退化矩阵,该线性方程组也寻求不到唯一解。若化简成功则只需要应用上次讲的上三角线性方程组求解的解法即可解的答案。有回代的

2021-04-24 15:13:50 7370

原创 【计算方法】上三角线性方程组(线性方程组的求解)

本章会设计部分线性代数知识,如果你不知道也没关系,因为这影响并不大,通过后面的实例说明及代码演示并不难理解。上三角线性方程组我们假设AX=B为上三角线性方程组,如果有akk≠0,k=1,2,…,n,则该方程组存在唯一解。此时我们采用回代法来解决该问题。具体回代过程如下图例题【问题描述】在一个上三角线性方程组基础上,进行线性方程组求解。【输入形式】在屏幕上依次输入方阵阶数n,系数矩阵A和常数矩阵B。【输出形式】每一行输出一个根【样例1输入】44 -1 2 30 -2 7 -40

2021-04-24 14:23:54 1488

原创 【计算方法】牛顿-拉弗森法(非线性方程的求解)

牛顿法设函数y=f(x)同x轴相较于点(p,0),我们假设初始值p0在p附近,过函数曲线上点(p0,f(p0))的切线与x轴交线为p1如图上这样反复迭代,不断逼近p点,这里同样可以用斜率的公式去推导p1和p0的关系式:经过证明,该玩意可以推广至pk项和pk-1项,且是收敛的。同时公式的推导也可以采用泰勒展开式去推导。需要注意除零错误,可以看到导数项是作为分母,不能为零的。割线法由于该方法是需要求导数项的,为了避免导数的计算,我们可以做进一步的优化,然后我们依然通过斜率的方式来推导公式

2021-04-20 20:41:15 1526

原创 【计算方法】不动点迭代法(非线性方程的求解)

一、根的初始值的确定首先最简单的方法莫过于画一个函数图像看一看。其次,我们可以使用如下两个原则去确定初始根<1>、y(k-1)y(k)<0,该点的左右两边y值正负号相反,由中值定理知道必有一根。<2>、|y(k)|<一个小数&&(y(k)-y(k-1))(y(k+1)-y(k))<0;这表示y(k)足够小,且曲线的斜率在该点附近改变正负号我们以以下这道例题为说明例题【问题描述】在[a,b]区间内寻找方程x5-2*x-1=0的根的初始近

2021-04-20 20:14:46 10243

原创 【数据库】表与视图的基础操作

一、实验目的:1、掌握数据库表与视图的基础知识。2、掌握创建、修改、使用、删除表与视图的不同方法。3、掌握表或与视图的导入或导出方法。二、实验内容和主要知识点1、 创建基本表(数据类型选择,主键设置,外键设置、默认值设置、标识列设置、唯一性设置、空值设置、取值范围设置)设计完数据库后就可以在数据库中创建存储数据的表。数据通常存储于基本表中,每 个表至多可定义 1024 列。表和列的名称必须遵守标识符的规定,在特定表中必须是唯一 的,但同一数据库的不同表中可使用相同的列名。 尽管对于每一个架构在

2021-04-13 22:26:19 2508

原创 【计算方法】试值法与二分法(非线性方程的求解)

一、二分法对于一个连续函数f(x),若它有根,显然在根的两边会改变符号。假设在区间[a,b]有根,那么应该有f(a)*f(b)≤0;在二分法中,我们只需要找该区间的中点c=(a+b)/2,利用根的两边符号改变去不断取中值,使得点迫近根。二分法定理这不作过多叙述在了解大概后,我们还需要知道何时需要终止程序的运行:终止条件主要取决于这几个方面1、迭代次数的限制int n = floor((log(b - a) - log(0.5 * pow(10, -d))) * 1.0 / log(2));2

2021-04-13 13:20:05 1697

原创 Codeforces Round #713 (Div. 3) G. Short Task(数论-因素)

题意很明确,我们所要处理的就是求出,每个数的因素之和即可,范围限定在1e7内,那么在这里由初等数论求因素的和,我们就知道要先去求每个数的最小质因数。数论:假设x=p1a1+p2a2+p3a3一个正整数的因素个数为(a1+1)(a2+2)(a3+3)一个正整数的所有因素之和为(1+p11+p12+**+p1a1)(1+p21+p22+**+p2a2)(1+p31+p32+***+p3a3)在这个结论的前提下,我们可以在接近线性时间的复杂度下筛出每个数的最小质因数,然后进行因素和的求解,进行预处理

2021-04-12 18:26:25 128

原创 【算法】反悔贪心

通常来讲,贪心向来是取局部最优解,但是局部最优解最后不一定构成整体最优解,因而就有了反悔这个操作,来优化贪心。而构成反悔贪心,通常会有一个限制条件。例如,我们假设数组array{1,5,6,7,2,6,7,9,4,3,5,1};如果我们要求取k个数,使其取得最大值,显然此时我们的贪心策略是对array数组进行排序,取前k大的数据加起来就得到结果。但是当我加一个限制条件,不允许取相邻的两个数,也就是说当你取了位置i上的数时,位置i-1和位置i+1的值就不能取了,此时若按照上述贪心策略取贪心,则不能确保整体

2021-04-09 01:54:30 1238

原创 数据库的基本操作

一、实验目的:掌握数据库的基础知识,了解数据库的物理组织与逻辑组成情况,学习创建、修改、查看、缩小、更名、删除等数据库的基本操作方法。二、实验内容和主要知识点(掌握数据库的创建与维护方法和步骤)从交互方式和T-SQL两种方式进行总结书写1、 创建数据库交互式:在打开对象资源管理器后,点击已经连接的数据库引擎节点,在数据库节点或某用户数据库节点上单击鼠标右键,在弹出的快捷菜单中,选中“新建数据库”菜单项,会弹出如下对话框在这里可以确定数据库名称、所有者、是否使用 全文索引、数据库文件信息等。在

2021-04-08 00:08:30 3861

原创 Codeforces Round 711 D. Bananas in a Microwave

题意大致是给你n次操作,以及上限m;假设从k = 0开始,上限为m。在n次操作中,给出t,x,y当t ==1时,k:=⌈(k+xi)⌉.当t ==2时,k:=⌈(k⋅xi)⌉.对于这题其实可以直接暴力模拟,但需要做一个优化来减小它的时间复杂度。在这里先给出优化条件:if (vis[cur]) break; 对于遍历到已经遍历的点,直接中断遍历;我们可以这么想,首先对于乘法和加法是一样的,我们以加法为例当我们从某个数开始加时,我们最多可以加y次,那么当我们从c1开始加时可以加到

2021-03-30 22:31:54 89

原创 Codeforces Round 698 Nezzar and Binary String

题目链接: Nezzar and Binary String.显然每一次操作都会对后序序列产生影响,因而我们考虑倒着考虑,从结果字符串出发,根据询问区间去调整当前区间的01串,由于要求调整个数严格小于区间长度一半,因而若出现sum1 == sum0即错误,输出NO;否则根据需求进行调整。显然这么分析下来,该题主要思路为区间询问,区间修改,传统做法肯定是采用线段树去做,但由于这里数据只有0和1,我们可以本着线段树的思想,采用set去做。/* * @Author: your name * @Date:

2021-03-17 18:44:15 134

原创 codeforces round 699 CD

C、把a涂成b,利用c。c中颜色按顺序,通过vector存b[i]对应要改的位置/* * @Author: your name * @Date: 2021-03-10 18:32:11 * @LastEditTime: 2021-03-10 19:52:26 * @LastEditors: Please set LastEditors * @Description: In User Settings Edit * @FilePath: \code_formal\cf\CF_699_3.cpp

2021-03-10 21:21:15 79

原创 codefces round 700 CD12解析

C、显然a[0]=a[n+1]=正无穷,那么对于0-n+1这个区间,两边的单调情况显然是向中间下滑的,如此在区间中任意取一点m,在与m-1或m+1比较都一样,这里举m+1为例,若m<m+1的值,显然此时区间0-m是向中间凹的,答案必在此区间,否则在另一区间。对值的选取显然采用二分是最快的,如此往复,便可以得到极小值。/* * @Author: your name * @Date: 2021-03-09 16:06:00 * @LastEditTime: 2021-03-09 16:56:39

2021-03-09 17:02:57 75

原创 codeforces global round 13 D

由U&V==V方有U到U+V的一条有向边知,U+V必定由U进位而来,且U+V的二进制中1的个数必然小于等于U;则可以很简单判断/*@Author: your name@Date: 2021-03-08 20:21:54@LastEditTime: 2021-03-08 20:27:27@LastEditors: Please set LastEditors@Description: In User Settings Edit@FilePath: \code_formal\cf\GR_

2021-03-08 20:42:45 69

原创 codeforces round 705 CD

C、K-beautiful Strings计算为使满足条件所需的字母个数sum;然后从倒序遍历,计算将该字母升序之后,更新sum值,看是否为0,是则可以;若不成则往前继续算,但此时最后一个位置放空不看,因为前一个升序,不管后一个是什么字母,一定满足升序;所以此时sum值可以为1;以此类推直到sum值满足条件,然后正常构造即可/* * @Author: your name * @Date: 2021-03-06 22:45:10 * @LastEditTime: 2021-03-08 17:39:3

2021-03-08 20:40:21 99

原创 【vscode】配置Java环境

在下好vscode后,配置Java的配置环境很简便。可以选择在链接: 微软官网说明找到教程.直接下载 Install the Coding Pack for Java - Windows 该文件,下载完安装时所有选项都默认即可。若出现JDK文件下载失败,可前往链接: OpenJDK下载地址.下载,然后再启动上面下载好的微软vscode安装程序,安装完后,打开vscode即可running。【注意下载文件时,建议加速后下载】...

2021-03-01 12:09:32 409

原创 【离散数学】图论

基本概念图的类别:无向图、有向图、混合图邻接点:一条边所连的两个点-----边为邻接边孤立点:不与任何结点相邻接零图:仅由孤立点构成(E为空集)平凡图:仅由一个孤立结点构成(|V|=1)自回路和环:关联于同一结点的一条边结点的度数:无向图为接的边数;而有向图分为入度与出度,记作deg(V)最大度和最小度握手定理:图的结点度数总和为边数两倍定理:任意图中度数为奇数的结点个数为偶数平行边:连接同一对结点的多条边多重图:含有平行边的任何一个图简单图:不含有平行边完全图:简单图G中每一对

2021-01-10 23:49:11 4109

原创 【离散数学】集合论

集合的基本概念集合中元素特点:确定性、唯一性、无序性区分包含与从属的关系掌握包含,真包含;几种特殊的集合;集合的运算包含排斥原理类似于加法原理;对A∪B一类进行展开序偶和笛卡尔积<a,b>这类形式称为序偶,a为第一元素,b为第二元素若a来自集合A,b来自集合B,则所有这样的序偶的集合称为A和B的笛卡尔积,记作AXB;笛卡尔积满足分配律(掌握它的证明)关系在序偶的集合中,确立一个二元关系RR实际上也是一个集合,满足集合的基本运算三个特殊关系:空关系、全关系、恒等关系d

2021-01-10 17:44:34 1486 1

原创 【离散数学】谓词逻辑

为了刻画命题的内部结构而研究谓词逻辑客体:可以独立存在,它可以是具体的也可以是抽象的。谓词:用来描述客体的性质和关系谓词的概念与表示大写英文字母表示谓词,小写表示客体掌握用谓词来表达命题命题函数与量词1、简单命题函数命题函数的定义。在未给定一组具体的客体常项来替代客体变元时,不能称之为命题n元谓词的特殊情况:n==0,称为0元谓词,它本身是命题可以把命题看成n元谓词的一种特殊情况2、复合命题函数由一个或n个简单命题函数及联结词组合而成(联结词的含义在此不变)谓词填式具体赋予客体常

2021-01-09 21:44:55 1704

原创 【离散数学】命题逻辑

命题定义定义: 能判断真假的陈述句,称为命题。一个命题可赋予一个真值。T or F。如何判断一个句子是否为命题:1、判断它是否为陈述句。2、看它的真值是否唯一。其中注意真值是否唯一与我们是否知道它的真值是两回事。eg: x+y>5,这是一个非命题。简单命题,也叫原子命题,是不能再分成更简单的陈述句。区分命题变元与命题常量,其中命题变元可表示任意命题,故而命题变元不是命题联结词按优先级顺序来看为1、“非”对命题取否2、合取取交集的意思,同“&”3、析取取并集的意思,同“

2021-01-09 16:45:33 2346

原创 【CSP】202009-4 星际旅行(计算几何)

该题本质上并不难,只要你理解了它的核心——刨析直线与圆的关系。在以前的高中课本中,想必大家都学过,过三点必确定一个平面,显然这里的三点我们取黑体中心,及任意两个旅行点。这样一来超维情况便只剩下解决两点之间的距离,显然把相对应的维坐标相减取二次方,再都加起来,最后开方根即是最终答案。接下来我们刨析一下直线与圆的关系。显然,直线与圆只有相交相切相离三种情况,而在取的任意两个旅行点连起来的直线与原点所在平面截下来的圆相切或相离时,由两点之间直线最短可知最短旅行距离。而在相交情况下,则要分两种情况,两旅行点..

2020-12-19 21:48:06 329 1

原创 【CSP】202009-3点亮数字人生(拓扑排序)

本题并不难,主要在于将电路连接图抽象为有向图,然后进行简单拓扑排序即可,下文给出代码在已在几个点给出注释/* * @Author: csc * @Date: 2020-12-14 17:29:08 * @LastEditTime: 2020-12-19 19:10:17 * @LastEditors: Please set LastEditors * @Description: In User Settings Edit * @FilePath: \code\csp\2009_3.cpp..

2020-12-19 19:23:32 373 1

原创 【数据结构】有向无环图中的AOE网问题(含全部代码)

AOE网与拓扑排序紧密联系。如果你还不了解拓扑排序可来此看一下 拓扑排序.关键路径:是指路径长度最长的路径图中每个点代表事件,而边代表活动。在AOE网中先采用拓扑排序进行预处理。然后根据拓扑排序对每个点进行处理,求出他们的ve(最早开始时间)和vl(最晚开始时间)。最后对每个边(活动)进行求最早开始时间和最晚开始时间,若两者相等,则为关键活动。ve的求法顺序遍历拓扑排序,ve(k)为到当前结点k的所有路径的最大值vl求法逆序遍历拓扑排序,vl(k)为逆序遍历到当前结点的所有路径的最小值关.

2020-12-17 20:28:49 698

原创 【图论】拓扑排序(含全部代码)

对于一个有向无环图G=(V,E)来说,它的拓扑排序是G中所有结点的一种线性次序,该次序满足如下条件:如果G包含边(u,v),则结点u在拓扑排序中处于结点v的前面。因而可以将拓扑排序看做是图的所有结点在一条水平线上排开,图的所有边都从左指向右。只要思路采用dfs思想,依次取出入度为0的点,然后把该点对应的边的终点的入度相应减小具体代码如下/* * @Author: csc * @Date: 2020-12-13 10:32:35 * @LastEditTime: 2020-12-17 13:0.

2020-12-17 19:53:26 807

原创 【图论】单源最短路径:dijkstra,spfa,floyd(含全部代码)

本文主要介绍求单源最短路径的三个主要算法diijkstar、spfa、floy。文末给出完整代码。在正式分析算法时,我们需要先了解一些基本知识:最短路径依赖于一个重要性质:两个结点之间的一条最短路包含着其他的最短路径。松弛操作:从s到v的最短路径,与从s到u的最短路径+u到v的边权重,两者进行比较,取最小值,并更新最短路径的估计值及v的前驱属性。通俗的讲就是两边之和大于第三边。三角不等式:对于任何边(u,v)∈E,都有δ(s,v)≤δ(s,u)+w(u,v)非路径性质:如果从结点s到结点v之间不存.

2020-12-17 19:30:47 344 1

原创 【离散数学】计算主析取范式(基于真值表)

【问题描述】请根据给定的命题公式,计算其真值为T的小项,列出主析取范式,并输出结果。【输入形式】输入一个字符串(字符串长度<=50)形式的命题公式,以回车表示输入结束。其中的命题公式为仅包含原子命题、联结词和括号的合式公式。联结词仅包含下述5中联结词:1、否定,表示为“!”2、合取,表示为“*”3、析取,表示为“|”4、条件,表示为“-”5、双条件,表示为“=”例如:(P-Q)-R注意:输入符号均采用英文输入。【输出形式】输出一个以单个空格分隔的字符串,字符串中各项分别对应.

2020-12-11 00:03:24 3104

原创 【数据结构】图的基本操作(含全部代码)

图的存储结构主要有邻接矩阵,邻接表,十字链表等。笔者在这里主要介绍邻接矩阵和邻接表两种存储结构。并将分别采用两种存储方法去实现无向图的基本操作,包括加点,删点,加边,删边、深度优先遍历以及广度优先遍历。(文末附完整代码)邻接矩阵部分主要包含如下函数void visit()该函数意在将标注数组初始化为false;(标志数组在dfs和bfs均有用到)void insert_node(char c) 加点函数void delete_node(char c) 删点函数insert_edge(ch.

2020-12-10 23:26:15 9576

原创 【数据结构】哈夫曼树的建立、编码与译码(含完整代码)

概述哈夫曼编码可以有效的压缩数据,通常可以节省20~90%的空间,具体压缩率依赖于数据的特性。我们将待压缩数据看作字符序列,根据每个字符出现的频率(也可以是字符对应的权重),通过哈夫曼贪心算法构造出字符的最优二进制表示。这里我们只考虑前缀码,即没有任何码字是其他码字的前缀。前缀码可以保证达到最优的数据压缩率,且不会丧失一般性。但这里不做它做出证明。接下来我们介绍一下Huffman算法算法设计思路哈夫曼设计了一个贪心算法来构造最优前缀码,被称为Huffman code。它的正确性证明也依赖于贪心

2020-12-04 14:52:43 5570 9

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除