Examples of ISet


Examples of util.objects.setDataStructures.ISet

  }

  protected void filterAround(int taskIndex) throws ContradictionException {
    tasks.clear();
    tasks.add(taskIndex);
    ISet env = g.getNeighOf(taskIndex);
    for (int i = env.getFirstElement(); i >= 0; i = env.getNextElement()) {
      if (disjoint(taskIndex, i)) {
//        g.removeEdge(taskIndex, i);
      } else {
        tasks.add(i);
      }
View Full Code Here

Examples of util.objects.setDataStructures.ISet

    private int augmentPath_BFS(int root) {
        in.clear();
        int indexFirst = 0, indexLast = 0;
        fifo[indexLast++] = root;
        int x, y;
        ISet succs;
        while (indexFirst != indexLast) {
            x = fifo[indexFirst++];
            succs = digraph.getSuccOf(x);
            for (y = succs.getFirstElement(); y >= 0; y = succs.getNextElement()) {
                if (!in.get(y)) {
                    father[y] = x;
                    fifo[indexLast++] = y;
                    in.set(y);
                    if (free.get(y)) {
View Full Code Here

Examples of util.objects.setDataStructures.ISet

    }

  @Override
  public void propagate(int varIdx, int mask) throws ContradictionException {
    int v = varIdx % n;
    ISet s = overlappingBoxes.getNeighOf(v);
    for (int i = s.getFirstElement(); i >= 0; i = s.getNextElement()) {
      if (!mayOverlap(v, i)) {
        overlappingBoxes.removeEdge(v, i);
      }
    }
    if (!boxesToCompute.contain(v)) {
View Full Code Here

Examples of util.objects.setDataStructures.ISet

        return (vars[i + off].getLB() >= vars[j + off].getUB() + vars[j + off + 2 * n].getUB())
                || (vars[j + off].getLB() >= vars[i + off].getUB() + vars[i + off + 2 * n].getUB());
    }

    protected void filterFromBox(int i) throws ContradictionException {
        ISet s = overlappingBoxes.getNeighOf(i);
        // check energy
        int xm = vars[i].getLB();
        int xM = vars[i].getUB() + vars[i + 2 * n].getUB();
        int ym = vars[i + n].getLB();
        int yM = vars[i + n].getUB() + vars[i + 3 * n].getUB();
        int am = vars[i + 2 * n].getLB() * vars[i + 3 * n].getLB();
        for (int j = s.getFirstElement(); j >= 0; j = s.getNextElement()) {
            xm = Math.min(xm, vars[j].getLB());
            xM = Math.max(xM, vars[j].getUB() + vars[j + 2 * n].getUB());
            ym = Math.min(ym, vars[j + n].getLB());
            yM = Math.max(yM, vars[j + n].getUB() + vars[j + 3 * n].getUB());
            am += vars[j + 2 * n].getLB() * vars[j + 3 * n].getLB();
            if (am > (xM - xm) * (yM - ym)) {
                contradiction(vars[i], "");
            }
        }
        // mandatory part based filtering
        boolean horizontal = true;
        boolean vertical = false;
        for (int j = s.getFirstElement(); j >= 0; j = s.getNextElement()) {
            if (doOverlap(i, j, horizontal)) {
                filter(i, j, vertical);
            }
            if (doOverlap(i, j, vertical)) {
                filter(i, j, horizontal);
View Full Code Here

Examples of util.objects.setDataStructures.ISet

    int n_R = SCCfinder.getNbSCC();
    for (int i = 0; i < n_R; i++) {
      G_R.getNodes().add(i);
    }
    sccOf = SCCfinder.getNodesSCC();
    ISet succs;
    int x;
    for (int i = 0; i < n; i++) {
      x = sccOf[i];
      succs = support.getSuccOf(i);
      for (int j = succs.getFirstElement(); j >= 0; j = succs.getNextElement()) {
        if (x != sccOf[j]) {
          G_R.addArc(x, sccOf[j]);
          mates[x].add((i + 1) * n2 + j);
        }
      }
View Full Code Here

Examples of util.objects.setDataStructures.ISet

    }

    @Override
    public boolean removeNode(int x) {
        if (nodes.remove(x)) {
            ISet nei = getNeighOf(x);
            for (int j = nei.getFirstElement(); j >= 0; j = nei.getNextElement()) {
                neighbors[j].remove(x);
            }
            neighbors[x].clear();
            return true;
        }
View Full Code Here

Examples of util.objects.setDataStructures.ISet

    }
    if (node == last) {
      return 1;
    }
    int next = -1;
    ISet succs = G_R.getSuccOf(node);
    for (int x = succs.getFirstElement(); x >= 0; x = succs.getNextElement()) {
      if (G_R.getPredOf(x).getSize() == 1) {
        if (next != -1) {
          return 0;
        }
        next = x;
      } else {
        G_R.removeArc(node, x);
      }
    }
    succs = mates[node];
    int from, to;
    for (int e = succs.getFirstElement(); e >= 0; e = succs.getNextElement()) {
      to = e % n2;
      if (sccOf[to] != next) {
        from = e / n2 - 1;
        if(to==n){
          to=source;
View Full Code Here

Examples of util.objects.setDataStructures.ISet

    int n_R = SCCfinder.getNbSCC();
    for (int i = 0; i < n_R; i++) {
      G_R.getNodes().add(i);
    }
    sccOf = SCCfinder.getNodesSCC();
    ISet succs;
    int x;
    for (int i = 0; i < n; i++) {
      x = sccOf[i];
      if(!vars[i].contains(i+offSet)){
        mandSCC.set(x);
      }
      succs = support.getSuccOf(i);
      for (int j = succs.getFirstElement(); j >= 0; j = succs.getNextElement()) {
        if (x != sccOf[j]) {
          G_R.addArc(x, sccOf[j]);
          mates[x].add((i + 1) * n2 + j);
        }
      }
View Full Code Here

Examples of util.objects.setDataStructures.ISet

    for(int i=SCCfinder.getSCCFirstNode(cc); i>=0; i=SCCfinder.getNextNode(i)){
      vars[i].instantiateTo(i+offSet,aCause);
    }
    mates[cc].clear();
    if(sink){
      ISet ps = G_R.getPredOf(cc);
      for(int p=ps.getFirstElement();p>=0;p=ps.getNextElement()){
        G_R.removeArc(p,cc);
        if(G_R.getSuccOf(p).isEmpty()){
          makeLoops(source,p,sink);
        }
      }
    }else{
      ISet ss = G_R.getSuccOf(cc);
      for(int s=ss.getFirstElement();s>=0;s=ss.getNextElement()){
        G_R.removeArc(cc,s);
        if(G_R.getPredOf(s).isEmpty()){
          makeLoops(source,s,sink);
        }
      }
View Full Code Here

Examples of util.objects.setDataStructures.ISet

  public void filter(IntVar[] vars, UndirectedGraph graph, F heur, Propagator aCause) throws ContradictionException{
    assert  n == vars.length-1;
    BitSet mis = heur.getMIS();
    if(mis.cardinality()==vars[n].getUB()){
      ISet nei;
      for (int i = mis.nextClearBit(0); i>=0 && i < n; i = mis.nextClearBit(i + 1)) {
        int mate = -1;
        int last = 0;
        if(valToRem.length<vars[i].getDomainSize()){
          valToRem = new int[vars[i].getDomainSize()*2];
        }
        int ub = vars[i].getUB();
        int lb = vars[i].getLB();
        for (int k = lb; k <= ub; k = vars[i].nextValue(k)) {
          valToRem[last++] = k;
        }
        nei = graph.getNeighOf(i);
        for (int j = nei.getFirstElement(); j >= 0; j = nei.getNextElement()) {
          if (mis.get(j)) {
            if (mate == -1) {
              mate = j;
            } else if (mate >= 0) {
              mate = -2;
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.