AnFany
最爱有三:机器学习,Python,还有那个她。
展开
-
Python3 趣味系列题19----贝塞尔曲线及应用
贝塞尔曲线的数学基础是早在 1912 年就广为人知的伯恩斯坦多项式。以伯恩斯坦形式评估多项式的数值稳定方法是de Casteljau算法但直到 1959 年,当时就职于雪铁龙的法国数学家 Paul de Casteljau 才开始对它进行图形化应用的尝试,并提出了一种数值稳定的 de Casteljau 算法。然而贝塞尔曲线的得名,却是由于 1962 年另一位就职于雷诺的法国工程师 Pierre Bézier 的广泛宣传。他使用这种只需要很少的控制点就能够生成复杂平滑曲线的方法,来辅助汽车车体的工业设计原创 2021-04-09 18:09:50 · 435 阅读 · 0 评论 -
Python3 趣味系列题18----生命游戏
生命游戏(Game of Life )是英国数学家约翰·何顿·康威(John Horton Conway)在1970年发明的,由3条规则构成的二维细胞自动机。该游戏号称“零玩家且永不结束”。令人感到惋惜的是,2020年4月11日他因感染新冠肺炎(COVID-19)去世,数学“老顽童”就此陨落。细胞自动机有一个通用的形式化的模型:每个细胞的状态可以在一个有限的状态集合S中取值;确立细胞邻居集合的半径R。也就是以这个细胞所在格子为中心,在距离它R远的所有格子构成了这个细胞的邻居集合;细胞状态演化的规则原创 2020-05-11 10:32:05 · 497 阅读 · 0 评论 -
Python3趣味系列题11-------旅行商问题
一、问题描述旅行商问题(Traveling Salesman Problem),即TSP,又称为旅行推销员问题、货郎担问题,是数学领域中著名的问题之一。说的是一个旅行商要去往N个城市,每个城市只能去一次,最后还要回到开始出发的城市。选择的路径的路程必须是所有路径中值最小的。本文以全国34城市为例,利用 遗传算法(Genetic Algorithm) 获得最终的方案。其中城市之间的距离为城市经...原创 2019-04-17 12:48:53 · 2102 阅读 · 2 评论 -
Python3趣味系列题12-----变态曲线
一、图形引入首先引入下面几个图形:上面的图形均是由一簇直线构成的。直线是按照一定的规则绘制的,确定直线的2个点的纵坐标逐渐减小,横坐标逐渐增大。这样在交点处会构成一条近似的曲线,下面就是研究这条近似曲线的比较精确的表达式。比较精确的表达式需要满足下面2个条件:该曲线需要靠近这些交点;近似曲线与XY轴构成的面积和图形与XY轴构成的面积要比较接近;下面进行符号说明:X轴间隔为a,Y轴...原创 2019-07-23 18:40:57 · 311 阅读 · 0 评论 -
Python3趣味系列题13-----爱因斯坦问题
爱因斯坦问题:在一条街上,有5座房子,喷了不同的5种颜色。每个房子里住着不同国籍的人。每个人喝着不同的饮料,抽不同品牌的香烟,养不同的宠物。 问:谁养鱼?条件:1、英国人住红色房子。2、瑞典人养狗。3、丹麦人喝茶。4、绿色房子紧挨着白色房子,并在白色房子左边。5、绿色房子主人喝咖啡。6、抽Pall Mall香烟的人养鸟。7、黄色房子主人抽Dunhill香烟。8、住在中间房子的人...原创 2019-07-26 11:21:42 · 1274 阅读 · 0 评论 -
Python3趣味系列题14-----分形
分形(Fractal) 一词,是由美国数学家曼德勃罗先生(Mandelbrot)创造出来的。分形几何学是一门以非规则几何形态为研究对象的几何学。按照分形几何学的观点,一切复杂的对象虽然看似杂乱无章,但他们具有相似性。简单地说,就是把复杂对象的某个局部进行放大,其形态和复杂程度与整体相似。本文给出基于复动力系统,例如Mandelbrot集、Julia集;基于迭代函数系统,例如科赫雪花、谢尔宾斯基...原创 2019-08-12 18:03:42 · 522 阅读 · 0 评论 -
Python3 趣味系列题16----十五数码谜题
一、15数码谜题15数码谜题是由纽约卡纳斯托塔市的邮政局长诺伊斯·查普曼发明的,并在1880年申请了专利。美国的谜题专家Sam Loyd在1891年说这是由他发明的,并且坚持这个谎言长达20多年,直到去世。网上很多文章中都说这个谜题是Sam Loyd发明的,其实这是错误的。15数码谜题就是将编号从1到15的15个方块,放在一个有16个格子的4×4的的盒子中,因此一个格子是没有方块的。通过移动方...原创 2019-08-21 17:46:02 · 1590 阅读 · 0 评论 -
Python3 趣味系列题15----八人过河
一、八人过河问题有8个人分别为:1个父亲,带着他的2个儿子;1个母亲,带着她的2个女儿;1个警察,带着1个犯人;开始时,8个人都是在河的左岸。现在需要划船过河,过河时需要注意下面5条说明:1,只有警察、父亲和母亲可以划船;2,警察如果离开犯人,犯人就会伤害其他人;3,母亲不在时,这个父亲就会伤害她的女儿;4,父亲不在时,这个母亲也会伤害他的儿子;5,船上一次最多只能坐两个人。...原创 2019-08-16 18:00:47 · 982 阅读 · 0 评论 -
Python3 趣味系列题17----华容道
华容道原是中国古代的一个地名,是赤壁战争中曹军逃入华容县界后向华容县城逃跑的路线 。华容道是古老的中国民间益智游戏,通过移动各个棋子,帮助曹操从初始位置移到棋盘最下方中部。不允许跨越棋子,还要设法用最少的步数把曹操移到出口。本文利用BFS算法给出24局华容道最佳的移动方案。一、谜题描述用计算机语言描述谜题,首先给出顺序固定的角色列表:PEOPLE = ['曹操', '关羽', '张...原创 2019-09-03 15:36:29 · 12278 阅读 · 0 评论 -
Python3趣味系列题10-------七桥
一、问题描述在哥尼斯堡的一个公园里,七座桥将普雷格尔河中的两个岛之间以及河岸连接起来。问是否能从这四块陆地中任一块出发,恰好通过每座桥一次,再回到起始的陆地?将上面的图形抽象为下面的图:也就是从上图中的任何一个顶点出发,遍历所有的边,并且每条边只能经过一次,最后再回到开始的点。二、解题思路欧拉通过研究这类型问题,于1736年得出下面的结论:所有节点的度均是偶数。此时为欧拉回路,也...原创 2019-04-04 11:51:58 · 1095 阅读 · 0 评论 -
Python3趣味系列题9-------一笔画完
一、问题描述一笔画完就是从起始网格开始,也就是下图中锦鲤喵所在的网格,用一笔划过所有可以走(灰底)的网格,不能遗漏,也不能重复。下图是微信小游戏一笔画完第1350关的题目:二、解题思路利用 DFS(深度优先搜索)和BFS(广度优先搜索) 算法找到所有的路径,利用基于多线程实现的计时器展示寻找路径所用的时间,最终图示所有的解。简单说下两个算法的区别:DFS(Depth First ...原创 2019-03-30 11:00:08 · 970 阅读 · 2 评论 -
Python3趣味系列题2-----构建任意阶幻方
幻方又称为魔方,方阵或厅平方。通常幻方由从1到n^2 的连续整数组成,其中n为正方形的行或列的数目。幻方有很多变形例如完全幻方、乘幻方、高次幻方、反幻方等。经过人们的研究,得到许多构建的方法,幻方唾手便可完成。一、问题描述将数填在纵横格数都相等的正方形图内,使得每一行、每一列和每一条对角线上的各个数之和都相等。二、解决思路幻方按照阶数的数字属性不同,可分为奇数阶、双偶阶、单偶阶。每一种都有...原创 2019-03-25 16:38:56 · 715 阅读 · 0 评论 -
Python3趣味系列题3-----正则表达式实现24点
24点是一款益智游戏,这种游戏方式简单易学,是一项极为好玩的互动小游戏。一、问题描述把4个整数通过加、减、乘、除以及括号运算,使最后的计算结果等于24。二、解题思路本文利用正则表达式以及组合知识实现24点游戏的编程。三、python3代码#引入组合库import itertools利用itertools进行各种情况的遍历,找出所有的解。#算子列表operator = ['+'...原创 2019-03-25 16:47:06 · 430 阅读 · 0 评论 -
Python3趣味系列题4------非递归解决三阶汉诺塔以及动态展示过程
一、问题描述法国数学家爱德华·卢卡斯曾编写过一个关于印度的古老传说:在世界中心贝拿勒斯的圣庙里,一块黄铜板上插着三根宝石针,印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。这就是汉诺塔问题。二、解题思路针对这个问题,首先考虑其最...原创 2019-03-25 17:00:54 · 969 阅读 · 0 评论 -
Python3趣味系列题5------回溯+尾递归优化解决N皇后问题
一、问题描述八皇后问题,是一个古老而著名的问题,是利用回溯算法求解的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处同一行、同一列或同一斜线上,问有多少种摆法。之后陆续有许多数学家对其进行研究,其中包括高斯和康托,并且将其推广为N皇后问题。二、解题思路本文利用Python3实现回溯算法,通过遍历搜索得...原创 2019-03-25 17:12:50 · 488 阅读 · 1 评论 -
Python3趣味系列题7------Prim算法生成完美迷宫
本文介绍利用Prim(普里姆)算法构建完美迷宫,迷宫的生成过程采用动态展示,可以更清楚的观察迷宫是怎么建立的。所谓完美迷宫,就是没有回路,没有不可达区域的迷宫,并且迷宫中任意两个网格间都有唯一的路径。利用Prim算法构建迷宫,主要有两种方式:遍历墙和遍历网格。下面分别描述:Prim遍历墙要建立行数为A,列数为B的迷宫,则迷宫中一共有A*B个网格,网格的编号从0至A*B-1。每个网格均有...原创 2019-03-25 17:20:49 · 917 阅读 · 0 评论 -
Python3趣味系列题7(续)-----A*算法获取迷宫最优路径
前文:Python3 趣味系列题7 ------ Prim算法生成完美迷宫一、A*算法寻找路径的算法有很多,例如BFS算法、Dijkstra算法等。BFS算法可以在较短时间内寻找到从起点到结束点的路径,但不一定是最优的。而Dijkstra算法从起点开始向外围逐渐扩展,直到达到结束点,因此得到的路径一定是最优的,但是耗时较长。A*算法可以看作这2个算法的结合,这主要依赖于A*算法的启发式搜寻策略...原创 2019-03-25 17:26:00 · 990 阅读 · 0 评论 -
Python3趣味系列题8--------凸包动态绘制
本文介绍利用Graham Scan算法获得凸包(平面凸包),并动态展示凸包的形成过程。下面用比较通俗的语言,介绍下凸包:在一个二维坐标平面中,散列着一些点,将最外层的点连接起来构成的凸多边型,它能包含散列的所有的点,这个多边形就是这些点构成的点集的凸包。下面给出几个示例图:其中图1、图2均不是凸包,因为图1中的凸多边形没有包含点集中所有的点;图2的多边形虽然包含了所有的点,但不是凸多边形。...原创 2019-03-25 17:28:06 · 420 阅读 · 0 评论 -
Python3趣味系列题6-------彩票号码优选方案
本文介绍双色球、大乐透号码的选择方法。并且假定读者对以上2种彩票的玩法熟知。一、数据双色球03001期至18136期双色球开奖号码顺序数据,数据条数:2342条,爬虫获得。大乐透08069期至18137期大乐透开奖号码顺序数据,数据条数:1604条,爬虫获得。注:03001期是双色球第一期,08069期是大乐透可查询到开奖号码顺序的第一期。二、选择方案计算各个号码出现...原创 2019-03-25 17:31:37 · 1199 阅读 · 0 评论 -
Python3趣味系列题1------回溯暴力解决数独问题
数独问题大家都很熟悉,很喜欢挑战。但解决此问题极其需要耐心和逻辑,正因为此,解决完才会享受到那种成就感的乐趣。本文利用Python3 解决数独问题,虽然过程不一样,但结果还是会让人感受一样的乐趣。问题描述根据九宫格盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个宫(3 * 3)内的数字均含1—9这9个数字。说句题外话,三位爱尔兰数学家2012年发表了一篇论文,证明了数独...原创 2019-03-25 16:21:38 · 518 阅读 · 0 评论