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

📄 connectgraphinstancehandler.java

📁 pso源程序
💻 JAVA
字号:
/**
 * Description: provide the information for graph data in DIMACS format
 *
 * @ Author        Create/Modi     Note
 * Xiaofeng Xie    Apr 06, 2005
 * Xiaofeng Xie    Aug 08, 2006
 */

package maosKernel.infoIO.instance;

import java.util.*;
import Global.basic.data.*;
import Global.methods.*;

import maosKernel.represent.problem.graph.*;

public class ConnectGraphInstanceHandler {

  public static BasicConnectGraphData readDIMACSGraph(String content) throws Exception {
    String[] lines = GlobalString.getMeaningfulLines(content, "c");
    if (lines.length<2) return null;
    String[] pInfos = GlobalString.tokenize(lines[0], " \t");
    if (pInfos.length<4) return null;
    if(!pInfos[0].equalsIgnoreCase("p")) return null; // || !pInfos[1].equalsIgnoreCase("edge")


    BasicConnectGraphData gData = new BasicConnectGraphData();
    gData.nodeNumber = new Integer(pInfos[2]).intValue();
//    int nEdges =  new Integer(pInfos[3]).intValue();

    Vector edges = new Vector();

    int minNodeValue = Integer.MAX_VALUE;
    for(int i=1; i<lines.length; i++) {
      String[] eInfos = GlobalString.tokenize(lines[i], " \t");
      if(eInfos[0].equalsIgnoreCase("e")) {
        minNodeValue = Math.min(minNodeValue, new Integer(eInfos[1]).intValue());
        minNodeValue = Math.min(minNodeValue, new Integer(eInfos[2]).intValue());
        BasicEdge edge = new BasicEdge(new Integer(eInfos[1]).intValue(), new Integer(eInfos[2]).intValue());
        edges.add(edge);
      }
    }

//    if (edges.size() != nEdges) {
//      throw new Exception("Readable edges ("+edges.size()+") != defined edges ("+new Integer(pInfos[3]).intValue()+ ")");
//    }

    BasicEdge[] fullAttackEdges = new BasicEdge[edges.size()];
    for(int i=0; i<fullAttackEdges.length; i++) {
      fullAttackEdges[i] = (BasicEdge)edges.elementAt(i);
    }
    if (minNodeValue!=0) {
      for(int i=0; i<fullAttackEdges.length; i++) {
         fullAttackEdges[i].startIndex-= minNodeValue;
          fullAttackEdges[i].endIndex -= minNodeValue;
      }
    }
    gData.setAttackEdges(fullAttackEdges);
    return gData;
  }
}

⌨️ 快捷键说明

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