我必须反转给定的有向图,以便顶点保持不变,但边在相反的方向上。我的图由一个graph类表示,该类包含一个顶点的ArrayList,每个Vertex对象都有它的编号和相邻顶点的ArrayList。我的代码给出了错误的答案,因为在循环的每次迭代中,顶点的相邻列表的大小都会发生变化。我如何修复我的代码?
public void reverse() {
ArrayList < Vertex > adjacentOfi = new ArrayList < Vertex > ();
int k;
for (int i = 1; i < vertices
我正在做一个关于Facebook网络的社交网络分析的项目。我必须让我所有的朋友,以及我的朋友中谁是彼此的朋友,在我的网络中建立相互的朋友关系。我这样做了,我得到了我所有朋友的id和邻接关系,现在我必须形成一个邻接矩阵,它表明我的两个朋友是否是朋友。例如:A和B是朋友,A和C是朋友,但B和C不是朋友。这看起来像这样:
A B C
A 0 1 1
B 1 0 0
C 1 0 0
因为我在python中已经有了id和邻接关系的列表,所以我也应该在python中做矩阵,所以如果你有任何想法或如何输入1和0的基本算法,我将不胜感激。
使用Python,如何以节省内存的方式将加权边列表转换为对称邻接矩阵?
例如,考虑以下包含4个节点和3个边的加权边列表:
A B 1
A C 2
C D 3
则输出邻接矩阵如下:
0 1 2 0
1 0 0 0
2 0 0 3
0 0 3 0
我希望以一种节省内存的方式来做到这一点-- 100000 x 100000邻接矩阵(10**10值)。请注意,矩阵是对称的,并且所有对角线的值都是0。
我在Python中找不到2-opt算法的任何完整实现,所以我尝试将缺失的部分添加到找到的代码中,我将在下面介绍。
def two_opt(route):
best = route
improved = True
while improved:
improved = False
for i in range(1, len(route)-2):
for j in range(i+1, len(route)):
if j-i == 1: continue # c