private void balancedNodes(Graph G) {
int d;
int d2;
int balance = 0;
int maxbalance = 0;
int count = 0;
for(int v = 0; v < G.V(); v++) {
d = degree(G, v);
for(int w : G.adj(v)) {
d2 = degree(G,w);
balance = Math.abs(d2-d);
if(maxbalance < balance)
maxbalance = balance;
balance = 0; //reset to 0
}
}
maxBalanceFactor = maxbalance;
for(int v = 0; v < G.V(); v++) {
d = degree(G, v);
for(int w : G.adj(v)) {
d2 = degree(G,w);
balance = Math.abs(d2-d);
if(maxbalance == balance)
count++;
balance = 0; //rest to 0
}
}
numberOfMostUnbalancedFriendships = count/2;
}
此当前代码确定两个顶点的“友谊”,意思是两个节点的普及率之间的差异。如果两个顶点具有相同的普及率,则平衡将为0。
我想修改我写的输出“几乎平衡”的代码。我想确定顶点u和顶点v的友谊是否“几乎”平衡,即u的朋友数和v的朋友数之差是否为1。这是唯一的修改。所以,在一张图中,我想找出图中有多少“几乎”平衡的友谊。我需要做什么改动?
1条答案
按热度按时间km0tfn4u1#
我想通过这些评论我明白你想要什么。下面是一个计算所有“几乎平衡”节点的函数:
如果要计算所有平衡节点,只需更改:
收件人:
请注意,我无法运行此代码来检查是否存在简单的打字错误,因为它引用了许多我没有定义的类型。
还要注意我为改进代码结构所做的一些事情。我去掉了一些不必要的行,并且移动了许多行的定义
int
变量到它们被使用的地方。当您尽可能靠近使用变量的位置定义变量时,代码更具可读性。