geog.h
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:2k
源码类别:

通讯编程

开发平台:

Visual C++

  1. /* $Id: geog.h,v 1.1 1996/10/04 13:35:33 calvert Exp $
  2.  * 
  3.  * geog.h -- constants and declarations for graph-generation routines.
  4.  *
  5.  */
  6. #include "gb_flip.h"
  7. #include "limits.h"
  8. /* Vertex auxiliary fields */
  9. #define xpos x.I /* vertex locations (in scale units) */
  10. #define ypos y.I
  11. /* Arc auxiliary fields */
  12. #define policywt  a.I
  13. /* Graph aux fields */
  14. #define Gscale uu.I /* resolution of vertex placement */
  15. /* Utility string for Graph type
  16.  * We use the following:
  17.  * Vertices:  x, y = Euclidean coordinates of each vertex
  18.  * Arcs:      a = policy weight
  19.  * Graphs:    uu = global scale of coordinate system (size of unit square)
  20.  */
  21. #define GEO_UTIL "ZZZIIZIZIZZZZZ"
  22.                       /* VVVVVVAAGGGGGG */
  23.                       /* uvwxyzabuvwxyz
  24.          uvwxyz */
  25. /* Methods for calculating edge probabilities, use as arguments to geo() */
  26. /* XXX Make this an enum type */
  27. #define RG2 1
  28. #define RG1 2
  29. #define RANDOM 3
  30. #define EXP 4
  31. #define DL 5
  32. #define LOC 6
  33. /* Maximum number of levels for geo_hier() */
  34. #define MAXLEVEL 5
  35. /* Absolute maximum length of a node name string XXX */
  36. #define MAXNAMELEN       128
  37. /* Default seed for random number generation */
  38. #define DEFAULT_SEED 417890326
  39. #define BIGINT LONG_MAX
  40. #define randfrac() (gb_next_rand() / (double) LONG_MAX)
  41. typedef struct geo_parm_struct {
  42.     long n; /* number of nodes */
  43.     int scale, /* placement resolution */
  44.      method; /* how to calculate edge probs (RG2 etc. above) */
  45.     double alpha, /* probability parameter*/
  46. beta, /* ditto */
  47. gamma; /* ditto */
  48. } geo_parms;
  49. Graph *geo(long seed,geo_parms *p);
  50. Graph *
  51. geo_hier(long seed, /* for seeding the random number generator */
  52. int nlevels, /* size of the parameter structure array */
  53.         int edgemeth, /* method of attaching interlevel edges */
  54.         int aux, /* auxiliary parameter for edge method? */
  55. geo_parms *pp); /* array of parameter structures, one per level */
  56. Graph *
  57. transtub(long seed,
  58.          int spx,               /* mean # stubs/transit node    */
  59.          int nrants,            /* # random transit-stub edges  */
  60.          int nranss,            /* # random stub-stub edges     */
  61.          geo_parms* toppp,      /* params for transit connectivity */
  62.          geo_parms* transpp,    /*   "     "  transit domains   */
  63.          geo_parms* stubpp);     /*   "     "  stub domains      */