README
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:13k
源码类别:

通讯编程

开发平台:

Visual C++

  1. LATE-BREAKING NEWS APPEARS AT THE END OF THIS FILE!
  2. The Stanford GraphBase is copyright 1993 by Stanford University
  3. These files may be freely copied and distributed, provided that
  4. no changes whatsoever are made. All users are asked to help keep
  5. the Stanford GraphBase sources consistent and ``uncorrupted,''
  6. identical everywhere in the world. Changes are permissible only
  7. if the changed file is given a new name, different from the names of
  8. existing files listed below, and only if the changed file is
  9. clearly identified as not being part of the Stanford GraphBase.
  10. The author has tried his best to produce correct and useful programs,
  11. in order to help promote computer science research, but no warranty
  12. of any kind should be assumed.
  13. FILES INCLUDED IN STANDARD GRAPHBASE DISTRIBUTION
  14. The standard Stanford GraphBase consists of the following files:
  15. 1) Data files
  16.       anna.dat     Anna Karenina (used by gb_books)
  17.       david.dat    David Copperfield (used by gb_books)
  18.       econ.dat     US economic input and output (used by gb_econ)
  19.       games.dat    College football scores, 1990 (used by gb_games)
  20.       homer.dat    The Iliad (used by gb_books)
  21.       huck.dat     Huckleberry Finn (used by gb_books)
  22.       jean.dat     Les Miserables (used by gb_books)
  23.       lisa.dat     Mona Lisa pixels (used by gb_lisa)
  24.       miles.dat    Mileage between North American cities (used by gb_miles)
  25.       roget.dat    Cross references in Roget's Thesaurus (used by gb_roget)
  26.       words.dat    Five-letter words of English (used by (gb_words)
  27. 2) CWEB program files
  28.   a) Kernel routines
  29.       gb_flip.w    System-independent random number generator
  30.       gb_graph.w   Data structures for graphs
  31.       gb_io.w      Input/output routines
  32.       gb_sort.w    Sorting routine for linked lists
  33.   b) Graph generating routines
  34.       gb_basic.w   Standard building blocks and graph operations
  35.       gb_books.w   Graphs based on world literature
  36.       gb_econ.w    Graphs based on US inter-industry flow
  37.       gb_games.w   Graphs based on college football games
  38.       gb_gates.w   Graphs based on combinational logic
  39.       gb_lisa.w    Graphs based on Leonardo's Mona Lisa
  40.       gb_miles.w   Graphs based on highway distances
  41.       gb_plane.w   Planar graphs
  42.       gb_raman.w   Ramanujan graphs (expanders)
  43.       gb_rand.w    Random graphs
  44.       gb_roget.w   Graphs based on Roget's Thesaurus
  45.       gb_words.w   Graphs based on 5-letter words of English
  46.    c) Demonstration routines
  47.       assign_lisa.w      The assignment problem, using Mona Lisa
  48.       book_components.w  Biconnected components, using the plots of books
  49.       econ_order.w       Heuristic solution to an optimum permutation problem
  50.       football.w         Heuristic solution to a longest-path problem
  51.       girth.w            Empirical study of Ramanujan graphs
  52.       ladders.w          Shortest paths in word graphs
  53.       miles_span.w       Comparison of algorithms for minimum spanning tree
  54.       multiply.w         Using a parallel multiplication circuit
  55.       queen.w            Graphs based on queen moves
  56.       roget_components.w Strong components of a directed graph
  57.       take_risc.w        Using a simple RISC computer circuit
  58.       word_components.w  Connected components of word graphs
  59.    d) Miscellaneous routines
  60.       boilerplate.w      Legalese incorporated into all GraphBase programs
  61.       gb_dijk.w          Variants of Dijkstra's algorithm for shortest paths
  62.       gb_save.w          Converting graphs to ASCII files and vice versa
  63.       gb_types.w         GraphBase reserved word formatting (used with @i)
  64.       test_sample.w      Test routine for GraphBase installation
  65. 3) Miscellaneous files
  66.       Makefile           Instructions to build everything with UNIX
  67.       README             What you're now reading
  68.       abstract.plaintex  Short explanation of what it's all about
  69.       cities.texmap      TeXable map of the 128 cities in miles.dat
  70.       queen_wrap.ch      Demonstration changefile
  71.       sample.correct     Correct primary output of test_sample
  72.       test.correct       Correct secondary output of test_sample
  73.       test.dat           Weird data used to test gb_io
  74.       word_giant.ch      Another demonstration changefile
  75.       blank.w            Template to copy when writing a new CWEB program
  76.       +The+Stanford+GraphBase+  Empty file at beginning of directory listing
  77. TO INSTALL THESE PROGRAMS
  78. First install CWEB (version 3.0 or greater), which can be found in various
  79. archives; the master files reside at labrea.stanford.edu.  Then, on a
  80. UNIX-like system, edit the Makefile as Makefile instructs you, take a deep
  81. breath, and "make tests". After you get the message
  82.       Congratulations --- the tests have all been passed
  83. you can then say "make install" (possibly changing to superuser if the
  84. directories are protected). On other systems, build the programs yourself
  85. by following the recipes in Makefile as closely as you can.
  86. On a UNIX-like system, the process of building everything should produce
  87. roughly the following actions (possibly with harmless warning messages):
  88. ctangle gb_io.w
  89. cc -g -I$INCLUDEDIR  -DDATA_DIRECTORY="$DATADIR/" -c gb_io.c
  90. cc -g -I$INCLUDEDIR  test_io.c gb_io.o -o test_io
  91. ctangle gb_graph.w
  92. cc -g -I$INCLUDEDIR  -c  gb_graph.c
  93. cc -g -I$INCLUDEDIR  test_graph.c gb_graph.o -o test_graph
  94. ctangle gb_flip.w
  95. cc -g -I$INCLUDEDIR  -c  gb_flip.c
  96. cc -g -I$INCLUDEDIR  test_flip.c gb_flip.o -o test_flip
  97. test_io
  98. OK, the gb_io routines seem to work!
  99. test_graph
  100. Hey, I allocated 10000000 bytes successfully. Terrific...
  101. OK, the gb_graph routines seem to work!
  102. test_flip
  103. OK, the gb_flip routines seem to work!
  104. ctangle gb_sort.w
  105. cc -g -I$INCLUDEDIR  -c  gb_sort.c
  106. ctangle gb_basic.w
  107. cc -g -I$INCLUDEDIR  -c  gb_basic.c
  108. ctangle gb_books.w
  109. cc -g -I$INCLUDEDIR  -c  gb_books.c
  110. ctangle gb_econ.w
  111. cc -g -I$INCLUDEDIR  -c  gb_econ.c
  112. ctangle gb_games.w
  113. cc -g -I$INCLUDEDIR  -c  gb_games.c
  114. ctangle gb_gates.w
  115. cc -g -I$INCLUDEDIR  -c  gb_gates.c
  116. ctangle gb_lisa.w
  117. cc -g -I$INCLUDEDIR  -c  gb_lisa.c
  118. ctangle gb_miles.w
  119. cc -g -I$INCLUDEDIR  -c  gb_miles.c
  120. ctangle gb_plane.w
  121. cc -g -I$INCLUDEDIR  -c  gb_plane.c
  122. ctangle gb_raman.w
  123. cc -g -I$INCLUDEDIR  -c  gb_raman.c
  124. ctangle gb_rand.w
  125. cc -g -I$INCLUDEDIR  -c  gb_rand.c
  126. ctangle gb_roget.w
  127. cc -g -I$INCLUDEDIR  -c  gb_roget.c
  128. ctangle gb_words.w
  129. cc -g -I$INCLUDEDIR  -c  gb_words.c
  130. ctangle gb_dijk.w
  131. cc -g -I$INCLUDEDIR  -c  gb_dijk.c
  132. ctangle gb_save.w
  133. cc -g -I$INCLUDEDIR  -c  gb_save.c
  134. rm -rf certified
  135. ar rcv libgb.a gb_flip.o gb_graph.o gb_io.o gb_sort.o gb_basic.o gb_books.o 
  136.   gb_econ.o gb_games.o gb_gates.o  gb_lisa.o gb_miles.o gb_plane.o gb_raman.o 
  137.   gb_rand.o gb_roget.o  gb_words.o gb_dijk.o gb_save.o
  138. ranlib libgb.a
  139. ctangle test_sample.w
  140. cc -g -I$INCLUDEDIR   -L. -L$LIBDIR -o test_sample test_sample.c -lgb
  141. test_sample > sample.out
  142. diff test.gb test.correct
  143. diff sample.out sample.correct
  144. rm test.gb sample.out test_io test_graph test_flip test_sample
  145. echo "Congratulations --- the tests have all been passed."
  146. touch certified
  147. mkdir $SGBDIR
  148. mkdir $DATADIR
  149. cp -p anna.dat david.dat econ.dat games.dat homer.dat huck.dat jean.dat 
  150.   lisa.dat miles.dat roget.dat words.dat $DATADIR
  151. mkdir $LIBDIR
  152. cp libgb.a $LIBDIR
  153. mkdir $CWEBINPUTS
  154. cp -p boilerplate.w gb_types.w $CWEBINPUTS
  155. mkdir $INCLUDEDIR
  156. cp -p gb_flip.h gb_graph.h gb_io.h gb_sort.h gb_basic.h gb_books.h gb_econ.h 
  157.   gb_games.h gb_gates.h  gb_lisa.h gb_miles.h gb_plane.h gb_raman.h gb_rand.h 
  158.   gb_roget.h  gb_words.h gb_dijk.h gb_save.h Makefile $INCLUDEDIR
  159. Here "ctangle foo" is actually an abbreviation for the shell command
  160.  "if test -r foo.ch; then ctangle foo.w foo.ch; else ctangle foo; fi"
  161. which supplies a change file to ctangle if you have prepared one.
  162. (The actions following "touch certified" are those of "make install", assuming
  163. that "make tests" was done first; these are the only actions that may need
  164. to be done as superuser. It's generally best not to be superuser until AFTER
  165. the tests have been passed; otherwise who knows what might happen?)
  166. If you want to install all the demonstration programs as well as the
  167. GraphBase library, say "make installdemos" after "make install". This
  168. causes the following sequence of actions to occur:
  169. ctangle assign_lisa.w
  170. cc -g -I$INCLUDEDIR -L. -L$LIBDIR -o assign_lisa assign_lisa.c -lgb
  171. make book_components.c
  172. ctangle book_components.w
  173. cc -g -I$INCLUDEDIR -L. -L$LIBDIR -o book_components book_components.c -lgb
  174. ctangle econ_order.w
  175. cc -g -I$INCLUDEDIR -L. -L$LIBDIR -o econ_order econ_order.c -lgb
  176. ctangle football.w
  177. cc -g -I$INCLUDEDIR -L. -L$LIBDIR -o football football.c -lgb
  178. ctangle girth.w
  179. cc -g -I$INCLUDEDIR -L. -L$LIBDIR -o girth girth.c -lgb
  180. ctangle ladders.w
  181. cc -g -I$INCLUDEDIR -L. -L$LIBDIR -o ladders ladders.c -lgb
  182. ctangle miles_span.w
  183. cc -g -I$INCLUDEDIR -L. -L$LIBDIR -o miles_span miles_span.c -lgb
  184. ctangle multiply.w
  185. cc -g -I$INCLUDEDIR -L. -L$LIBDIR -o multiply multiply.c -lgb
  186. ctangle queen.w
  187. cc -g -I$INCLUDEDIR -L. -L$LIBDIR -o queen queen.c -lgb
  188. ctangle roget_components.w
  189. cc -g -I$INCLUDEDIR -L. -L$LIBDIR -o roget_components roget_components.c -lgb
  190. ctangle take_risc.w
  191. cc -g -I$INCLUDEDIR -L. -L$LIBDIR -o take_risc take_risc.c -lgb
  192. ctangle word_components.w
  193. cc -g -I$INCLUDEDIR -L. -L$LIBDIR -o word_components word_components.c -lgb
  194. mkdir $BINDIR
  195. mv assign_lisa book_components econ_order football girth ladders miles_span 
  196.   multiply queen roget_components  take_risc word_components $BINDIR
  197. Complete instructions appear in the book by D. E. Knuth entitled
  198.  The Stanford GraphBase: A Platform for Combinatorial Computing
  199. published jointly by ACM Press and Addison-Wesley (1993), ISBN 0-201-54275-7.
  200. IF ALL ELSE FAILS send trouble reports to sgb@cs.stanford.edu.
  201. IF YOU LIKE THE STANFORD GRAPHBASE send thanks to sgb@cs.stanford.edu.
  202. ******LATE-BREAKING NEWS:
  203. * The master sources at labrea.stanford.edu contain all the files listed above
  204. (uncompressed), as well as a compressed file sgb.tar.gz that generates them on
  205. a UNIX system if you say "zcat sgb.tar.gz | tar xvpf -" using GNU's excellent
  206. new compression/decompression scheme.
  207. * The master sources also contain an ERRATA file listing all known errors
  208. in the GraphBase book. (A reward of $2.56 is paid to the first finder of
  209. an error; the errors listed in ERRATA are no longer worth anything.)
  210. * Although several of the GraphBase programs have changed since the system
  211. was first released, none of these changes have affected the generated graphs.
  212. Corrections were only made to improve comments or to remove anomalies in cases
  213. where some compilers had difficulty.
  214. * The demonstration programs sometimes return a negative value to the
  215. operating system environment. For example, an error message about improper
  216. "Usage:" is often followed by "return -2". The actual number received by
  217. a shell script or makefile running such programs will differ on different
  218. operating systems (and in particular a negative number will often be converted
  219. to a nonnegative 8-bit integer). The returned values have no great importance;
  220. they are intended only for debugging.
  221. * It is planned to have subdirectories that contain change files for systems
  222. that are particularly hard to accommodate. For example, a "DOS" subdirectory
  223. might be provided for a certain well-known operating system. We will try
  224. to give UPPERCASE names to such subdirectories so that they are easily spotted.
  225. * Important note: The Stanford GraphBase programs do not obey the ANSI C
  226. standard restriction on comparison of pointers. In fact, the author (Knuth)
  227. confesses to being unaware until recently that such a restriction was
  228. part of the standard; he wrote the code under the assumption that
  229. pointers were essentially machine addresses. No problem occurs with
  230. respect to |==| and |!=| comparison, but the code sometimes has a loop
  231. like |for (p=hi;p>=lo;p--)| where |lo| is the base address of a
  232. dynamically allocated array. Strictly speaking, |lo-1| is undefined.
  233. In other places (e.g., sections 23 and 26 of GB_SAVE) we explicitly test
  234. if one pointer is less than another; this code effectively sorts a set of
  235. pointers of unknown origin by magnitude, so it assumes that |<| defines a
  236. total ordering on pointers. In GB_GATES section 2 we cast a pointer
  237. to unsigned long and test whether the result is |<=1|; conversely, the
  238. constant 1 is read as a pointer via a union type in GB_SAVE section 10.
  239. None of this is likely to cause any trouble unless your environment has
  240. segmented architecture and 16-bit offsets within each segment. If you do
  241. have such a system, your best bet is probably to get one of the free
  242. and excellent ports of the GCC compiler. For example, DJ Delorie has
  243. succeeded in porting GCC to the MSDOS environment. Alternatively,
  244. a set of change files appears on directory sgb/ANSI.
  245. * The code also assumes throughout that NULL is equivalent to zero (for
  246. example, that pointer arrays delivered by |calloc| are full of NULLs).
  247. It would be almost impossible to remove this assumption; don't even
  248. think about it.