class_docstr: Implements methods for finding optimal (efficient) backdoor sets.
class_docstr_tok: ["Implements","methods","for","finding","optimal","(","efficient",")","backdoor","sets","."]
docstr: Returns the optimal minimum cost adjustment set with respect to
  treatment, outcome, conditional and observable variables.
  
  Note that when the costs are constant, this is the optimal adjustment
  set among those of minimum cardinality.
  
  :returns: optimal_mincost: set
      The optimal minimum cost adjustment set.
docstr_tok: ["Returns","the","optimal","minimum","cost","adjustment","set","with","respect","to","treatment",",","outcome",",","conditional","and","observable","variables",".","Note","that","when","the","costs","are","constant",",","this","is","the","optimal","adjustment","set","among","those","of","minimum","cardinality",".",":","returns",":","optimal_mincost",":","set","The","optimal","minimum","cost","adjustment","set","."]
code: def optimal_mincost_adj_set(self):
      """Returns the optimal minimum cost adjustment set with respect to
      treatment, outcome, conditional and observable variables.
  
      Note that when the costs are constant, this is the optimal adjustment
      set among those of minimum cardinality.
  
      :returns: optimal_mincost: set
          The optimal minimum cost adjustment set.
      """
      H1 = self.build_H1()
      if self.treatment_name in H1.neighbors(self.outcome_name):
          raise ValueError(EXCEPTION_NO_ADJ)
      else:
          S_c = self.compute_smallest_mincut()
          optimal_mincost = self.h_operator(S_c)
      return optimal_mincost
  
file_path: dowhy/dowhy/causal_identifier/efficient_backdoor.py
imports: from typing import List
  import networkx
  import numpy
label_desc: Use image node_id 15 for calling the EfficientBackdoor obj's underlying member method code with example usage: obj.optimal_mincost_adj_set() and returns: optimal_mincost