1. 分治.动态规划的局限性 没有合适的分割方式时,就不能使用分治法: 没有合适的子问题或占用内存空间太大时,就不能用动态规划: 此时还需要回到最基本的穷举搜索算法. 穷举搜索(exhaustive search)会把生成答案的过程分为几个选择的过程,之后利用递归调用完成各个选择项,由此实现其目的.此时,所有子问题的答案和已完成答案的集合就是搜索空间(search space).例如旅行商(TSP)问题,已访问过的各个城市的目录和当前位置就构成了搜索空间的 1 个元素. 但对穷举搜索而言,即使问…
本质上算法都是对数据的操作,没有数据,没有存储数据的容器和组织方式,算法就是无源之水无本之木,就是巧妇也难为无米之炊.算法是演员,变量.数组.容器等就是舞台, 然后整个算法的处理流程,都是针对这些数据(存储在变量或者 STL 中的容器中)进行初始化,修改,更新的,算法的结束也是对这些数据进行判断:(算法实现过程中的数据,相当于面向对象编程中的成员变量),数据居于中心位置: 1. 旅行商问题 结点(城市)间的邻接关系与权重 ⇒ 邻接矩阵 int dst[100][100];(二维数组,如果没有更复…
C++ 的 STL 库的 <numeric> 头文件的 partial_sum 函数已实现了对某一序列的 partial sum. partial_sum(first, last, dest); 1. 部分和的引入 并非什么高级深奥的技巧,但却十分有用. 假设按照降序排列 N 个学生的考试成绩并保存到数组 scores[],现在想要编写求出从第 a 名到第 b 名成绩的函数 average(a, b),最简单的方法是,将 scores[a] 到 scores[b] 的乘积全部相加,然后除以 b…
[前言] 对于矩阵(Matrix)的特征值(Eigens)求解,采用数值分析(Number Analysis)的方法有一些,我熟知的是针对实对称矩阵(Real Symmetric Matrix)的特征值和特征向量(Characteristic Vectors)求解算法——雅克比算法(Jacobi).Jacobi算法的原理和实现可以参考[https://blog.csdn.net/zhouxuguang236/article/details/40212143].通过Jacobi算法可以以任意精度近…
这个算法是在听北大人工智能mooc的时候,老师讲的一种局部搜索算法,可是举得例子不太明白.搜索网页后,发现<禁忌搜索(Tabu Search)算法及python实现>(https://blog.csdn.net/adkjb/article/details/81712969) 已经做了好详细的介绍,仔细看了下很有收获.于是想泡泡代码,看前面还好,后边的代码有些看不懂了,而且在函数里定义函数,这种做法少见,并且把函数有当作类来用,为什么不直接用类呢.还有就是,可能对禁忌搜索不太了解,可能具体算法在…
*本文主要记录和分享学习到的知识,算不上原创. *参考文献见链接. 本文讲述的是求解MIP问题的启发式算法. 启发式算法的目的在于短时间内获得较优解. 个人认为局部搜索(local search)几乎包括所有的求解MIP的启发式算法的核心框架,从简单的爬山算法(Hill-climbing)到复杂的禁忌搜索(Tabu search),从一个初始解出发的爬山算法(Hill-climbing)到一群初始解出发的遗传算法(Genetic algorithm),其核心框架都是local search. 所…
网格搜索与k近邻算法中更多超参数 网格搜索与k近邻算法中更多超参数 网络搜索 前笔记中使用的for循环进行的网格搜索的方式,我们可以发现不同的超参数之间是存在一种依赖关系的,像是p这个超参数,只有在 weights="uniform"才有意义 在sklearn中有一种封装好的网格搜索,grid search 我们首先设置一个数组,其内容可以当成字典来看待 对于第一组参数而言 'weights':["uniform"], 'n_nrightbors':[i for i…
需求分析 很多电商网站中有组合搜索的功能,所谓组合搜索就是网页中组合多个条件,对数据库中进行查询,并且将结果显示在页面中,看个例子吧: 注意红框中的标识,我们可以根据URL来做组合搜索. video-3-1-1.html 使用split可以将三个数字取到, 第一位数字: 分类 第二位数字: 课程名称 第三位数字: 级别 分析到这里,我们就可以进行下一步了. Code分析 urls.py 首先,如果想把url按我们的需求取出来,我们可以在urls.py中设置: from app01 import…
一.简介 # 组合搜索# 技术方向:自动化,测试,运维,前端# 分类:Python Linux JavaScript OpenStack Node.js GO# 级别:初级 中级 高级 骨灰级 有4张表:Direction(技术方向标),Classification(技术分类表),Level(难度级别表),Video(视频表) 它们的关系是: Direction与Classification多对多关系 Video与Classification,Level是一对多关系 最终要实现的结果如下图: 二…
一.TSP问题 TSP问题(Travelling Salesman Problem)即旅行商问题,又译为旅行推销员问题.货郎担问题,是数学领域中著名问题之一.假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市.路径的选择目标是要求得的路径路程为所有路径之中的最小值. TSP问题是一个组合优化问题.该问题可以被证明具有NPC计算复杂性.TSP问题可以分为两类,一类是对称TSP问题(Symmetric TSP),另一类是非对称问题…