首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >找到所有的空三角形

找到所有的空三角形
EN

Stack Overflow用户
提问于 2015-07-06 07:10:52
回答 4查看 1.4K关注 0票数 10

我在平面上有一个小的N点集,N < 50

我想枚举集合中的所有三重点,它们构成一个不包含其他点的三角形。

尽管显而易见的蛮力解决方案对于我的微型N来说是可行的,但它具有复杂性O(N^4)

您知道一种降低时间复杂度的方法吗,比如O(N³)O(N²),这样可以保持代码的简单性?不允许图书馆。

令我惊讶的是,这样的三角形数量相当大。以任何一点为中心,通过增加其周围的角度对其他点进行排序。这形成了一个星形多边形,给N-1提供了空三角形,因此总共形成了Ω(N²).证明了这个界是紧平面点集,有少量的空凸多边形,I. Bárány和P. Valtr。

在点形成凸多边形的情况下,所有三角形都是空的,因此O(N³)。快速算法的概率越来越低:

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-07-06 07:50:42

本文提出了一种求解这一问题的算法,该算法以可能的输出三角形数为线性。

计算几何中的一个关键问题是对具有特殊性质的点集子集的识别。我们研究这个问题的性质是凸性和空性。我们证明了寻找空三角形与确定星形多边形中相互看见的顶点对的问题有关。该问题的线性时间算法是一个独立的问题,它给出了一个寻找所有空三角形的最优算法。然后将此结果推广到寻找空凸r-龙(r > 3)和确定最大空凸子集的算法中。最后,给出了高维的扩展。

票数 9
EN

Stack Overflow用户

发布于 2015-07-06 22:04:30

Dobkin、Edelsbrunner和Overmars的算法草图如下:

  • 对每一点依次,建立星型多边形形成围绕它周围的点在其左边。这需要N个排序操作(至少可以通过一种安排降低到总复杂度O(N 2))。
  • 计算这个星形多边形内的可见性图,并报告与给定点形成的所有三角形。这需要N个可见性图的构造,对于总共的M操作,其中M是空三角形的数目。

很短的时间内,从每一点开始,你就可以用各种可能的方式来构造它左边的每个空三角形,通过对相应的星形多边形进行三角剖分。

可见性图的构造是星形多边形的一个特殊版本,它在多边形周围的遍历中工作,其中每个顶点都有一个可见性队列,该队列将被更新。

图中显示的是蓝色的星形多边形,其可见性图的边缘以橙色表示。轮廓生成6个三角形,内部可见性边缘为8个。

票数 3
EN

Stack Overflow用户

发布于 2015-07-06 07:43:52

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for each pair of points (A, B):
    for each of the two half-planes defined by (A, B):
        initialize a priority queue Q to empty.
        for each point M in the half plane, 
            with increasing angle(AB, AM):
            if angle(BA, BM) is smaller than all angles in Q:
                print A,B,M
            put M in Q with priority angle(BA, BM)

在优先级队列中插入和查询最小值都可以在O(log )时间内完成,因此复杂度为O(N^3 log )。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31249392

复制
相关文章
LeetCode 1992. 找到所有的农场组(BFS)
给你一个下标从 0 开始,大小为 m x n 的二进制矩阵 land ,其中 0 表示一单位的森林土地,1 表示一单位的农场土地。
Michael阿明
2022/01/07
1800
LeetCode 1992. 找到所有的农场组(BFS)
使用 ProcessMonitor 找到进程所操作的文件的路径
很多系统问题都是可以修的,不需要重装系统,但是最近我还是重装了。发现之前正在玩的一款游戏的存档没有了……因为我原有系统的数据并没有删除,所以我还是能找回原来的游戏存档的。但是,我怎么知道这款游戏将存档放在了那个路径下呢?搜索当然是好方法,不过我喜欢玩的游戏大多是冷门游戏,有些搜不到。于是我就用 Process Monitor 找到了存档所在,恢复了我的游戏进度。
walterlv
2023/10/22
7600
使用 ProcessMonitor 找到进程所操作的文件的路径
Word VBA实战技巧:删除文档中所有的空段落
一种方法是使用Word的查找和替换功能,使用通配符查找:^13{2,},使用^p替换。另一种方法是使用VBA。
fanjy
2023/02/24
1.6K0
[PHP] 近期接手現有的企邮前端框架业务所遇困难
1.邮箱前端有三大产品线,包括免费邮箱,VIP邮箱,企业邮箱,使用的一套代码,在代码中进行的逻辑判断处理,根据不同的配置进行不同的业务操作.有很多逻辑是各产品线是不同的,需要仔细开发和判断才能不会影响到别的产品
唯一Chat
2019/09/29
6260
[PHP] 近期接手現有的企邮前端框架业务所遇困难
由单例模式的双判空所展开的思考
相信很多朋友对于单例模式都很熟悉,一般常见的就七八种,百度一大堆,这里聊一下双判空情况下的单例模式。 双判空单例是由单判空所演变而来的,是原来的一些程序员为了提升效率,主要是在JDK版本比较低的时候,锁是比较低效的,双判空从逻辑上可以解决线程的吊起、等待、调度等开销。但是双向判空的单例由于java虚拟机内存分配模型的问题,它并不能实现多线程安全了。
萬物並作吾以觀復
2018/09/13
6540
由单例模式的双判空所展开的思考
【Rust 日报】2021-12-23 Rust有什么是Zig所没有的?
这个是上周三即12月15日发布的消息了,目前官方透露的信息很少,给了一个简陋的官网:https://zed.dev/
MikeLoveRust
2021/12/24
2.8K0
空与非空:浅谈非空约束的影响
黄玮(Fuyuncat) 资深Oracle DBA,个人网www.HelloDBA.com,致力于数据库底层技术的研究,其作品获得广大同行的高度评价. 非空约束是字段的一个重要属性。但是,很多时候,数据库表的设计人员似乎并不十分在意这个属性。最常见的现象就是,除了主键字段外,所有字段都不指定该属性。而在Oracle中,默认是允许为空。 而实际上,优化器在选择执行计划时,非空约束是一个重要的影响因素。为了说明问题,我们建立以下测试表,然后分别说明非空约束在各种情况下对执行计划和性能的影响。 谓词评
数据和云
2018/03/06
3.2K0
空与非空:浅谈非空约束的影响
为什么有的人说话一定要带手势?生物学基础找到了
Alex 发自 凹非寺 量子位 | 公众号 QbitAI 灵魂拷问:你在日常讲话时,手会下意识地开始比划起来吗? 就好比意大利的友人们常做的这样(手动狗头): 有人开玩笑称:如果把意大利人的手绑起来,他们是否就不会说话了? 虽然目前尚无多少公开信息证明这点,不过若真这样的话,他们至少会非常不自在。 所以话说回来—— 为什么有人说话喜欢带手势? 德国研究者开展的一项实验表明,人在发出声音之时,天生就有一定的动手习惯,打手势会产生一些物理刺激,从而影响发声系统。 这可以生物力学角度来解释。 相关成果论文登上了
量子位
2022/09/06
5030
为什么有的人说话一定要带手势?生物学基础找到了
空对象和空的对象
空对象:表面内部不包含任何属性和方法的对象,比如var obj={}就是一个空对象
十月梦想
2018/08/29
1.3K0
【Kotlin】空安全 ③ ( 手动空安全管理 | 非空断言操作符 !! | 使用 if 语句判空 )
Kotlin 中的 可空类型 变量 , 在运行时 可以选择 不启用 安全调用 操作 ,
韩曙亮
2023/03/30
2K0
【Kotlin】空安全 ③ ( 手动空安全管理 | 非空断言操作符 !! | 使用 if 语句判空 )
sizeof(空类或空结构体)
A、 0           B、 1            C、 4           D、8
阳光岛主
2019/02/19
1.6K0
浅谈Kotlin(八):空安全、空类型
这样要比传统写法 if(name==null) -1 else name.length 要简介
听着music睡
2022/01/04
9500
浅谈Kotlin(八):空安全、空类型
React Hooks 的原理,有的简单有的不简单
React 是实现了组件的前端框架,它支持 class 和 function 两种形式的组件。
神说要有光zxg
2022/04/12
7320
React  Hooks 的原理,有的简单有的不简单
凭一张照片找到视频中你所有的镜头,包括背影丨商汤ECCV 2018论文
别担心,商汤可不是准备拍电影,而是提出了新的视频找人方法——也就是,无论一位电影明星演的是青春少女还是白发老人,无论TA露出了正脸还是侧颜,无论影片的镜头明亮鲜丽还是灰黄暗淡,AI都能精确的找到TA,TA的正脸、身姿和背影。
量子位
2018/08/08
4520
凭一张照片找到视频中你所有的镜头,包括背影丨商汤ECCV 2018论文
2021-09-30:加一。给定一个由 整数 组成的 非空 数组所表
2021-09-30:加一。给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。力扣66。
福大大架构师每日一题
2021/09/30
4940
JavaScript 判断空对象、空数组的方法
从表格中,我们可以看出想要判断是不是null, undefined , "", 0,都比较容易, 非操作 和 比较操作 都能实现。就是{}, []比较顽固,两种方法都无效。
celineWong7
2020/11/05
30K0
Shader 编程:只用一个函数就能生成三角形、矩形等所有的正多边形
前面发了一些关于 Shader 编程的文章,有读者反馈太碎片化了,希望这里能整理出来一个系列,方便系统的学习一下 Shader 编程。
字节流动
2023/09/04
7860
Shader 编程:只用一个函数就能生成三角形、矩形等所有的正多边形
【Kotlin】空安全总结 ( 变量可空性 | 手动空安全管理 | 空安全调用操作符 | 非空断言操作符 | 空合并操作符 | 空指针异常处理 | 先决条件函数判空 )
在 Java 语言 编写的程序中 , 出现最多的崩溃就是 NullPointerException 空指针异常 ,
韩曙亮
2023/03/30
1.8K0
【Kotlin】空安全总结 ( 变量可空性 | 手动空安全管理 | 空安全调用操作符 | 非空断言操作符 | 空合并操作符 | 空指针异常处理 | 先决条件函数判空 )
优雅判空
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
suveng
2019/09/18
1.3K0
点击加载更多

相似问题

如何找到我所拥有的提交版本?

15

如何才能找到一个元素所具有的onChange函数?

55

如何使用C找到我的系统所拥有的内存总量?

47

我能比我所拥有的更快地找到数组的索引吗?

12

pid零所拥有的TCP连接

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文