zoukankan      html  css  js  c++  java
  • 图,深度,广度优先遍历(一)

    What is graph? 图可以这样定义。 G=(V,E)

    V:图中所有顶点Vertex的集合Vertices;

    E:图中边的集合;

    例子:

    边肯定连着两个顶点,那么一条边可以如此表示{v1,v2}。

    可以用二维数组表示int[][].或者定义一个Edge类

    public class Edge {
     int u; //starting vertex;
     int v; //ending vertex;
     public Edge(int u,int v) {
       this.u = u;
       this.v = v;
    }
    }
    

    边的集合就是java.util.ArrayList<Edge> edges = new java.util.ArrayList<Edge>();

    要对图进行处理,一般需要建立邻接矩阵AdjacencyMatrix;

    用java的集合框架可以很方便地建立邻接矩阵

    neighbours = new ArrayList<List<Integer>>();

    建立邻接矩阵的方法:

    private void createAdjacencyLists(int[][] edges, int numberOfVertices) {
     neighbours = new ArrayList<List<Integer>>();
     for (int i = 0; i < numberOfVertices; i++) {
       neighbours.add(new ArrayList<Integer>()); 
     }
     for (int i = 0; i < edges.length; i++) {
      int u = edges[i][0]; //starting vertex;
      int v = edges[i][1]; //ending vertex;
      neighbours.get(u).add(v);
     }
    }
    
    private void createAdjcacencyLists(List<Edge> edges, int numberOfVertices) {
     neighbours = new ArrayList<List<Integer>>();
     for (int i = 0; i < numberOfVertices; i++) {
       neighbours.add(new ArrayList<Integer>()); 
     }
     for (Edge edge:edges) {
      neighbours.get(edge.u).add(edge.v);
     }
    }
    

    对图进行遍历所得的子图其实为一棵生成树;

    故应该写一个数据结构Tree用来存放遍历所得生成树;

    基本结构:

    public class Tree {
     private int root;
     private int[] parent;
     private List<Integer> searchOrders;
     public Tree(int root, int[] parent, List<Integer> searchOrders) {
      this.root = root;
      this.parent = parent;
      this.searchOrders = searchOrders;
     }
    }
    

    后面的内容将要围绕这几个基本概念进行开展。

  • 相关阅读:
    AngularJs学习笔记Understanding Angular Templates
    AngularJs学习笔记Creating Services
    AngularJs学习笔记E2E Testing
    AngularJs学习笔记Using $location
    AngularJs学习笔记Injecting Services Into Controllers
    AngularJs学习笔记unittesting
    AngularJs学习笔记Guide教程系列文章索引
    C语言 自幂数
    C# 虚拟键盘核心方法 Tech
    [转]SQLite SQL语句结构详解 Tech
  • 原文地址:https://www.cnblogs.com/Jam01/p/2991136.html
Copyright © 2011-2022 走看看