3

我有一些实验数据,我决定将它们表示为集合。

假设有一个名为E={a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s} 的主集(蓝色圆圈)和几个子集B红色虚线椭圆),其中包含来自主集E的元素。

我需要在主集E中表示这些子集并显示它们的交集,或多或少类似于下图。

这就是为什么我需要一些算法(带有示例)来绘制该图。最好使用 PHP 或 Javascript(使用 SVG 规范),因为我将在 Web 应用程序中实现这个问题。

集合覆盖问题的图形表示

预先感谢您!

4

1 回答 1

1

我的感觉是,这是遗传算法擅长的事情,因为:

  1. 所有子集周长的总路径长度可以用作适应度函数(将其最小化将倾向于给出缺少长瘦子集的“好”解决方案),并且该函数是连续的。
  2. 实现突变(改变一个或多个元素的位置)和交叉(交换某些元素的位置)应该很简单。

适应度函数的另一个重要建议:如果一个子集的周长包含一个不属于该集合的元素,则严重惩罚任何解决方案。

我的建议是使用凸包元素的子集周长(甚至可能是更简单的边界框)。一旦确定了最佳位置,您就可以使用样条线绘制周边,使它们变得漂亮和平滑。

于 2010-12-22T10:53:28.380 回答