[Plexus-svn] SF.net SVN: plexus:[861] trunk/plexus-graph/src/main
Status: Alpha
Brought to you by:
rconner
From: <rc...@us...> - 2010-09-05 20:22:47
|
Revision: 861 http://plexus.svn.sourceforge.net/plexus/?rev=861&view=rev Author: rconner Date: 2010-09-05 20:22:41 +0000 (Sun, 05 Sep 2010) Log Message: ----------- Moving overview.html, package descriptions will be moved shortly. Added Paths: ----------- trunk/plexus-graph/src/main/javadoc/ trunk/plexus-graph/src/main/javadoc/overview.html Removed Paths: ------------- trunk/plexus-graph/src/main/java/overview.html Deleted: trunk/plexus-graph/src/main/java/overview.html =================================================================== --- trunk/plexus-graph/src/main/java/overview.html 2010-09-05 20:21:43 UTC (rev 860) +++ trunk/plexus-graph/src/main/java/overview.html 2010-09-05 20:22:41 UTC (rev 861) @@ -1,126 +0,0 @@ -<html> -<head> - - <!-- - $Id$ - - Copyright (C) 1994-2006 by Phoenix Software Technologists, - Inc. and others. All rights reserved. - - THIS PROGRAM AND DOCUMENTATION IS PROVIDED UNDER THE TERMS OF - THE COMMON PUBLIC LICENSE ("AGREEMENT") WHICH ACCOMPANIES IT. - ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM - CONSTITUTES RECIPIENT'S ACCEPTANCE OF THE AGREEMENT. - - The license text can also be found at - http://opensource.org/licenses/cpl.php - --> - -</head> -<body> - - -This document is the API specification for the Plexus Graph Library, a -library of generic graph data structures in which vertices and edges -may contain user-defined objects. - - -<h2>Formal Definitions and Terminology</h2> - -<P>A <i>graph</i> is composed of a set of <i>nodes</i> (sometimes also -called vertices) and a set of <i>edges</i>, where each edge is a pair -of nodes. The nodes comprising an edge are referred to as its -<i>endpoints</i>, and we say that the nodes are <i>adjacent</i>. Some -sources restrict the term <i>adjacent</i> to apply only to undirected -graphs, but we will not do that here. Graphs are usually visualized -by assigning points or shapes to each node and drawing a curve for -each edge between its endpoints. - -<P>An <i>undirected</i> graph is a graph in which an edge's endpoints -are unordered. We say that an edge is <i>incident on</i> its -endpoints. - -<P>A <i>directed</i> graph is a graph in which an edge's endpoints are -ordered. The first endpoint is called the edge's <i>tail</i> and the -second its <i>head</i>. If (u,v) is an edge (u is the tail and v the -head), we may say: -<UL> - <LI>there is an edge from u to v, - <LI>the edge is <i>incident from</i> or <i>leaves</i> u, - <LI>the edge is <i>incident to</i> or <i>enters</i> v, - <LI>the edge is <i>incident on</i> u and v, and - <LI>u -> v. -</UL> - -<P>A <i>simple</i> graph does not allow more than one edge between any -two endpoints (a directed simple graph may still have one edge in each -direction) or self-loops (an edge with both endpoints being the same -node). A <i>multigraph</i> is a graph which does not have these -restrictions. - - -<h2>Implementation Notes, Constraints, and Assumptions</h2> - -<P>The {@link com.phoenixst.plexus.Graph} interface is the primary -data structure defined by the Plexus Graph Library. All other classes -and interfaces provided here exist to implement and support -implementations of this interface. Unlike most examples from graph -literature and practice (as well as the short overview above), the -interface specification allows a single <code>Graph</code> to contain -both directed and undirected edges. Of course, any specific -implementation may restrict this behavior. - -<P>This package is similar in many ways to the <a -href="http://java.sun.com/j2se/1.5.0/docs/guide/collections/index.html"> -Java Collections Framework</a>. In particular, the details of how -graph nodes and edges are implemented are hidden from the user. Nodes -(and often edges) serve as containers for objects provided by the -user. Although the implementations of both are hidden, they do differ -in that there is a {@link com.phoenixst.plexus.Graph.Edge} interface -presented to the user describing a graph edge. - -<P>Nodes must contain unique (using {@link java.lang.Object#equals -Object.equals()}) user-provided objects. This requirement allows -nodes to be referenced unambiguously (when creating edges, for -example). The user-defined objects contained in -<code>Graph.Edge</code> objects, however, are not subject to this -requirement in the general case. Because <code>Object.equals()</code> -is used to distinguish nodes, a particular <code>Graph</code> -implementation may refer to only a single such node encountered. So, -for example, the following may occur: - -<PRE> - Object x = new Integer( 0 ); - Object y = new Integer( 1 ); - Object x2 = new Integer( 0 ); - graph.addNode( x ); - graph.addNode( y ); - graph.addEdge( null, x, y, true ); - graph.addNode( x2 ); // returns false, already contains x - graph.containsNode( x2 ); // returns true - Graph.Edge edge = graph.getEdge( new DefaultEdgeFilter( x2, y ) ); - // edge.getTail() may be x, not x2, here -</PRE> - -<P>Nothing prohibits a <code>Graph.Edge</code> from also being a node -in the same <code>Graph</code>. In other words, -<code>Graph.Edges</code> can point to other <code>Graph.Edges</code>. -If a particular <code>Graph</code> implementation allows this, these -two aspects of any particular <code>Graph.Edge</code> are independent. -Adding or removing a <code>Graph.Edge</code> as a node has no impact -upon the object's existence as an edge, and vice versa. - -<P>All general-purpose {@link com.phoenixst.plexus.Graph} -implementation classes should provide two "standard" constructors: a -void (no arguments) constructor, which creates an empty graph, and a -constructor with a single argument of type <code>Graph</code>, which -creates a new graph with the same elements as its argument. - - -@version 1.0 -@author Ray A. Conner -@since Plexus 1.0 - - -</body> -</html> Copied: trunk/plexus-graph/src/main/javadoc/overview.html (from rev 858, trunk/plexus-graph/src/main/java/overview.html) =================================================================== --- trunk/plexus-graph/src/main/javadoc/overview.html (rev 0) +++ trunk/plexus-graph/src/main/javadoc/overview.html 2010-09-05 20:22:41 UTC (rev 861) @@ -0,0 +1,126 @@ +<html> +<head> + + <!-- + $Id$ + + Copyright (C) 1994-2006 by Phoenix Software Technologists, + Inc. and others. All rights reserved. + + THIS PROGRAM AND DOCUMENTATION IS PROVIDED UNDER THE TERMS OF + THE COMMON PUBLIC LICENSE ("AGREEMENT") WHICH ACCOMPANIES IT. + ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM + CONSTITUTES RECIPIENT'S ACCEPTANCE OF THE AGREEMENT. + + The license text can also be found at + http://opensource.org/licenses/cpl.php + --> + +</head> +<body> + + +This document is the API specification for the Plexus Graph Library, a +library of generic graph data structures in which vertices and edges +may contain user-defined objects. + + +<h2>Formal Definitions and Terminology</h2> + +<P>A <i>graph</i> is composed of a set of <i>nodes</i> (sometimes also +called vertices) and a set of <i>edges</i>, where each edge is a pair +of nodes. The nodes comprising an edge are referred to as its +<i>endpoints</i>, and we say that the nodes are <i>adjacent</i>. Some +sources restrict the term <i>adjacent</i> to apply only to undirected +graphs, but we will not do that here. Graphs are usually visualized +by assigning points or shapes to each node and drawing a curve for +each edge between its endpoints. + +<P>An <i>undirected</i> graph is a graph in which an edge's endpoints +are unordered. We say that an edge is <i>incident on</i> its +endpoints. + +<P>A <i>directed</i> graph is a graph in which an edge's endpoints are +ordered. The first endpoint is called the edge's <i>tail</i> and the +second its <i>head</i>. If (u,v) is an edge (u is the tail and v the +head), we may say: +<UL> + <LI>there is an edge from u to v, + <LI>the edge is <i>incident from</i> or <i>leaves</i> u, + <LI>the edge is <i>incident to</i> or <i>enters</i> v, + <LI>the edge is <i>incident on</i> u and v, and + <LI>u -> v. +</UL> + +<P>A <i>simple</i> graph does not allow more than one edge between any +two endpoints (a directed simple graph may still have one edge in each +direction) or self-loops (an edge with both endpoints being the same +node). A <i>multigraph</i> is a graph which does not have these +restrictions. + + +<h2>Implementation Notes, Constraints, and Assumptions</h2> + +<P>The {@link com.phoenixst.plexus.Graph} interface is the primary +data structure defined by the Plexus Graph Library. All other classes +and interfaces provided here exist to implement and support +implementations of this interface. Unlike most examples from graph +literature and practice (as well as the short overview above), the +interface specification allows a single <code>Graph</code> to contain +both directed and undirected edges. Of course, any specific +implementation may restrict this behavior. + +<P>This package is similar in many ways to the <a +href="http://java.sun.com/j2se/1.5.0/docs/guide/collections/index.html"> +Java Collections Framework</a>. In particular, the details of how +graph nodes and edges are implemented are hidden from the user. Nodes +(and often edges) serve as containers for objects provided by the +user. Although the implementations of both are hidden, they do differ +in that there is a {@link com.phoenixst.plexus.Graph.Edge} interface +presented to the user describing a graph edge. + +<P>Nodes must contain unique (using {@link java.lang.Object#equals +Object.equals()}) user-provided objects. This requirement allows +nodes to be referenced unambiguously (when creating edges, for +example). The user-defined objects contained in +<code>Graph.Edge</code> objects, however, are not subject to this +requirement in the general case. Because <code>Object.equals()</code> +is used to distinguish nodes, a particular <code>Graph</code> +implementation may refer to only a single such node encountered. So, +for example, the following may occur: + +<PRE> + Object x = new Integer( 0 ); + Object y = new Integer( 1 ); + Object x2 = new Integer( 0 ); + graph.addNode( x ); + graph.addNode( y ); + graph.addEdge( null, x, y, true ); + graph.addNode( x2 ); // returns false, already contains x + graph.containsNode( x2 ); // returns true + Graph.Edge edge = graph.getEdge( new DefaultEdgeFilter( x2, y ) ); + // edge.getTail() may be x, not x2, here +</PRE> + +<P>Nothing prohibits a <code>Graph.Edge</code> from also being a node +in the same <code>Graph</code>. In other words, +<code>Graph.Edges</code> can point to other <code>Graph.Edges</code>. +If a particular <code>Graph</code> implementation allows this, these +two aspects of any particular <code>Graph.Edge</code> are independent. +Adding or removing a <code>Graph.Edge</code> as a node has no impact +upon the object's existence as an edge, and vice versa. + +<P>All general-purpose {@link com.phoenixst.plexus.Graph} +implementation classes should provide two "standard" constructors: a +void (no arguments) constructor, which creates an empty graph, and a +constructor with a single argument of type <code>Graph</code>, which +creates a new graph with the same elements as its argument. + + +@version 1.0 +@author Ray A. Conner +@since Plexus 1.0 + + +</body> +</html> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |