Assignment 1-3 :Pattern Recognition

题目描述

大概意思就是让你找出包含四个点以上的直线。

Point API 的实现略(因为不熟悉 Java 的 Comparator,是对着课件的模板写的。。。)

Brute force 要求:The order of growth of the running time of your program should be N4 in the worst case and it should use space proportional to N plus the number of line segments returned.  And will not supply any input to BruteCollinearPoints that has 5 or more collinear points.

因为输入中不会出现5点一线的情况,因此该API的实现大大简化了。

想法:4个循环,每个循环的初值都是前一个循环的值+1。在每个循环中检测斜率,如果两两之间斜率相等,那么就成立。但实现后发现线段长度比他提供的样例输出短,想到我们没有正确辨识出端点。因此在我们的循环中不断更新两个变量 Point 类的变量 min,max,其值为四个端点中的最大最小点(即为线段的端点)。

FastCollinearPoints :The order of growth of the running time of your program should be N2 log N in the worst case and it should use space proportional to N plus the number of line segments returned. FastCollinearPoints should work properly even if the input has 5 or more collinear points.

根据提示,运用排序简化。但面临一个问题:在组成线段的点大于四个时,我们如何判断出两个点是线段的端点?思想是一样的,就是找到线段的最小,最大两点(即两个端点)。但由于组成线段的点可能大于四个,因此我们要稍微改变下策略。我们可以先复制一个 points 数组,然后在其中将 point 根据大小排序。然后在我们寻找线段过程中可以引入这样一个测试来检测是否为两个端点:如果在斜率相同的点间,有点小于比价的点,那么这个点肯定就不可能是端点(出现这种情况表示,那么更小的点,更适合当端点)。大概方法是这样,但还要处理其他细节(那个相同的点怎么办? 开始不知道线段的多少,因此该如何存储线段?)

具体代码见 github

2015-10-03

时间: 2024-08-05 06:50:52

Assignment 1-3 :Pattern Recognition的相关文章

Programming Assignment 3 : Pattern Recognition

这周的这个问题是在给定一系列的点中寻找多点共线的模式. 计算机视觉重要的两个部分:特征检测(Feature Dectection)和模式识别(Pattern Recognition).特征检测提取出图片的重要特征,模式识别发掘出这些特征中的模式.这里探究的点共线的问题在现实生活中也有很多应用,比如统计数据分析. Problem. 从二维平面上的N个互不相同的点中,绘制出每个(最多)连接的4个或4个以上点集合的线段. Point data type. 给定的Point类型的API public c

6CCS3PRE & 7CCSMPNN Pattern Recognition

6CCS3PRE & 7CCSMPNN Pattern RecognitionCoursework Assignment 1This coursework is assessed. A type-written report needs to be submitted online through KEATSby the deadline specified on the module's KEATS webpage. Only include in your report theinforma

Pattern Recognition and Machine Learning (preface translation)

前言 鉴于机器学习产生自计算机科学,图像识别却起源于工程学.然而,这些活动能被看做同一个领域的两个方面,并且他们同时在这过去的十年间经历了本质上的发展.特别是,当图像模型已经作为一个用来描述和应用概率模型的框架出现时,贝叶斯定理(Bayesian methods)就已经从一个专家级别的知识范畴发展成为主流.通过一系列近似算法推论,例如变分贝叶斯和期望传播(variational Bayes and expectation propagation),贝叶斯定理的实际适用范围也已经大幅度的提高.与此

JAVA正则表达式:Pattern类与Matcher类详解(转)

java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.它包括两个类:Pattern和Matcher Pattern 一个Pattern是一个正则表达式经编译后的表现模式. Matcher 一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查. 首先一个Pattern实例订制了一个所用语法与PERL的类似的正则表达式经编译后的模式,然后一个Matcher实例在这个给定的Pattern实例的模式控制下进行字符串的匹配工作

JAVA正则表达式:Pattern类与Matcher类详解

java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.它包括两个类:Pattern和Matcher Pattern 一个Pattern是一个正则表达式经编译后的表现模式. Matcher 一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查. 首先一个Pattern实例订制了一个所用语法与PERL的类似的正则表达式经编译后的模式,然后一个Matcher实例在这个给定的Pattern实例的模式控制下进行字符串的匹配工作

模式识别(Pattern Recognition)书单

Recommended Books Here is a list of books which I have read and feel it is worth recommending to friends who are interested in computer science. Machine Learning Pattern Recognition and Machine Learning Christopher M. Bishop A new treatment of classi

正则表达式:Pattern 与Mtcher

java.util.regex包是一个用于匹配字符序列与正则表达式指定的类库包.这个包中包含有三个类:Pattern.Matcher和PatternSyntaxException. Pattern:正则表达式经编译后的表现模式 Matcher:一个Matcher对象是一个状态机器,依据Pattern对象作为匹配模式对字符串展开匹配检查. 使用流程:     首先使用Pattern的一个静态方法Complie来创建Pattern对象. Pattern n=Pattern.Complie(regax

模式识别(Pattern Recognition)学习笔记(二十四)--总结:SVM学习资源

本篇文章对不同阶段的SVM进行一个梳理和总结,不管是初级版的SVM,还是升级版的SVM,你都会发现其实在SVM中一直是有两个核心在贯穿其中的,相信看完本篇的学习,你就会对SVM这个重要级的分类器有个全面的了解,或者有自己的体会,好吧,开始吧,Good luck.. 1.核心思想 对于任何非线性方法,如果对特征进行适当的变换,那么久总可以得到相应的线性方法,但是这种变换有时会带来两个方面的问题: 1)变换后特征空间维数必定变大,而且大多数情况下是随着样本原特征维数的增加以及非线性程度的增加而呈指数

Esper学习之十四:Pattern(一)

1. Pattern Atoms and Pattern operatorsPattern是通过原子事件和操作符组合在一起构成模板.原子事件有3类,操作符有4类,具体如下: 原子事件:1). 普通事件:包括POJO,Map,Array,XML2). 时间事件:包括间隔n个时间单位.crontab3). 自定义插件:用于观察特定事件的发生 操作符:1). 重复操作符:every, every-distinct, [num] and until2). 逻辑操作符:and, or, not3). 顺序