Examples of ISet


Examples of util.objects.setDataStructures.ISet

        nodeSCC = new int[n];
        nbSCC = 0;
    }

    public void findAllSCC() {
        ISet nodes = graph.getNodes();
        for (int i = 0; i < n; i++) {
            restriction.set(i, nodes.contain(i));
        }
        findAllSCCOf(restriction);
    }
View Full Code Here

Examples of util.objects.setDataStructures.ISet

     * in the general tree that maps to height i in the binary tree. i.e. iff v has an ancestor u such that h(I(u)) = i.
     */
    private void performLCAPreprocessing() {
        // step 1 : DFS already done
        // step 2
        ISet nei;
        for (int i = nbActives - 1; i >= 0; i--) {
            h[i] = BitOperations.getFirstExp(i + 1);
            if (h[i] == -1) {
                throw new UnsupportedOperationException();
            }
            htmp[i] = h[i];
            I[i] = i;
            L[i] = i;
            int sucInRun = -1;
            nei = graph.getSuccOf(nodeOfDfsNumber[i]);
            int s;
            for (int k = nei.getFirstElement(); k >= 0; k = nei.getNextElement()) {
                s = dfsNumberOfNode[k];
                if (i != s && father[s] == i && htmp[s] > htmp[i]) {
                    htmp[i] = htmp[s];
                    sucInRun = s;
                }
View Full Code Here

Examples of util.objects.setDataStructures.ISet

            first = restriction.nextSetBit(first);
        }
    }

    private void findSingletons(BitSet restriction) {
        ISet nodes = graph.getNodes();
        for (int i = restriction.nextSetBit(0); i >= 0; i = restriction.nextSetBit(i + 1)) {
            if (nodes.contain(i) && graph.getPredOf(i).getSize() * graph.getSuccOf(i).getSize() == 0) {
                nodeSCC[i] = nbSCC;
                sccFirstNode[nbSCC++] = i;
                restriction.clear(i);
            }
        }
View Full Code Here

Examples of util.objects.setDataStructures.ISet

    if (node_CC == null) {
      CC_firstNode = new int[n];
      CC_nextNode = new int[n];
      node_CC = new int[n];
    }
    ISet act = graph.getNodes();
    for (int i = act.getFirstElement(); i >= 0; i = act.getNextElement()) {
      p[i] = -1;
    }
    for(int i=0;i<CC_firstNode.length;i++){
      CC_firstNode[i] = -1;
    }
    int first = act.getFirstElement();
    int cc = 0;
    while (first >= 0) {
      findCC(first, cc);
      cc++;
      while (first >= 0 && p[first] != -1) {
        first = act.getNextElement();
      }
    }
    nbCC = cc;
  }
View Full Code Here

Examples of util.objects.setDataStructures.ISet

    fifo[last++] = start;
    p[start] = start;
    add(start,cc);
    while(first<last){
      int i = fifo[first++];
      ISet s = graph.getSuccOrNeighOf(i);
      for(int j=s.getFirstElement();j>=0;j=s.getNextElement()){
        if(p[j]==-1){
          p[j] = i;
          add(j,cc);
          fifo[last++] = j;
        }
      }
      if(graph.isDirected()){
        s = graph.getPredOrNeighOf(i);
        for(int j=s.getFirstElement();j>=0;j=s.getNextElement()){
          if(p[j]==-1){
            p[j] = i;
            add(j,cc);
            fifo[last++] = j;
          }
View Full Code Here

Examples of util.objects.setDataStructures.ISet

    // SDOM & IDOM
    //***********************************************************************************

    protected void findAllIdom() {
        int w, v, u;
        ISet prds;
        for (int i = n - 1; i >= 1; i--) {
            w = vertex[i];
            prds = preds[w];
            for (v = prds.getFirstElement(); v >= 0; v = prds.getNextElement()) {
                u = EVAL(v);
                if (semi[u] < semi[w]) {
                    semi[w] = semi[u];
                }
            }
View Full Code Here

Examples of util.objects.setDataStructures.ISet

    if (nodeOfNum == null) {
      nodeOfNum = new int[n];
      numOfNode = new int[n];
      inf = new int[n];
    }
    ISet act = graph.getNodes();
    for (int i = act.getFirstElement(); i >= 0; i = act.getNextElement()) {
      inf[i] = Integer.MAX_VALUE;
      p[i] = -1;
    }
    //algo
    int start = act.getFirstElement();
    int i = start;
    int k = 0;
    numOfNode[start] = k;
    nodeOfNum[k] = start;
    p[start] = start;
    int j, q;
    int nbRootChildren = 0;
    boolean first = true;
    while (true) {
      if (first) {
        j = graph.getSuccOrNeighOf(i).getFirstElement();
        first = false;
      } else {
        j = graph.getSuccOrNeighOf(i).getNextElement();
      }
      if (j < 0) {
        if (i == start) {
          if (k < act.getSize() - 1) {
            return false;// NOT EVEN CONNECTED
          } else {
            return true;
          }
        }
View Full Code Here

Examples of util.objects.setDataStructures.ISet

      isthmusTo = new TIntArrayList();
      ND = new int[n];
      L = new int[n];
      H = new int[n];
    }
    ISet act = graph.getNodes();
    for (int i = act.getFirstElement(); i >= 0; i = act.getNextElement()) {
      p[i] = -1;
    }
    for(int i=0;i<CC_firstNode.length;i++){
      CC_firstNode[i] = -1;
    }
    //algo
    int start = act.getFirstElement();
    int i = start;
    int k = 0;
    numOfNode[start] = k;
    nodeOfNum[k] = start;
    p[start] = start;
    int j;
    boolean first = true;
    while (true) {
      if (first) {
        j = graph.getSuccOrNeighOf(i).getFirstElement();
        first = false;
      } else {
        j = graph.getSuccOrNeighOf(i).getNextElement();
      }
      if (j < 0) {
        if (i == start) {
          if (k < act.getSize() - 1) {
            return false;
          } else {
            break;
          }
        }
        i = p[i];
      } else {
        if (p[j] == -1) {
          p[j] = i;
          i = j;
          first = true;
          add(i, 0);
          k++;
          numOfNode[i] = k;
          nodeOfNum[k] = i;
        }
      }
    }
    // POST ORDER PASS FOR FINDING ISTHMUS
    isthmusFrom.clear();
    isthmusTo.clear();
    int currentNode;
    for (i = k; i >= 0; i--) {
      currentNode = nodeOfNum[i];
      ND[currentNode] = 1;
      L[currentNode] = i;
      H[currentNode] = i;
      ISet nei = graph.getSuccOrNeighOf(currentNode);
      for (int s = nei.getFirstElement(); s >= 0; s = nei.getNextElement()) {
        if (p[s] == currentNode) {
          ND[currentNode] += ND[s];
          L[currentNode] = Math.min(L[currentNode], L[s]);
          H[currentNode] = Math.max(H[currentNode], H[s]);
        } else if (s != p[currentNode]) {
View Full Code Here

Examples of util.objects.setDataStructures.ISet

      update(i);
    }
  }

  public void update(int i) {
    ISet nei = getNeighOf(i);
    for (int j = nei.getFirstElement(); j >= 0; j = nei.getNextElement()) {
      if (!intersect(i, j)) {
        removeEdge(i, j);
      }
    }
  }
View Full Code Here

Examples of util.objects.setDataStructures.ISet

      idx = out.nextClearBit(0);
    }
  }

  protected void addToMIS(int node) {
    ISet nei = graph.getNeighOf(node);
    inMIS.set(node);
    out.set(node);
    int sizeFifo=0;
    for (int j = nei.getFirstElement(); j >= 0; j = nei.getNextElement()) {
      if (!out.get(j)) {
        out.set(j);
        fifo[sizeFifo++] = j;
      }
    }
    for (int i=0; i<sizeFifo; i++) {
      nei = graph.getNeighOf(fifo[i]);
      for (int j = nei.getFirstElement(); j >= 0; j = nei.getNextElement()) {
        nbNeighbours[j]--;
      }
    }
  }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.