úÎÏ~ÄJà      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á  Safe59;TALabeled Edge attributesWeighted Edge attributes$Directed Arc with attribute of type e between to Vertices of type v'Undirected Edge with attribute of type e between to Vertices of type vTypes that represent edges The main  instances are  for undirected edges and  for directed edges. &Retrieve the origin vertex of the edge +Retrieve the destination vertex of the edge "Retrieve the attribute of the edge 2Convert an edge to a pair discarding its attribute 7Convert a pair to an edge, where it's attribute is unitKConvert an edge to a triple, where the 3rd element it's the edge attributeConvert a triple to an edgeTell if an edge is a loopAn edge forms a loop- if both of its ends point to the same vertexTypes that behave like graphs The main  instances are UGraph and DGraphŽ. The functions in this class should be used for algorithms that are graph-directionality agnostic, otherwise use the more specific ones in UGraph and DGraph:The Empty (order-zero) graph with no vertices and no edgesRetrieve the order of a graphThe order% of a graph is its number of verticesRetrieve the size of a graphThe size" of a graph is its number of edgesDensity of a graphThe densityX of a graph is the ratio of the number of existing edges to the number of posible edges$Retrieve all the vertices of a graphRetrieve the edges of a graph6Retrieve the edges of a graph, ignoring its attributes$Tell if a vertex exists in the graph!Tell if two vertices are adjacent*Retrieve the adjacent vertices of a vertexSame as $ but gives back the connecting edgesSame as c but gives back only those vertices for which the connecting edge allows the vertex to be reached..For an undirected graph this is equivalent to u, but for the case of a directed graph, the directed arcs will constrain the reachability of the adjacent vertices.Same as $ but gives back the connecting edges*Total number of incident edges of a vertex (Degrees of a all the vertices in a graph!Maximum degree of a graph"Minimum degree of a graph#Average degree of a graph$ZInsert a vertex into a graph. If the graph already contains the vertex leave it untouched%oInsert many vertices into a graph. New vertices are inserted and already contained vertices are left untouched&#Tell if an edge exists in the graph''Retrieve the incident edges of a vertex(@Retrieve the incident edges of a vertex, ignoring its attributes)-Get the edge between to vertices if it exists*”Insert an edge into a graph. The involved vertices are inserted if don't exist. If the graph already contains the edge, its attribute gets updated+Same as * but for multiple edges,Same as *; but insert edge pairs in graphs with attribute less edges-Same as , for multiple edges.^Remove a vertex from a graph if present. Every edge incident to this vertex also gets removed/Same as . but for multiple vertices0QRemove an edge from a graph if present. The involved vertices are left untouched1Same as 0 but for multiple edges2PRemove the edge from a graph if present. The involved vertices also get removed31Retrieve the isolated vertices of a graph, if any4Tell if a graph is simple A graph is simple if it has no loops5Union of two graphs6Intersection of two graphs7;Convert a graph to an adjacency list with vertices in type v and edge attributes in e8ZConstruct a graph from an adjacency list with vertices in type /v and edge attributes in e99Get the adjacency binary matrix representation of a graph:GGenerate a graph of Int vertices from an adjacency square binary matrix;'Construct an attribute less undirected  between two vertices<%Construct an attribute less directed  between two verticesÃEdges generator=8Convert a triple to a pair by ignoring the third element>8Convert a pair to a triple where the 3rd element is unit?)Get the origin vertex from an edge triple@.Get the destination vertex from an edge tripleA%Get the attribute from an edge tripleBTwo Ps are equal if they point to the same vertices, and the directions are the sameCTwo Ls are equal if they point to the same vertices, regardless of the directionS  !"#$%&'()*+,-./0123456789:;<Ã=>?@ABCDEFGHIJKLMNOPQB 87564& !"#$%'()*+,-./01239:;<=>?@AB !"#$%&'()*+,-./0123456789: ;<=>?@A ) !"#$%&'()*+,-./0123456789:;<Ã=>?@ABCDEFGHIJKLMNOPQSafeZ<breadh-first-search vertices starting at a particular vertex[;depth-first-search vertices starting at a particular vertexZ[ÄÅZ[Z[Z[ÄÅNoneT\/Read a graph from a CSV file of adjacency listsThe CSV lines: "1,2,3,4" "2,1,4,5"/produce the graph with this list of edge pairs: 0[(1, 2), (1, 3), (1, 4), (2, 1), (2, 4), (2, 5)]]Same as \) but rise an exception when parsing fails\]\]\]\] SafeÆEach vertex maps to a Æ' value so it can poit to other verticesÇpInsert a link directed to *v* with attribute *a* | If the connnection already exists, the attribute is replacedÈ Get the links for a given vertexÉGet 6s from an association list of vertices and their linksÊGet 6s from an association list of vertices and their linksËžO(log n) Associate the specified value with the specified key in this map. | If this map previously contained a mapping for the key, leave the map | intact.ÆÇÈÉÊËÆÇÈÉÊËÆÇÈÉÊËSafe$59T ^ Undirected Graph of Vertices in v and Edges with attributes in e_Insert an undirected  into a ^{The involved vertices are inserted if they don't exist. If the graph already contains the Edge, its attribute gets updated`Same as _ but for a list of saRemove the undirected  from a ^6 if present. The involved vertices are left untouchedbSame as a but for a list of scRemove the undirected  from a ^4 if present. The involved vertices also get removedd Retrieve the s of a ^eTell if an undirected  exists in the graphfRetrieve the incident  s of a Vertexg Convert a ^ to a list of s discarding isolated verticesNote that because gA discards isolated vertices: > fromEdgesList . toEdgesList /= idh Construct a ^ from a list of siPretty print a ^^ÌÍÎ_`abcdefghijklmnopqr ^_`abcdefghi ^_`abcdefghi^ÌÍÎ_`abcdefghijklmnopqrSafeu The Degree Sequence of a simple ^3 is a list of degrees of the vertices in the graphUse v% to construct a valid Degree Sequencev Construct a u> from a list of degrees. Negative degree values get discardedwGet the u of a simple ^. If the graph is not simple (see 4) the result is Nothingx Tell if a u is a Graphical SequenceA Degree Sequence is a Graphical Sequence if a corresponding ^0 for it exists. Uses the Havel-Hakimi algorithmy Tell if a u is a Directed GraphicA Directed Graphic" is a Degree Sequence for which a DGraphG exists TODO: Kleitman Wang | Fulkerson Chen Anstee theorem algorithmsz Tell if a uY holds the Handshaking lemma, that is, if the number of vertices with odd degree is even{Get the corresponding ^ of a u . If the u is not graphical (see x) the result is Nothing uÏÐvwxyz{uvwxyz{uvwxyz{uÏÐvwxyz{SafeThe Degree Sequence of a DGraph) is a list of pairs (Indegree, Outdegree)€€€€Safe5T…Directed Graph of Vertices in v and Arcs with attributes in e†Insert a directed  into a …zThe involved vertices are inserted if they don't exist. If the graph already contains the Arc, its attribute gets updated‡Same as † but for a list of sˆRemove the directed  from a …6 if present. The involved vertices are left untouched‰Same as ˆ but for a list of sŠRemove the directed  from a …4 if present. The involved vertices also get removed‹ Retrieve the s of a …ŒTell if a directed  exists in the graphRetrieve the inbounding  s of a VertexŽRetrieve the outbounding  s of a VertexRetrieve the incident  s of a VertexThe incidentL arcs of a vertex are all the inbounding and outbounding arcs of the vertexIndegree of a vertexThe indegree) of a vertex is the number of inbounding  s to a vertex‘Outdegree of a vertexThe  outdegree* of a vertex is the number of outbounding s from a vertex’#Indegrees of all the vertices in a …“#Outdegree of all the vertices in a …” Tell if a … is symmetricA directed graph is  symmetric if all of its s are bi-directed• Tell if a … is orientedA directed graph is oriented if there are none bi-directed sNote: This is not the opposite of ”– Tell if a … is balancedA directed graph is balanced when its indegree = outdegree— Tell if a … is regularA directed graph is regularE when all of its vertices have the same number of adjacent vertices AND when the indegree and  outdegree) of each vertex are equal to each other.˜Tell if a vertex is a sourceA vertex is a source when its  indegree = 0™Tell if a vertex is a sinkA vertex is a sink when its  outdegree = 0šTell if a vertex is internal A vertex is internal when its neither a source nor a sink›Get the transpose of a …The  transposeR of a directed graph is another directed graph where all of its arcs are reversedœConvert a directed … to an undirected UGraph by converting all of its s into s Convert a … to a list of s discarding isolated verticesNote that because  discards isolated vertices: fromArcsList . toArcsList /= idž Construct a … from a list of sŸPretty print a …'…ÑÒÓ†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ$…ÑÒÓ†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨SafeT«1Generate a random ErdQs Rényi G(n, p) model graph¬« convinience ^ generation function­« convinience … generation function®5Generate a random graph for all the vertices of type v) in the list, random edge attributes in eh within given bounds, and some existing probability for each possible edge as per the ErdQs Rényi model¯Same as ® but uses attributeless edges°"Generate a random adjacency matrixUseful for use with :Ô:Insert and edge between vertices if the probability is metÕ2Bound a real value as probability value [0.0, 1.0]«¬­®¯°ÔÕ«¬­®¯°«¬­®¯°«¬­®¯°ÔÕ Safe±cTell if two graphs are isomorphic TODO: check first: same number of vertices, same number of edges³ Tell if a ^ is regularAn undirected graph is regular# if each vertex has the same degree´ Tell if a … is regularA directed graph is regular4 if each vertex has the same indegree and outdegree±²³´±²³´±²³´±²³´ NoneµPlot an undirected ^¶Same as µ but render edge attributes·Plot an undirected ^ to a PNG image file¸Plot a directed …¹Same as ¸ but render edge attributesºPlot a directed … to a PNG image file µ¶·¸¹ºÖרÙ Label edgesÚ Label edgesÛDirected Label edgesµ¶·¸¹ºµ¸¶¹·º µ¶·¸¹ºÖרÙÚÛ SafeT»-Tell if two vertices of a graph are connectedTwo vertices are  connectedd if it exists a path between them. The order of the vertices is relevant when the graph is directed¼ Opposite of »½Tell if a vertex is isolated A vertex is isolated? if it has no incident edges, that is, it has a degree of zero¾Tell if a graph is connectedAn undirected graph is  connectedR when there is a path between every pair of vertices FIXME: Use a O(n) algorithm¿Tell if a graph is bridgeless A graph is  bridgelessp if it has no edges that, when removed, split the graph in two isolated components FIXME: Use a O(n) algorithmÀ Tell if a ^ is orientableAn undirected graph is  orientable7 if it can be converted into a directed graph that is strongly connected (See Â)Á Tell if a … is weakly connectedA directed graph is weakly connected( if the underlying undirected graph is  connected Tell if a … is strongly connectedA directed graph is strongly connected: if it contains a directed path on every pair of vertices»¼½¾¿ÀÁ»¼½¾¿ÀÁ»¼½¾¿ÀÁ»¼½¾¿ÀÁÂÜ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰€€Š‡ˆ‰‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤t¥¦§¨©ª«¬­®¯°±²³´µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ ÇÈÉÊ Ë Ì Í Î Ï ÐiÑÒ€Š‹ÑÓÔÕ Ö × Ø Ù Ú ÛÜ'graphite-0.9.6.0-5itq78RZGbNF4ZwV4LFbs9Data.Graph.TypesData.Graph.TraversalData.Graph.ReadData.Graph.UGraph Data.Graph.UGraph.DegreeSequence Data.Graph.DGraph.DegreeSequenceData.Graph.DGraphData.Graph.GenerationData.Graph.MorphismsData.Graph.VisualizeData.Graph.ConnectivityData.Graph.InternalLabeledlabelWeightedweightArcEdgeIsEdge originVertexdestinationVertex attributetoPairfromPairtoTriple fromTripleisLoopGraphemptyordersizedensityvertices edgeTriples edgePairscontainsVertex areAdjacentadjacentVerticesadjacentVertices'reachableAdjacentVerticesreachableAdjacentVertices' vertexDegreedegrees maxDegree minDegree avgDegree insertVertexinsertVerticescontainsEdgePairincidentEdgeTriplesincidentEdgePairs edgeTripleinsertEdgeTripleinsertEdgeTriplesinsertEdgePairinsertEdgePairs removeVertexremoveVerticesremoveEdgePairremoveEdgePairsremoveEdgePairAndVerticesisolatedVerticesisSimpleunion intersectiontoListfromListtoAdjacencyMatrixfromAdjacencyMatrix<->--> tripleToPair pairToTripletripleOriginVertextripleDestVertextripleAttribute$fEqArc$fEqEdge $fFunctorArc $fFunctorEdge$fArbitraryArc$fArbitraryEdge $fLabeled(,) $fWeighted(,) $fLabeled[]$fWeightedDouble$fWeightedFloat $fWeightedInt $fIsEdgeArc $fIsEdgeEdge $fNFDataArc $fNFDataEdge $fShowEdge $fReadEdge $fOrdEdge $fGenericEdge $fShowArc $fReadArc$fOrdArc $fGenericArc bfsVertices dfsVerticesfromCsvfromCsv'UGraph insertEdge insertEdges removeEdge removeEdgesremoveEdgeAndVerticesedges containsEdge incidentEdges toEdgesList fromEdgesList prettyPrint $fGraphUGraph$fArbitraryUGraph$fNFDataUGraph$fFoldableUGraph$fFunctorUGraph$fSemigroupUGraph$fMonoidUGraph $fReadUGraph $fShowUGraph $fEqUGraph$fGenericUGraphDegreeSequencedegreeSequencegetDegreeSequenceisGraphicalSequenceisDirectedGraphicholdsHandshakingLemmafromGraphicalSequence$fEqDegreeSequence$fOrdDegreeSequence$fShowDegreeSequenceunDegreeSequenceDGraph insertArc insertArcs removeArc removeArcsremoveArcAndVerticesarcs containsArcinboundingArcsoutboundingArcs incidentArcsvertexIndegreevertexOutdegree indegrees outdegrees isSymmetric isOriented isBalanced isRegularisSourceisSink isInternal transpose toUndirected toArcsList fromArcsList$fArbitraryDGraph $fGraphDGraph$fNFDataDGraph$fFoldableDGraph$fFunctorDGraph$fSemigroupDGraph$fMonoidDGraph $fReadDGraph $fShowDGraph $fEqDGraph$fGenericDGraph erdosRenyi erdosRenyiU erdosRenyiDrndGraph rndGraph'rndAdjacencyMatrix areIsomorphic isomorphism isURegular isDRegular plotUGraphplotUGraphEdged plotUGraphPng plotDGraphplotDGraphEdged plotDGraphPng areConnectedareDisconnected isIsolated isConnected isBridgeless isOrientableisWeaklyConnectedisStronglyConnected arbitraryEdgenonVisitedReachables setInsertManyLinks insertLinkgetLinks linksToArcs linksToEdges hashMapInsert_sizeunUGraphunDGraphinsertFlippedEdge probability labeledNodes labeledEdges labeledArcstoUndirectedDot toDirectedDotsensibleDotParams