Exemple #1
0
 def set_universe(universe):
     if len(universe) != len(set(universe)):
         raise ValueError('duplicated elements found')
     _graphillion._num_elems(0)
     setset._obj2int = {}
     setset._int2obj = [None]
     for e in universe:
         setset._add_elem(e)
     setset._check_universe()
Exemple #2
0
 def set_universe(universe):
     if len(universe) != len(set(universe)):
         raise ValueError('duplicated elements found')
     _graphillion._num_elems(0)
     setset._obj2int = {}
     setset._int2obj = [None]
     for e in universe:
         setset._add_elem(e)
     setset._check_universe()
Exemple #3
0
 def _check_universe():
     assert len(setset._int2obj) == _graphillion._num_elems() + 1
     for e, i in viewitems(setset._obj2int):
         assert e == setset._int2obj[i]
     for i in range(1, len(setset._int2obj)):
         e = setset._int2obj[i]
         assert i == setset._obj2int[e]
Exemple #4
0
 def probability(self, probabilities):
     ps = [-1] * (_graphillion._num_elems() + 1)
     for e, p in viewitems(probabilities):
         i = setset._obj2int[e]
         ps[i] = p
     assert len([p for p in ps[1:] if p < 0 or 1 < p]) == 0
     return _graphillion.setset.probability(self, ps)
Exemple #5
0
 def _check_universe():
     assert len(setset._int2obj) == _graphillion._num_elems() + 1
     for e, i in viewitems(setset._obj2int):
         assert e == setset._int2obj[i]
     for i in range(1, len(setset._int2obj)):
         e = setset._int2obj[i]
         assert i == setset._obj2int[e]
Exemple #6
0
 def probability(self, probabilities):
     ps = [-1] * (_graphillion._num_elems() + 1)
     for e, p in viewitems(probabilities):
         i = setset._obj2int[e]
         ps[i] = p
     assert len([p for p in ps[1:] if p < 0 or 1 < p]) == 0
     return _graphillion.setset.probability(self, ps)
Exemple #7
0
 def _optimize(self, weights, default, generator):
     ws = [default] * (_graphillion._num_elems() + 1)
     if weights:
         for e, w in viewitems(weights):
             i = setset._obj2int[e]
             ws[i] = w
     i = generator(self, ws)
     while (True):
         yield setset._conv_ret(next(i))
Exemple #8
0
 def _optimize(self, weights, default, generator):
     ws = [default] * (_graphillion._num_elems() + 1)
     if weights:
         for e, w in weights.iteritems():
             i = setset._obj2int[e]
             ws[i] = w
     i = generator(self, ws)
     while (True):
         yield setset._conv_ret(i.next())
Exemple #9
0
 def _add_elem(elem):
     assert elem not in setset._obj2int
     if len(setset._obj2int) >= _graphillion._elem_limit():
         m = 'too many elements are set, which must be %d or less' % _graphillion._elem_limit()
         raise RuntimeError(m)
     i = len(setset._int2obj)
     _graphillion.setset([set([i])])
     setset._obj2int[elem] = i
     setset._int2obj.append(elem)
     assert len(setset._int2obj) == _graphillion._num_elems() + 1
     assert setset._int2obj[i] == elem
     assert setset._obj2int[elem] == i
Exemple #10
0
 def _add_elem(elem):
     assert elem not in setset._obj2int
     if len(setset._obj2int) >= _graphillion._elem_limit():
         m = 'too many elements are set, which must be %d or less' % _graphillion._elem_limit()
         raise RuntimeError(m)
     i = len(setset._int2obj)
     _graphillion.setset([set([i])])
     setset._obj2int[elem] = i
     setset._int2obj.append(elem)
     assert len(setset._int2obj) == _graphillion._num_elems() + 1
     assert setset._int2obj[i] == elem
     assert setset._obj2int[elem] == i
Exemple #11
0
 def _optimize(self, weights, default, generator):
     ws = [default] * (_graphillion._num_elems() + 1)
     if weights:
         for e, w in viewitems(weights):
             i = setset._obj2int[e]
             ws[i] = w
     i = generator(self, ws)
     while (True):
         try:
             yield setset._conv_ret(next(i))
         except StopIteration:
             return
Exemple #12
0
 def _add_elem(elem):
     assert elem not in setset._obj2int
     if len(setset._obj2int) >= _graphillion._elem_limit():
         m = 'not more than %d elements used' % _graphillion._elem_limit()
         raise RuntimeError, m
     i = len(setset._int2obj)
     _graphillion.setset([set([i])])
     setset._obj2int[elem] = i
     setset._int2obj.append(elem)
     assert len(setset._int2obj) == _graphillion._num_elems() + 1
     assert setset._int2obj[i] == elem
     assert setset._obj2int[elem] == i
Exemple #13
0
 def _add_elem(elem):
     assert elem not in setset._obj2int
     if len(setset._obj2int) >= _graphillion._elem_limit():
         m = 'not more than %d elements used' % _graphillion._elem_limit()
         raise RuntimeError, m
     i = len(setset._int2obj)
     _graphillion.setset([set([i])])
     setset._obj2int[elem] = i
     setset._int2obj.append(elem)
     assert len(setset._int2obj) == _graphillion._num_elems() + 1
     assert setset._int2obj[i] == elem
     assert setset._obj2int[elem] == i
Exemple #14
0
 def _repr(self, outer_braces=('[', ']'), inner_braces=('[', ']')):
     n = _graphillion._num_elems()
     w = {}
     for i in range(1, n + 1):
         e = setset._int2obj[i]
         w[e] = 1 + float(i) / n**2
     ret = outer_braces[0]
     maxchar = 80
     no_comma = True
     for s in setset.min_iter(self, w):
         if no_comma:
             no_comma = False
         else:
             ret += ', '
         ret += inner_braces[0] + str(sorted(list(s)))[1:-1] + inner_braces[1]
         if len(ret) > maxchar - 2:
             break
     if len(ret) <= maxchar - 2:
         return ret + outer_braces[1]
     else:
         return ret[:(maxchar - 4)] + ' ...'
Exemple #15
0
 def _repr(self, outer_braces=('[', ']'), inner_braces=('[', ']')):
     n = _graphillion._num_elems()
     w = {}
     for i in range(1, n + 1):
         e = setset._int2obj[i]
         w[e] = 1 + float(i) / n**2
     ret = outer_braces[0]
     maxchar = 80
     no_comma = True
     for s in setset.min_iter(self, w):
         if no_comma:
             no_comma = False
         else:
             ret += ', '
         ret += inner_braces[0] + str(sorted(list(s)))[1:-1] + inner_braces[1]
         if len(ret) > maxchar - 2:
             break
     if len(ret) <= maxchar - 2:
         return ret + outer_braces[1]
     else:
         return ret[:(maxchar - 4)] + ' ...'