邻接矩阵

时间:2010-10-14 14:16:23

标签: java c++ graph

给定一个图的邻接矩阵和一个正整数n找到两个顶点之间长度为n的路径数,我不知道如何转换为编程?

4 个答案:

答案 0 :(得分:1)

拿A ^ n然后阅读相应的条目。

如果您希望单个顶点更有效,请从第一个顶点开始进行n次迭代的随机游走。

答案 1 :(得分:1)

我假设这是家庭作业,所以这里有一个暗示。如果给你一个铅笔和一张纸,以及一个小的邻接矩阵,如何计算路径的数量?

答案 2 :(得分:0)

这是我的编码,但我不知道如何找到两个顶点之间的长度路径数。

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
#define TRUE 1
#define FALSE 0

void main()
{
   int x;            
   int y;
   int n;
   int l;
   int a;
   int b;
   int length;
   char vertex='a';
   int num[50][50];

   printf("enter the number of vertices : ");
   scanf("%d",&n);
   //int num[n][n];

   for(x=0;x<n;x++)
   {
    for(y=0;y<n;y++)
      {
        printf("[%c,%c] : ",vertex+x,vertex+y);
         scanf("%d",&num[x][y]);
       }
   }

        printf("\n");

        printf("Adjacency matrix :\n");
        for(x=0;x<n;x++)
        {
            for(y=0;y<n;y++)

                printf("%d\t",num[x][y]);
                printf("\n");

            }

         printf("Enter a positive integer for length: ");
         scanf("%d",&length);

         length=sqrt(length);

         printf("Multiplication matrix :\n");
      for(l=0;l<=length;l++)
      {
        for(x=0;x<n;x++)
        {
            for(y=0;y<n;y++)

                num[x][y]=(num[x][y])*(num[y][x]);
               num[x][y]= num[x][y]+ num[y][x];

            }
       }


        printf("\n");

        for(x=0;x<n;x++)
        {
            for(y=0;y<n;y++)

                printf("%d\t",num[x][y]);
                printf("\n");

            }

         printf("\nPlease insert your starting point: ");
         scanf("%d",&a);
         printf("\nPlease insert your ending point: ");
         scanf("%d",&b);

         a=x-1;
         b=y-1;

         //printf("\nThe number of path from %d to %d: %d",a,b,num[a][b]);
         printf("\nThe number of path from %d to %d: %d",a,b,num[a][b]);

   getch();
   //return 0;

}

答案 3 :(得分:0)

如何使用Dijkstra的最短路径算法(DSPA)?让网络中每个弧的成本为1.使用DSPA找到两个不同顶点之间的距离。如果长度为n,则表示您已找到感兴趣的路径。遍历所有顶点对。

相关问题