;ò òiýDc@s?dklZdklZdklZdfd„ƒYZdfd„ƒYZd„Zd„Z d „Z d fd „ƒYZ d Z d Z eƒahahahadahagahahahaeƒadahahad„Zd„Zd„Zd„Zd„Z d„Z!d„Z"d„Z#d„Z$d„Z%dS((sdeepcopy(sStack(sshowinfosListcBswtZgd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d „Z d „Z d „Z d „Z RS( NcCst|ƒ}||_dS(N(sdeepcopyselselcsselfselements(sselfselselc((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pys__init__Hs cCst|iƒSdS(N(slensselfselements(sself((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pyslengthMscCs#|iƒdjodSndSdS(Nii(sselfslength(sself((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pysemptyPscCs|idSdS(Ni(sselfselements(sself((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pysheadVscCs|idSdS(Niÿÿÿÿ(sselfselements(sself((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pystailYscCs|iid|ƒ|SdS(Ni(sselfselementssinsertsx(sselfsx((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pyspush]scCs|ii|ƒ|SdS(N(sselfselementssappendsx(sselfsx((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pysPushascCs|i|ƒdS(N(sselfsPushsx(sselfsx((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pysappendescCs%|id}|id|_|SdS(Nii(sselfselementssx(sselfsx((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pyspophs cCs%|id}|id |_|SdS(Niÿÿÿÿ(sselfselementssx(sselfsx((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pysPopms cCs g|_dS(N(sselfselements(sself((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pysclearrscCs |i|i|_g|_dS(N(sselfselementssA(sselfsA((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pysconcus(s__name__s __module__s__init__slengthsemptysheadstailspushsPushsappendspopsPopsclearsconc(((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pysListGs           spt_graphcBsàtZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d „Z d „Z d „Z d „Z d „Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(NcCsg|_g|_h|_dS(N(sselfsVsEsadjEdges(sself((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pys__init__s  cCs |dSdS(Ni(se(sselfse((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pyssource…scCs |dSdS(Ni(se(sselfse((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pystargetˆscCst|iƒSdS(N(slensselfsV(sself((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pysnumber_of_nodes‹scCst|iƒSdS(N(slensselfsE(sself((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pysnumber_of_edgesŽscCs |iSdS(N(sselfsV(sself((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pys all_nodes‘scCs |iSdS(N(sselfsE(sself((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pys all_edges”scCs|i|SdS(N(sselfsadjEdgessv(sselfsv((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pys adj_edges—scCs9g}x(|i|ƒD]}|i|dƒqW|SdS(Ni(snodelistsselfs adj_edgessvsesappend(sselfsvsesnodelist((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pys adj_nodesšs cCs|idSdS(Ni(sselfsV(sself((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pys first_node scCs|idSdS(Niÿÿÿÿ(sselfsV(sself((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pys last_node£scCs|idSdS(Ni(sselfsE(sself((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pys first_edge¦scCs|idSdS(Niÿÿÿÿ(sselfsE(sself((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pys last_edge©scCs9t|i|ƒƒdjo|i|ƒdSntSdS(Ni(slensselfs adj_edgessvsNone(sselfsv((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pysfirst_adj_edge¬scCs9t|i|ƒƒdjo|i|ƒdSntSdS(Niiÿÿÿÿ(slensselfs adj_edgessvsNone(sselfsv((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pys last_adj_edge²scCs%|ii|ƒg|i|<|SdS(N(sselfsVsappendsvsadjEdges(sselfsv((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pysnew_node¹s cCsu||jo t‚n||f|ijo t‚n|ii||fƒ|i|i||fƒ||fSdS(N(svswsGraphNotSimpleErrorsselfsEsappendsadjEdges(sselfsvsw((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pysnew_edge¾s   cCsîyÎxi|iD]^}xU|i|ƒD]D}t|ƒ|jpt|ƒ|jo|i|i |ƒq#q#Wq W|ii |ƒxK|i D]@}t|ƒ|jpt|ƒ|jo|i i |ƒq‰q‰WWnt j o t ‚nXdS(N( sselfsVsks adj_edgessessourcesvstargetsadjEdgessremovesEsKeyErrorsNoSuchVertexError(sselfsvsesk((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pysdel_nodeÇs &  &cCs`y@|ii|ƒ|it|ƒit|ƒt|ƒfƒWntj o t‚nXdS(N( sselfsEsremovesesadjEdgesssourcestargetsKeyErrorsNoSuchEdgeError(sselfse((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pysdel_edgeÔs 0cCs.t|ƒ}x|D]}|i|ƒqWdS(N(sdeepcopys node_listsLslsselfsdel_node(sselfs node_listsLsl((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pys del_nodesÛs cCs.t|ƒ}x|D]}|i|ƒqWdS(N(sdeepcopys edge_listsLslsselfsdel_edge(sselfs edge_listslsL((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pys del_edgesàs cCs|i|iƒƒdS(N(sselfs del_nodess all_nodes(sself((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pys del_all_nodesåscCs|i|iƒƒdS(N(sselfs del_edgess all_edges(sself((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pys del_all_edgesèscCsed„}|iƒ}|i|ƒ|iƒx2|D]*}|it |dƒt |dƒƒq3WdS(NcCsB|d|djodSn|d|djodSndSdS(Niiÿÿÿÿi(sxsy(sxsy((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pysupìs i( supscostsitemss sorted_listssortsselfs del_all_edgessisnew_edgessourcestarget(sselfscostsisups sorted_list((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pys sort_edgesës    (s__name__s __module__s__init__ssourcestargetsnumber_of_nodessnumber_of_edgess all_nodess all_edgess adj_edgess adj_nodess first_nodes last_nodes first_edges last_edgesfirst_adj_edges last_adj_edgesnew_nodesnew_edgesdel_nodesdel_edges del_nodess del_edgess del_all_nodess del_all_edgess sort_edges(((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pyspt_graph}s0                     cCs |dSdS(Ni(se(se((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pyssourceöscCs |dSdS(Ni(se(se((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pystargetùscCs|d|dfSdS(Nii(se(se((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pysreversalüssblockcBsktZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d „Z d „Z d „Z RS( NcCsTtƒ|_tƒ|_tƒ|_tƒ|_|ii|ƒ|ii|ƒdS(N( sListsselfsLattsRattsLsegsRsegsappendsesconcsA(sselfsesA((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pys__init__ scCs|tƒ}tƒ}|i|iƒ|ii|iƒ|ii|ƒ|i|iƒ|ii|iƒ|ii|ƒdS(N( sListshashesconcsselfsRattsLattsRsegsLseg(sselfshashe((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pysflip's  3cCs|iiƒSdS(N(sselfsLattshead(sself((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pys head_of_Latt/scCs|iiƒSdS(N(sselfsLattsempty(sself((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pys empty_Latt2scCs|iiƒSdS(N(sselfsRattshead(sself((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pys head_of_Ratt5scCs|iiƒSdS(N(sselfsRattsempty(sself((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pys empty_Ratt8scCsU|iƒo5|idiƒ o |iiƒ|idiƒjodSndSdS(Niÿÿÿÿii(sSs IsNotEmptyscontentss empty_LattsselfsLattstails head_of_Latt(sselfsS((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pysleft_interlace;sEcCsU|iƒo5|idiƒ o |iiƒ|idiƒjodSndSdS(Niÿÿÿÿii(sSs IsNotEmptyscontentss empty_RattsselfsLattstails head_of_Ratt(sselfsS((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pysright_interlaceDsEcCsS|ii|iƒ|ii|iƒ|ii|iƒ|ii|iƒ~dS(N(sselfsLattsconcsBprimesRattsLsegsRseg(sselfsBprime((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pyscombineMs cCsìx9|iiƒ o|iiƒ|jo|iiƒqWx9|iiƒ o|iiƒ|jo|iiƒq?W|iiƒ p|iiƒ odSnx|iiD]}t ||[%i]s[%i] : s [%i]---->[%i](sGs all_nodessvs all_edgessessourcestargets adj_edges(sGsesv((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pys PrintGraphís$  '  +cCs-t|dƒ}|idƒ|idƒxD|iD]9}|idƒt|ƒ}|i|ƒ|idƒq3W|idƒxœ|i ƒD]Ž}|idƒ|idƒt|d ƒ}|i|ƒ|idƒ|id ƒt|d ƒ}|i|ƒ|idƒ|id ƒqŠW|id ƒdS(Nsws graph [ s directed 1 s node [ id s ] s s edge [ s source is target is ] s] ( sopensfileNamesfileswritesGsverticessvsstrsnsEdgessesk(sGsfileNamesesksnsfilesv((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pys SaveGmlGraphs.               N(&scopysdeepcopysDataStructuressStacks tkMessageBoxsshowinfosListspt_graphssourcestargetsreversalsblocksleftsrightsGsreachedsdfsnumsparents dfs_countslowptsDelslowpt1slowpt2salphasAttscur_nrssort_numstree_edge_intosplanarity_testspt_DFSsMake_biconnected_graphsdfs_in_make_biconnected_graphsreordersdfs_in_reordersstrongly_planars embeddings PrintGraphs SaveGmlGraph(sshowinfosdfs_in_make_biconnected_graphsrightsdeepcopysMake_biconnected_graphs SaveGmlGraphssources PrintGraphsplanarity_testsStacksreordersdfs_in_reordersListsreversalstargetspt_DFSspt_graphs embeddingsstrongly_planarsblocksleft((s:/mnt/gmirror/ports/math/py-gato/work/Gato/PlanarityTest.pys??sD   6y   x   v  1 / . . § o