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

本文关键字:节点 查找 | 更新日期: 2023-09-27 18:00:16

在我的程序中,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. 如果这是正确的?如果是,我应该从哪里归还利德诺
  2. 如果它不正确,我哪里出了问题,可以做什么实现来获得Leadernode

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

回答您的问题:

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

2) 您需要在方法的顶部定义Leadnode,在测试条件的中间设置它,并在方法的结尾返回它

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:如何表演。对集合中所有对象的属性执行Max(),并返回具有最大值的对象