| Diploma Thesis Percolation Simulation C++ Sourcecode Documentation |
Functions | |
| void | erasehisto (NUMBER *histo, NUMBER first, NUMBER last) |
| NUMBER | show_shorthisto (NUMBER *histogram, NUMBER first, NUMBER last) |
| void | show_histo (NUMBER *histo1, NUMBER last) |
| void | show_twohisto (NUMBER *histo1, NUMBER *histo2, NUMBER last) |
| void | show_threehisto (NUMBER *histo1, NUMBER *histo2, NUMBER *histo3, NUMBER last) |
| void | show_fourhisto (NUMBER *histo1, NUMBER *histo2, NUMBER *histo3, NUMBER *histo4, NUMBER last) |
| void | show_fivehisto (NUMBER *histo1, NUMBER *histo2, NUMBER *histo3, NUMBER *histo4, NUMBER *histo5, NUMBER last) |
| void | show_sixhisto (NUMBER *histo1, NUMBER *histo2, NUMBER *histo3, NUMBER *histo4, NUMBER *histo5, NUMBER *histo6, NUMBER last) |
| void | show_sevenhisto (NUMBER *histo1, NUMBER *histo2, NUMBER *histo3, NUMBER *histo4, NUMBER *histo5, NUMBER *histo6, NUMBER *histo7, NUMBER last) |
| NUMBER | mstfreqcluster (NUMBER *histogram, NUMBER first, NUMBER last) |
| bool | sameresult (NUMBER *histo1, NUMBER *histo2, NUMBER first, NUMBER last) |
| void | makehistogram (NUMBER *tableofclusters, NUMBER *histogram, NUMBER &biggest, NUMBER &biggestcl_no) |
| NUMBER | makehistogram (cluson *clusters, NUMBER firstclno, NUMBER lastclno, NUMBER *histogram, NUMBER &biggestcluster_clno, NUMBER &biggestcluster_size, REAL &averagecluster_size) |
| NUMBER | analyze_clusters (cluson *clst, NUMBER firstclno, NUMBER lastclno, NUMBER *histogram, NUMBER N, NUMBER &biggestcl, REAL &averagecl) |
| void | edgespheres (sphere *array, NUMLIST &original, NUMLIST &edgelist, COORDFLOAT border, REAL radius, int direction) |
| void | occuring_clusternumbers (sphere *spheres, NUMLIST all, NUMLIST &clusternumbers) |
| COUNTER | intersection_of_unsortedlists (NUMLIST list_one, NUMLIST list_two, NUMLIST &result) |
| COUNTER | intersection_of_sortedlists (NUMLIST list_one, NUMLIST list_two, NUMLIST &result) |
| COUNTER | find_spanningclusters (sphere *spheres, NUMLIST all, NUMLIST &spclusters, unsigned int direction, COORDFLOAT left, COORDFLOAT right, REAL radius) |
| LONGBITS | spanning_dirs_and_clusters (sphere *spheres, NUMLIST all, COORDFLOAT left, COORDFLOAT right, REAL radius, int dim, cluson *clusters, NUMLIST &L_spanningclusters) |
| LONGBITS | spanning_directions (sphere *spheres, NUMLIST all, COORDFLOAT left, COORDFLOAT right, REAL radius, int dim) |
| REAL | mean_without_lr_spanningcls (REAL mean_clsz, NUMBER N, cluson *clusters, NUMLIST &L_spanningclusters, LONGBITS spcl_dirs) |
| NUMBER | mass_of_all_spanningclusters (cluson *clusters, NUMLIST &L_spanningclusters) |
Variables | |
| clock_t | time1 |
| clock_t | time2 |
| clock_t | time3 |
|
||||||||||||||||||||||||||||||||
|
Definition at line 170 of file analyze.h. References erasehisto(), makehistogram(), NUMBER, and REAL. Referenced by counters::divide_d_times_count_and_analyze(), counters::divide_once_count_and_analyze(), counters::divide_three_times_count_and_analyze(), and counters::divide_two_times_count_and_analyze().
00177 {
00178 NUMBER biggestcl_no;
00179
00180 erasehisto(histogram,1,N);
00181 makehistogram ( clst,firstclno,lastclno,
00182 histogram,
00183 biggestcl_no,
00184 biggestcl,
00185 averagecl);
00186 return (biggestcl_no);
00187 }
|
|
||||||||||||||||||||||||||||
|
Definition at line 189 of file analyze.h. References sphere::c, COORDFLOAT, getdim(), lower(), and REAL. Referenced by counters::combine(), find_spanningclusters(), find_spanningclusters(), and starters::test_list().
00195 {
00196 int sign=(direction/abs(direction));
00197 NUMLIST::iterator iter1=original.begin();
00198 sphere sph(getdim(array[*iter1].c));
00199
00200 if (sign<0) {
00201 COORDFLOAT cut=border+(COORDFLOAT)radius;
00202 for (iter1 ; iter1 != original.end(); ++iter1){
00203 sph=array[*iter1];
00204 if ( lower(sph.c, cut, abs(direction) ) )
00205 edgelist.insert(edgelist.end(), *iter1);
00206 }
00207 }
00208 else {
00209 COORDFLOAT cut=border-(COORDFLOAT)radius;
00210 for (iter1 ; iter1 != original.end(); ++iter1){
00211 sph=array[*iter1];
00212 if (! lower(sph.c, cut, abs(direction) ) )
00213 edgelist.insert(edgelist.end(), *iter1);
00214 }
00215 }
00216 }
|
|
||||||||||||||||
|
Definition at line 9 of file analyze.h. References NUMBER. Referenced by analyze_clusters(), grid::boxcount_analyze_and_return_clusters(), optimize::compare_recursion_and_Stoddard_iteration(), counters::count_analyze_and_return_clusters(), counters::divide_count_and_analyze(), counters::naive_arraycount_and_analyze(), counters::naive_count_and_analyze(), counters::naive_listcount_and_analyze(), and optimize::new_vs_old_algo().
00009 {
00010 for (NUMBER i=first;i<=last;i++){
00011 histo[i]=0;
00012 }
00013 }
|
|
||||||||||||||||||||||||||||||||
|
Definition at line 279 of file analyze.h. References COORDFLOAT, COUNTER, edgespheres(), intersection_of_sortedlists(), occuring_clusternumbers(), REAL, time1, time2, and time3. Referenced by spanning_directions(), and spanning_dirs_and_clusters().
00284 {
00285
00286 NUMLIST left_edgespheres;
00287 NUMLIST right_edgespheres;
00288 time1=clock();
00289 edgespheres(spheres, all, left_edgespheres, left, radius, -(int)direction);
00290 edgespheres(spheres, all, right_edgespheres, right, radius, direction);
00291 time1=clock()-time1;
00292
00293 NUMLIST left_edgeclusters;
00294 NUMLIST right_edgeclusters;
00295 time2=clock();
00296 occuring_clusternumbers(spheres, left_edgespheres, left_edgeclusters);
00297 occuring_clusternumbers(spheres, right_edgespheres, right_edgeclusters);
00298 time2=clock()-time2;
00299
00300 time3=clock();
00301 COUNTER found=intersection_of_sortedlists(left_edgeclusters, right_edgeclusters, spclusters);
00302 time3=clock()-time3;
00303
00304 return found; // and spanningclusters
00305 }
|
|
||||||||||||||||
|
Definition at line 246 of file analyze.h. References COUNTER. Referenced by find_spanningclusters().
00246 {
00247 COUNTER found = 0;
00248 NUMLIST::iterator one, two;
00249 one=list_one.begin();
00250 two=list_two.begin();
00251
00252 while ( (one != list_one.end()) && (two != list_two.end()) ) {
00253
00254 while ( (*one < *two) && ( one != list_one.end()) ) one++;
00255 // if ( one == list_one.end() && *one==*two) Beep(50,5000);
00256 // this was the reason for a non(!)spanning spanningcluster!!!
00257 // so the next line (if... break) is necessary!!!
00258 if ( one == list_one.end() ) break;
00259
00260 if ( *one==*two) {
00261 found++;
00262 result.push_back(*one);
00263 two++;
00264 }
00265 else {
00266 while ((*two<*one)&&(two!=list_two.end())) two++;
00267 // here it is not necessary because of the main-while condition
00268 }
00269 }
00270 return found;
00271 }
|
|
||||||||||||||||
|
Definition at line 232 of file analyze.h. References COUNTER.
00232 {
00233 COUNTER found = 0;
00234 NUMLIST::iterator one, two;
00235 for (one=list_one.begin();one!=list_one.end(); one++){
00236 for (two=list_two.begin();two!=list_two.end(); two++){
00237 if (*one==*two){
00238 result.push_back(*one);
00239 found++;
00240 }
00241 }
00242 }
00243 return found;
00244 }
|
|
||||||||||||||||||||||||||||||||
|
Definition at line 141 of file analyze.h. References NUMBER, REAL, and cluson::sphlist.
00148 {
00149 NUMBER size;
00150 NUMBER totalnumber=0;
00151 biggestcluster_clno=0, biggestcluster_size=0;
00152 averagecluster_size=0;
00153
00154 for (NUMBER clno=firstclno;clno<=lastclno;clno++){
00155 size = clusters[clno].sphlist.size();
00156 histogram[size]++;
00157
00158 if (size>biggestcluster_size) {
00159 biggestcluster_size=size;
00160 biggestcluster_clno=clno;
00161 }
00162 totalnumber +=size;
00163 averagecluster_size += (REAL) size * (REAL) size; // e.g. size 173 is mentioned 173 times
00164 }
00165 averagecluster_size /= (REAL) totalnumber; // each sphere belongs to this clustersize by average
00166 return totalnumber;
00167 }
|
|
||||||||||||||||||||
|
Definition at line 117 of file analyze.h. References NUMBER. Referenced by analyze_clusters().
00117 : size=0) 00118 NUMBER *histogram, // how many of that size ? 00119 NUMBER& biggest, 00120 NUMBER& biggestcl_no) { 00121 00122 00123 NUMBER clusterno=1; 00124 biggest=0; 00125 00126 NUMBER size = tableofclusters[clusterno]; 00127 while ( !(size==0) ){ 00128 histogram[size]++; // count all of that size 00129 00130 if (size>biggest) { 00131 biggest=size; 00132 biggestcl_no=clusterno; // biggest cluster up to here 00133 } 00134 00135 clusterno++; 00136 size = tableofclusters[clusterno]; 00137 } 00138 } |
|
||||||||||||
|
Definition at line 384 of file analyze.h. References NUMBER, and cluson::sphlist.
|
|
||||||||||||||||||||||||
|
Definition at line 362 of file analyze.h. References LONGBITS, NUMBER, REAL, cluson::sp_lr(), and cluson::sphlist. Referenced by counters::setR_count_analyze_step().
00363 {
00364
00365 if (spcl_dirs&1==0) return mean_clsz; // no spanningcluster in left-right direction
00366
00367 REAL temp=mean_clsz;
00368 temp *= (REAL)N;
00369
00370 NUMBER clno, clsz;
00371 NUMLIST::iterator spcl;
00372 for (spcl=L_spanningclusters.begin();spcl!=L_spanningclusters.end();spcl++){
00373 clno=*spcl;
00374 if (clusters[clno].sp_lr()) { // subtract only left-right spanningclusters
00375 clsz=clusters[clno].sphlist.size();
00376 temp-= clsz * clsz;
00377 }
00378 }
00379 temp/=(REAL)N;
00380 return temp;
00381 }
|
|
||||||||||||||||
|
Definition at line 96 of file analyze.h. References NUMBER.
|
|
||||||||||||||||
|
Definition at line 219 of file analyze.h. Referenced by find_spanningclusters().
00219 {
00220
00221 NUMLIST::iterator sph;
00222 for (sph=all.begin(); sph!=all.end(); sph++){
00223 clusternumbers.push_back(spheres[*sph].clno);
00224 }
00225 clusternumbers.sort();
00226 clusternumbers.unique(); // throws out doubles
00227 }
|
|
||||||||||||||||||||
|
Definition at line 109 of file analyze.h. References NUMBER. Referenced by optimize::choose_cuts_with_reference_algo(), optimize::choose_dividings(), optimize::compare_recursion_and_Stoddard_iteration(), optimize::double_N_and_run_all_faster_cuts(), starters::listcount(), optimize::new_vs_old_algo(), counters::reference_test(), and optimize::run_different_cuts().
00109 {
00110 for (NUMBER i=first;i<=last;i++){
00111 if (histo1[i]!=histo2[i]) return 0;
00112 }
00113 return 1;
00114 }
|
|
||||||||||||||||||||||||||||
|
Definition at line 65 of file analyze.h. References NUMBER.
00065 {
00066 cout <<"size\t\tcount1\tcount2\tcount3\tcount4\tcount4 number of these clusters"<<endl;
00067 for (NUMBER i=1; i<=last; i++) {
00068 if ((histo1[i]!=0) || (histo2[i]!=0) || (histo3[i]!=0) || (histo4[i]!=0) || (histo5[i]!=0) ){
00069 cout << i << "\t\t" << histo1[i] << "\t" << histo2[i];
00070 cout << "\t" << histo3[i] << "\t" << histo4[i] << "\t" << histo4[i] <<endl;
00071 }
00072 }
00073 }
|
|
||||||||||||||||||||||||
|
Definition at line 55 of file analyze.h. References NUMBER.
00055 {
00056 cout <<"size\t\tcount1\tcount2\tcount3\tcount4 number of these clusters"<<endl;
00057 for (NUMBER i=1; i<=last; i++) {
00058 if ((histo1[i]!=0) || (histo2[i]!=0) || (histo3[i]!=0) || (histo4[i]!=0) ){
00059 cout << i << "\t\t" << histo1[i] << "\t" << histo2[i];
00060 cout << "\t" << histo3[i] << "\t" << histo4[i] <<endl;
00061 }
00062 }
00063 }
|
|
||||||||||||
|
Definition at line 31 of file analyze.h. References NUMBER.
00031 {
00032 cout <<"size\t\tnumber of these clusters"<<endl;
00033 for (NUMBER i=1; i<=last; i++) {
00034 if (histo1[i]!=0)
00035 cout << i << "\t\t" << histo1[i] <<endl;
00036 }
00037 }
|
|
||||||||||||||||||||||||||||||||||||
|
Definition at line 85 of file analyze.h. References NUMBER. Referenced by optimize::new_vs_old_algo().
00085 {
00086 cout <<"size\t\tcount1\tcount2\tcount3\tcount4\tcount5\tcount6\tcount7 number of these clusters"<<endl;
00087 for (NUMBER i=1; i<=last; i++) {
00088 if ((histo1[i]!=0) || (histo2[i]!=0) || (histo3[i]!=0) || (histo4[i]!=0) || (histo5[i]!=0) || (histo6[i]!=0) || (histo7[i]!=0) ){
00089 cout << i << "\t\t" << histo1[i] << "\t" << histo2[i];
00090 cout << "\t" << histo3[i] << "\t" << histo4[i] << "\t" << histo5[i] << "\t" << histo6[i] << "\t" << histo7[i]<<endl;
00091 }
00092 }
00093 }
|
|
||||||||||||||||
|
Definition at line 15 of file analyze.h. References NUMBER.
00015 {
00016 NUMBER clusters=0; // the number of clusters
00017 NUMBER counted=0; // the number of spheres
00018
00019 cout <<"size\t\tnumber of these clusters"<<endl;
00020 for (NUMBER i=first; i<=last; i++) {
00021 if (histogram[i]!=0) { // the last entry in "histogram" must be 0 !
00022 cout << i << "\t\t" << histogram[i] <<endl;
00023 clusters += histogram[i];
00024 counted += histogram[i]*i; if (counted>=last) break;
00025 }
00026 }
00027 return clusters;
00028 }
|
|
||||||||||||||||||||||||||||||||
|
Definition at line 75 of file analyze.h. References NUMBER.
00075 {
00076 cout <<"size\t\tcount1\tcount2\tcount3\tcount4\tcount5\tcount6 number of these clusters"<<endl;
00077 for (NUMBER i=1; i<=last; i++) {
00078 if ((histo1[i]!=0) || (histo2[i]!=0) || (histo3[i]!=0) || (histo4[i]!=0) || (histo5[i]!=0) ){
00079 cout << i << "\t\t" << histo1[i] << "\t" << histo2[i];
00080 cout << "\t" << histo3[i] << "\t" << histo4[i] << "\t" << histo5[i] << "\t" << histo6[i] <<endl;
00081 }
00082 }
00083 }
|
|
||||||||||||||||||||
|
Definition at line 47 of file analyze.h. References NUMBER. Referenced by optimize::choose_dividings().
00047 {
00048 cout <<"size\t\tcount1\tcount2\tcount3 number of these clusters"<<endl;
00049 for (NUMBER i=1; i<=last; i++) {
00050 if (histo1[i]!=0 || histo2[i]!=0 || histo3[i]!=0)
00051 cout << i << "\t\t" << histo1[i] << "\t" << histo2[i] << "\t" << histo3[i] <<endl;
00052 }
00053 }
|
|
||||||||||||||||
|
Definition at line 39 of file analyze.h. References NUMBER. Referenced by optimize::choose_cuts_with_reference_algo(), starters::listcount(), and optimize::run_different_cuts().
00039 {
00040 cout <<"size\t\tcount1\tcount2 number of these clusters"<<endl;
00041 for (NUMBER i=1; i<=last; i++) {
00042 if (histo2[i]!=0 && histo2[i]!=0)
00043 cout << i << "\t\t" << histo1[i] << "\t" << histo2[i] <<endl;
00044 }
00045 }
|
|
||||||||||||||||||||||||||||
|
Definition at line 341 of file analyze.h. References COORDFLOAT, COUNTER, errorout(), find_spanningclusters(), LONGBITS, pow(), and REAL.
00347 {
00348 if (dim>sizeof(LONGBITS)*8-1) {
00349 errorout("too many directions-bits necessary");
00350 exit(1);
00351 }
00352 NUMLIST spanningclusters;
00353 LONGBITS bits=0;
00354 for (COUNTER direction=1;direction<=dim;direction++){
00355 if(find_spanningclusters(spheres, all, spanningclusters, direction, left, right, radius)){
00356 bits|=(LONGBITS)pow(2,direction-1);
00357 }
00358 }
00359 return bits;
00360 }
|
|
||||||||||||||||||||||||||||||||||||
|
Definition at line 310 of file analyze.h. References add_spanning_dir_to_clusters(), COORDFLOAT, errorout(), find_spanningclusters(), LONGBITS, pow(), and REAL.
00318 {
00319 if (dim>sizeof(LONGBITS)*8-1) {
00320 errorout("too many directions-bits necessary");
00321 exit(1);
00322 }
00323 NUMLIST L_spanning_this_direction;
00324 LONGBITS bits=0;
00325
00326 for (int direction=1;direction<=dim;direction++){
00327 if(0!=find_spanningclusters(spheres, all, L_spanning_this_direction, direction, left, right, radius)){
00328 add_spanning_dir_to_clusters(clusters, L_spanning_this_direction, direction);
00329 L_spanningclusters.splice(L_spanningclusters.end(), L_spanning_this_direction);
00330 bits|=(LONGBITS)pow(2,direction-1);
00331 }
00332 }
00333 L_spanningclusters.sort();
00334 L_spanningclusters.unique(); // throws out doubles
00335
00336 return bits; // and L_spanningclusters
00337 }
|
|
|
Definition at line 277 of file analyze.h. Referenced by find_spanningclusters(). |
|
|
Definition at line 277 of file analyze.h. Referenced by find_spanningclusters(). |
|
|
Definition at line 277 of file analyze.h. Referenced by find_spanningclusters(). |
| Diploma Thesis Sourcecode
Documentation check out the text and the executable binaries |