在图中查找密度最高的节点

时间:2014-04-27 00:16:01

标签: c#

在我的程序中,Density表示指示连接到特定节点的节点数的计数。例如,如果某个节点的密度为3,则表示它连接到无向图中的其他3个节点。我想决定密度最高的节点。直到现在我正在做这样的事情:

    public Node LeaderIs(List<Node> list)
    {
        for (int k = 0; k < list.Count; k++)
        {
            var i = YelloWPages.GetNode(k, list);
            for (int l = 0; l < list.Count; l++)
            {
                var j = YelloWPages.GetNode(l, list);
                if (Node.GetDensity(i) > Node.GetDensity(j))
                {
                    Node Leadernode = i;
                }
            }
        }
    }

我有两个问题:

  1. 如果这是正确的?如果是的话,我应该从哪里返回Leadernode?
  2. 如果不正确,我出错了,可以采取哪些措施来获取Leadernode

1 个答案:

答案 0 :(得分:0)

回答你的问题:

1)不,这不太正确,因为你永远不会返回值而你不需要内循环。您没有尝试对列表进行排序,只需要最大值。

2)您需要在方法的顶部定义Leadernode,将其设置在测试条件的中间并在方法结束时返回

public Node LeaderIs(List<Node> list)
{
    Node Leadernode = null;
    int LeadernodeDensity = 0;
    for (int k = 0; k < list.Count; k++)
    {
        var i = YelloWPages.GetNode(k, list);
        int iDensity = Node.GetDensity(i); 
        if ( iDensity > LeadernodeDensity)
        {
            Leadernode = i;
            LeadernodeDensity = iDensity;
        }

    }
    return Leadernode;
}

在此处查看类似问题的答案,以获得使用C#的更好的最大值算法。

LINQ: How to perform .Max() on a property of all objects in a collection and return the object with maximum value