Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008 #include "ColPackHeaders.h"
00009
00010 using namespace ColPack;
00011 using namespace std;
00012
00013 int main()
00014 {
00015 double*** dp3_Seed = new double**;
00016 int *ip1_SeedRowCount = new int;
00017 int *ip1_SeedColumnCount = new int;
00018 int i_RowCount, i_ColumnCount, i_MaxNonZerosInRows;
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 i_RowCount = 32;
00032 i_ColumnCount = 9;
00033 i_MaxNonZerosInRows = 3;
00034 unsigned int **uip2_JacobianSparsityPattern = new unsigned int *[i_RowCount];
00035 for(int i=0;i<i_RowCount;i++) uip2_JacobianSparsityPattern[i] = new unsigned int[i_MaxNonZerosInRows + 1];
00036 uip2_JacobianSparsityPattern[0][0] = 0;
00037 uip2_JacobianSparsityPattern[1][0] = 1; uip2_JacobianSparsityPattern[1][1] = 0;
00038 uip2_JacobianSparsityPattern[2][0] = 1; uip2_JacobianSparsityPattern[2][1] = 1;
00039 uip2_JacobianSparsityPattern[3][0] = 1; uip2_JacobianSparsityPattern[3][1] = 2;
00040 uip2_JacobianSparsityPattern[4][0] = 1; uip2_JacobianSparsityPattern[4][1] = 0;
00041 uip2_JacobianSparsityPattern[5][0] = 3; uip2_JacobianSparsityPattern[5][1] = 0; uip2_JacobianSparsityPattern[5][2] = 1; uip2_JacobianSparsityPattern[5][3] = 3;
00042 uip2_JacobianSparsityPattern[6][0] = 3; uip2_JacobianSparsityPattern[6][1] = 1; uip2_JacobianSparsityPattern[6][2] = 2; uip2_JacobianSparsityPattern[6][3] = 4;
00043 uip2_JacobianSparsityPattern[7][0] = 2; uip2_JacobianSparsityPattern[7][1] = 2; uip2_JacobianSparsityPattern[7][2] = 5;
00044 uip2_JacobianSparsityPattern[8][0] = 1; uip2_JacobianSparsityPattern[8][1] = 3;
00045 uip2_JacobianSparsityPattern[9][0] = 3; uip2_JacobianSparsityPattern[9][1] = 3; uip2_JacobianSparsityPattern[9][2] = 4; uip2_JacobianSparsityPattern[9][3] = 6;
00046 uip2_JacobianSparsityPattern[10][0] = 3; uip2_JacobianSparsityPattern[10][1] = 4; uip2_JacobianSparsityPattern[10][2] = 5; uip2_JacobianSparsityPattern[10][3] = 7;
00047 uip2_JacobianSparsityPattern[11][0] = 2; uip2_JacobianSparsityPattern[11][1] = 5; uip2_JacobianSparsityPattern[11][2] = 8;
00048 uip2_JacobianSparsityPattern[12][0] = 1; uip2_JacobianSparsityPattern[12][1] = 6;
00049 uip2_JacobianSparsityPattern[13][0] = 2; uip2_JacobianSparsityPattern[13][1] = 6; uip2_JacobianSparsityPattern[13][2] = 7;
00050 uip2_JacobianSparsityPattern[14][0] = 2; uip2_JacobianSparsityPattern[14][1] = 7; uip2_JacobianSparsityPattern[14][2] = 8;
00051 uip2_JacobianSparsityPattern[15][0] = 1; uip2_JacobianSparsityPattern[15][1] = 8;
00052 uip2_JacobianSparsityPattern[16][0] = 1; uip2_JacobianSparsityPattern[16][1] = 0;
00053 uip2_JacobianSparsityPattern[17][0] = 2; uip2_JacobianSparsityPattern[17][1] = 0; uip2_JacobianSparsityPattern[17][2] = 1;
00054 uip2_JacobianSparsityPattern[18][0] = 2; uip2_JacobianSparsityPattern[18][1] = 1; uip2_JacobianSparsityPattern[18][2] = 2;
00055 uip2_JacobianSparsityPattern[19][0] = 1; uip2_JacobianSparsityPattern[19][1] = 2;
00056 uip2_JacobianSparsityPattern[20][0] = 2; uip2_JacobianSparsityPattern[20][1] = 0; uip2_JacobianSparsityPattern[20][2] = 3;
00057 uip2_JacobianSparsityPattern[21][0] = 3; uip2_JacobianSparsityPattern[21][1] = 1; uip2_JacobianSparsityPattern[21][2] = 3; uip2_JacobianSparsityPattern[21][3] = 4;
00058 uip2_JacobianSparsityPattern[22][0] = 3; uip2_JacobianSparsityPattern[22][1] = 2; uip2_JacobianSparsityPattern[22][2] = 4; uip2_JacobianSparsityPattern[22][3] = 5;
00059 uip2_JacobianSparsityPattern[23][0] = 1; uip2_JacobianSparsityPattern[23][1] = 5;
00060 uip2_JacobianSparsityPattern[24][0] = 2; uip2_JacobianSparsityPattern[24][1] = 3; uip2_JacobianSparsityPattern[24][2] = 6;
00061 uip2_JacobianSparsityPattern[25][0] = 3; uip2_JacobianSparsityPattern[25][1] = 4; uip2_JacobianSparsityPattern[25][2] = 6; uip2_JacobianSparsityPattern[25][3] = 7;
00062 uip2_JacobianSparsityPattern[26][0] = 3; uip2_JacobianSparsityPattern[26][1] = 5; uip2_JacobianSparsityPattern[26][2] = 7; uip2_JacobianSparsityPattern[26][3] = 8;
00063 uip2_JacobianSparsityPattern[27][0] = 1; uip2_JacobianSparsityPattern[27][1] = 8;
00064 uip2_JacobianSparsityPattern[28][0] = 1; uip2_JacobianSparsityPattern[28][1] = 6;
00065 uip2_JacobianSparsityPattern[29][0] = 1; uip2_JacobianSparsityPattern[29][1] = 7;
00066 uip2_JacobianSparsityPattern[30][0] = 1; uip2_JacobianSparsityPattern[30][1] = 8;
00067 uip2_JacobianSparsityPattern[31][0] = 0;
00068
00069
00070
00071
00072 BipartiteGraphPartialColoringInterface * g = new BipartiteGraphPartialColoringInterface(SRC_MEM_ADOLC, uip2_JacobianSparsityPattern, i_RowCount, i_ColumnCount);
00073
00074
00075 g->PartialDistanceTwoColoring( "SMALLEST_LAST", "COLUMN_PARTIAL_DISTANCE_TWO");
00076
00077
00078 (*dp3_Seed) = g->GetSeedMatrix(ip1_SeedRowCount, ip1_SeedColumnCount);
00079
00080
00081
00082
00083 cout<<"Finish GenerateSeed()"<<endl;
00084
00085
00086 g->PrintBipartiteGraph();
00087 g->PrintColumnPartialColors();
00088 g->PrintColumnPartialColoringMetrics();
00089 double **RSeed = *dp3_Seed;
00090 int rows = g->GetColumnVertexCount();
00091 int cols = g->GetRightVertexColorCount();
00092 cout<<"Right Seed matrix: ("<<rows<<","<<cols<<")"<<endl;
00093 for(int i=0; i<rows; i++) {
00094 for(int j=0; j<cols; j++) {
00095 cout<<setw(6)<<RSeed[i][j];
00096 }
00097 cout<<endl;
00098 }
00099
00100
00101
00102 Pause();
00103
00104
00105 delete g;
00106 g = NULL;
00107
00108
00109 delete dp3_Seed;
00110 dp3_Seed = NULL;
00111 RSeed = NULL;
00112
00113
00114 delete ip1_SeedRowCount;
00115 ip1_SeedRowCount = NULL;
00116
00117
00118 delete ip1_SeedColumnCount;
00119 ip1_SeedColumnCount = NULL;
00120
00121
00122 free_2DMatrix(uip2_JacobianSparsityPattern, i_RowCount);
00123 uip2_JacobianSparsityPattern = NULL;
00124
00125 return(_TRUE);
00126 }