【问题标题】:Simple connected graph via adjacency matrix java通过邻接矩阵java的简单连接图
【发布时间】:2014-05-06 16:27:08
【问题描述】:

我正在尝试使用邻接矩阵来确定一个图是否是简单连接的程序。我设法使代码告诉我所有节点都有指向某物的链接,但这并不能保证我在第一个节点和最后一个节点之间有办法(简单连通图的定义)。我是初学者,所以我不知道这种问题是否可以在这里发布。知道我该怎么做吗?到目前为止,这是我的代码。任何建议表示赞赏。

package lab41;

import java.util.Scanner;

public class Graf {

    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        System.out.println("Introduceti nr de noduri:");
        int n = s.nextInt();
        int[][] a = new int[n + 1][n + 1];
        int i, j, k;
        System.out.println("Introduceti matricea adiacenta:");

        for (i = 1; i <= n; i++)
            for (j = 1; j <= n; j++) {
                System.out.println("a[" + i + "][" + j + "]=");
                a[i][j] = s.nextInt();
            }

        int x = 0;
        j = 1;
        i = 1;
        do {
            if (a[i][j] == 1) {
                i++;
                j = 1;
                x++;
            } else
                j++;

        }
        while (i < n && j <= n);

        if (x == n - 1)
            System.out.println("Graful este conex");
        else
            System.out.println("Graful nu este conex");
    }


}

【问题讨论】:

    标签: java graph adjacency-matrix


    【解决方案1】:

    要查找图是否已连接,您可以从任何节点开始执行 DFS 和 BFS,如果访问了所有节点,则表示图已连接。

    算法:

    1. 分配一个列表,visitedNodes = {} 和一个队列={}
    2. 选择任何节点,比如节点 0。
    3. 从节点 0 开始 BFS。队列 = {节点 0}
    4. 弹出队列的头部,假设节点是 x。如果节点 x 在visitedNodes 中,则转到步骤3。否则将x 放入visitedNodes 列表中。
    5. 访问节点 x 的所有邻居,并将它们放入队列中
    6. 继续执行步骤 3 到 5,直到队列为空

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-28
      • 2017-10-13
      • 1970-01-01
      • 2013-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多