问题的背景:
在我女儿学校的每一个新年开始时,校长总是谈到将孩子分成几个班是多么困难,因为他们对于他们想要在课堂上的人有很多要求,幼儿园也有一些建议。
在我看来,这只是一个加权的循环图,其中包含孩子作为节点,请求/建议作为需要拆分的边缘。
问题:
想象一下,如果你愿意,带有周期和加权边的图可能会断开连接。 我想将该图划分为n个较小的图,每个图中至少有s个节点,每个图中最多有t个节点,同时尽可能少地打破边。 我认为NP很难解决,所以它可能真的是一个优化问题。
谢谢, 的Jesper
答案 0 :(得分:0)
图表的组件也是图表。去年我不得不编写图像拼接代码,这些代码使用了64000像素的有向图数据结构而且速度都不慢。
生成的图片是最后一张,代码在这里github。
嗯,在您的情况下,您可以创建图形数据结构。创建一个Linkedlist的一维数组,并在该链接列表中保存与三个参数连接的数据结构,第一个是您的第一个学生,第二个是第一个连接的学生,第三个是表示它们之间的强度的数字。 :示例学生1连接到学生5,其强度== 100然后您创建一个新节点Connected c = new connected(1,5,100);
并将其添加到数组的第一个条目,如下所示:array[i].add(c) where i == 1
。
搜索:哪个学生与哪个学生相关联:当您尝试查找哪个学生连接到哪个学生时,您可以简单地使用以下数组索引:
`for(Connected c : array[i].get();
int firstStudent = c.getFirst()
int secondStudent = c.getSecond()
int strength = c.getStrength();`
您的链接列表应该有一个迭代器,以便您可以进行遍历。
答案 1 :(得分:0)