分治思想快包算法解决凸包问题_第1页
分治思想快包算法解决凸包问题_第2页
分治思想快包算法解决凸包问题_第3页
分治思想快包算法解决凸包问题_第4页
分治思想快包算法解决凸包问题_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

分治思想快包算法解决凸包问题e7d195523061f1c074694c8bbf98be7b1e4b015d796375963FD28840057458461C7CA0DAD340D15583DEDFC2E3241C4F392EF3A8B4D067B40CF4F149DD7E51F346B0CAB1BCCF6DB2480C67273C6C9E4CE0F3004E5C3397E9DBB399E827F1A1B4315D31B4A1FB924AA6F0CE797FFD0048F7FA626F7785968C67936054B24ADCC2455D90D09048EC83e7d195523061f1c074694c8bbf98be7b1e4b015d796375963FD28840057458461C7CA0DAD340D15583DEDFC2E3241C4F392EF3A8B4D067B40CF4F149DD7E51F346B0CAB1BCCF6DB2480C67273C6C9E4CE0F3004E5C3397E9DBB399E827F1A1B4315D31B4A1FB924AA6F0CE797FFD0048F7FA626F7785968C67936054B24ADCC2455D90D09048EC83-目录目录分治思想快速凸包算法代码实现e7d195523061f1c074694c8bbf98be7b1e4b015d796375963FD28840057458461C7CA0DAD340D15583DEDFC2E3241C4F392EF3A8B4D067B40CF4F149DD7E51F346B0CAB1BCCF6DB2480C67273C6C9E4CE0F3004E5C3397E9DBB399E827F1A1B4315D31B4A1FB924AA6F0CE797FFD0048F7FA626F7785968C67936054B24ADCC2455D90D09048EC83分治思想快包算法解决凸包问题凸包问题是在计算几何中的一个基本问题,给定一组点,我们需要找到一个包含所有点的最小凸多边形01解决这个问题的关键在于如何有效地确定凸包,特别是对于大量数据02分治算法是一个有效的解决方案,下面我们详细介绍这种算法03分治思想e7d195523061f1c074694c8bbf98be7b1e4b015d796375963FD28840057458461C7CA0DAD340D15583DEDFC2E3241C4F392EF3A8B4D067B40CF4F149DD7E51F346B0CAB1BCCF6DB2480C67273C6C9E4CE0F3004E5C3397E9DBB399E827F1A1B4315D31B4A1FB924AA6F0CE797FFD0048F7FA626F7785968C67936054B24ADCC2455D90D09048EC83e7d195523061f1c074694c8bbf98be7b1e4b015d796375963FD28840057458461C7CA0DAD340D15583DEDFC2E3241C4F392EF3A8B4D067B40CF4F149DD7E51F346B0CAB1BCCF6DB2480C67273C6C9E4CE0F3004E5C3397E9DBB399E827F1A1B4315D31B4A1FB924AA6F0CE797FFD0048F7FA626F7785968C67936054B24ADCC2455D90D09048EC83分治思想分治法是一种在每一步将问题分解为若干个小问题,然后将这些小问题的解组合成原问题的解的算法设计策略分治法的基本步骤是e7d195523061f1c074694c8bbf98be7b1e4b015d796375963FD28840057458461C7CA0DAD340D15583DEDFC2E3241C4F392EF3A8B4D067B40CF4F149DD7E51F346B0CAB1BCCF6DB2480C67273C6C9E4CE0F3004E5C3397E9DBB399E827F1A1B4315D31B4A1FB924AA6F0CE797FFD0048F7FA626F7785968C67936054B24ADCC2455D90D09048EC83分治思想01分解:将问题分解为两个或更多的相同或相似的子问题02解决:解决这些子问题03合并:将子问题的解合并,得到原问题的解e7d195523061f1c074694c8bbf98be7b1e4b015d796375963FD28840057458461C7CA0DAD340D15583DEDFC2E3241C4F392EF3A8B4D067B40CF4F149DD7E51F346B0CAB1BCCF6DB2480C67273C6C9E4CE0F3004E5C3397E9DBB399E827F1A1B4315D31B4A1FB924AA6F0CE797FFD0048F7FA626F7785968C67936054B24ADCC2455D90D09048EC83分治思想这种方法的好处是,每个子问题都可以被独立地解决,而且这些子问题的解决方式可以重复使用,从而提高了算法的效率快速凸包算法e7d195523061f1c074694c8bbf98be7b1e4b015d796375963FD28840057458461C7CA0DAD340D15583DEDFC2E3241C4F392EF3A8B4D067B40CF4F149DD7E51F346B0CAB1BCCF6DB2480C67273C6C9E4CE0F3004E5C3397E9DBB399E827F1A1B4315D31B4A1FB924AA6F0CE797FFD0048F7FA626F7785968C67936054B24ADCC2455D90D09048EC83e7d195523061f1c074694c8bbf98be7b1e4b015d796375963FD28840057458461C7CA0DAD340D15583DEDFC2E3241C4F392EF3A8B4D067B40CF4F149DD7E51F346B0CAB1BCCF6DB2480C67273C6C9E4CE0F3004E5C3397E9DBB399E827F1A1B4315D31B4A1FB924AA6F0CE797FFD0048F7FA626F7785968C67936054B24ADCC2455D90D09048EC83快速凸包算法快速凸包算法是一种用于求解二维凸包问题的分治算法,该算法由Barber、ollis和Toussaint于1992年提出。这种算法以点的顺序为基础,不断地删除不可能是凸包顶点的点,直到找到所有的顶点。具体步骤如下将所有的点按x坐标从左到右排序初始化一个空的凸包:将第一个点加入到凸包中从左到右遍历剩余的点:对于每一个点,都需要在当前的凸包中找到一个点(如果有的话)使得这个点和当前点确定的线段在当前的凸包之外。如果找不到这样的点,那么当前点就在凸包上。如果找到了这样的点,就更新凸包,用这两个点确定的线段来替换原来凸包上的那个点最后得到的凸包就是原问题的解e7d195523061f1c074694c8bbf98be7b1e4b015d796375963FD28840057458461C7CA0DAD340D15583DEDFC2E3241C4F392EF3A8B4D067B40CF4F149DD7E51F346B0CAB1BCCF6DB2480C67273C6C9E4CE0F3004E5C3397E9DBB399E827F1A1B4315D31B4A1FB924AA6F0CE797FFD0048F7FA626F7785968C67936054B24ADCC2455D90D09048EC83快速凸包算法这种算法的时间复杂度是O(nlogn),其中n是点的数量代码实现e7d195523061f1c074694c8bbf98be7b1e4b015d796375963FD28840057458461C7CA0DAD340D15583DEDFC2E3241C4F392EF3A8B4D067B40CF4F149DD7E51F346B0CAB1BCCF6DB2480C67273C6C9E4CE0F3004E5C3397E9DBB399E827F1A1B4315D31B4A1FB924AA6F0CE797FFD0048F7FA626F7785968C67936054B24ADCC2455D90D09048EC83e7d195523061f1c074694c8bbf98be7b1e4b015d796375963FD28840057458461C7CA0DAD340D15583DEDFC2E3241C4F392EF3A8B4D067B40CF4F149DD7E51F346B0CAB1BCCF6DB2480C67273C6C9E4CE0F3004E5C3397E9DBB399E827F1A1B4315D31B4A1FB924AA6F0CE797FFD0048F7FA626F7785968C67936054B24ADCC2455D90D09048EC83代码实现以下是一个用Python实现的快速凸包算法的例子在这个代码中,首先我们对所有的点按x坐标进行排序,然后我们将第一个点添加到当前的凸包中然后我们遍历剩余的点,对于每个点,我们寻找在y坐标上离当前点最近的凸包顶点(我们可以通过比较斜率来找到这个点)如果这个顶点在y坐标上比当前点高,那么我们就用当前点和这个顶点之间的线段来替换原来凸包上的那个顶点如果这个顶点在y坐标上比当前点低,那么我们就直接添加当前点到凸包中最后我们返回的是包含所有点的凸包这个算法的时间复杂度是O(nlogn)e7d195523061f1c074694c8bbf98be7b1e4b015d796375963FD288400574

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论