private void doDdpOrientation(Node d,Node a,Node b,Node c,Graph graph){
  List<Node> sepset=getSepset(d,c);
  if (sepset == null) {
    return;
  }
  if (sepset.contains(b)) {
    graph.setEndpoint(c,b,Endpoint.TAIL);
    if (verbose) {
      logger.log("impliedOrientations",SearchLogUtils.edgeOrientedMsg("Definite discriminating path d = " + d,graph.getEdge(b,c)));
      out.println(SearchLogUtils.edgeOrientedMsg("Definite discriminating path d = " + d,graph.getEdge(b,c)));
    }
    changeFlag=true;
  }
 else {
    if (!isArrowpointAllowed(a,b,graph)) {
      return;
    }
    if (!isArrowpointAllowed(c,b,graph)) {
      return;
    }
    graph.setEndpoint(a,b,Endpoint.ARROW);
    graph.setEndpoint(c,b,Endpoint.ARROW);
    logger.log("colliderOrientations",SearchLogUtils.colliderOrientedMsg("Definite discriminating path.. d = " + d,a,b,c));
    changeFlag=true;
  }
}

private void doDdpOrientation ( Node d , Node a , Node b , Node c , Graph graph ) { List < Node > sepset = getSepset ( d , c ) ; if ( sepset == null ) { return ; } if ( sepset . contains ( b ) ) { graph . setEndpoint ( c , b , Endpoint . TAIL ) ; if ( verbose ) { logger . log ( "impliedOrientations" , SearchLogUtils . edgeOrientedMsg ( "Definite discriminating path d = " + d , graph . getEdge ( b , c ) ) ) ; out . println ( SearchLogUtils . edgeOrientedMsg ( "Definite discriminating path d = " + d , graph . getEdge ( b , c ) ) ) ; } changeFlag = true ; } else { if ( ! isArrowpointAllowed ( a , b , graph ) ) { return ; } if ( ! isArrowpointAllowed ( c , b , graph ) ) { return ; } graph . setEndpoint ( a , b , Endpoint . ARROW ) ; graph . setEndpoint ( c , b , Endpoint . ARROW ) ; logger . log ( "colliderOrientations" , SearchLogUtils . colliderOrientedMsg ( "Definite discriminating path.. d = " + d , a , b , c ) ) ; changeFlag = true ; } }
orients the edges inside the definte discriminating path triangle . takes the left endpoint , and a , b , c as arguments .
