自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数学表达式学作学习第四天-第五天

第四天:原文链接:https://blog.csdn.net/minfanphd/article/details/119255667?spm=1001.2014.3001.55011.定义无向网络.Definition: A undirected net is a tupleG=(V,w)G=(\mathbf{V}, w)G=(V,w), whereV\mathbf{V}V is the set of nodes;w:V×V→Rw:\mathbf{V}\times\mathbf{V}\to\mat

2021-08-06 22:31:27 226

原创 论文写作数学表达式学习第三天

8.4 作业原文链接1.将向量下标为偶数的分量 (x2, x4, …) 累加, 写出相应表达式.∑i=2,4,…xi\displaystyle\sum_{i=2,4,\dots}xii=2,4,…∑​xi2.各出一道累加、累乘、积分表达式的习题, 并给出标准答案.计算: 1+2+⋯+101 + 2 + \dots + 101+2+⋯+10∑i=110i=55\sum_{i = 1}^{10} i=55∑i=110​i=55计算: 1×2×⋯×101 \times 2 \times\dots\t

2021-07-28 22:31:01 355

原创 论文写作数学表达式学习第二天

4.6作业原文链接1.令 A={1,2,5,8,9}\mathbf{A} = \{1, 2, 5, 8, 9\}A={1,2,5,8,9}, 写出 A\mathbf{A}A “模 2 同余” 关系及相应的划分.R={<a,b>∈R∣amod  2=bmod  2}\mathbf{R} = \{<a, b> \in \mathbb{R} \vert a \mod 2 = b \mod 2\}R={<a,b>∈R∣amod2=bmod2}.R={{1,5},{1,9

2021-07-27 23:29:32 232

原创 论文写作数学表达式学习:第一天

第一天作业:1.6描述你在学习、使用数学表达式时的困难, 可举例说明.在看公式比较多的论文时,数学公式表达的准确与否和是否规范难严重影响我们的理解能力,再加上自身的数学功底问题,会经常遇到看不懂的数学公式。久而久之会产生对论文中的数学表达式产生“畏惧”的心态,导致看不下去文献,领会不了文章的主要思想。因此,从头专门学习论文写作数学表达式是很有必要的,也可以重新复习一遍数学知识。2.6令A={3,5},写出2A2^{\mathbf{A}}2A2A={∅,{3},{5},{3,5}}2^{\mathbf

2021-07-26 22:20:47 510

原创 Java学习第57-58天

第 57 天: kMeans 聚类 (续)获得虚拟中心后, 换成与其最近的点作为实际中心, 再聚类.//当前临时实际中心点与平均中心点的距离 double[] tempNearestDistanceArray = new double[numClusters]; //当前距离平均中心最近的实际点 double[][] tempActualCenters = new double[numClusters][dataset.num

2021-07-20 21:33:47 94

原创 Java学习第56天: kMeans 聚类

k均值聚类算法(k-means clustering algorithm)是一种迭代求解的聚类分析算法,其步骤是,预将数据分为K组,则随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。聚类中心以及分配给它们的对象就代表一个聚类。每分配一个样本,聚类的聚类中心会根据聚类中现有的对象被重新计算。这个过程将不断重复直到满足某个终止条件。终止条件可以是没有(或最小数目)对象被重新分配给不同的聚类,没有(或最小数目)聚类中心再发生变化,误差平方和局

2021-07-18 22:15:54 294

原创 Java学习第55-56天

第 54 天: 基于 M-distance 的推荐这里夹带一点私货, 即论文 Mei Zheng, Fan Min, Heng-Ru Zhang, Wen-Bin Chen, Fast recommendations with the M-distance, IEEE Access 4 (2016) 1464–1468 的源代码. 点击下载论文http://www.fansmale.com/downloadRAR/publicationPdf/ZM01.pdf1.评分表 (用户, 项目, 评分) 的

2021-07-17 22:28:08 148 1

原创 Java学习第52-53天:KNN分类器(续)

第52天主要任务:1.重新实现 computeNearests, 仅需要扫描一遍训练集, 即可获得 k kk 个邻居. 提示: 现代码与插入排序思想相结合.2.增加 setDistanceMeasure() 方法.3.增加 setNumNeighors() 方法.代码分别如下: /** * @Description: 计算最近的k个邻居。在每一轮扫描中选择一个邻居 * @Param: [paraIndex] * @return: int[] */

2021-07-13 21:26:59 188 1

原创 Java学习第51天:kNN 分类器

这个代码 300 行, 分三天完成. 今天先把代码抄完并运行, 明后天有修改程序的工作. 要求熟练掌握.1.两种距离度量.2.数据随机分割方式.3.间址的灵活使用: trainingSet 和 testingSet 都是整数数组, 表示下标.4.arff 文件的读取. 需要 weka.jar 包.5.求邻居.下载并安装weka.jar包,加载arff文件,代码如下:package machinelearning.knn;import java.util.Arrays;import

2021-07-11 22:09:48 229 1

原创 Java学习第48天:堆排序

堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如下图:堆排序的基本思想是:将待排序序列构造成一个大顶堆,此时,整个序列的最大值就是堆顶的根节点。将其与末尾元素进行交换,此时末尾就为最大值。然后将剩余n-1个元素重新构造成一个堆,这样会得.

2021-07-08 19:56:47 100

原创 Java学习第47天:选择排序

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。代码如下:/** * @Description: 选择排序 * @Param: [] * @return: void */ public void selectionSort()

2021-07-06 23:18:45 86

原创 Java学习第45天:冒泡排序

冒泡排序也就是每次将最大或最小的元素往上交换,就像气泡一样往上飘。基本学习编程的同学入门都会,就不多说了,可以自行查阅,比较简单。代码如下: /** * @Description: 冒泡排序 * 这里采用的是从左至右 * @Param: [] * @return: void */ public void bubbleSort() { boolean tempSwapped; DataNode tempNode;

2021-07-04 21:50:47 138

原创 Java学习第44天:希尔排序

希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破O(n2)的第一批算法之一。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。代码如下:/** * @Description: 希尔排序 * @Param: [] * @return: void */ public void she

2021-07-03 20:34:32 79

原创 Java学习第43天: 插入排序

插入排序是简单直接的排序方式之一,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动。按照此法对所有元素进行插入,直到整个序列排为有序的过程,称为插入排序。插入排序概述图在昨天代码中继续添加以下代码: /** * @Description: 直接插入排序 * @Param: [] * @retur...

2021-07-02 21:29:35 90

原创 Java学习第41天:顺序查找与折半查找

1、顺序查找又称作线性查找,主要用于在线性表中进行查找。适用于对一般无序线性表的查找。基本思想:从线性表的一端开始查找,逐个检查关键字是否满足给定的条件。2、折半查找用于在有序的线性表中进行查找。基本思想:首先将给定的key值与线性表中中间位置的元素进行比较,若相等则查找成功,若不相等,则在线性表的中间元素之外的前半部分或后半部分进行查找。如此重复。假设查找的数组区间为 [min,max],min 代表起始索引,max 代表结束索引,T 代表需要查找的值。第一步:确定该区间的中间位置 K

2021-06-30 20:53:09 335

原创 Java学习第39-40天

第39天:关键路径在今天中主要需要理解拓扑排序和关键路径的概念,其中拓扑排序是完成关键路径计算的重要一环。拓扑排序:拓扑排序是对有向无环图的顶点的一种排序,它使得若存在一条从顶点A到顶点B的路径,则在排序中顶点B出现在顶点A的后面。某校的选课系统规定,每门课可能有若干个先修课,如果要修读某一门课程,则必须要先 修完所有的先修课才能修读。假设一个学生同时只能报一门课程,那么选课系统允许他修完所有课程的顺序就是一个拓扑序...从上述小例子中可以看出,拓扑排序是一个有效的任务顺序,每一门课对应有向图的一

2021-06-29 21:28:37 87

原创 Java学习第38天:Dijkstra 算法与 Prim 算法

prim算法是最小生成树算法,它运用的是贪心原理,设置两个点集合,一个集合为要求的生成树的点集合A,另一个集合为未加入生成树的点B。它的具体实现过程是:(1):所有的点都在集合B中,A集合为空。(2):任意以一个点为开始,把这个初始点加入集合A中,从集合B中减去这个点。寻找与它相邻的点中路径最短的点,如后把这个点也加入集合A中,从集合B中减去这个点。(3):更新未被访问的节点的dist[]值。(4):重复上述过程。一直到所有的点都在A集合中结束。Dijkstra是计算最短路径的...

2021-06-27 22:14:51 173

原创 Java学习第37天:十字链表

概念:十字链表是为了便于求得图中顶点的度(出度和入度)而提出来的。它是综合邻接表和逆邻接表形式的一种链式存储结构。在十字链表存储结构中,有向图中的顶点的结构如下所示:其中data表示顶点的具体数据信息,而firstIn则表示指向以该顶点为弧头的第一个弧节点。而firstOut则表示指向以该顶点为弧尾的第一个弧节点。为了表示有向图中所有的顶点,采用一个顶点数组存储每一个结点,如下图所示。从十字链表的数据结构来看,每一个顶点对应两个链表:以该顶点为弧尾的弧结点所组成的链表以及以该..

2021-06-26 21:38:55 232

原创 Java学习第35-36天

Java学习第35天:图的 m 着色问题问题描述: 给定无向连通图 G 和 m 种不同的颜色。用这些颜色为图 G 和各顶点着色,每个顶点着一种颜色。是否有一种着色法使得图 G 中每条边的两个顶点着不同的颜色。这个问题是图的 m 可着色判定问题。若一个图最少需要 m 种颜色才能使图中的每条边连接的两个顶点着不同的颜色,则称这个数 m 为该图的色数。求一个图的色数 m 的问题称为图的 m 可着色优化问题。四色问题是m图着色问题的一个特例,根据四色原理,证明平面或球面上的任何地图的所有区域都至多可用四

2021-06-25 21:29:51 281

原创 Java学习第32天-34天

Java学习第32天:图的连通性检测1.什么是结点的连通性?若图 G 中两个不同的结点 u 和 v 存在路径 e,则称结点 u 和结点 v 连通。2.什么是图的连通性?若图 G 中任意两个结点连通,则称图 G 连通。检测原理:适用于有向图. 反正无向图是有向图的特殊形式;0 次方的时候是单位矩阵;为每一个方法写一个独立的测试方法. 测试代码有时比正常使用的代码更多;第一个测试用例是无向图, 第二个是有向图.可以看到, 后者从节点 1 不能到达节点 0.代码如下:pac.

2021-06-24 21:01:57 131

原创 Java学习第30天:Huffman 编码 (编码与解码)

主要任务:今天主要是根据前两天构建的Huffman树来获得Huffman编码。继续在昨天代码继续添加以下代码: /** ********************* * 前序遍历. ********************* */ public void preOrderVisit(HuffmanNode paraNode) { System.out.print("(" + paraNode.character + ", " + paraNode.weight + ") ");

2021-06-19 21:50:40 109

原创 Java学习第29天:Huffman 编码 (建树)

主要任务:今天主要是将Huffman树建立起来,首先需要将字符的数据构建起来,也就是相应的权值,然后根据出现的字符数量创建相对应的节点,最后根据Huffman树定义将节点连接起来构成H

2021-06-18 13:33:29 106

原创 Java学习第28天:Huffman编码(节点定义与文件读取)

 Huffman树可以根据输入的字符串中某个字符出现的次数来给某个字符设定一个权值,然后可以根据权值的大小给一个给定的字符串编码,或者对一串编码进行解码,可以用于数据压缩或者解压缩,和对字符的编解码。...

2021-06-17 21:58:51 161

原创 Java学习第27天:汉诺塔问题

汉诺塔问题永远可以划分为3个步骤:把 n-1 号盘子移动到缓冲区 把1号从起点移到终点 然后把缓冲区的n-1号盘子也移到终点 package day27;public class Hanoi { /** ********************* * 汉诺塔的移动函数. * * @param paraSource * 原始存放塔. * @param paraIntermedium * 过渡塔. * @par

2021-06-16 21:28:14 82

原创 Java学习第26天:二叉树深度遍历的栈实现 (前序和后序)

主要任务:以为前序和后序要比中序难很多, 其实并没有.前序与中序的区别, 仅仅在于输出语句的位置不同.二叉树的遍历, 总共有 6 种排列: 1) 左中右 (中序); 2) 左右中 (后序); 3) 中左右 (前序); 4) 中右左; 5) 右左中; 6) 右中左. 我们平常关心的是前三种, 是因为我们习惯于先左后右. 如果要先右后左, 就相当于左右子树互换, 这个是很容易做到的.如果将前序的左右子树互换, 就可得到 4) 中右左; 再进行逆序, 可以得到 2) 左右中. 因此, 要把前序的代码改为后

2021-06-15 17:36:22 1183 1

原创 Java学习第25天:二叉树深度遍历的栈实现(中序)

主要任务:1.具有通用性的对象栈:改写栈程序, 里面存放对象.该程序应该放在 datastructure.stack 包内.还是依靠强制类型转换, 支持不同的数据类型. 增加了 isEmpty() 方法.

2021-06-15 17:21:00 332

原创 Java学习第24天:二叉树的建立

主要任务:只增加了一个构造方法, 相当于第 22 天的逆过程. 保留了调拭语句, 因为下标很容易出错. 使用一个线性表先分配所有节点的空间, 再将节点链接起来. 最后并没有返回, 而是把第 0 个节点的相应值拷贝给自己....

2021-06-15 16:21:22 181

原创 Java学习第23天:使用具有通用性的队列

任务昨天使用的队列有两种: 存储二叉树节点的队列; 存储整数的队列. 这样的话, 难道我们要为每种类型单独写一个队列? 这样显然没有充分利用代码的复用性. 实际上, 我们只需要一个存储对象的队列就够啦!Java 里面, 所有的类均为 Object 类的 (直接或间接) 子类. 如果不写就默认为直接子类. 例如public class CircleObjectQueue;等价于public class CircleObjectQueue extends Object;存储对象的队列, 实际上是存储

2021-06-12 20:45:36 64

原创 Java学习第22天:二叉树的存储

主要任务:先使用层序遍历的方式获得节点的位置和值,表示为两个向量用顺序存储。1.public class CircleObjectQueue { /** * 队列长度,有一个空间不能使用. */ public static final int TOTAL_SPACE = 10; /** * The data. */ Object[] data; /** * The index of the head. */ int head; /** * The i

2021-06-11 23:09:34 105 2

原创 Java学习第21天:二叉树的深度遍历的递归实现

主要任务:了解和学习二叉树的基本概念和相关定义,然后建立一个二叉树,实现package day21;import java.util.Arrays;public class BinaryCharTree { /** * The value in char. */ char value; /** * The left child. */ BinaryCharTree leftChild; /** * The right child. */ BinaryChar

2021-06-10 23:29:01 150

原创 Java学习第20天:数据结构学习总结

1.面向对象与面向过程相比, 有哪些优势?结构清晰,程序是模块化和结构化,更加符合人类的思维方式;易扩展,代码重用率高,可继承,可覆盖,可以设计出低耦合的系统;易维护,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活,更易于维护,系统低耦合的特点有利于减少程序的后期维护工作量。2.比较线性表和链接的异同....

2021-06-09 20:13:10 178

原创 Java学习第19天:字符串匹配

主要任务:String 是 Java 常用的类, 这里重新实现下部分功能.19.2 转义符 , 有了它才能正常打印引号.19.3 简单的越界检查.

2021-06-08 20:16:37 76

原创 Java学习第18天:循环队列

主要任务:学习理解和掌握循环队列的使用,理解起来相对较复杂,建议看下书和画图理解。package day18;public class CircleIntQueue { /** * 总空间,有一个空间永远不用. */ public static final int TOTAL_SPACE = 10; /** * The data. */ int[] data; /** * The index of the head. */ int head; /**

2021-06-07 21:52:07 65

原创 Java学习第17天:链队列

主要任务:学习链队列的使用。链队列:使用链表实现的队列;具有对头指针和队尾指针,指示队列元素所在的位置。package day17;public class LinkedQueue { /** * 内置类. */ class Node { /** * The data. */ int data; /** * 对下一个节点的引用. */ Node next; /** *******************

2021-06-06 20:56:23 51

原创 Java学习第16天:递归

主要任务:学习理解和掌握递归的用法,相对比较简单。package day16;public class Recursion { /** ********************* * 一直求和到N。没有循环,但是使用了堆栈。 * * @param paraN * The given value. * @return The sum. ********************* */ public static int sumToN(int

2021-06-05 20:37:03 71

原创 Java学习第15天:栈的应用

主要任务:检查一个字符串的括号是否匹配. 所谓匹配, 是指每个左括号有相应的一个右括号与之对应, 且左括号不可以出现在右括号右边. 可以修改测试字符串, 检查不同情况下的运行.15.1 仅在昨天的代码基础上增加了一个 bracketMatching 方法, 以及 main 中的相应调语句.15.2 操作系统的核心数据结构. 对于计算机而言, 如何降低时间、空间复杂度才是王道.15.3 除了关注的括号, 其它字符不起任何作用.15.4 一旦发现不匹配, 就直接返回, 不用罗嗦....

2021-06-04 15:59:00 121 1

原创 Java学习第14天:栈的使用

主要任务:理解和掌握栈的创建和使用。package day14;public class CharStack { /** * The depth. */ public static final int MAX_DEPTH = 10; /** * The actual depth. */ int depth; /** * The data */ char[] data; /** ********************* * 创建一个空的连续列表.

2021-06-04 12:18:31 76

原创 Java学习第十三天:链表

13.1 支持与顺序表相同的操作: 初始化、插入、删除等.13.2 为节点建一个类.13.3 引用与指针的异同. 前者只能使用; 后者可以支持 p ++ 危险操作.13.4 引用数据类型的赋值, 都不会产生新的对象空间.13.5 链表与线性表在插入、删除时的不同: 前者不移动元素, 只改变引用 (指针).13.6 今天的代码稍微多一点, 不过有昨天的铺垫, 还好.13.7 第一个版本中, 128 和 164 行的 if 语句中都少了一个 .next, 导致对最后一个位置的检查出错 (空指针异常)

2021-06-02 22:59:02 55 1

原创 Java学习第12天:数据结构顺序表(二)

今天的代码直接在昨天的基础上jingx.12.1 查找给定元素所处的位置. 找不到就返回 -1.12.2 在给定位置增加元素. 如果线性表已满, 或位置不在已有位置范围之内, 就拒绝增加. 该位置可以是在最后一个元素之后一个.12.3 删除定定位置的元素. 要处理给定位置不合法的情况. 该位置必须是已经有数据的.12.4 函数 要求同样的输入参数获得同样的输出结果, 但 方法 所依赖的数据既包括参数列表中给出的,也依赖于对象的成员变量. 因此, 面向对象所涉及的参数列表要短些. 例如, locate

2021-06-01 21:36:44 66 1

原创 Java学习第11天:数据结构-顺序表(一)

在《数据结构》中, 使用“抽象数据类型”来描述不同的数据结构. 在《面向对象程序设计》中, 用对象来存储数据及其上的操作. 我认为, 它们的本质都是相同的.11.1 对象: 数据及其上操作的总和. 例如, 我是一个对象, 具有身高、体重、年龄、跑步速度等数据; 同时,我具有吃饭、睡觉、送快递等功能. 从计算机的发展来看, 第一阶段以操作 (函数) 为中心, 一个计算导弹轨迹的函数, 根据不同输入获得不同输出. 第二阶段以数据为中心, 即数据存放于数据库, 使用不同的算法来处理它. 第三阶段认为数据及其上的

2021-05-31 22:29:11 107 1

空空如也

空空如也

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

TA关注的人

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