Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/boost_1_33_1/libs/graph/doc/challenge.html @ 14

Last change on this file since 14 was 12, checked in by landauf, 17 years ago

added boost

File size: 4.7 KB
RevLine 
[12]1<HTML>
2<!--
3  -- Copyright (c) Jeremy Siek 2000
4  --
5  -- Permission to use, copy, modify, distribute and sell this software
6  -- and its documentation for any purpose is hereby granted without fee,
7  -- provided that the above copyright notice appears in all copies and
8  -- that both that copyright notice and this permission notice appear
9  -- in supporting documentation.  Silicon Graphics makes no
10  -- representations about the suitability of this software for any
11  -- purpose.  It is provided "as is" without express or implied warranty.
12  -->
13<Head>
14<Title>Challenge</Title>
15<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" 
16        ALINK="#ff0000"> 
17<IMG SRC="../../../boost.png" 
18     ALT="C++ Boost" width="277" height="86"> 
19
20<BR Clear>
21
22
23<h2>Boost Graph Library Challenge and To-Do Items</h2>
24
25
26<ul>
27
28<li>Dynamic graph algorithms such as described in <a
29href="http://citeseer.ist.psu.edu/eppstein99dynamic.html">Dynamic Graph
30Algorithms</a> and <a
31href="http://citeseer.ist.psu.edu/alberts98software.html">A Software
32Library of Dynamic Graph Algorithms</a>.
33
34<li>Polish up code/docs for pending items and champion the formal
35review. The pending items are:</li>
36  <ul>
37   <li><tt>container_traits.hpp</tt> (this should also include
38     the work Matt Austern is doing on this topic)</li>
39
40   <li>The queues and heaps: <tt>queue.hpp</tt>,
41     <tt>mutable_queue.hpp</tt>, <tt>fibonacci_heap.hpp</tt>.
42      Somehow merge implementation with Dietmer's heaps and queues.</li>
43
44   <li><tt>disjoint_sets</tt> </li>
45  </ul>
46
47<li>Construct a set of planar graph algorithms.</li>
48  <ul>
49   <li> Is the graph planar?</li>
50   <li> &quot;Walk around the block&quot; and similar open and closed neighborhood
51traversals. Note that edge traversals need to resolve to particular ends
52and sides (see below), not just to the edge as a whole.</li>
53   <li> Given a point, find the nearest vertex, edge, or bounded polygon.
54Again, edges are viewed as having left and right sides.</li>
55   <li> Given a line segment, find intersecting vertices, edges, or bounded
56polygons.</li>
57   <li> Given a polygon, find intersecting whatever...</li>
58   <li> Various minimum bounding rectangle and clipping problems.</li>
59   <li> Construct a planar embedding of a planar graph.</li>
60   <li> Find a balanced separator of a graph.</li>
61   <li> Modify adjacency_list so that the out-edges can be ordered
62    according to a user defined comparison object.</li>
63  </ul>
64
65<li>Rewrite the Qhull algorithm using the Boost Graph Library (this is
66high difficulty challenge).  Or, for a more manageable challenge,
67write an interface for Qhull with the BGL.  <a
68href="http://www.geom.umn.edu/locate/qhull">Qhull</a> computes the
69convex hull, Delaunay triangulation, Voronoi diagram, and halfspace
70intersection about a point.  Qhull runs in 2-d, 3-d, 4-d, and higher
71dimensions.  Qhull is used for collision detection, animation, plate
72tectonics, 3-d modeling, robot motion planning, and other <a
73href="http://www.geom.umn.edu/~bradb/qhull-news.html#use">applications</a>.
74It is currently difficult to use from a C++ program.
75
76</li>
77
78
79<li>Explore the use of Algorithm Objects as an alternative to
80  the current approach with visitors.</li>
81
82<li>Analyze the algorithms that do not yet have visitors, and
83  come up with visitor interfaces for them.</li>
84
85<li>Add a check in the adjacency_list class to make sure
86  all the vertex property template arguments have kind=vertex_property_tag
87  and all edge property template arguments have kind=edge_property_tag.</li>
88
89<li>Clean up the output functions in graph_utility.hpp to
90  use streams, and document all the utility functions. Replace
91  the random number stuff with calls to the boost random number generator.</li>
92
93<li>Modularize the tests in test/graph.cpp to apply to particular
94  concepts. Make sure there are run-time tests for every BGL concept.</li>
95
96<li>Write tests for the BGL algorithms. There are a few, but
97   more are needed. The example provide a sanity check but do not
98   provide full coverage.</li>
99
100<li>Write up the examples from Knuth's <i>Stanford GraphBase</i> using
101  the BGL. The file <a
102  href="../example/miles_span.cpp"><tt>examples/miles_span.cpp</tt></a>
103  is a start.</li>
104
105<li>Further testing of the <tt>subgraph</tt> class and add more
106   features.</li>
107
108<li>Implement a minimum-cost maximum-flow algorithm.</li>
109
110<li>Make the <tt>type</tt> of all (internal) property maps convertible to the <tt>const_type</tt> of the property maps.<li>
111</ul>
112
113<br>
114<HR>
115<TABLE>
116<TR valign=top>
117<TD nowrap>Copyright &copy 2000-2001</TD><TD>
118<A HREF="../../../people/jeremy_siek.htm">Jeremy Siek</A>, Indiana University (<A HREF="mailto:jsiek@osl.iu.edu">jsiek@osl.iu.edu</A>)
119</TD></TR></TABLE>
120
121</BODY>
122</HTML> 
Note: See TracBrowser for help on using the repository browser.