# SageMathCell online https://sagecell.sagemath.org/?q=xcbwcp # # # P'_13d++ Graph from from Dharunish Yugeswardeenoo with 189 vertices and 1411 edges. Alg.conn. 9.75845 # deg. distrib.:[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 176] diameter: 2 avg. dist.: 1.92058 Girth: 3 # # P'_13d+1 Graph from Petrit Isufi with 188 vertices and 1345 edges. Alg.conn. 9.43696 / Domin. number: 13.0 # deg. distrib.: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 112, 67] diameter: 2 avg. dist.: 1.92348 Girth: 3 # # P'_13d+2 Graph from Dharunish Yugeswardeenoo with 188 vertices and 1345 edges. Alg.conn. 9.43696 / Domin. number: 13.0 # deg. distrib.: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 112, 67] diameter: 2 avg. dist.: 1.92348 Girth: 3 # # P'_13d Graph from Canale with 187 vertices and 1330 edges. Alg.conn. 9.46615 / Domin. number: 13.0 # deg. distrib.: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 125, 52] diameter: 2 avg. dist.: 1.92352 Girth: 3 # # P13 Graph with 183 vertices and 1274 edges. Alg.conn. 10.3944 / Domin. number: 13.0 # deg. distrib.: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 169] diameter: 2 avg. dist.: 1.92350 Girth: 3 # import networkx as nx P13dpp =Graph(r":~?A|_O@_oD_[C`OC`SL@KB_?@?OB?_D?oG@GK@gM_SA_SAASA@SAAKA@[J@{A_OW_OU_OFA?Q_GF`oZ`?JAkEA[DASB@[C@wPCCI@gYaw^`_XCGbbCHAo\_WOBs@_wLBWe`oTaWVD?j`?QCgj`_SBsEAGabObDcDCwi`GIBG__?WBg`D{BAocESCA?RBwm_KKBWdD{??wTCwk`oRBwjE{QD?p_G``?PB_cDSHBOtFcLCOlFCEAgXBg_DsB?gWCos`OUAw]E[DA?_E@?_GI@WuEwwFGyF_|Fo~G@@GSZC_lEsLAg_DWuFsD?wRCWrEsMAO]DOu`GSD?nE_uaGVComEsLA_^CGiGSGBgoEpH_WXCwtEpC`_WCOkEpI__UCgsEpDGsEA?`EOrEpF_GVCKVBWbDWzG@GICE@OTCoiFXKICHAWfDozGPHICC?wQE?zFxMICMA__D_wFXCICKAGgEOzF`EICDBO\DgzFhLICBCgzGHIICLBGcDwyFXDICGB?]EGvFXOao^EgzFpFIC?A?aE_xFXJIC@DGiDWkDgmDwoEGqEWsEkHBW`COhFhCJCKAg^DH?HHSJsJ@gRBohGHKI{?@OQC_hHhQ_oFA_dDGyHX[KCMAG\DHAHPMJPa_WYD?hExDIX`c?hFxGIK?AwXDG}GpZK[CB?fDGwGxUKkDAoeDGxHHX`?OCWhF`NIhg_KGBWeE_yHhRKsDAg`CgtF@GJ@gL[CAWaEH?HxPKCQAwfDwvHPKI`ha_\EW{GhZK`l_WF@OPBO^DhHIxd`oYCoqFpLIpaLsED?kFO|HpQK[?BG]E@AGxXJpo`gWCWmFHCJ`fMSJ@_UC?iGHJIh^`GOC_jDo~GpYKHt_Hr_?ZC?qExHJX_MPsM{TBopE_|GpIJ`dLpv`?RCGeD_~GhWJppM{LAO\EgzG@JIp`L`v_WSCOoFpKJPgMpv_gJAGpGHCI`cM`v_wKBOcDowHxXKXlM{I@obDxFIX^KhjM{CBGgDOxH@VKptM{HB?^EWyHpTLHoM{EAofDWwF`LIHaMXva?VCglGPQKxnM{@HPm_oJBW^E@@GhUKxjNcK@weE?yG`ZKhnNKKAW\D?sFpGIPhMX|_WQC?`Do{J@eMaA`?SCwlG@EJH^MPw_?UD?lFxCHPUL@lNyCawYCObDO~Gx[K`kOIH_wHBoqFHLI`gLyB`oSBGdEG|HHTKHlNID_gIB?^D?jHXZJpmNsLAokExNJPdM@za?eDwwHpVK@uNyEPC@OaDOyGPIJPaLPqNQCDBW]Do}HpPKHpOICagVBgqFPNIx^M`{OcBAWnFhJJHfMiBOaQ_oQCWsF@CHHYJpnOACPsJAG`CwoFH`LQ?OqHQSHAGdD`?GxZKPuNiC`?YC?rFHKIPdLX}OaV__XCotExEIhcMYAOaR_wJBGaDX@IXhMPzOaE`oWC_oF`GI`_L`wOaY_?LAGbEgyH`PKXtNQKQKI@_OCwpGh[KpoNQCQIZ_GGLPjL`lLpnM@pMPrM`tMsC@OZBgkExXL@iNIGQ{B@GTCWpFxLJXhLPwQc?AWdDO{HpRKhiNaKPqR`GJAOeDh@H@[KXiNqDRI__gSC_sExFIxfLPyPQYRcPCwoFHNJ@`LQ?OqHQSEBO]DGnG@CIheLPzPa\SKKA_jGPKIp_LQ@PYTR{GBG^EOwHPJIHcLP|QAS_wVB?_Eg|GhYKPiNyFPQUScMAoaC_mFPEIP]LQBPyZS{LA?gEW}HHSJxiOQLRAb_G[Bg]Bw_CObC_dCofDAV__TC_rGPCIXaMI?PyPSCHAg[E?vHXLIPeLi@PAIS[F@ORB_qG`YKXkOQEPYSTSKAO[EW|GxPL@qNa\Syka_VB_iEGxHpUJprNYORA_`gPB_sFxTK@jOYMQqXSan__YB_`DWyHHIJ@fMpwOyd_?[Dp?GhVLHmMy?OiVTIm_gXB_kF`KJ`^Lx{NyNQQaUSEB?[Dg}HxRK`tNIZRa^UCF@?UB_nGPGJX`KxsNQLQYe`WMA?[Eh@HhXKhpNiHQi`TkA?_`C_pFpJJ@dMP~PaXSqr_?SCojFhNI`eLX|PySSqj_?JB?\DxEJ@\Ly@RAcTQkT{?BO^EGuGPGJP^MIBPAYRyp_oOEOuGHFJ@hLh}PyRQqtVN") P13dp1 =Graph(r":~?A{_O@_oD`?C`_J`KB_GA?WC?gE?wG@GI@WK@gM_SA_SAASA_OP_SA_SABCAAsAAC@`oZ`?T_oR_gQ_wS__PCCLBSIAw^`_XC[JB?``GUBkBA?]_KLBWe`oTCKIAWg`?QCgj`_SBsEAGa`WYCWk_gVCwi`GXCC??wWBgn_WUC_q__OBwm_KKBWdD{??wTCwk`oRBwjE{JAOgEKCA_bESGAGcDSHBO`Eg{`gVCOlFCEBG\DsBB?eEcIAo]EWz_gOC?oGC@EovF?xFOzF_|Fo~G@@GSJBWcDgu`gTC?jEsDAWbEWu`oQBoiEsHA_gDwu`OPComEs??wYBwpEpG`?VBgoEpH_WXCwtEpC`_WCOkEsCAodE_uGkEA?`EOuG{@`OZCWjG@GICEAgeDOzH`O`GRCwmGPHICCAO`E?~HpO`oSC?kF@CICKAGgEO{GpO_gYBglFhLICBAwdEX@HxO`gXC_nFPDICGB?]EGvHPO`WUBwtFpFIC??wOCOsFHJIC@DGiDWkDgmDwoEGqEWsEkHBWaDG|G`W`_TBwhG@II`]`gRBohGHKI{??wQC_hFXLISEA_dDGyHX[KCMAG\DHAHpY_WYD?hExDIX``WVC?hFxGIKIBG`DG}GpZK[CB?fDGwGxUKkDAoeDGxHHX`?OCWhF`NIhg_KGBW`E_yHhRKsDAgdEgwH@WL@j__RCOpG@NIH_`OQCwnExKI`h`WSBgrF`DJXcLkBAG^DgzHHVKkMBOeEO}HPUKPm_oVD?kFhMIPb_?FBG]E@AGxXJpo`gWCWmFHCJ`fMSKAo_DP@HXTJ{HA?cDW~GpYKHt_K??wZC?qExHJX_MPv`WTBosFhEJ`dLpv`?RCokFxDJ@]MHv`gQBgtG@JIp`L`v_WSCOoFpKJPgMpv_gPCGpGHCI`cM`v`_YC_mF@NJHbLhv`oVCWnFXFIX^LXv__XD?iFHGIxeMhv`GWBwrFPMIhhM@v_oUCwjF`LIHaMXv`OOCglGPIIPfLxv_KEBW^E@@GhUKxjNcCAgcEXAG`RKPpOCKAW\E_}H@QLHrNkBAO_Do{HPWKpsOSGA_fDh?GpXJxqNC??wPCWtFPKIHbMhy`OYCOiFxFJ`cLa@PKHAw]EOxHhSL@nOYI`oXCgpFhHIh`LhxOkDB?gDWzHXZJpmNsLAo`D_vHxYKhoNYE`WOConF@MIx_Mp~PC@OaDOqFPAHPQJPaLPqNQCDBW]Do}HpPKHpOIC`OTBgqFPNIx^M`{OcBAW`Dw|HXXKxtOYCQSEAObE_wHHYJpnOAC`gSBwiGPLJ@bLpxOcHAGdD`?GxZKPuNiC`?YC?rFHKIPdLX}OaV__VCotExEIhcMYAOaR`WXCOjGHIIXhMPzOcMB?cE?{H@SK@kNAC_?FAogDg~G`UL@lNyCQsKA?fEGzGh[KpoNQCR[@LPjL`lLpnM@pMPrM`tMsCBW\D_zHPXL@iNIGQ{BAgbEG~HhZLHiNAEQc??wRCgiF`MIXdLP{PqR`GQColGHGJ`bLP}OiXSCDA_cE_vGxVKxiNQIRSJAGfE?xHxWKHiOAHQSEBO]Dx?G`TKpiNYKRi``_VCGjGPKIp_LQ@PYTR{GBG^EOwHXPK`iNiOQsIB?_Eg|GhYKPiNyFRac`oUCOmFPEIP]LQBPyZS{LA?gEW}HHSJxiOQLRAb_G[Bg]Bw_CGaCWcCgeCwg_WZB_iF@EI`aM@}PaYTCHAg[E?vHXQKplOIGRab`WRB_qFXCJPbLaAPYSTSKAO[EW|GxPL@qNaERif`OSB_pFHMIp]MXzQAWSCLAG[E_~HPTK@jOYMRIcT{CBO[DWyHHWKxuNAFQqd_?FAw[Dp?GhVLHmOADQyhTsDBG[D_{H`[JxnNyNQQaUSEB?[Dg}HxRK`tNIIRY^UCGAo[DxAH@ZKHsNQLQYeTcMA?[Eh@HhXKhpNiHQi`Tk??GA?WC?gE@?H@OJ@_L@o`_?NA_eDW|HxSKpjNiNQaeT[??wWBgnGHEJ@\Ly@OqWTQn_?FAWdDO{HpRKhiNaMQYdU~") P13dp2 =Graph(r":~?A{_O@_oD`?C`_J`KB_GA?WC?gE?wG@GI@WK@gM_SA_SAASA_OP_SA_SABCAAsAAC@`oZ`?T_oR_gQ_wS__PCCLBSIAw^`_XC[JB?``GUBkBA?]_KLBWe`oTCKIAWg`?QCgj`_SBsEAGa`WYCWk_gVCwi`GXCC??wWBgn_WUC_q__OBwm_KKBWdD{??wTCwk`oRBwjE{JAOgEKCA_bESGAGcDSHBO`Eg{`gVCOlFCEBG\DsBB?eEcIAo]EWz_gOC?oGC@EovF?xFOzF_|Fo~G@@GSJBWcDgu`gTC?jEsDAWbEWu`oQBoiEsHA_gDwu`OPComEs??wYBwpEpG`?VBgoEpH_WXCwtEpC`_WCOkEsCAodE_uGkEA?`EOuG{@`OZCWjG@GICEAgeDOzH`O`GRCwmGPHICCAO`E?~HpO`oSC?kF@CICKAGgEO{GpO_gYBglFhLICBAwdEX@HxO`gXC_nFPDICGB?]EGvHPO`WUBwtFpFIC??wOCOsFHJIC@DGiDWkDgmDwoEGqEWsEkHBWaDG|G`W`_TBwhG@II`]`gRBohGHKI{??wQC_hFXLISEA_dDGyHX[KCMAG\DHAHpY_WYD?hExDIX``WVC?hFxGIKIBG`DG}GpZK[CB?fDGwGxUKkDAoeDGxHHX`?OCWhF`NIhg_KGBW`E_yHhRKsDAgdEgwH@WL@j__RCOpG@NIH_`OQCwnExKI`h`WSBgrF`DJXcLkBAG^DgzHHVKkMBOeEO}HPUKPm_oVD?kFhMIPb_?FBG]E@AGxXJpo`gWCWmFHCJ`fMSKAo_DP@HXTJ{HA?cDW~GpYKHt_K??wZC?qExHJX_MPv`WTBosFhEJ`dLpv`?RCokFxDJ@]MHv`gQBgtG@JIp`L`v_WSCOoFpKJPgMpv_gPCGpGHCI`cM`v`_YC_mF@NJHbLhv`oVCWnFXFIX^LXv__XD?iFHGIxeMhv`GWBwrFPMIhhM@v_oUCwjF`LIHaMXv`OOCglGPIIPfLxv_KEBW^E@@GhUKxjNcCAgcEXAG`RKPpOCKAW\E_}H@QLHrNkBAO_Do{HPWKpsOSGA_fDh?GpXJxqNC??wPCWtFPKIHbMhy`OYCOiFxFJ`cLa@PKHAw]EOxHhSL@nOYI`oXCgpFhHIh`LhxOkDB?gDWzHXZJpmNsLAo`D_vHxYKhoNYE`WOConF@MIx_Mp~PC@OaDOqFPAHPQJPaLPqNQCDBW]Do}HpPKHpOIC`OTBgqFPNIx^M`{OcBAW`Dw|HXXKxtOYCQSEAObE_wHHYJpnOAC`gSBwiGPLJ@bLpxOcHAGdD`?GxZKPuNiC`?YC?rFHKIPdLX}OaV__VCotExEIhcMYAOaR`WXCOjGHIIXhMPzOcMB?cE?{H@SK@kNAC_?FAogDg~G`UL@lNyCQsKA?fEGzGh[KpoNQCR[@LPjL`lLpnM@pMPrM`tMsCBW\D_zHPXL@iNIGQ{BAgbEG~HhZLHiNAEQc??wRCgiF`MIXdLP{PqR`GQColGHGJ`bLP}OiXSCDA_cE_vGxVKxiNQIRSJAGfE?xHxWKHiOAHQSEBO]Dx?G`TKpiNYKRi``_VCGjGPKIp_LQ@PYTR{GBG^EOwHXPK`iNiOQsIB?_Eg|GhYKPiNyFRac`oUCOmFPEIP]LQBPyZS{LA?gEW}HHSJxiOQLRAb_G[Bg]Bw_CGaCWcCgeCwg_WZB_iF@EI`aM@}PaYTCHAg[E?vHXQKplOIGRab`WRB_qFXCJPbLaAPYSTSKAO[EW|GxPL@qNaERif`OSB_pFHMIp]MXzQAWSCLAG[E_~HPTK@jOYMRIcT{CBO[DWyHHWKxuNAFQqd_?FAw[Dp?GhVLHmOADQyhTsDBG[D_{H`[JxnNyNQQaUSEB?[Dg}HxRK`tNIIRY^UCGAo[DxAH@ZKHsNQLQYeTcMA?[Eh@HhXKhpNiHQi`Tk??GA?WC?gE@?H@OJ@_L@o`_?NA_eDW|HxSKpjNiNQaeT[??wWBgnGHEJ@\Ly@OqWTQn_?FBO^EGuH@YJxpOYGRQ^UN") P13d=Graph(r":~?Az_C?_C?_C?_C?_C?_C?_C?`cK@{L@wO`WN_gN_WN_ONAcC@{@@oNA[I@{F@{H@{G@wY_oNBCL@wQ__O`?O_gO`OOCCLACAA?^`GO`WO_GMACEA?e_WOCcFA?]`_P`_PDSHBg]DSCAwcDSJAgeDOl`?SCwi_GMAodDSDAWgDOk_o[Bwi`OXCOiD{BBW_DOo`gYCGi_wWCWiEkAAOhDOq`_P`_PFCCBg^EWw`?VBonFCDAgaEOw`OSC_lFCLAo_EwwFkAAWeEgw`G[CGmF?y`WXCwkFC@@oZCWuF@@_oYCgpF?z_WWDGsF?{_wQD?oF?~`_P`_PGsFBg_E_yGsBAwdEp?GsEAg]DpAGpG_GMA_`ExBGsJAogEP@GsHAWcEXCGsAB_bE?zGpL`gXBwpFpEHKIBWeD_{GsDBOhEg|GsGB?aDg~GpK__QCwnGhEIKBBg`EOzG{@@oVBwtFPF`GTCwuFpF`gSBooG@F_gUCWnF`F__RCOvGPF_w[CgkFhFJCEBGcE`BGxX`WZDGrFxFIcABO_Dh@G{IB?gDpDGxT`?QCopG`FI{@?OB?_D?oF@?H@OJ@oP`_\COtFpNIx__o\CWkFHPJsHAw_EOxH`^`OTBwsFHRJ[CA_dEgxI@X_WUCorFHHJha`WRBouFHLIxc`g[DGlFHMJ```?XCGoFHQIsFBWaDoxHXYK[@@oYD?nFHGJ@g_OWCwpFHNI`d_gQC_vFHIIhh`_P`_PLsABgcDw~HHZLPm_wVCwlF`GIxkLsLAggEgzH`YKHcLsBA_aD`@HpTLhm`OUCGpGPIJxgLpo_oRDGoFPOJhhLpq_g[BorGhJIpeLs@@oXCoqFhPI`fLsGBWdEw}Hh]KPmMKJBO^DpCHxXLXmMsCB?_EpBIX[KXmM[HAObE`?IPWKhmM{KAKDBgdDhAIPSK`uNcAAw`D`CIXYLHxNc@@oTC_oF`NJ`aNP{_wSBwqGhLJhdM`{`?UDGmG@PJXkMX{`gRCwsGHJJp`L@zNcJB__Dw}I@TKxoNcBBG]Eg~HPWKXwNcCBWgEGyHpULPvNcIBObEXBH`VLhpNcHB?eEwzH@XKpqNcEAOaEo|HH^LXtNcKAKKAIH`g\ComGXLJ@`LHyOAH_oVD?rFpIJ`dNX}PKGAg_D`DHHXL@vOqH`GSDGnGPNJpbMh|PKFAocEozI@SLhxOQH`ORCgqFxGIpjMY@PK@@o[COpG@RJhcNACPIN__XCWlG`JJxaMQBPIO_OZBosFhKIhkMqGPIJ_WYCwvFPQJPfM`~PKDB?^E@@IHVLPoOyHPcJAO`Eg{HpZKppOiHPsIBgfE?|HpXKXxOaI`WVCOsFXPIpaMa?PSFAghEHBIPTKpzOYIQ{DA_eEoyH`ZL@wNqI`GUBwkFxJJ`cMIGPSBAWbDo}IXSLPtOqI`?[C_tGHGJxdMp~PQ[_OXD?vG@OIxjNP|PQW_oZCGlGhNJ@fMYFPSCBO]EO{HH]LHoOQI`gWCgnG`IJh`LhvOiIR[@@oQC?rGPLJPkMQ@PQ_`?\D?uF`JJhfLy@PaV`OVDGvGHHJ@cLyDPY\_OTCgrFPPJxbLyAPy^`WSCWpFhGJ`hLyFQI__oUCwtG`LIhiLx|Pi]SsFAW`Dx?H`XKPnNyRSKCB_eE_~HxYLhnOqMRAb_gXC?mFXMJpdLyGQaZ`gZC_qGPRIx`KpnNqORIi`GYCOoGhII`kLyBQQYSc@@oWBokFpQJXjLy?Qq[SkBAO^DhBI@UL@nOaTSQg_GMBghDXCH`UKhoOqPRyi`gVCWjGhOJX`KXuOISSIe__TCGjGHLI`jNAGQiXTIo_oSC?jFxQIxaNIDPyaScAAoaDXBH@]KxvNqMRim`?RBwjFhIJPeNQAQq]Tan_W[D?jGPPJHhMIBPYZSkHBGdDW{IXTL@sOyRRabUSDBWfDX?HH[LhqOAQQylU[FBOeDW}Hp^K`rNiKSAg`WWC_jFPJJ@kMiCPiWTYw`OQBojFXNJhiNX~QAYSyt") P13=Graph(r":~?Av_C?_C??S?_C?_C??K??k??{?_?G_?B_[A@{@@wO`?N_oN_gNA[F@{C@wQ`gN`ON`_N`WNBKH@wV_WN`OO`_O`gOBsJACMA?\_gO`?O_oO_wOCcHA?a_OO_GP_O[DCKAoaDCJA_cD?i__RCgg_gTCWg`OQCogDKGBW\DCLB?_D?k`oYBogDkFBG^DCEAw`D?q_WfD?n__P`WPEkEB_\E?t_gSC?nEkLAWaDOt`OTBosEgx`?QC_qEkMBW^DWtE{KB?dDGt`GYCGrEg|__XCWmEkFAwfEGtFCBColEgz`OP`_PGSGB_]EGvGSIAobEW{GSAA_jFpAGcJAW^E_~GSEAgeDw|GSFAOaE@?GSCBW`DhAHKLBOcDGwGSHBGfEOxGSMAw_DOzGPG_WdD`@GPK__[BwnG[FAo\EOvG[GA_dEWyG[AAWlF`B`oTCGkF@B`GQC?sFpB`WZCWhFHBI[EB?aEG~GXS_gYCwoFXBH{LAweDX@GXO_WcDp?GXQ`gP`O[C?qFPQJSDAocDg}GxOJSKA_`E_zHPY`GRCopG@DHxY_OTDOvHpSJSEAO]DowH`RJSFBWdDw~GpUJSJB?fEX@G`TJSCBO\D`LJHY`oXCOhF`HIHY_WbDW|H@VJSDB_`DGuH`WKKJAo]DwuH@XKcLA_\EGuHpU`oRCWqEpJI`^`_TC_oEpDJpe_OQEWuHHQKhg_oZCwiEpIIxZ`GWBwlEpLIHb`?XCokEpCIX[LcIAwdDouHx\LKBCOsEpEI@_LkMAKFAHp`W[COkFXDIp\MKHAodDOwG`QKPnMKCA_eEPGIhZL@p`?RC?hFhII@]M@p`gTBwmFpEJHkMHr`_QCwlExJKHlMHt_OZE@@GxPK@iMKMB?cDwxH`NJ`jMKEBObE_yHHWKXeMHs`OXBgjG@SKhmMHx_gVBorFxMIx^KxpMsDAKFB_bDO}HhNK@gNH}_oUBwhG@MIh\Lh{NsKAW\Dx@HHaLHvNsGAgfDW{H`UKXnMp}`oQCgpFhFJ@ZL`}`GZBokFPJI@dLXrNsAB?qFXEIX]KxzNsJBOeDovHPPJxyNsLBG`E?~H@QM@sNsCAwcE`CI`cLPtNsBC?rFHDJH`LpwNsGAKEAII`G[C_jFxHIXZLh|OII`oUCooFPEIx`LI?PSFA_]DH@GhSKXkNQFPSIAWfD_}J@cKxwNyI__TCOrHXNKPoNaBPSKBW_Do{Hp[L@zOiIQCGB?`DP?GxXJxeMiCPSABOpFHGI@\LxxPIIPcDBGdE_vHhTJpjMyI`WVBglFhKIP_MYGPQL_W^EOwHPUKhiMaEPQN`g[CglFHII`fNaDP[CAo_EHKIHdKpvOIJ`oSCwmFxLI@aLQCPYV`GTBghFXFIxcL@sPIJ`WQCGjFPMHx]NAFP[DBWaEO|G`XKXhNIJR[FB?eE_{HXQJhmNh~PYW`OYBwiGHRKHjMqGP[ABGnF@DJ@^LhrOYJ`_VCWkG@EJXoNQEPYY_W]E?}HHTJ`nMiAPY^`_[CorF@FKXjMQAPiV`gUCwsFhDIXgMQEPa[`GSCWoExKJH\KxqOYORsFAW`DoxG`VKhlMQGQI^_gQBwkF`GI`aKpqQY_`OZC_pFXTJxoMQFPyWSSCB?]DXIJ@_LHqPISRSGBOaDw}HpQJXiMQ?RIg_oXC?lGHEHxcLxqOaQS[AAwhFPLIp[LpqOIURYc_W\DO~HXPJpkMQDQi`Ss@B_fG@GIH[LHrOyPRqg_GUCH@HXUJXfNIAQa_Sk@A_^FhHHx^LpzPITRIfTs@AW]FXLIP`Kp{OqOSIb_GTC?~G`WJhjNQ?Py[Tc@AO\FHEIhbLP|OYURiiTk@B?bF@MI@cL`vPARRYaUC@BOdF`DIx_M@tOIQQyjUK@BGcFPIJHaL@uNyLRye_GVCOvGxRKhnNADPqWTIt") P13dppnx = P13dpp.networkx_graph() P13dp1nx = P13dp1.networkx_graph() P13dp2nx = P13dp2.networkx_graph() P13dnx = P13d.networkx_graph() P13nx = P13.networkx_graph() # List of graphs to process graphs = [('P13dpp ', P13dpp ),('P13dp1 ', P13dp1 ),('P13dp2 ',P13dp2 ),('P13d ', P13d ),('P13 ', P13 )] def count_k_cycles(G, k): count = 0 visited = set() def dfs(path, start, depth): nonlocal count current = path[-1] # Early exit if we?re going too deep if depth == k: if start in G.neighbors(current): # Normalize to avoid duplicates cycle = tuple(sorted(path)) if cycle not in visited: visited.add(cycle) count += 1 return for neighbor in G.neighbors(current): if neighbor not in path and neighbor >= start: dfs(path + [neighbor], start, depth + 1) for v in G.vertices(): dfs([v], v, 1) return count # each cycle counted twice (once forward, once reverse) def algebraic_connectivity(G): """ Compute the algebraic connectivity (Fiedler value) of a graph G. INPUT: - G: a SageMath Graph OUTPUT: - The second-smallest eigenvalue of the Laplacian matrix of G """ L = G.laplacian_matrix() eigenvalues = L.eigenvalues() eigenvalues.sort() if len(eigenvalues) < 2: return 0 # Trivial case: empty or isolated vertex graph return eigenvalues[1] def check_all_isomorphisms(graph_list): n = len(graph_list) print("\n Isomorphism check of all pairs (a dot means the pair ARE isomorphic):") for i in range(n): label_i, G_i = graph_list[i] for j in range(i + 1, n): label_j, G_j = graph_list[j] if G_i.is_isomorphic(G_j): # print(".", end="") print(f"{label_i} IS isomorphic to {label_j}") else: print(f"{label_i} NOT isomorphic to {label_j}") def non_isomorphic(graph_list): reps = [] labels = [] for label, G in graph_list: if not any(G.is_isomorphic(H) for _, H in reps): reps.append((label, G)) labels.append(label.strip()) # remove extra spaces if you want return labels def isomorphic(graph_list): labels = [] for i, (label, G) in enumerate(graph_list): if any(i != j and G.is_isomorphic(H) for j, (_, H) in enumerate(graph_list)): labels.append(label.strip()) return labels def compare_graphs_list(graphs): canon = {} count =1 for label, G in graphs: s6 = G.canonical_label().sparse6_string() # print(f"{label.strip():15} : {s6[:40]}...") canon.setdefault(s6, []).append(label.strip()) print("\n noniso ->",len(canon)) print("\nGroups:") for group in canon.values(): if len(group) > 1: print(count,"Isomorphic :", ", ".join(group)) count=count+1 else: print(count,"Unique :", group[0]) count=count+1 print("\n START \n") #noniso = non_isomorphic(graphs) #print(len(noniso), " non-isomorphic -> ",noniso) #iso=isomorphic(graphs) #print(len(iso), " isomorphic -> ",iso,"\n") compare_graphs_list(graphs) nonisographs = [('P13dpp ', P13dpp ),('P13dp1 ', P13dp1 ),('P13dp2 ',P13dp2 )] # Print properties for each graph in the list print("\n Main properties of the graph\n") for label, graph in graphs: print(f"{label} | Ord.: {graph.order()} / Size: {graph.size()} / Diam.: {graph.diameter()} / Avg.dist: {graph.average_distance().n(digits=6)} / 15-reg.? {graph.is_regular(k=15)} / Girth: {graph.girth()} ")# / Alg.conn. {algebraic_connectivity(graph).n(digits=6)} ")# / Domin. number: {graph.dominating_set(value_only=True)} ") print("\n") print("Degree histogram P13dpp:", nx.degree_histogram(P13dppnx) ) print("Degree histogram P13dp1:", nx.degree_histogram(P13dp1nx) ) print("Degree histogram P13dp2:", nx.degree_histogram(P13dp2nx) ) print("Degree histogram P13d: " , nx.degree_histogram(P13dnx) ) print("Degree histogram P13: " , nx.degree_histogram(P13nx) ) print("\n Symmetry properties of the graph\n") for label, graph in graphs: print(f"{label} | Aut.group.ord.: {graph.automorphism_group().order()} / Cayley ? {graph.is_cayley()} --- vtx.trans. ? {graph.is_vertex_transitive()} -- edge.trans. ? {graph.is_edge_transitive()}" ) # automorphism group structure print("\n Automorphism group structure: x means direct product; : means semidirect product.") AP13dpp = P13dpp.automorphism_group() print('P13dpp :', AP13dpp.structure_description(), ' | center order:',AP13dpp.center().order()) AP13dp1 = P13dp1.automorphism_group() print('P13dp1 :', AP13dp1.structure_description(), ' | center order:',AP13dp1.center().order()) AP13dp2 = P13dp2.automorphism_group() print('P13dp2 :', AP13dp2.structure_description(), ' | center order:',AP13dp2.center().order()) AP13d = P13d.automorphism_group() print('P13d :', AP13d.structure_description(), ' | center order:',AP13d.center().order()) AP13 = P13.automorphism_group() print('P13 :', AP13.structure_description(), ' | center order:',AP13.center().order()) print("\n") ''' print("\n Properties of the graphs as at arXiv\n") for label, graph in nonisographs: print(f"{label} & {graph.average_distance().n(digits=6)} & {graph.girth()} & {algebraic_connectivity(graph).n(digits=6)} & {graph.automorphism_group().order()} & {graph.is_edge_transitive()} \\\\ ") ''' # Check isomorphisms # print(f"Are isomorphic G5 and G6? {G5.is_isomorphic(G6)}") # check_all_isomorphisms(nonisographs) print("\n") ''' print("\n") print("\nChecking throught the spectrum that P13dp and Dah188 are NON-isomorphic\n ") for label, graph in nonisographs: spec = [ev.n(digits=4) for ev in graph.spectrum()[:10]] print(f"{label} spectrum (first 10): {spec}") ''' # Counting k-cycles for each graph print("\nNumber of k-cycles for k=3 up to 5") for label, graph in nonisographs: print(f"{label} "," & ".join(str(count_k_cycles(graph, k)) for k in range(3, 6))) # from 0 for label, _ in nonisographs: base = label.strip() G = globals()[base + "nx"] with open(f"{base}_edges.txt", "w") as f: f.write(",".join( f"{{{u},{v}}}" for u, v in sorted((min(u, v), max(u, v)) for u, v in G.edges()) )) print("\n DONE \n") ## ##