from random import uniform
#48 embedding for G48 
a = -0.05
b = 0.05
c = -10.0
d = 10.0
edges_G160=[(1, 2), (1, 3), (1, 4), (1, 8), (2, 3), (2, 5), (2, 6), (2, 8), (3, 4), (3, 5), (3, 7),(4, 7), (4, 8), (5, 6), (5, 7), (6, 7), (6, 8), (7, 8)]
#try:
v3 = [0, 0, 0]
v1 = [0, 5.73225265711452, 0]
v2 = [0, 0.148291560665423, 3.30491899417522]

v5 = [-3.1508917850189, 0.846961251730797, 0.259525376012296]
v7 = [-2.49285516161801, 1.67204766459525, -0.558220040757827]
v4 = [-2.59381676560345, 1.54400553897266, -0.398999543683517]
v8 = [-1.69450165498139, 1.01237857741641, -0.346180158496239]

v6 = [-3.1508917850189+uniform(a,b), 0.846961251730797+uniform(a,b), 0.259525376012296+uniform(a,b)]


lengths = getEdgeLengthsByEmbedding('edges',  [v1, v2, v3, v4, v5, v6, v7, v8], edges=edges_G160)

alg = AlgRealEmbeddings('edges', name='G160',  edges=edges_G160,  num_sols=160, allowedNumberOfMissing=4, moreSamplingSubgraphs=False)
lengths_final =alg.findMoreEmbeddings(lengths)
G = GraphEmbedding(lengths_final, 'edges', num_sols=160)
print 'There are ', len(G.findEmbeddings()['real']), 'real embeddings with the following edge lengths:'
print lengths_final
#except:
#    pass
#   ---------------------------------
    ]
    names = [
        'G128a', 'G160', 'G128b', 'G112', 'G96a', 'G96b', 'G96c', 'G96d',
        'G80a', 'G80b', 'G80c', 'G128c', 'G96', 'G96e', 'G96f', 'G80d', 'G96g',
        'G96h'
    ]
    for N in range(2, len(graphs)):
        lengths = getEdgeLengthsByEmbedding('edges',
                                            [v1, v2, v3, v4, v5, v6, v7, v8],
                                            edges=graphs[N])
        print graphs[N]
        start = time.time()
        # we run the sampling method based on coupler curves
        alg = AlgRealEmbeddings('edges',
                                name=names[N],
                                edges=graphs[N],
                                num_sols=numbersOfComplexSolutions[N],
                                allowedNumberOfMissing=10)
        lengths_final = alg.findMoreEmbeddings(lengths)

        print '\n\nSampling time: ', time.time() - start

        print '\n\nChecking and summary '
        G = GraphEmbedding(lengths_final,
                           'edges',
                           num_sols=numbersOfComplexSolutions[N])
        print 'There are ', len(
            G.findEmbeddings()
            ['real']), 'real embeddings with the following edge lengths:'
        print lengths_final
            8.136067056377305, 8.143199959343708, 8.15033286231011
        ]
    ]
}

#
new_lengths = copy.copy(lengths)
for e in lengths:
    #    print e,  lengths[e]
    m, Ls = n_L[e]
    #    print m,  Ls
    if Ls and m == 128:
        new_lengths[e] = sum(Ls) / float(len(Ls))
#        if abs(min(Ls)-lengths[e])<abs(max(Ls)-lengths[e]):
#            new_lengths[e] = min(Ls)
#        else:
#            new_lengths[e] = max(Ls)

G = GraphEmbedding(new_lengths, 'Max8vertices')
sols = G.findEmbeddings()
print 'Embeddings after resampling:'
print len(sols['real'])
print new_lengths

alg = AlgRealEmbeddings('Max8vertices',
                        num_phi=32,
                        num_theta=32,
                        factor_second=4,
                        name='8vert_Resampling_of_128')
alg.findMoreEmbeddings(new_lengths)
from graphEmbeddings3D.algRealEmbeddings import AlgRealEmbeddings
from graphEmbeddings3D.graphEmbedding import getEdgeLengthsByEmbedding, GraphEmbedding
from random import uniform

a = -0.05
b = 0.05

L = [
      {(1, 2): 9.032862424886133, (2, 7): 13.72608160429762, (4, 7): 10.53572330314948, (2, 6): 8.8124136360619918, (6, 7): 10.524846978527732, (5, 6): 0.5667571679193731, (5, 7): 10.53627365999783, (1, 4): 2.003436460984393, (1, 5): 2.00289249524296, (1, 3): 3.325513914287539, (1, 6): 1.9396324146809476, (4, 5): 1.001530148504854, (3, 7): 10.869692323177114, (3, 4): 3.1793342372525983, (2, 3): 9.540642897345043}, 
      {(1, 2): 8.408431978862838, (2, 7): 13.323993408297303, (4, 7): 10.53572330314948, (2, 6): 8.218437267272142, (6, 7): 10.524661464352766, (5, 6): 0.5295354619564819, (5, 7): 10.53627365999783, (1, 4): 2.003436460984393, (1, 5): 2.00289249524296, (1, 3): 3.325513914287539, (1, 6): 1.9387736578515649, (4, 5): 1.001530148504854, (3, 7): 10.869692323177114, (3, 4): 3.1793342372525983, (2, 3): 8.93922391029478}, 
      {(1, 2): 4.386290254987836, (2, 7): 11.232184203672034, (4, 7): 10.53572330314948, (2, 6): 3.9339443719412293, (6, 7): 10.524651892285146, (5, 6): 0.5264150074538269, (5, 7): 10.53627365999783, (1, 4): 2.003436460984393, (1, 5): 2.00289249524296, (1, 3): 7.313166095425311, (1, 6): 1.9387341135890943, (4, 5): 1.001530148504854, (3, 7): 12.677349678708367, (3, 4): 7.531555561165634, (2, 3): 8.669332474798372}, 
      {(1, 2): 4.386290254987835, (2, 7): 11.232184203672034, (4, 7): 10.53572330314948, (2, 6): 3.96355207516054, (6, 7): 10.524670259119938, (5, 6): 0.5321679719883625, (5, 7): 10.53627365999783, (1, 4): 2.003436460984393, (1, 5): 2.00289249524296, (1, 3): 7.58982287777062, (1, 6): 1.9388109236436741, (4, 5): 1.001530148504854, (3, 7): 12.839296476824694, (3, 4): 7.818147937350013, (2, 3): 8.972719070171435}, 
      {(1, 2): 4.386290254987836, (2, 7): 11.232184203672034, (4, 7): 10.53572330314948, (2, 6): 3.9339443719412293, (6, 7): 10.524651892285146, (5, 6): 0.5264150074538269, (5, 7): 10.53627365999783, (1, 4): 2.003436460984393, (1, 5): 2.00289249524296, (1, 3): 7.589822877770622, (1, 6): 1.9387341135890943, (4, 5): 1.001530148504854, (3, 7): 12.839296476824696, (3, 4): 7.818147937350017, (2, 3): 8.972719070171436}, 
      {(1, 2): 3.6547267239838073, (2, 7): 10.931902209424029, (4, 7): 10.528964771703047, (2, 6): 12.36535326089277, (6, 7): 6.614718312956418, (5, 6): 15.12587430560531, (5, 7): 13.990265768289897, (1, 4): 1.9423383670562493, (1, 5): 9.822922401885547, (1, 3): 1.9354608517198846, (1, 6): 11.884171167050836, (4, 5): 9.723833100136652, (3, 7): 10.524273284504055, (3, 4): 0.5383946923429196, (2, 3): 3.283167602028824}, 
      {(1, 2): 4.1414653501173975, (2, 7): 11.139850811829968, (4, 7): 10.523551385333088, (2, 6): 4.1677512911570815, (6, 7): 10.542828736351707, (5, 6): 1.0309584430720742, (5, 7): 10.533375487651346, (1, 4): 1.9363529242001118, (1, 5): 1.9873340498152834, (1, 3): 5.959257111560759, (1, 6): 2.0323899508242214, (4, 5): 0.4412801229952831, (3, 7): 11.949398151358958, (3, 4): 5.6557115598418122, (2, 3): 7.295330049669027}, 
      {(1, 2): 6.274873914397456, (2, 7): 12.093170928755793, (4, 7): 10.52881316000657, (2, 6): 10.479941653322763, (6, 7): 8.11321631042846, (5, 6): 9.459324566316262, (5, 7): 10.73159467196586, (1, 4): 1.9761239449935557, (1, 5): 2.8483166740669206, (1, 3): 1.9564840951854308, (1, 6): 9.4046159048512159, (4, 5): 2.313950594269001, (3, 7): 10.525064001461296, (3, 4): 0.47038007668728976, (2, 3): 5.952813550679546}, 
      {(1, 2): 3.2154982220265791, (2, 7): 1.4364348191352576, (4, 7): 17.879677295730822, (2, 6): 1.0237800945583886, (6, 7): 1.0148514465978793, (5, 6): 0.09495461781463814, (5, 7): 1.012349685743454, (1, 4): 18.137675008130483, (1, 5): 3.0323381652662267, (1, 3): 9.97279438841746, (1, 6): 3.0325698054329457, (4, 5): 17.849062036359275, (3, 7): 9.215048223037243, (3, 4): 19.765613007713743, (2, 3): 8.476438875510395}, 
      {(1, 2): 5.7322526571145165, (2, 7): 5.026767140924392, (4, 7): 1.5859742422378464, (2, 6): 4.942519597534114, (6, 7): 1.0460328780197365, (5, 6): 0.22790172904533793, (5, 7): 1.0571151960916287, (1, 4): 3.273043816331718, (1, 5): 3.0531426208724093, (1, 3): 3.308244239022385, (1, 6): 3.044838116183432, (4, 5): 1.3350982559642988, (3, 7): 4.116856477203278, (3, 4): 4.437418243490294, (2, 3): 6.488691014736114}      
    ]

for lengths_7 in L:
    G = GraphEmbedding(lengths_7, 'Max7vertices')
    v1, v2, v3, v4, v5, v6, v7 = G.getEmbedding()

    v8 = [v6[0] + uniform(a, b), v6[1] + uniform(a, b), v6[2] + uniform(a, b)]

    lengths = getEdgeLengthsByEmbedding('Max8vertices', [v1, v2, v3, v4, v5, v6, v7, v8])

    alg = AlgRealEmbeddings('Max8vertices', name='8vert_6and8close_fromG48')
    alg.findMoreEmbeddings(lengths)
Ejemplo n.º 5
0
    v2 = [uniform(a, b), uniform(a, b), uniform(a, b)]
    v3 = [uniform(a, b), uniform(a, b), uniform(a, b)]
    v4 = [uniform(a, b), uniform(a, b), uniform(a, b)]
    v5 = [uniform(a, b), uniform(a, b), uniform(a, b)]
    v6 = [uniform(a, b), uniform(a, b), uniform(a, b)]

    # edge lengths are given as the distances in the embedding
    lengths = getEdgeLengthsByEmbedding('Max6vertices',
                                        [v1, v2, v3, v4, v5, v6])
    # or the following edge lengths yields ones with 16 real embeddings:
    #lengths = {(1, 3): 0.5308353556228526, (5, 6): 1.8056034169357076, (2, 6): 2.4456570316770256, (2, 3): 0.8512597859002053,
    #           (3, 5): 1.2853151143150572, (1, 2): 1.1757548283222, (4, 6): 0.9879010951471968, (1, 5): 0.7810003670625068,
    #           (4, 5): 1.6175092476119708, (1, 6): 1.4488010671291325, (3, 4): 1.1784501009786457, (2, 4): 1.9763357382306461}

    start = time.time()
    # we run the sampling method based on coupler curves
    alg = AlgRealEmbeddings('Max6vertices',
                            num_phi=5,
                            num_theta=5,
                            name='random6vert')
    lengths_final = alg.findMoreEmbeddings(lengths, allowed_repetition=2)

    print '\n\nSampling time: ', time.time() - start

    print '\n\nChecking and summary '
    G = GraphEmbedding(lengths_final, 'Max6vertices')
    print 'There are ', len(
        G.findEmbeddings()['real']
    ), 'real embeddings of the cyclohexane with the following edge lengths:'
    print lengths_final
Ejemplo n.º 6
0
        (1, 3): 5.75,
        (5, 6): 7.9,
        (1, 6): 8.48,
        (3, 7): 5.91,
        (2, 5): 7.15,
        (3, 5): 5.09,
        (1, 2): 4.36,
        (4, 6): 8.78,
        (5, 7): 10.22,
        (3, 6): 7.06,
        (1, 7): 3.77,
        (2, 3): 3.81,
        (3, 4): 3.23,
        (2, 4): 6.05
    }
    G = GraphEmbedding(lengths_G16a, '7vert16a')
    print 'There are ', len(
        G.findEmbeddings(tolerance=1.0e-50)
        ['real']), 'real embeddings of G16a with the following edge lengths:'
    print lengths_G16a, '\n'

    print 'Graph G16b'
    lengths_G16b = {
        (1, 2): 4.62,
        (4, 7): 4.46,
        (2, 6): 7.47,
        (4, 5): 7.72,
        (1, 4): 6.51,
        (1, 3): 3.53,
        (2, 3): 7.69,
        (3, 7): 5.76,
from graphEmbeddings3D.algRealEmbeddings import AlgRealEmbeddings
from graphEmbeddings3D.graphEmbedding import getEdgeLengthsByEmbedding, GraphEmbedding
from random import uniform

a = -5.0
b = 5.0
for i in range(0, 100):
    v1 = [uniform(a, b), uniform(a, b), uniform(a, b)]
    v2 = [uniform(a, b), uniform(a, b), uniform(a, b)]
    v3 = [uniform(a, b), uniform(a, b), uniform(a, b)]
    v4 = [uniform(a, b), uniform(a, b), uniform(a, b)]
    v5 = [uniform(a, b), uniform(a, b), uniform(a, b)]
    v6 = [uniform(a, b), uniform(a, b), uniform(a, b)]
    v7 = [uniform(a, b), uniform(a, b), uniform(a, b)]

    lengths = getEdgeLengthsByEmbedding('7vert16a',
                                        [v1, v2, v3, v4, v5, v6, v7])
    G = GraphEmbedding(lengths, '7vert16a')
    r = len(G.findEmbeddings()['real'])
    print r
    if r == 16:
        alg = AlgRealEmbeddings('7vert16a', name='7vert16a_random')
        alg.findMoreEmbeddings(lengths)
        break

#one of the obtained edge lengths:
#lengths = {(4, 7): 7.194704049075016, (1, 3): 5.747980801274709, (5, 6): 7.9040999968533, (1, 6): 8.475244632380354,
#           (3, 7): 5.906043147314687, (2, 5): 7.154928516304775, (3, 5): 5.085705612775616, (1, 2): 4.358218168288518,
#           (4, 6): 8.782535437545246, (5, 7): 10.216775546892137, (3, 6): 7.058175756732775, (1, 7): 3.771401840715499,
#           (2, 3): 3.80939380782979, (3, 4): 3.227767798526635, (2, 4): 6.052913431118577}
Ejemplo n.º 8
0
        (2, 8): 0.847,
        (1, 4): 6.611,
        (1, 3): 1.568,
        (1, 6): 1.994,
        (3, 7): 10.447,
        (5, 8): 4.279,
        (2, 7): 10.536,
        (6, 8): 0.398,
        (1, 5): 4.402,
        (3, 4): 6.494,
        (5, 7): 11.239,
        (5, 6): 4.321,
        (2, 3): 1.426,
        (7, 8): 10.474
    }
    G = GraphEmbedding(lengths_G160, 'Max8vertices')
    G.findEmbeddings()
    edges = [(1, 2), (2, 7), (4, 7), (2, 6), (6, 8), (4, 5), (2, 8), (5, 7),
             (7, 8), (1, 4), (1, 5), (1, 3), (1, 6), (5, 6), (3, 7), (3, 4),
             (2, 3), (5, 8)]

    for _ in range(0, 1000):
        for e in edges:
            lengths_G160[e] = 1 + 0.01 * random()
        G.setLengths(lengths_G160)
        real_sol = G.findEmbeddings(tolerance=1.0e-50)['real']
        print len(real_sol)
        if len(real_sol) >= 132:
            with open('stoch_res.txt', 'a') as f:
                f.write(str(len(real_sol)) + '\n')
                f.write(str(lengths_G160) + '\n\n')
Ejemplo n.º 9
0
'''
This script verifies that the 8-vertex graph G128, resp. G160, has edge lengths such that 128, resp. 132, embeddings are real.
The edge lengths were found by the sampling method.
'''

if __name__ == '__main__':
    print __doc__

    from graphEmbeddings3D.graphEmbedding import GraphEmbedding

#    print 'Graph G128'
#    lengths_G128 = {(2, 7): 9.2728, (1, 2): 8.7093, (1, 3): 10.3433, (6, 7): 1.5449, (6, 8): 10.5532, (4, 8): 10.5237, 
#                    (5, 6): 0.7536, (2, 8): 13.5773, (3, 4): 10.1636, (1, 4): 1.9373, (3, 8): 14.6173, (1, 5): 1.9379, 
#                    (1, 6): 2.0691, (1, 7): 2.1185, (4, 5): 0.0634, (2, 3): 13.5267, (7, 8): 10.5509, (5, 8): 10.5237}
#    G = GraphEmbedding(lengths_G128, 'Ring8vertices')
#    print 'There are ', len(G.findEmbeddings(tolerance=1.0e-50)['real']), 'real embeddings of G128 with the following edge lengths:'
#    print lengths_G128,  '\n'

    print 'Graph G160'
    lengths_G160 = {(1, 2): 1.999, (4, 7): 11.993, (2, 6): 0.879, (4, 5): 7.278, (2, 8): 0.847, (1, 4):6.611,
                    (1, 3): 1.568, (1, 6): 1.994, (3, 7): 10.447, (5, 8):4.279, (2, 7): 10.536, (6, 8):0.398,
                    (1, 5): 4.402, (3, 4): 6.494, (5, 7): 11.239, (5, 6): 4.321, (2, 3): 1.426, (7, 8): 10.474}
    G = GraphEmbedding(lengths_G160, 'Max8vertices')
    print 'There are ', len(G.findEmbeddings(tolerance=1.0e-50)['real']), 'real embeddings of G160 with the following edge lengths:'
    print lengths_G160,  '\n'