- 博客(28)
- 资源 (1)
- 收藏
- 关注
原创 HDFS数据块损坏导致的Hive数据查询失败案例
hdfs块损坏导致hive执行查询、删除问题时报错。问题1:hive中无法查询表中的数据信息,但是可以展示表结构等信息。在hive中建立表,显示表信息均显示成功,部分信息如下:展示表成功:show tables;展示表属性成功:describe test;插入表数据失败:insert into test values("hello");查询的时候也报错,报错信息如下所示:select* from test;这可是真的奇怪,冷静下来想想,查看了最开始插入语句的错误信息,发现
2021-10-11 02:43:51 2018 4
原创 记忆化搜索到底有多快?!黑死人!
今天闲来没事写了个程序验证了下记忆化搜索到底有多快,结果真让我大开眼界!我使用的是计算斐波那契数的程序,Fib1表示未使用记忆化的搜索过程,Fib2表示使用记忆化的搜索过程。我随机输入了一个数据,结果是这样的:看这个结果,简直黑死人。所以,记忆化搜索yyds!#include<iostream>using namespace std;int count1=0;int count2=0;int a[1000]={0};int Fib1(int n);int Fib2(int n)
2021-06-13 22:22:02 218
原创 牛顿下降回溯直线及基于停止准则的搜索算法结果分析和比较(XJTU优化课第四章算法实现)
今天这个程序的主要是比较在求一个约束函数的最优值时,采取停止准则的搜索方法和回溯直线搜索方法的优劣。话不多说,先上结论:就我所测试的函数,我改变了多个测试函数和不同的初始值,并测试了不同的回溯因子。结论是我要吹爆停止准则的搜索方法,该方法总是能够获得较好的优化值,但是回溯法甚至不能满足初始迭代条件,即使能够满足,得到的优化结论误差也大得离谱。话不多说,我直接上相关算法,算法如下:基于以上算法,我构造了一个二元函数,并编写了以下代码进行测试。读者可以直接上手我的代码进行测试。#等式约束的牛顿方法+回溯
2021-06-13 01:41:16 1130
原创 优化方法之正定二次函数的共轭梯度法及其实现(基于Python)
共轭梯度法也是共轭方向法中的一种,但是它减少了梯度方向的搜索量,它直接采取经过一维搜索最小点处的梯度方向作为我们的搜索方向,因而在计算速度上有了一定的提升。如果你对这些优化算法感到困惑,现在你需要明白共轭方向法是基于最速下降法的改进,因为最速下降法在接近最优值时的锯齿现象降低了迭代搜索的速度,共轭法则提升了最速下降法的速度。本节所讲的共轭梯度法则是共轭方向法的进一步改进,一个直观原因是它减少了方向的搜索。同时此算法需要同时计算当前点和下一点并据此得到一些新的中间变元。在你明白这个逻辑 后,请参考以下算法原理
2021-06-12 15:44:24 2670 3
原创 优化方法之共轭梯度法分析与实现(基于Python)
共轭梯度法也是解决无约束优化问题的常用迭代算法,它结合了最速下降法矩阵共轭梯度的性质,可以加快算法的迭代过程。且如果初始点选取后的最终优化中不满足精度条件,还可保存上一步得到的迭代点进行再次迭代直到获得较好的优化值。以上过程一般都可以获得较好的迭代点和优化值。该算法简介如下:根据以上算法过程,我们可以选取目标函数进行测试,以下是测试代码:(注:读者可以自由地在初始数据修改初始点、精度等参数,以观察和比较不同初始点的迭代过程,迭代最优值的差异等,如果读者希望修改目标函数,则需要在相应的函数定义处进行
2021-06-12 01:47:19 3382 2
原创 优化方法之最速下降法(采用解析法求解步长+直接采用一阶导求解下降方向+python 代码实现(可直接拿走使用))
最速下降法是我们在求解优化问题时经常使用的方法,它的核心思想在于步长以及方向向量的选择和求解。最速下降法要求我们在每一步都尽可能下降最大的函数值。它的核心算法步骤可见下:其中,在确定方向向量后,我们需要求解该方向上的最优步长,以使步长下降最多。步长的求解主要有以下两种方法:这里,我们选择解析法求解最佳步长。它的核心思想在方法二中已有体现。步长选取过大或者过小都是不利于函数下降的。以下是几幅比较直观的图。我们这里对以下函数使用最速下降法求解其最优值。这里就依据前述算法编写代码如下:# 这个程
2021-06-04 22:13:17 3686 10
原创 优化方法之牛顿法
这个程序利用牛顿迭代的方法求解最优值程序如下:#这个程序利用牛顿法求解最优化问题import mathimport numpy as npfrom matplotlib import pyplot as pltdef Fun(x): return math.exp(x)-5*x-8def Fun1(x): return math.exp(x)-5def Fun2(x): return math.exp(x)# 设置初始值x0=3x1=x0+Epsilon
2021-06-04 19:26:27 196
原创 优化方法之进退法(Python实现)
在求解函数最小值时,有一种方法叫做进退法,此法又名成功失败法。它的核心思想是从指定的某个初始值出发,任意选择一个方向和步长,向前试探性地走一步,并求出该点函数值。如果该点函数值优于当前函数值,则向前走一步,并加大探测的步长继续进行探索。否则,则将步长向反方向后退一小步。如此反复探索,直到步长缩小到一定程度为止。最后搜索到的点即为极小值点,对应函数值即为极小值。该算法可简述如下:1.给定初始点x0,初始步长Step>0,精度Epsilon>0,k=0,步长因子0<Alpha<1,
2021-06-04 18:17:06 1896
原创 优化方法之最速下降法(Python实现)
最速下降法是优化方法中很重要的一类基础搜素算法,其具体算法如下:在接下来的算法实现中,我们使用二阶微分的方法求解最优步长(当然也可以用一维搜索算法进行实现),直接取函数的一阶偏导作为方向向量.具体实现代码如下:from sympy import*import mathimport matplotlib.pyplot as pltimport numpy as npdef ObjFunction(x1,x2): value =2*x1*x1+x2*x2 return valu
2021-06-04 11:47:46 4314
原创 优化方法之黄金分割法(Python实现)
今天给大家带来的是黄金分割法的Python实现,不同于传统代码,这里Python代码可以直接使用,对于你想求取的目标函数的最小值,你只需要修改代码中的目标函数的表达式以及对于的函数区间即可运行。(这里你仅需要保证他是单峰函数即可)因此,这个程序非常适合转移使用。另外,如果大家对黄金分割法求解单峰函数最小值的思想不是很了解,可以自行谷歌or百度。import mathimport numpy as npimport matplotlib.pyplot as plt#This program is u
2021-06-04 02:05:17 2331
原创 简单谈谈设计算法题的方法
“ 本篇文章我将分享一些算法设计的思想,仅仅是个人思考所得,欢迎各位读者与我交流!” Kingdombo 这个公众号创立的初衷在于分享一些与编程或者数学相关的问题,同时致力于探讨解决这些问题的本质,以及总结归纳看待问题的
2021-04-03 17:19:55 1820
原创 递归求解带权重的中位数!xjtu作业题!
题目:设有n个互不相同的元素x1,x2,…xk,每个元素xi带有一个权值wi,且∑ni=1wi=1。若元素xk满足∑xi<xkwi≤12且∑xi>xkwi≤12,则称元素xk为x1,x2,…,xn的带权中位数。请编写一个算法,能够在最坏情况下用O(n)时间找出n个元素的带权中位数。例如:10719 449 446 981 431 993 919 389 549 4530.01757775 0.02028202 0.16863048 0.07320842 0.16283562 0.161
2021-03-31 19:23:27 1382 5
原创 切割木块背后的人生哲学
今天给大家带来一道切割木块的问题,并和大家分享一些我自己在想算法和实现算法方面的一些思考。首先看看题目:已知有N段已知长度的树木(长度均为整数米),现将对这些树木进行切割,以使K段木头具有相同长度(均为整数米)。求符合题意的等长木头的最大长度。比如,输入N=3,K=7,三块木头的长度分别为10,24,15。那么,最大的长度为6米,因为10/6=1,24/6=4,15/6=2,所以1+2+4=7=K。不知道大家感觉怎么样,嘿嘿,其实对于我这个小白来说,我感觉第一眼看到还是有点懵逼的(大佬忽略),尤其是我
2021-03-24 02:03:40 299
原创 并查集基础操作详解
最近在学习并查集,讲真,这不就是离散数学中的等价类吗?哈哈。它主要有查询和归并操作。提供代码如下:#include<iostream>int FA[1000]; //利用该数组来存储每个元素的父节点void init(int n);//初始化并查集int Find(int x); //查询代表元素,算法,代表元素的父节点是他本身,可以根据此判断他们的两个节点是否相void Merge(int x, int y);//合并两个元素,只需查询其父子节点并设置好新的父子节点即可。int
2021-03-17 16:57:44 144
原创 Python数据分析之Series对象
写在前面: 大家好!我是Kindombo。很久之前,我就想写一系列关于Python数据分析的文章,一方面,当今我们已进入大数据时代,对数据的把控并参透其背后的规律对企业,国家都有着巨大的价值。而随着时代的转型,传统企业的主要业务也将从业务需求逐渐转向数据驱动业务,我坚信,未来必将是大数据的时代!而作为如今的我们,掌握数据分析这项技能更将成为个人的核心竞争力之一。哈哈,说了这么多废话,我还是好好说我准备这个专栏的看法,首先,我写这个专栏文章的目的肯定首要的是让大家都掌握(至少认真看过我写的文章,并实操
2021-03-08 22:02:26 2050
原创 一文讲透快速排序和递归!!!
快速排序该算法是一种对于数列进行排序的高级排序算法,在数据量较大的情况下,它的运行时间复杂度为O(nlogn),空间复杂度为O(1)。以下将介绍快速排序算法的基本步骤,并分析难点和注意事项。1. 算法步骤1.选定基准值,基准值的选取十分重要,这在很大程度上决定了该程序的运行效率。而当数据的随机性足够的时候,基准值的选取平均情形一致。文中代码选取基准值代号为base。2.区间划分。根据基准值对数列进行进行划分,使数列种所有不大于base的数都在base的左边,而所有比base大的数都在base的右边。
2021-03-06 21:28:30 551
原创 插入排序详解
插入排序算法步骤:1.从第一个元素开始,该元素默认已经排好序;2.取出下一个元素,在已经排好序的元素序列中从后向前扫描;3.如果已排序的元素大于取出的元素,则将已排序元素放入下一位置;4.重复步骤3,直到排序元素小于或者等于取出元素,将该元素插入到最后一个比较元素之后;5.重复步骤2到5重要的点:1.时间复杂度O(n^2),空间复杂度O(n);2.由于取出的元素仅当已排序元素大于取出元素时,才会发生位置的改变,所以该算法是稳定的;注意事项:1.由于是使用数组进行演示,因此请务必注意数组下
2021-03-04 22:37:53 154 1
原创 不相交集
在我们学习等价关系的时候,如何使用程序来对集合元素进行有效划分呢?请看以下程序。这个程序主要根据提示输入集合的关系矩阵,然后程序内部将自动读取相关元素并为其分配初始集合,然后,该程序对不同集合中有关系的集合进行重新分配,并入新的集合,直到这种归并结束。最后再该程序输出的划分结果。代码和注释如下:#include<iostream>#include<set>#include<vector>#include<assert.h>using namesp
2021-03-04 13:08:41 301 1
原创 STL之set容器
STL set常见方法详解STL中的容器set也是非常的重要啊,它的常用方法有哪些呢?请看以下代码分解!嘿嘿#include<iostream>#include<string>#include<set>using namespace std;int main() { //本讲主要对C++STL中set的主要方法进行讲解 //set是C++自带的容器库,它具有两个特点: //1.集合的元素都是排好序的 //2.set中没有重复的元素 //集合初始化
2021-03-03 22:54:23 120 1
原创 STL之map详解
STL map 经典方法这个程序主要讲解map的常用方法合集,讲解非常细致,小伙伴们若是好好跟着写下来,绝对收获满满!大家可以关注一波哦,后面会更新越来越多的干货!废话不多说,直接上代码:```cpp#include<iostream>#include<string>#include<map>using namespace std;int main() { //map存储数据特点;唯一性,有序性,各位小伙伴注意哦! //以下程序演示使用map的常用方
2021-03-03 21:08:18 428 1
原创 STL之list详解
C++ STL,list,来了!今天给小伙伴们带来的是C++模块中的list,该模板是双端链表的模板,接下来通过实际代码的演练,帮助大家一起来掌握list对象的常见方法!肝!代码如下:#include<iostream>#include<list>using namespace std;int main() { //C++中的list实际上是一个双端链表且为一个循环链表 //本程序主要演示list常使用的方法 //双端链表实例化 list<int>
2021-03-03 15:46:46 378 2
原创 STL之栈和队列
STL模板,栈和队列,来了!今天分享C++模板中栈和队列的相关算法及其常用操作,代码如下所示:#include<iostream>#include<queue>#include<stack>using namespace std;int main() { //本程序主要介绍STL中stack和queue的使用 //主要包括queue和stack的初始化实例,常见方法等内容 //本程序将queue与stack进行对比学习,以便于更好地掌握相关函数和方法
2021-03-03 14:30:07 254 2
原创 STL之迭代器
迭代器,来了!!!本篇博文主要讲解如何使用迭代器进行容器的遍历,以及介绍如何使用迭代器进行insert(插入)和erase(删除)操作,辅助数据结构为vector。代码和相关注释如下:#include<iostream>#include<vector>using namespace std;int main() { //$STL迭代器 //iterator迭代器又称为Cursor模式,它提供了一种访问聚合对象元素的方法。 //并且这种方法不会暴露聚合对象的内部表示
2021-03-03 13:36:06 91
原创 STL之vector方法详解
本节主要介绍vector模板的常见使用方法,包括vector初始化和实例化方法,常见的vector类方法(如增删元素、插入,查找元素,获取迭代器等)最后介绍vector两种遍历方式
2021-03-03 12:29:03 225
原创 离散数学第三话——二分图的最大匹配
离散数学第三话:判断二分图的最大匹配今天给大家分享的是离散数学中二分图的最大匹配算法的代码实现。这里选择匈牙利算法进行实现。该算法核心思想为:设该二分图将节点分为V1,V2,从V1节点中选择节点与V2节点匹配,(有边则匹配),若为初次匹配,则直接匹配,若V2中的点已被匹配,则先将原来的节点取消匹配并为其寻找新匹配点。若寻找成功,则更新匹配状态。基于上述思想,现将相关C++代码实现如下:#include<iostream>#include<vector>bool Search(
2021-03-03 01:43:41 977
原创 离散数学----判断二分图
离散数学第二话----判断二分图各位小伙伴,大家好!今天让我们一起来学习二分图。二分图是离散数学图论中的重要概念,它可以帮助我们解决生活中诸如人员分配等问题。首先让我们来了解一下它的相关概念:定义:二分图又被称为二部图,是图论中的一种特殊模型。设G=(V,E) 若该图将顶点集分为V1,V2,且V1与V2构成V上的一个划分,对于边集E,任意一条边的端点分别在V1和V2中,那么该图则称为二分图。那么,我们如何判断一个图是否是二分图呢?以下介绍染色法的方法来解决这一问题。基于染色法的思路分析:首先,考虑
2021-03-02 02:07:56 2535
SORMGit.rar
2021-09-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人