我有一些实验数据,我决定把它们表示成集合。
假设有一个主集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应用程序中实现这个问题。
先谢谢你!

最佳答案

我觉得这是agenetic algorithm擅长的,因为:
所有子集周长的总路径长度可以用作适应度函数(最小化这将倾向于给出缺少长细子集的“好”解),并且该函数是连续的。
实现变异(抖动一个或多个元素的位置)和交叉(交换一些元素的位置)应该很简单。
对于适应度函数的另一个重要建议是:如果一个子集的周长包含了不属于该集合的元素,则会严重惩罚任何解决方案。
我的建议是使用子集周长的凸面元素外壳(甚至可能是边界框,它们更简单)。一旦确定了最佳位置,您就可以使用splines绘制周长,使其美观平滑。

关于algorithm - 集的视觉表示,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4508242/

10-10 08:16