⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 realconnectgraphdata.java

📁 pso源程序
💻 JAVA
字号:
/**
 * Description: provide the information for the graph data
 *
 * @ Author        Create/Modi     Note
 * Xiaofeng Xie    Jul 12, 2006     xiaofengxie@tsinghua.org.cn
 */

package maosKernel.represent.problem.graph;

import  maosKernel.represent.problem.*;
import Global.basic.data.collection.*;

public class RealConnectGraphData extends AbsFileProblemData implements IGetGraphDataEngine {
  private int [][] fullAttackNodes;
  private boolean [][] fullAttackFlags;

  public RealConnectGraphData(BasicConnectGraphData graphData) {
    int nodeNumber = graphData.getNodeNumber();
    fullAttackFlags = new boolean[nodeNumber][nodeNumber];
    graphData.getAttackFlagsMatrix(fullAttackFlags);

    fullAttackNodes = new int[nodeNumber][];
    fullAttackNodes = BasicConnectGraphData.getAttackNodesMatrix(fullAttackFlags);
//    getDegreeDistribution();
  }

  public void getDegreeDistribution() {
    int[] degrees = new int[fullAttackNodes.length];
    for (int i=0; i<degrees.length; i++) {
      degrees[i] = this.getSaturationDegreeAt(i);
    }
    java.util.Arrays.sort(degrees);
    IArray segmentIDArray = new IArray(degrees.length);
    IArray segmentWVArray = new IArray(degrees.length);
    BasicCollection.toSegments(segmentIDArray, segmentWVArray, degrees);
    for (int i=0; i<segmentIDArray.getSize()-1; i++) {
      System.out.println(segmentWVArray.getElementAt(i)/(double)degrees.length+" \t"+segmentIDArray.getElementAt(i+1)/(double)degrees.length);
    }
  }

  protected void removeNodes(IAlienICollectionEngine tobeReducedIDs) {
    int nodeNumber = getNodeNumber();
    int newSize = nodeNumber-tobeReducedIDs.getSize();
    boolean[][] newFullAttackFlags = new boolean[newSize][newSize];
    int iIndex=0, jIndex = 0;

    for (int i=0; i<newSize; i++) {
      while (tobeReducedIDs.getElementID(iIndex)!=-1) {
        iIndex++;
      }
      jIndex = 0;
      for (int j=0; j<newSize; j++) {
        while (tobeReducedIDs.getElementID(jIndex)!=-1) {
          jIndex++;
        }
        newFullAttackFlags[i][j] = fullAttackFlags[iIndex][jIndex];
        jIndex++;
      }
      iIndex++;
    }
    fullAttackFlags = newFullAttackFlags;
    fullAttackNodes = new int[newSize][];
    fullAttackNodes = BasicConnectGraphData.getAttackNodesMatrix(fullAttackFlags);
  }

  public final boolean isAttacked(int nodeA, int nodeB) {
    return (fullAttackFlags[nodeA][nodeB]);
  }
  public boolean[][] getAttackMatrix() {
    return fullAttackFlags;
  }

  public final int[] getAttackNodesAt(int nodeID) {
    return fullAttackNodes[nodeID];
  }

  public final int getNodeNumber() {
    return fullAttackNodes.length;
  }

  public int getSaturationDegreeAt(int nodeID) {
    return getAttackNodesAt(nodeID).length;
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -