繁体   English   中英

C#顶点边

[英]C# Vertex Edges

我在执行此任务时遇到了一个问题:如果n顶点图的顶点1(to)连接到顶点,顶点2(尾部)连接顶点3(身体),而顶点3连接到其他顶点(即英尺)。 某些脚可能会连接到其他脚。 设计一种算法,该算法确定给定的图形是否代表蝎子,并判断出哪条线是ing,尾巴,身体和脚。 这是我要读取的数据文件: (+)是边,(-)是没有边

我想先找到the,但是基本上我怎么能找到与尾巴和身体的联系? 我也必须使用递归 编辑:好的,现在我发现每行有多少个“ +”:

int[] B = new int[100];
       for (int i = 0; i < n; i++)
       {
           for (int j = 0; j < n; j++)
           {
               int HowMuch = Regex.Matches(A[i,j], @"\+").Count;
               Saving[i] += HowMuch;
           }
           if(Saving[i]>=3)
           {
               Console.WriteLine("It's a scorpion!");
               Console.WriteLine("The body is in: " + i + " part");
           }
       }

通过递归,我试图找到路径连接...我应该如何继续?

static void Find(string[,] A, int n, int j)
    {
        for (int i = 0; i < n; i++)
        {
            if(A[i,j]=="+")
            {
                j = i;
                Find(A, n, j);
            }
        }

    }

所以,我给你一个解决方法的想法。 我把帮助从这个 你应该去那里看看。 该网站上有一个提示。

我的方法与他们的方法略有不同。

从抽象的角度来看,您要从邻接矩阵中确定给定的点是否像此图像(又称蝎子)。 (摘自该网站)

在此处输入图片说明

现在,邻接矩阵如何转换为蝎子? 让我们看看您的示例。 我用手绘制了邻接矩阵和图。 我希望它不太难理解。

在此处输入图片说明

现在如何解决呢? 您可以在此处计算每个节点的度数。 您可以在此处从邻接矩阵中进行计算。 (度数表示一个节点连接的节点数,例如,对于在此绘制的图i,度数1为1,度数0为2,依此类推...)

首先,您在这里找到所有节点的度数(节点表示顶点,反之亦然)。

因此,刺痛应该是一级学位。 现在有一个问题,我将重新解决。 但是现在暂时不要考虑它。

尾巴将具有2度。它将与st连接。 因此,您找到了一个与connected连接的节点,然后就完成了。 那是尾巴。

与拖尾连接的节点(除了ing)是身体。

物体的度数> =2。因此,如果某个顶点具有该度数,则可以肯定的是物体。 与之相连的节点就是脚。

现在您可能会说,脚的高度为2,那么为什么不尾巴呢? 因为它们没有连接到st。(您之前已经计算过)

您可能还会说,脚的高度为1,为什么不刺痛? 因为它连接到某个度数大于2的节点,而不能大于(因为尾部的度数为2)

现在一切都很好,但是考虑一个问题,如果图表是这样的,

1-0-3-4

那么刺痛和脚感会怎样呢? 我的回答都是。 1和4都可以是腿或st。

我希望你能理解我说的话。

必要时在图像上进行澄清:您说过,有+的地方是边缘。 注意第0行的1和3上的+。因此,0连接到1和4。我已经像这样将它们连接起来。 并且连接是双向的。 您可以从邻接矩阵中看到这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM