首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分割区算法

分割区算法
EN

Stack Overflow用户
提问于 2015-04-04 06:27:17
回答 2查看 96关注 0票数 1

我们得到了一个N x M的矩形区域,其中有K条线。每一行都有(x0,y0) - (x1,y1),开始和结束坐标。有没有一些众所周知的算法或资源可以帮助我写一个程序来找出这些线在矩形区域中形成了多少个独立的区域?

如果这是原始的矩形区域:http://prntscr.com/6p9m2c,则有4个独立的区域:http://prntscr.com/6p9mo5

EN

回答 2

Stack Overflow用户

发布于 2015-04-04 12:30:51

所有具有交叉点的线束段都形成planar graph。你必须彻底计算这个图的顶点和边数,然后应用Euler's formula

代码语言:javascript
复制
 F = E - V + 2

哪里

V是顶点计数-交点(以及角点和自由线段端点)的数量

E是边计数-在交叉点之后形成的段的数量

F是面的数量。

您需要的地域数量为

代码语言:javascript
复制
R = F - 1

因为F考虑了外部方面。

例如,有16个顶点,10个水平边和9个垂直边,所以

代码语言:javascript
复制
R = 10 + 9 - 16 + 2 - 1 = 4

请注意,您可以计算阶数为1,2的顶点(角和自由端),也可以将它们与一个相邻线段一起忽略(简化图)-这不会影响结果。

票数 1
EN

Stack Overflow用户

发布于 2015-04-09 01:59:05

想象一下,NxM网格是一个图形,其中每个“.”是一个顶点,如果两个顶点并排(上方、下方、侧面),则它们由一条边连接。现在,每个单独的区域对应于图中的一个连接组件,您可以使用BFS或DFS算法计算O(N*M)中连接组件的数量。

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

https://stackoverflow.com/questions/29440516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档