我想知道是否有任何算法或一些简单的过程来生成interval graph?
我需要生成带有n
节点的区间图,其中n
正在从1变为10000.
如果有可能,我需要图的关联矩阵表示。
一个额外的限制是不完成所有这些图。生成区间图的算法
谢谢大家提前!
== ==加成
这是在Java中实现:
public Object generate(int numberOfNodes) {
int listCapacity = numberOfNodes * 2;
List<Integer> arr = new ArrayList<Integer>();
int[][] adjacencyMatrix = new int[numberOfNodes][numberOfNodes];
Integer nodeNumber = 0;
for (int i = 0; i < listCapacity; i = i + 2) {
arr.add(nodeNumber);
arr.add(nodeNumber);
nodeNumber++;
}
Collections.shuffle(arr);
for (int i = 0; i < numberOfNodes; i++) {
for (int j = arr.indexOf(i); j < arr.lastIndexOf(i); j++) {
adjacencyMatrix[i][arr.get(j)] = 1;
adjacencyMatrix[arr.get(j)][i] = 1;
}
adjacencyMatrix[i][i] = 0;
}
return new Graph(adjacencyMatrix);
}
虽然,在某些情况下,它不能产生区间图。
任何限制?完整的图是一个区间图。 – 2013-05-03 13:06:14
@JanDvorak,谢谢你的回应!实际上,它们可以是完整的图形,但对于我来说完成所有这些生成的图形是不可接受的。将根据您的评论更新我的问题,再次感谢! – 2013-05-03 13:09:03
是否有其他限制?缺少一条边的完整图是间隔图。您需要一些更坚实的要求,比如“所有具有给定数量节点的区间图都必须可以使用此算法生成”。 – 2013-05-03 13:16:01