############################################################################################################################################################ #Graph #1: Sp(6,2), SRG(63,32,16,16), 2-rank=6 ############################################################################################################################################################ G1=Graph('~??~`?MAdbPaSqZgn`{P\\HbKDIkWrXIXpQikKXnsV[v@vwwmwkqZih[wZpitiuithrfXquZXjQujY[{]p|c{]MEVQusdequ[e\\LhrWrTTitSjbwZuOnLZimiifMwnaqwxvw^b_JV[trRFoXnXBA]iilTHImqXrWopncrXqWXMyIllHHJ]ZK]MEFFm|HSdYci]{HWdyPhVnFC[BaMLzQXHeQXLklTIhTIjmbpWyDpg}^B{ONoG~D\\JePeWe\\Hz~?{?BoN~sPIzTSalv}AH^YYOUz}yGw[[[]My\\cQYuUQevX^}???^~~w?n`w?^_^}F_~_?B~~~??Fw') #a series of switching sets that increase the 2-rank up to 24 (from above graph): #vertices in binary form #100000, 010000, 101000, 011000 #000010, 000001, 001010, 001001 #100010, 101010, 110011, 111011 #000100, 010100, 001111, 011111 #000110, 000101, 010110, 010101 #001000, 100001, 110010, 011011 #110100, 111100, 100111, 101111 #010100, 110110, 101101, 001111 #000011, 110001, 001011, 111001 #vertices in SAGE form #(0, 1, 7, 11) #(4, 5, 16, 17) #(9, 26, 46, 58) #(3, 12, 55, 61) #(18, 19, 34, 35) #(22, 41, 50, 60) #(12, 44, 48, 55) #(20, 24, 39, 43) ############################################################################################################################################################ #Graph #2 (G64product1): H-product of Clebsch graph and 2K_2 , SRG(64, 36, 20, 20), 2-rank=8 ############################################################################################################################################################ G2=Graph('~?@?[nb^pZnal|{tZ]}]j[|{NTkfne]j[RvqrtZwfnbXyl~C|{UrtZna]}Iu]j^^C|{tZNTlzwfnfiu]j[|{Rvo|U{IcHzzWOU]jEDRpN]zACk|TKIjwfk\\`MLfjH`R^pN?zB{Urucodm}HsFWnalftH_j^^CaBlvrTkqhKtZ]}ICFVnfiu@Sfylrvoo_{|{oiO|UrtZuCCfna]}EDRfiu]jZkGPN^C|{RAirtZNTk\\`MHzwfnceDLfiu]jWMo~C|{Rvqcodk|UrtZO\\a}HzwfndQWIu]jXylaBlvpN^C|{IcrTk|UrtZ`@tzwfna]}@Sfylfiu]jZABrvpN^C|{') #a series of switching sets that increase the 2-rank up to 26 (from above graph): #(0, 1, 16, 17) #(0, 1, 2, 12) #(3, 22, 37, 55) #(9, 29, 35, 52) #(20, 24, 41, 42) #(8, 10, 53, 59) #(3, 6, 19, 22) #(11, 30, 45, 63) #(45, 47, 61, 63) #(23, 27, 39, 43) #(13, 26, 40, 51) #(4, 31, 38, 57) ############################################################################################################################################################ #Graph #3 (G64product2): H-product of Shrikhande graph and 2K_2, SRG(64, 28, 12, 12), 2-rank=8 ############################################################################################################################################################ G3=Graph('~?@?zK[]L@gA`DEDEAj?msCuWsEpgMogZWSKuDBEog[YApwsDbORX@g@m_ICYgPPbDEDEKSWIkOioJk?msCuORXbOXq}kY@MV}ogC|^l`PHyzL`RHyrEojc|PpgIx^S]L@FJzbORY}qSE_Et~cgA`EtzcgPPbYxqSWSW}m[DEAjFtR_ioJk^PMAzORW}q[CufJxbOUL@Rd}pgJE_c|^kIEog[fjl`OuDBq]kuDBWSNc|PkIEogZd|PgJE_kXq}wsDbOUM}qSCuORX@V}Q_Ey?ZgD]xICYgPi`YxqSWpPbDEyxoSWpPbDE|SwIkOipAj^PMAz?Jk?mrzHoRX@LcCu') #a series of switching sets that increase the 2-rank up to 26 (from above graph): #(0, 1, 48, 49) #(3, 16, 42, 57) #(8, 18, 36, 58) #(4, 5, 43, 46) #(19, 27, 39, 47) #(34, 38, 40, 44) #(21, 25, 33, 45) #(13, 27, 39, 53) #(7, 25, 33, 59) #(9, 26, 32, 51) #(6, 15, 22, 31) #(8, 14, 58, 60) #(19, 27, 39, 47) #(17, 29, 37, 41) #(37, 42, 57, 58) #(4, 5, 30, 39) ############################################################################################################################################################ #Graph #4 (G64product5): H-product Lattice graph L(4) and 2K_2 and , SRG(64, 28, 12, 12), 2-rank=8 ############################################################################################################################################################ G4=Graph('~?@?~`HW}GPHDaNaGPCcPWaN]GasPMcP^AG}FaGQsPHYPDboaNaFaGPJPCcUcPWboaNaG]G`CQsPHCUcPWaNAG|waG\\vlCPJm}cPDmz{GaN\\v`w`w\\wQsQsmsdhDhZhW{G{N[NaF`v`w`ClJlJPHDhZhYPWbo|o{G}G`v\\waGPCmzlCPHCUzmcPDaG|v[GaN`v\\waFaGQzmsPJPCdmzhCUcPW|v[GboaN]F]FaG]GasmslCQsPMdmdhCUcP^BvBoaNAG|v`w`waFaGmslClCQsPMyUcUcPYPD|o{G{GboaN\\vaG`waFaGmzPCQsPJPCzmcPDhCUcP^\\oaG{GboaN') #a series of switching sets that increase the 2-rank up to 26 (from above graph): #(0, 5, 10, 15) #(1, 4, 17, 20) #(2, 29, 37, 58) #(3, 12, 22, 25) #(13, 18, 41, 54) #(6, 28, 34, 56) #(42, 44, 51, 53) #(33, 45, 50, 62) #(7, 24, 44, 51) #(1, 14, 17, 30) #(8, 23, 35, 60) #(1, 8, 11, 18) #(12, 22, 39, 61) #(0, 15, 16, 31) #(7, 24, 38, 57) #(32, 35, 37, 38) ############################################################################################################################################################ #Graph #5 (G64product7): H-product of Shrikhande graph and K_4, SRG(64, 36, 20, 20), 2-rank=8 ############################################################################################################################################################ G5=Graph('~?@?zK[]L@gA`DEDEAj?msCufJxMVxNV{fjnHyrxNSZd|PfJzbnkd@V}Q_TzcgUm[dEyxoSZtR_ivsR_mrzHoRY[nhq}Rd|MVxNVc|^q]nHyzq]nHyrxNVc|PmVsx^SXq}fJzbnke}qSD^xD~cgD]xTzcgUm[yxqSZjfMm[DE|SztR_ivsR~PMAzNke}q[CufJy[nhq}Rd|MVsx^c|]RtxNV{fjq]nHyzq]nHy{fjNc|]RtxNSZd|MVsx^SXq}fJy[nmM}qZzHnkd@V}P^xD~cgD]xTzdVmQ`YxrjfMm[dEyxrjfMm[DE|SztRnTMAj^PN|C~sR_mrzHnke}q[Cu') #a series of switching sets that increase the 2-rank up to 26 (from above graph): #(0, 1, 10, 15) #(4, 14, 20, 30) #(32, 42, 53, 59) #(1, 15, 36, 46) #(5, 16, 33, 52) #(2, 6, 34, 38) #(12, 25, 40, 61) #(3, 22, 39, 50) #(9, 22, 45, 50) #(18, 23, 28, 29) #(0, 10, 48, 58) #(21, 27, 32, 42) #(1, 4, 32, 37) ############################################################################################################################################################ #function to compute 2-rank of a graph G ############################################################################################################################################################ def two_rank(G): return sum([(x%2) for x in G.adjacency_matrix().smith_form()[0].diagonal()]) ############################################################################################################################################################ #function which takes graph G and switching set S and performs GM-switching (if possible) ############################################################################################################################################################ def switch(G,S): if len(S)%2: print "S needs to have an even number of vertices, so not a switching set" return if len(set([len(set(G.neighbors(v)).intersection(set(S))) for v in S])) != 1: print "The graph restricted to S is not regular, so not a switching set" return nbrs = set([]) for v in G.vertices(): if v not in S: nbrs.add(len(set(G.neighbors(v)).intersection(set(S)))) if not nbrs.issubset(set([0,len(S)/2,len(S)])): print "This is not a switching set as some vertex has wrong number of neighbors" return if not (len(S)/2) in nbrs: print "Nothing will switch with this set" return H = copy(G) for v in H.vertices(): if (not v in S) and (len(set(H.neighbors(v)).intersection(set(S)))==len(S)/2): for s in S: if s in H.neighbors(v): H.delete_edge([s,v]) else: H.add_edge([s,v]) return H ############################################################################################################################################################