Skip to content
Snippets Groups Projects
Select Git revision
  • 0e77d298407ed5bd92b605ff429fee2c815f2341
  • devel default
  • master
  • fo
  • jirka/typing
  • fo-base
  • mj/submit-images
  • jk/issue-96
  • jk/issue-196
  • honza/add-contestant
  • honza/mr7
  • honza/mrf
  • honza/mrd
  • honza/mra
  • honza/mr6
  • honza/submit-images
  • honza/kolo-vs-soutez
  • jh-stress-test-wip
  • shorten-schools
19 results

org_users.py

Blame
  • analyze-cycle.py 1.25 KiB
    from graph_tools.definitions import *
    from graph_tools.parameters import *
    from sage.all import *
    from collections import namedtuple
    from itertools import *
    
    
    def calc(s):
      b = list(CircuitDoubleCover.enumerate_boundaries(s))
      m = dict()
    
      _bmap = { x: i for i, x in enumerate(b) }
      def eval_(g):
        ret = set()
        g_ = FakeGadget(g.size(), g.eval(CircuitDoubleCover))
        for c, cb in enumerate(b):
          cg = FakeGadget(g.size(), [ Boundary(cb, 1) ])
          v = Gadget.join(
            [ cg, g_ ],
            [ ((1, i), (2, i)) for i in range(1, s+1) ],
            []
          ).eval(CircuitDoubleCover)
          if v > 0: ret.add(c)
    
        return ret
    
      ret = namedtuple("calc_ret", ["boundaries", "eval", "map"])
      ret.boundaries = b
      ret.eval = eval_
      ret.map = lambda x: _bmap[x]
    
      return ret
    
    
    def C_k(k):  
      return Gadget.join(
        [CUBIC_VERTEX]*k,
        [ ((i+1, 2), (((i+1) % k) + 1, 1)) for i in range(k) ],
        [ (i+1, 3) for i in range(k) ]
      )
    
    def G_k(k):
      return Gadget.join(
        [CUBIC_VERTEX]*k,
        [ ((i+1, 2), (((i+1) % (k-1)) + 1, 1)) for i in range(k-1) ] + [ ((1,3), (k,1)) ],
        [ (i+2, 3) for i in range(k-2) ] + [ (k, 2), (k, 3) ]
      )
    
    k = 6
    c = calc(k)
    e = c.eval(C_k(k))
    f = c.eval(G_k(k))
    
    print(len(e))
    print(len(f))
    print(len(set(f).intersection(set(e))))