Sophie

Sophie

distrib > Mageia > 1 > i586 > by-pkgid > 3572920920e9324f1248aeed4ce28032 > files > 4

plexus-graph-0.13.1-6.mga1.noarch.rpm

$Id: README,v 1.44 2006/12/07 19:06:08 rconner Exp $

LEGAL STUFF
============================================================

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


INTRODUCTION
============================================================

The Plexus Graph Library is a Java library with specifications and
implementations for generic graph data structures.  Like the Java
Collections Framework, vertices and edges are containers for arbitrary
user-defined objects.

Plexus is maintained on SourceForge at the following URL.  Please look
there for the latest release and other information.

  http://sourceforge.net/projects/plexus/


INSTALL/BUILD
============================================================

To use Plexus, you need to download just plexus-<version>.jar and put
it in your classpath.  The other jars contain various portions of the
plexus library, if you only need part of it.  The dependencies are:

  plexus-core-<version>.jar       - no dependencies
  plexus-algorithms-<version>.jar - plexus-core
  plexus-operations-<version>.jar - plexus-core
  plexus-examples-<version>.jar   - plexus-core, plexus-operations

Plexus requires JDK 1.5 to use.  Plexus also requires Jakarta-Commons
Collections (currently using version 2.1.1) and log4j (currently using
version 1.2.9), which can be found at

  http://jakarta.apache.org/commons/collections/
  http://logging.apache.org/log4j/docs/

To build Plexus, you need Ant, the excellent build tool which can be
found at

  http://ant.apache.org/index.html

Install ant and run "ant" from this directory.

To build the test suite, run "ant build".  To do this, you will need
JUnit, which can be found at

  http://www.junit.org/index.htm


TO DO
============================================================

- Migrate the collections sub-package implementations to be consistent
  with Jakarta Commons-Collections 3.2.

? Predicate tree traversal

- Other views
  - undir of dir is easy
  - dir of undir is not so easy, how is the direction picked consistently?

? Make all Graphs observable
  - nuke Obs wrapper

? Edge.setUserObject() should fire an event when Observable
  Some Edge impls need to know if they've been deleted.
  Particularly if they send events.

- An XML specification for reading/writing graphs.

- More operations
  - complement(G): same nodes, edge set complement
  - transpose(G): same nodes, invert edge directions
  - edge diff(G,H): V(G)=V(H); E = E(G) \ E(H)
  - edge sum(G,H): V(G)=V(H); E = E(G) union E(H)
  - (disjoint) union(G,H): V(G), V(H) disjoint;
      V = V(G) union V(H), E = E(G) union E(H)
  - composition(G,H): V = V(G) x V(H);
      E = {(u,v),(u,w)}: u in V(G) & {v,w} in E(H)
          {(t,u),(v,w)}: {t,v} in E(G) & {u,w} in E(H)
  - conjunction(G,H): V = V(G) x V(H);
      E = {(t,u),(v,w)}: {t,v} in E(G) & {u,w} in E(H)

? Hyperedges

- Incorporate hierarchy.  This will require a fair amount of design to
  do it right.  The simple solution of allowing nodes (or edges) to
  contain graphs is not the general solution I want.  I want a single
  graph to have many possible hierarchies defined upon it at the same
  time.

- tests!