生成 2D 中的非简并点集 - C++

2024-05-24

我想在 2D 平面中创建一大组非退化的随机点云(整个集合中没有 3 个点在一条直线上)。我有一个简单的解决方案,它生成一个随机浮点对 P_new(x,y) 并检查到目前为止生成的每对点 (P1, P2) 是否位于同一行。这需要 O(n^2) 检查添加到列表中的每个新点,使得整个复杂性为 O(n^3),如果我想生成超过 4000 个点(需要超过 40 分钟),这会非常慢。 有没有更快的方法来生成这些非退化点集?


您可以计算和比较线性方程的系数,而不是在每个循环迭代中检查可能的点共线性。该系数应存储在可快速搜索的容器中。我考虑使用 std::set,但 unordered_map 可以适合其中任何一个,并且可以带来更好的结果。

总而言之,我建议使用以下算法:

  1. 生成随机点p;
  2. Compute 系数 http://en.wikipedia.org/wiki/Linear_equation交叉线数p和现有的点(我的意思是通常A,B&C)。这里你需要做的n计算;
  3. 尝试在先前计算的集合中找到新计算的值。这一步需要n*log(n^2)最大程度地进行操作。
  4. 如果搜索结果为负,则添加新值并将其系数添加到相应的集合中。其成本约为O(log(n)) too.

整个复杂度降低为O(n^2*log(n))。 该算法需要额外存储n^2*sizeof(Coefficient)记忆。但如果您只想计算 4000 个点,这似乎没问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

生成 2D 中的非简并点集 - C++ 的相关文章

  • 结构化绑定中缺少类型信息

    我刚刚了解了 C 中的结构化绑定 但有一件事我不喜欢 auto x y some func is that auto正在隐藏类型x and y 我得抬头看看some func的声明来了解类型x and y 或者 我可以写 T1 x T2 y
  • 如何将 std::string& 转换为 C# 引用字符串

    我正在尝试将 C 函数转换为std string参考C 我的 API 如下所示 void GetStringDemo std string str 理想情况下 我希望在 C 中看到类似的东西 void GetStringDemoWrap r
  • 在模板类中声明模板友元类时出现编译器错误

    我一直在尝试实现我自己的链表类以用于教学目的 我在迭代器声明中指定了 List 类作为友元 但它似乎无法编译 这些是我使用过的 3 个类的接口 Node h define null Node
  • 没有特殊字符的密码验证器

    我是 RegEx 的新手 已经进行了大量搜索 但没有找到任何具体内容 我正在编写一个验证密码字符串的正则表达式 可接受的字符串必须至少具有 4 种字符类型中的 3 种 数字 小写字母 大写字母 特殊字符 我对包含有一个想法 也就是说 如果这
  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • 为什么 GCC 不允许我创建“内联静态 std::stringstream”?

    我将直接前往 MCVE include
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • C# - 当代表执行异步任务时,我仍然需要 System.Threading 吗?

    由于我可以使用委托执行异步操作 我怀疑在我的应用程序中使用 System Threading 的机会很小 是否存在我无法避免 System Threading 的基本情况 只是我正处于学习阶段 例子 class Program public
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么

随机推荐

  • Java特殊字符替换

    我有一段文字 Csukl si roham gy t rheti a sv deket annyit emlegetikmostans g ism t a sv d modellt Magyarorsz gon 在原始文本中根本没有换行符
  • 在 Select2 标签文本区域中创建新标签

    我有一个输入 文本区域 其中应用了 Select2 的标签 因此 当用户输入我的数据库中存在的项目名称时 它会显示匹配项目的列表 用户可以选择一个项目并创建一个标签 这是到目前为止我的基本标签功能的代码 usualSuppliers sel
  • AWS:Beanstalk 错误:操作被拒绝。您的权限正确吗?使用 EB CLI

    第一次尝试AWS托管 我使用 python3 4 eb CLI eb init 总是得到相同的错误输出 在同一用户的模拟器上 所有操作都是允许的 我哪里错了 为什么我总是收到错误 操作被拒绝 您的权限正确吗 使用 pip 安装 eb cli
  • 使用 PhoneGap 时将标题添加回 Android 窗口

    我正在使用 PhoneGap 构建一个应用程序 它调用 getWindow requestFeature Window FEATURE NO TITLE 在父 onCreate DroidGap 中 但是 我想重新添加标题 以便我可以使用
  • 当我使用 Mime 从 Python 发送时,Outlook 和 Thunderbird 未收到附件

    我试图在 python 中使用 MimeBase 发送一封带有附件的电子邮件 当我不使用 Thunderbird 或 Outlook 时 我什至可以发送电子邮件并接收 pdf 附件 并在浏览器中打开邮箱 mensagem MIMEMulti
  • 当 TestFlight/IAP 总是给出“无连接”错误时,如何接受“Apple 媒体服务条款和条件”?

    我正在通过 TestFlight 测试带有应用内购买的应用程序 最近 当我尝试测试购买应用内购买时 开始出现提示 Apple Media Services 条款和条件已更改 随后总是出现错误 无连接 互联网连接工作正常 如何解决这种情况并恢
  • Twitter Bootstrap 按钮组控制单选按钮/复选框

    我正在尝试使用Twitter Bootstrap 按钮组 http twitter github com bootstrap javascript html buttons作为一组实际的表单输入控件 默认情况下 这些按钮组的功能类似于单选按
  • 无法使用键“dataSource”注册 MBean [HikariDataSource (HikariPool-0)]

    我在 Java8 Oauth2 MySql Hazelcast 无集群http会话 组合的产品模式下遇到以下错误 开发模式运行良好 Unable to register MBean HikariDataSource HikariPool 0
  • Angular 2 - ngfor 无需包装在容器中

    我希望有一个 ul 元素 然后在我的 json 中我有包含来自各个社交媒体网站的列表 li 元素的 html 当我将 ngfor 放在列表项上时 会为每个输出的 json 记录创建多个 ul 可以将每个 li 输出为纯 html 而不将它们
  • 使用 R 数学独立库使用 C++ 编写矩阵/向量?

    All 我一直在使用 C 中的 R 数学独立库 我非常喜欢能够生成随机数并使用我熟悉的 R 分布函数 我的问题是 是否可以使用 R 中可用的矩阵运算 乘法 转置 逆 Chol 等 一个独立的库 我在 Rmath h 中没有看到它们 如果矩阵
  • 堆分配内存的线程安全

    我正在读这个 http en wikipedia org wiki Thread safety http en wikipedia org wiki Thread safety 下面的函数是线程安全的吗 void foo int y int
  • 使用消息存储拦截器进行 Struts 2 验证

    我有一个尝试让用户登录的操作 public class RegisteredUserAction extends ActionSupport implements SessionAware public String login throw
  • 在 UserControl 中使用 BindingSource

    我有一个包含多个字段的 UserControl 我希望将其绑定到 BindingSource 我还希望 UserControl 公开一些 BindingSource 属性 以便可以将其放在表单上并绑定到表单上的 BindingSource
  • Perl 6 字符将匹配哪些 Unicode 属性?

    The uniprop返回单个属性 put join A uniprop 我取回一项财产 一般类别 Lu 环顾四周 我没有找到一种方法来获取所有其他属性 包括派生属性 例如ID Start等等 我缺少什么 我知道我可以查看数据文件 但我宁愿
  • IIS7 和 MVC 2 出现 403.14 错误 已尝试了所有建议的修复方法

    ASP Net 4 框架上的 MVC 2 项目 我尝试在 IIS7 上设置它 但出现 403 14 错误 是的 我尝试了微软的修复 它启用了目录浏览 但与我想要的完全错误 是的 我运行了 aspnet regiis i 不 它仍然无法正常工
  • “WindowsError:[错误 2] 系统找不到指定的文件”未解决

    我已经通过 py2exe 创建了我的 python 项目的 exe 文件 其中有许多文件 当我在系统中运行这个exe文件时 它工作正常 但如果我把它放在另一个系统中 那么它会打开登录表单 然后它不会进入我在第二个 python 文件中编写的
  • StrRev() 不支持 UTF-8 [重复]

    这个问题在这里已经有答案了 我正在尝试编写一个代码来替换非阿拉伯支持的程序中支持的阿拉伯文本因为我需要在替换后反转文本 但它显示一些垃圾内容而不是想要的结果 这是代码 结果 After Reverse 我需要它是原来的样子 但相反 不是垃圾
  • 使用serializeAsV2生成具有向后兼容枚举的swagger.json

    最近我将我的api从netcore2 1升级到netcore3 1 我希望不要要求 api 用户重写他们的客户端 因此我希望我需要 swagger json 向后兼容 在旧的 swagger json 中 枚举看起来像 但现在看起来 我正在
  • Doctrine2 与条件的关联映射

    是否可以与教义 2 4 中的条件进行关联映射 我有实体文章和评论 评论需要管理员批准 评论的批准状态存储在布尔字段 approved 中 现在我有 OneToMany 关联映射到实体文章中的评论 它映射了所有评论 但我只想映射批准的评论 就
  • 生成 2D 中的非简并点集 - C++

    我想在 2D 平面中创建一大组非退化的随机点云 整个集合中没有 3 个点在一条直线上 我有一个简单的解决方案 它生成一个随机浮点对 P new x y 并检查到目前为止生成的每对点 P1 P2 是否位于同一行 这需要 O n 2 检查添加到