/
///**
// * 图的数据结构:采用邻接矩阵的存储方式来表示图中顶点之间的关系。实现有:求图的
// *
// * @author timmy1 使用二维数组来存储图中顶点的关系:数字为0表示自己,最大值表示两个顶点之间不联通, -》求顶点的入度和出度
// * -》顶点a到顶点b之间的权值 ==》先创建这个图
// */
int[][] matrix;// 矩阵
int MAX_VALUE = Integer.MAX_VALUE;
int size;
public void FromJava() {
createGraph(5);
ViseLog.i("顶点出度为:" +getVertexOutDegree(0));
ViseLog.i("两个顶点之间的权值为:" +getVertexWeight(1, 2));
}
private void createGraph(int index) {
size = index;
matrix = new int[index][index];
int[] a0 = { 0, MAX_VALUE, MAX_VALUE, MAX_VALUE, 6 };
int[] a1 = { 9, 0, 3, MAX_VALUE, MAX_VALUE };
int[] a2 = { 2, MAX_VALUE, 0, 5, MAX_VALUE };
int[] a3 = { MAX_VALUE, MAX_VALUE, MAX_VALUE, 0, 1 };
int[] a4 = { MAX_VALUE, MAX_VALUE, MAX_VALUE, MAX_VALUE, 0 };
matrix[0] = a0;
matrix[1] = a1;
matrix[2] = a2;
matrix[3] = a3;
matrix[4] = a4;
}
/**
* 获取顶点的出度
* @param index
* @return
*/
public int getVertexOutDegree (int index ){
int degree=0;
for (int i=0;i<size;i++){
if (matrix[i][0]>0&&matrix[i][0]<MAX_VALUE){
degree++;
}
}
return degree ;
}
public int getVertexWeight(int i,int j){
int weight = matrix[i][j];
weight = weight == 0? 0:weight== MAX_VALUE?-1:weight;
return weight;
}