- 博客(32)
- 收藏
- 关注
原创 直击信息本质 - 私货篇
私货篇前言瞎论程序中现实中物理中传送门前言在一系列的文章(排序、数据结构、信息论)中围绕什么是信息开展。而这里就是夹带私货,升华问题,瞎讲。知道了:信息就是消除不确定。知道了:信息获取的三种方式。 已知获取,假设获取,计算获取。知道了:信息降维是简化问题的关键,是提高性能的关键(把一个大问题拆成小问题也是降维)。知道了:信息的浪费,是性能低下的本质原因。知道了:信息的浪费,还会拉高工作量(要写好多代码…)。知道了:知道一个答案需要的信息量。知道了:有的时候获取信息只能靠猜(启发式算法)。
2020-06-15 21:03:03 339
原创 直击信息本质 - 排序总结篇
我们处于一个信息化的时代,而计算机的实质作用其实就是处理数据,获取信息,消除随机,得到确定的答案,消除随机获取信息,从几种排序算法中可以看到有几种途径来消除随机,计算消除,假设消除,已知消除。计算消除由计算机承担,而假设消除和已知消除需要我们人类的努力,也是我们作为一个人在计算机系统中所扮演的角色。其中: 所有排序算法都包含: 计算获取(在运行一个算法的时候,通过计算得到了很多确定的信息) 冒泡排序: 快速排序:假设获取 (假设了数据是完全随机分布的...
2020-06-03 02:14:13 637 1
原创 直击信息本质 - 信息论
信息论前言定义信息熵例信息分析算法设计图算法原理算法拓展问题变种前言在信息论中,认为信源输出的消息是随机的。即在未收到消息之前,是不能肯定信源到底发送什么样的消息。定义信息熵信息熵的计算公式为式中对数一般取2为底,单位为比特。但是,也可以取其它对数底,采用其它相应的单位,它们间可用换底公式换算。(信息量的计算公式)以上的定义可以简单理解,假设有一个数字值为0-1023之间,总共有1024种情况,那么它的信息量为log2(1024) = 10 bit。如果一个数字的值为0-1之间,那么信
2020-06-15 20:25:51 1368 1
原创 直击信息本质 - 数据结构总结篇
数据结构前言后语传送门前言在数据结构系列文章中讲到了三种基础的数据结构数组、链表、字典。基本也是最常用的三种数据结构。后语1.数组的出现直接原因是因为,物理现实,同时也因为知识、技术体系,只可制造有界且有限的存储实体。而数组的快速寻址,正是建立在这些基本的条件上才得以实现的,这里应用了已知获取(整个存储区域中最小存储单元地址为等差数列,实际上在物理上内存区域是可能断开的,但是这个问题是操作系统或者是硬件需要解决的问题,在程序中可以认为,内存是完全连续的)2.链表解决数组的浪费问题,同时解决了数组增
2020-06-10 19:48:31 635 1
原创 直击信息的本质 - 数据单元
前言:对基本的数据划分做一下定义。存储空间存储数据的区域,区域是连续且有界的。最小存储单位把存储空间均匀划分,得到最小存储单位。下标把最小单元称为一个元素,按照前后循序得到下标,0,1,2,3。...
2020-06-10 19:48:05 329
原创 直击信息的本质 - 数组
数组前言:增删查如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入前言:数组指多个连续的元素所构成的集合。增我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计
2020-06-10 19:47:35 195
原创 直击信息的本质 - 链表
链表前言数据基本操作增删查改后语前言链表指多个不连续的元素所构成的集合。链表解决了数组的缺陷,同时能提高总空间利用率,但同时也带来了查询开销的增大。伪码:List 为双向链表数据结构,ListData为数据“链”,其中有操作函数removeListData,insertListData,findIndexListData。ListData{ data; next; previous;}List{ start; end; removeListData(listData) {
2020-06-10 19:46:51 298
原创 直击信息的本质 - 字典
字典前言数据基本操作增删查改后语传送门前言在数组和链表中,都是根据索引进行的元素访问(index - value),实际上大多数时候是一种key - value 的对应形式,而不是index - value。而字典就是解决这个问题的存在。字典实际上由数组、链表、散列函数,三个部分构成,且和桶排序所使用的思想完全一致。(对这几部分不清楚可以翻到最后通过传送门进行观看)链表伪码:数据基本操作设:“链”的下一个“链”为next,上一个“链”为previous。增例:如上图,要在“链”8的位置插
2020-06-10 19:46:13 429
原创 直击信息的本质 - 桶排序
前言: 桶排序在某种意义上来讲它并不是一个排序算法,它更像一个策略方案,事实上的排序还是由别的排序算法完成,它的步骤分为两部分(1)数据装“桶”,(2)每个"桶"使用其余的排序算法进行排序。计数排序实际上是桶排序的特例情况,桶排序代表的是一般情况。设: 排序数据数组为arr,长度为len,bucketSort为排序入口函数。伪码:getMaxMin(arr,len){ max = arr[0]; min = arr[0]; for(i=1...
2020-06-03 00:19:04 405
原创 线段 ——2D(如何判断线段是否相交)
结论:(1)选取A线段的一个端点,与另外一根线段的两个端点,构成两个向量,u,v,和A线段两个端点构成一个向量T,如果u,v向量在T的同一侧,则两个线段必定不相交。(如何判断一个线段在另外一个线段的那一侧)(2) 如果两根线段的四个端点,都满足条件(1) 则线段相交。例:如上图,由A,B端点构成向量T,则v,w在向量T的两侧,同时,a,b向量也在
2017-07-19 00:46:41 1729
原创 向量 ——2D(如何判断一个向量在另外一个向量的哪一侧)
如上图在向量W,U,V中,和a,b,c中,分别是两种情况,W,V分别在U的一侧,而b,c都在a向量的同一侧。我们先给出结论,如果有向量A,B,C ,且 A叉乘B=k1,A叉乘C=k2, 若,k1,k2同为正数,或者同为负数,则B,C向量在A的同一侧,反之分别在一侧。(2D叉乘)则:如上图,W叉乘U,V叉乘U他们的符号肯定相反, a叉乘b,a叉乘c的符号肯定相同。
2017-07-18 23:50:49 6766 1
原创 多线段几何图形—— 简单几何图形(布尔运算)
如上图:已知两个多边形(A,B,C,D)(E,F,G,H,I),如何求出图形(F,K,C,J)?1.求出数据中的所有线段,线段没有重合区域,除了线段端点也不会和任何线段相交(如上图新增交点J,K,如DC线段,变成DJ,JC线段)2.搜索多线段中的封闭区域 ,搜索到三个区域(A,B,K,F,J,D)(F,K,C,J) (K,G,H,I,E,J,C)3.获取在这三个区域内的点4
2017-04-26 18:34:30 6557
原创 多线段几何图形—— 简单几何图形(从线段中搜索封闭图形)
先直接给出结论在连通图(通俗的解释 图中每一个顶点最少可以到达两根线。 同时我们把使用了此顶点的线段称之为此顶点的连通线)中。以顶点为圆心,则整个圆会被N个连通线划分成N个圆心角。如上图,顶点A的圆,被划分成1,2,3 圆弧角。结论: 1.在连通图中,所有封闭图形的角的数量和等于连通图拥有的圆弧角的数量,则意味着,连通图中所有圆弧角都是形成封闭图
2017-04-26 18:10:25 8201
原创 多线段几何图形—— 简单几何图形(判断一个点是否在图形的内部)
先给出结论以点为端点,朝两侧发射射线(两根射线平行),如果任意一侧的交点个数为偶数个,那么这个点就不在几何体的内部,反之在几何体的内部。以上图为例,红色的点为需要判断的点,射线组合p,n,q都是合法的检测线(图上的p,n,q代表的是同时两侧的射线,同时我们称图中字母所在的一侧为正,例:p正射线)采用p,n,q甚至任意两根平行射线,这个条件都是满足的。(上图中p,
2016-08-17 15:02:53 6105 1
原创 数学基础 —— 向量旋转到另一个向量
如上图 已知V,U向量,如何求V逆时针旋转到U的角度? U逆时针旋转到V的度数?(1)单位化V,U(2)U,V点乘获取到一个值A(3)通过反三角函数ACos 获取到弧度值,然后在转为角度值B。(4) 如果是V逆时针旋转到U,那么V叉乘U,反之如果是U逆时针旋转到V,那么U叉乘V ,得到一个值K。 2d 向量的叉乘(5)如果K值为负数,那么旋转角度为360-B
2016-08-07 18:46:38 10520
原创 多线段几何图形—— 简单几何图形(获取一个在图形内部的点)
如何获取一个点,在几何体的内部。(1)找出图形内一个可以裁剪的角,然后角的两边的端点连成一根线段。 ( 如何找出图形内可以裁剪的角参考: 图形如何三角化)(2)使用这个连线的中点就 一定在图形的内部。以下图为例(1) 假设A点为裁剪点。 (2)那么BE线段的中点就是我们要的点。
2016-08-07 18:05:39 1944 5
原创 三角形 —— 基础
计算三角形的面积1.已知三角形的三点,求面积。(1)海伦公式求出三边长为a,b,cp=(a+b+c)/2 则面积的平方 s^2=p*(p-a)*(p-b)*(p-c) (2)向量的叉乘利用向量的叉乘求出四边形的面积,然后面积/2就是三角形的面积 ps: 向量的叉乘
2016-08-06 18:21:41 647
原创 多线段几何图形—— 简单几何图形(多边形三角形化)
1.对凸多边形的三角化(没有凹角的多边形叫做凸多边形)如上图,凸多边形的三角化是个很简单的问题(1)使用当前点和前后两个点,构成一个三角形,保存到三角形数组中。(2)删除当前点,形成一个新的图形。(3)重复(1)(2)操作直到点只剩3个时终止,并且把这三个点构成一个三角形,保存到三角形数组中。2.凹多边形的三角化(1)求出所有角的凹凸
2016-08-06 17:50:02 4397 3
原创 多线段几何图形—— 简单几何图形(如何判别图形的顺逆性)
其实说图形的顺逆性,更不如说如何给图形的方向定下一个标准。可通过下列方法得到一个标准。1.获取图形内的凸角。 如何判断几何图形的凹凸角2.求出这个凸角的叉乘值。 如何求2D的叉乘值3.对这个叉乘值的正负给出定义(例如,叉乘为负数时我们定义为正时针图形,反之定义为逆时针图形)ps:对于图形,坐标系不一样是顺逆时针性也不一样,所以建议不要定义
2016-08-06 17:39:28 1077
原创 多线段几何图形—— 简单几何图形(求几何图形面积)
1.有向面积(1)三角形的有向面积如下图所示,我们根据2d的向量叉乘就能求出来一个有向面积。(2)多边形的有向面积 1.选取任意一点,这点与所有的线段构成的三角形面积之和就是多边形的面积 如上图所示,我们我们选取一个点E作为参考点(选取原点作为参考点是可以直接获取两个向量,减少运算量),然后使用循环历练每条边求出每个三角形的有向面
2016-08-06 16:00:25 1860
原创 多线段几何图形—— 简单几何图形(如何求图形中的凸角、凹角)
1.简单几何体找出一个凸角,在构成这个几何体的所有点中,找到一个点的x或y的值是最大或最小,那么这个点对应的角一定是凸角。2.简单几何体找出所有凹凸角,先利用第一条,求出一个凸角,然后利用
2016-08-05 23:28:39 3603
原创 多线段几何图形 —— 类型定义
1.简单几何图形 简单几何图形指,不包含洞,且没有重叠的几何图形。2.复杂几何图形复杂几何图形指,包含洞,或者有重叠的几何图形
2016-08-05 19:21:42 929
原创 数学基础 —— 旋转(2D 正旋转)
一般的来讲大家喜欢称旋转为正时针旋转,或者逆时针旋转,例如我让一个点绕圆心旋转90°,大家都会理解为逆时针吧这个点旋转90°,实际上这个说法是存在漏洞和错误的,当我们的坐标系不使用左手坐标系时这个说法是错误的,所以在此定义 一个正旋转。即,2d中,坐标轴,x轴朝y轴方向旋转90°和y轴重合的方向视为正旋转。(通俗的来讲就是x轴旋转到y轴只需要旋转90°,那么这个旋转就是正旋转)
2016-08-05 18:56:41 6249
原创 数学基础 —— 向量运算(叉乘)
向量的叉乘,求通知垂直两个向量的向量,即c垂直于a,同时c垂直于b(a与c的夹角为90°,b与cc的夹角为90°)c = a×b = (a.y*b.z-b.y*a.z , b.x*a.z-a.x*b.z , a.x*b.y-b.x*a.y)以上图为例a(1,0,0),b(0,1,0),c=a×b = (0,0,1) 叉乘的几何意义 |c|=|a×b
2016-08-05 17:17:57 122967 2
原创 数学公式 —— 向量
向量点乘公式a·b = a.x*b.x+a.y*a.y = |a| |b|cosα (以二维向量为例,三维向量公式同理)也就是说两个向量的点积等同于两个向量的模(向量的长度)相乘,在乘以两个向量的夹角α的cos值(两个向量的夹角永远是最小的那个夹角,即α
2016-08-05 12:58:52 4581
原创 数学基础 —— 向量基础(二)
向量基以二维向量为例,向量基有两个(1,0),(0,1),也就是x轴和y轴,由这组基底就能表示平面内所有向量。例如一个向量u(2,2)可以表示为v(2,0)+w(0,2)或者 2(1,0)+2(0,1)也就是两个基向量倍数的和。
2016-08-03 21:51:10 732
原创 数学基础 —— 向量基础(一)
向量用术语化的描述来讲就是一个有长度大小,方向的量 ,但是没有位置。用通俗的话来说向量就是从原点到点形成的一个线段
2016-08-03 21:29:30 626
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人