蛮力算法找到所有空三角形的集合

时间:2018-03-01 22:39:02

标签: algorithm

给定平面中的一组P点,指定一个天真的强力算法来找到所有空顶点的集合,顶点在P中。(如果顶点a,b,c属于P的三角形为空,则为空不包含属于P的其他点d。)

我该如何开始解决这类问题?有没有我应该查看的现有算法,或者你认为我必须用几点来勾画它?

2 个答案:

答案 0 :(得分:0)

选择P中a,b,c的所有可能组合.P中的其余点确定它们是否在三角形内。

我会把这个练习留给读者 - 这是一个三角法

答案 1 :(得分:0)

  

给定平面中的一组P点,指定一个天真的暴力   算法找到P中具有顶点的所有空三角形的集合。   (如果包含顶点a,b,c属于P的三角形是空的   没有其他d属于P。)

     

我该如何开始解决这类问题?

自下而上:

  • 对于单个三角形和单个点,编写一个函数 contains ,用于测试该点是否在三角形中。
  • 对于单个三角形和一组点,查看三角形中是否包含任何点。将此 isEmpty
  • 称为
  • 对于一组三角形,请测试每个三角形。

关键字是:迭代,谓词,过滤器。

  • 您应该在每个阶段,三角形,外部,边框中编写测试。尽早测试。
  • 编写测试方法,使测试变得简单。
  • 然后Triangle.isEmpty或者用你的语言看怎么样。

自上而下也会奏效。那么你可能需要模拟函数来进行测试。但我不会看到优势与自下而上。

伪代码:

Triangle.contains (p: Point) : Boolean ()

Triangle.isEmpty (ps: Pointset) : Boolean = 
    ps.forAll (p => ! t.contains (p))

triangleset.filter (t => t.isEmpty (pointset))