Main Page | Alphabetical List | Class List | File List | Class Members | File Members

phase2.c File Reference

Go to the source code of this file.

Functions

STATIC void phase2_down (void)
STATIC void phase2_up (void)


Function Documentation

STATIC void phase2_down void   ) 
 

Definition at line 2 of file phase2.c.

References apply_horder(), array_to_level(), compare_bary(), crossing_heuristics, cycle_sort_array(), G_timelimit, GNODE, graph_crossings(), gs_wait_message(), layer, layer_crossing(), level_to_array(), maxdepth, nr_crossings, phase2_startlevel, predbary(), predmedian(), resort_up_down_layer(), sort_array, STATIC, succbary(), succmedian(), test_timelimit(), and tmp_layer.

00003 { int i, j;
00004  int cross;
00005  gs_wait_message ('B');
00006  if (phase2_startlevel <= maxdepth)
00007      for (i = phase2_startlevel; i <= maxdepth; i++) {
00008          if (G_timelimit > 0) if (tesst_timelimit (60)) {gs_wait_message ('t'); break; }
00009          level_to_array (i, 'u');
00010          switch (crossing_heuristics)
00011          {
00012              case 0:for (j = 0; j < ((layer[i]).anz); j++) ((sort_array[j])->bary) = succbary (sort_array[j]); break;
00013              case 1:for (j = 0; j < ((layer[i]).anz); j++) ((sort_array[j])->bary) = succmedian (sort_array[j]); break;
00014              case 2:for (j = 0;j< ((layer[i]).anz); j++) ((sort_array[j])->bary) = succbary (sort_array[j]) + succmedian (sort_array[j]) / 10000.0; break;
00015              case 3:for (j = 0;j< ((layer[i]).anz); j++) ((sort_array[j])->bary) = succmedian (sort_array[j]) + succbary (sort_array[j]) / 10000.0; break;
00016          }
00017          if (((layer[i]).anz)) qsort (sort_array, ((layer[i]).anz), sizeof (GNODE), (int (*)(const void *, const void *)) compare_bary);
00018 
00019          
00020          if (cycle_sort_array (((layer[i]).anz))) 
00021          {
00022              array_to_level (i);
00023              if (((layer[i]).resort_necessary)) apply_horder (i);
00024              if (i > 0) ((tmp_layer[i - 1]).cross) = layer_crossing (i - 1);
00025              if (i <= maxdepth) ((tmp_layer[i]).cross) = layer_crossing (i);
00026              resort_up_down_layer (i);
00027              cross = graph_crossings ();
00028              if (cross < nr_crossings) {
00029                  phase2_startlevel = i + 1;
00030                  return;
00031              } 
00032          }
00033      }
00034  for (i = 0; (i < phase2_startlevel) && (i <= maxdepth); i++) {
00035      if (G_timelimit > 0) if (test_timelimit (60)) { gs_wait_message ('t'); break; }
00036      level_to_array (i, 'u');
00037      switch (crossing_heuristics) {
00038          case 0:for (j = 0; j < ((layer[i]).anz); j++) ((sort_array[j])->bary) = predbary (sort_array[j]); break;
00039          case 1:for (j = 0; j < ((layer[i]).anz); j++) ((sort_array[j])->bary) = predmedian (sort_array[j]); break;
00040          case 2: for (j = 0; j < ((layer[i]).anz); j++) ((sort_array[j])->bary) = predbary (sort_array[j]) + predmedian (sort_array[j]) / 10000.0; break;
00041          case 3: for (j = 0; j < ((layer[i]).anz); j++) ((sort_array[j])->bary) = predmedian (sort_array[j]) + predbary (sort_array[j]) / 10000.0; break; 
00042      }
00043      if (((layer[i]).anz)) qsort (sort_array, ((layer[i]).anz), sizeof (GNODE), (int (*)(const void *, const void *)) compare_bary);
00044      if (cycle_sort_array (((layer[i]).anz))) { 
00045          array_to_level (i);
00046          if (((layer[i]).resort_necessary)) apply_horder (i);
00047          if (i > 0) ((tmp_layer[i - 1]).cross) = layer_crossing (i - 1);
00048          if (i <= maxdepth) ((tmp_layer[i]).cross) = layer_crossing (i);
00049          resort_up_down_layer (i);
00050          cross = graph_crossings ();
00051          if (cross < nr_crossings)
00052          {
00053              phase2_startlevel = i + 1; return; 
00054          }
00055      }
00056  }
00057 }

STATIC void phase2_up void   ) 
 

Definition at line 59 of file phase2.c.

References apply_horder(), array_to_level(), compare_bary(), crossing_heuristics, cycle_sort_array(), G_timelimit, GNODE, graph_crossings(), gs_wait_message(), layer, layer_crossing(), level_to_array(), maxdepth, nr_crossings, phase2_startlevel, predbary(), predmedian(), resort_down_up_layer(), sort_array, STATIC, succmedian(), test_timelimit(), and tmp_layer.

00060 {
00061     int i, j;
00062     int cross; ;
00063     gs_wait_message ('B');
00064     if (phase2_startlevel > 0) for (i = phase2_startlevel; i > 0; i--) {
00065         if (G_timelimit > 0) if (test_timelimit (60)) { gs_wait_message ('t'); break; }
00066         level_to_array (i, 'd');
00067         switch (crossing_heuristics)
00068         {
00069             case 0: for (j = 0; j < ((layer[i]).anz); j++) ((sort_array[j])->bary) = predbary (sort_array[j]); break;
00070             case 1: for (j = 0; j < ((layer[i]).anz); j++) ((sort_array[j])->bary) = predmedian (sort_array[j]); break;
00071             case 2: for (j = 0; j < ((layer[i]).anz); j++) ((sort_array[j])->bary) = predbary (sort_array[j]) + predmedian (sort_array[j]) / 10000.0; break;
00072             case 3: for (j = 0; j < ((layer[i]).anz); j++) ((sort_array[j])->bary) = succmedian (sort_array[j]) + predbary (sort_array[j]) / 10000.0; break;
00073         }
00074         { if (((layer[i]).anz)) qsort (sort_array, ((layer[i]).anz), sizeof (GNODE), (int (*)(const void *, const void *)) compare_bary); } ;
00075         if (cycle_sort_array (((layer[i]).anz)))
00076         {
00077             array_to_level (i);
00078             if (((layer[i]).resort_necessary)) apply_horder (i);
00079             if (i > 0) ((tmp_layer[i - 1]).cross) = layer_crossing (i - 1);
00080             if (i <= maxdepth) ((tmp_layer[i]).cross) = layer_crossing (i);
00081             resort_down_up_layer (i);
00082             cross = graph_crossings ();
00083             if (cross < nr_crossings)
00084             {
00085 //# 2266 "step2_ugly.c"
00086                 phase2_startlevel = i - 1; return;
00087             }
00088         }
00089     }
00090     for (i = maxdepth + 1; (i > phase2_startlevel) && (i > 0); i--)
00091     {
00092         if (G_timelimit > 0) if (test_timelimit (60)) { gs_wait_message ('t'); break; }
00093         level_to_array (i, 'd');
00094         switch (crossing_heuristics)
00095         {
00096             case 0: for (j = 0; j < ((layer[i]).anz); j++) ((sort_array[j])->bary) = predbary (sort_array[j]);
00097                 break;
00098             case 1: for (j = 0; j < ((layer[i]).anz); j++) ((sort_array[j])->bary) = predmedian (sort_array[j]); break;
00099             case 2: for (j = 0; j < ((layer[i]).anz); j++) ((sort_array[j])->bary) = predbary (sort_array[j]) + predmedian (sort_array[j]) / 10000.0; break;
00100             case 3: for (j = 0; j < ((layer[i]).anz); j++) ((sort_array[j])->bary) = predmedian (sort_array[j]) + predbary (sort_array[j]) / 10000.0; break;
00101         }
00102         { if (((layer[i]).anz)) qsort (sort_array, ((layer[i]).anz), sizeof (GNODE), (int (*)(const void *, const void *)) compare_bary); }
00103         ;
00104         if (cycle_sort_array (((layer[i]).anz))) {
00105             array_to_level (i); 
00106             if (((layer[i]).resort_necessary)) 
00107                 apply_horder (i); 
00108             if (i > 0) ((tmp_layer[i - 1]).cross) = layer_crossing (i - 1); 
00109             if (i <= maxdepth) ((tmp_layer[i]).cross) = layer_crossing (i);
00110             resort_down_up_layer (i);
00111             cross = graph_crossings (); 
00112             if (cross < nr_crossings) { 
00113                 phase2_startlevel = i - 1; 
00114                 return; 
00115             } 
00116         }
00117     }
00118 }


Generated on Sat Aug 6 11:49:20 2005 for VCGIntrospector by doxygen 1.3.6