Skip to Content
算法技术手册(原书第2 版)
book

算法技术手册(原书第2 版)

by George T.Heineman, Gary Pollice, Stanley Selkow
August 2017
Intermediate to advanced
360 pages
8h 35m
Chinese
China Machine Press
Content preview from 算法技术手册(原书第2 版)
计算几何
239
计算几何
为了避免平凡解,我们假设
|
P
|
3
而且不存在过于接近的两个点。如果两个点太过接
近,而且其中一个点属于凸包,那么
凸包扫描
算法将会错误地选择一个无效的凸包点(或
者抛弃一个有效的凸包点),但是考虑到两点过于接近,这种错误可以忽略不计。
9.3.2 使用环境
凸包扫描
算法只需要一些最基本的操作(如乘法和除法),因此比另外一种凸包算法
GrahamScan
Graham
1972
)要简单得多,这是因为算法需要使用第
3
章证明过的
三角恒等式。由于
凸包扫描
算法并不采用递归,所以它可以处理大规模的数据。
如果输入的点均匀分布,那么可以使用
桶排序
,在
O
(
n
)
的时间内将点排好序,算法最后
的总体性能也是
O
(
n
)
,这种实现是最快的。但是如果没有点集的分布信息,那么可以使
堆排序
来将排序的性能限制在
O(
n
log
n
)
。这些实现的代码都可以在代码库中找到。
9.3.3 决方案
9-1
的代码展示了
凸包扫描
算法如何计算上凸包。最后的凸包是需要合并上下两个凸
包。
9-1
:凸包扫描算法
public class ConvexHullScan implements IConvexHull {
public IPoint[] compute(IPoint[] points) {
//
排序
x
坐标,如果
x
坐标相等,排序
y
坐标。
int n = points.length;
new HeapSort<IPoint>().sort(points, 0, n - 1, IPoint.xy_sorter); ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

机器学习实战:基于Scikit-Learn、Keras 和TensorFlow (原书第2 版)

机器学习实战:基于Scikit-Learn、Keras 和TensorFlow (原书第2 版)

Aurélien Géron
Go语言编程

Go语言编程

威廉·肯尼迪

Publisher Resources

ISBN: 9787111562221