<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <link rel="stylesheet" href="style.css" type="text/css"> <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type"> <link rel="Start" href="index.html"> <link rel="previous" href="Persistent.Digraph.html"> <link rel="Up" href="Persistent.html"> <link title="Index of types" rel=Appendix href="index_types.html"> <link title="Index of exceptions" rel=Appendix href="index_exceptions.html"> <link title="Index of values" rel=Appendix href="index_values.html"> <link title="Index of modules" rel=Appendix href="index_modules.html"> <link title="Index of module types" rel=Appendix href="index_module_types.html"> <link title="Sig" rel="Chapter" href="Sig.html"> <link title="Sig_pack" rel="Chapter" href="Sig_pack.html"> <link title="Dot_ast" rel="Chapter" href="Dot_ast.html"> <link title="Util" rel="Chapter" href="Util.html"> <link title="Persistent" rel="Chapter" href="Persistent.html"> <link title="Imperative" rel="Chapter" href="Imperative.html"> <link title="Delaunay" rel="Chapter" href="Delaunay.html"> <link title="Builder" rel="Chapter" href="Builder.html"> <link title="Classic" rel="Chapter" href="Classic.html"> <link title="Rand" rel="Chapter" href="Rand.html"> <link title="Oper" rel="Chapter" href="Oper.html"> <link title="Path" rel="Chapter" href="Path.html"> <link title="Traverse" rel="Chapter" href="Traverse.html"> <link title="Coloring" rel="Chapter" href="Coloring.html"> <link title="Topological" rel="Chapter" href="Topological.html"> <link title="Components" rel="Chapter" href="Components.html"> <link title="Kruskal" rel="Chapter" href="Kruskal.html"> <link title="Flow" rel="Chapter" href="Flow.html"> <link title="Graphviz" rel="Chapter" href="Graphviz.html"> <link title="Gml" rel="Chapter" href="Gml.html"> <link title="Dot" rel="Chapter" href="Dot.html"> <link title="Pack" rel="Chapter" href="Pack.html"> <link title="Gmap" rel="Chapter" href="Gmap.html"> <link title="Minsep" rel="Chapter" href="Minsep.html"> <link title="Cliquetree" rel="Chapter" href="Cliquetree.html"> <link title="Mcs_m" rel="Chapter" href="Mcs_m.html"> <link title="Md" rel="Chapter" href="Md.html"> <link title="Strat" rel="Chapter" href="Strat.html"><title>Persistent.Graph</title> </head> <body> <div class="navbar"><a href="Persistent.Digraph.html">Previous</a> <a href="Persistent.html">Up</a> </div> <center><h1>Module <a href="type_Persistent.Graph.html">Persistent.Graph</a></h1></center> <br> <pre><span class="keyword">module</span> Graph: <code class="type"><a href="Persistent.S.html">S</a></code><code class="type"> </code></pre>Persistent Undirected Graphs.<br> <hr width="100%"> <br> <b>Edges may be labeled or not</b>:<ul> <li>Unlabeled: there is no label on edges</li> <li>Labeled: you have to provide a label implementation as a functor parameter.</li> </ul> <b>Vertices may be concrete or abstract</b>:<ul> <li>Concrete: type of vertex labels and type of vertices are identified.</li> <li>Abstract: type of vertices is abstract (in particular it is not equal to type of vertex labels</li> </ul> <b>How to choose between concrete and abstract vertices for my graph implementation</b>? <p> Usually, if you fall into one of the following cases, use abstract vertices: <ul> <li>you cannot provide efficient comparison/hash functions for vertices; or</li> <li>you wish to get two different vertices with the same label.</li> </ul> In other cases, it is certainly easier to use concrete vertices.<br> <pre><span class="keyword">module</span> <a href="Persistent.S.Concrete.html">Concrete</a>: <div class="sig_block"><code class="code">functor (</code><code class="code">V</code><code class="code"> : </code><code class="type"><a href="Sig.COMPARABLE.html">Sig.COMPARABLE</a></code><code class="code">) -> </code><code class="type"><a href="Sig.P.html">Sig.P</a></code><code class="type"> with type V.t = V.t and type V.label = V.t and type E.t = V.t * V.t and type E.label = unit</code></div></pre><div class="info"> Persistent Unlabeled Graphs. </div> <pre><span class="keyword">module</span> <a href="Persistent.S.Abstract.html">Abstract</a>: <div class="sig_block"><code class="code">functor (</code><code class="code">V</code><code class="code"> : </code><code class="type"><a href="Sig.ANY_TYPE.html">Sig.ANY_TYPE</a></code><code class="code">) -> </code><code class="type"><a href="Sig.P.html">Sig.P</a></code><code class="type"> with type V.label = V.t and type E.label = unit</code></div></pre><div class="info"> Abstract Persistent Unlabeled Graphs. </div> <pre><span class="keyword">module</span> <a href="Persistent.S.ConcreteLabeled.html">ConcreteLabeled</a>: <div class="sig_block"><code class="code">functor (</code><code class="code">V</code><code class="code"> : </code><code class="type"><a href="Sig.COMPARABLE.html">Sig.COMPARABLE</a></code><code class="code">) -> </code><div class="sig_block"><code class="code">functor (</code><code class="code">E</code><code class="code"> : </code><code class="type"><a href="Sig.ORDERED_TYPE_DFT.html">Sig.ORDERED_TYPE_DFT</a></code><code class="code">) -> </code><code class="type"><a href="Sig.P.html">Sig.P</a></code><code class="type"> with type V.t = V.t and type V.label = V.t and type E.t = V.t * E.t * V.t and type E.label = E.t</code></div></div></pre><div class="info"> Persistent Labeled Graphs. </div> <pre><span class="keyword">module</span> <a href="Persistent.S.AbstractLabeled.html">AbstractLabeled</a>: <div class="sig_block"><code class="code">functor (</code><code class="code">V</code><code class="code"> : </code><code class="type"><a href="Sig.ANY_TYPE.html">Sig.ANY_TYPE</a></code><code class="code">) -> </code><div class="sig_block"><code class="code">functor (</code><code class="code">E</code><code class="code"> : </code><code class="type"><a href="Sig.ORDERED_TYPE_DFT.html">Sig.ORDERED_TYPE_DFT</a></code><code class="code">) -> </code><code class="type"><a href="Sig.P.html">Sig.P</a></code><code class="type"> with type V.label = V.t and type E.label = E.t</code></div></div></pre><div class="info"> Abstract Persistent Labeled Graphs. </div> </body></html>