ϒ^      !"#$%&'()*+,-./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 verticesEdges 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\]\]\]\] SafeEach vertex maps to a ' value so it can poit to other verticespInsert a link directed to *v* with attribute *a* | If the connnection already exists, the attribute is replaced Get the links for a given vertexGet 6s from an association list of vertices and their linksGet 6s from an association list of vertices and their linksO(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 uvwxyz{uvwxyz{uvwxyz{uvwxyz{SafeThe Degree Sequence of a DGraph) is a list of pairs (Indegree, Outdegree)Safe5TDirected Graph of Vertices in v and Arcs with attributes in eInsert a directed  into a zThe involved vertices are inserted if they don't exist. If the graph already contains the Arc, its attribute gets updatedSame as  but for a list of sRemove the directed  from a 6 if present. The involved vertices are left untouchedSame as  but for a list of sRemove 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 VertexRetrieve 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 vertexOutdegree 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 = 0Tell if a vertex is a sinkA vertex is a sink when its  outdegree = 0Tell if a vertex is internal A vertex is internal when its neither a source nor a sinkGet the transpose of a The  transposeR of a directed graph is another directed graph where all of its arcs are reversedConvert 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 sPretty print a '$SafeT1Generate a random ErdQs Rnyi G(n, p) model graph convinience ^ generation function convinience  generation function)Generate a random graph with vertices in v: across range of given bounds, random edge attributes in eh within given bounds, and some existing probability for each possible edge as per the ErdQs Rnyi modelSame as  but uses attributeless edges"Generate a random adjacency matrixUseful for use with ::Insert and edge between vertices if the probability is met2Bound a real value as probability value [0.0, 1.0] SafecTell 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 NonePlot an undirected ^Same as  but render edge attributesPlot an undirected ^ to a PNG image filePlot a directed Same as  but render edge attributesPlot a directed  to a PNG image file  Label edges Label edgesDirected 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 zeroTell if a graph is connectedAn undirected graph is  connectedR when there is a path between every pair of vertices FIXME: Use a O(n) algorithmTell 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.5.1-3ctubLCP9bnMpsHOkTS6OData.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