11package graphtea .extensions .reports .topological ;
22
33import graphtea .extensions .AlgorithmUtils ;
4- import graphtea .extensions .reports .ChromaticNumber ;
5- import graphtea .extensions .reports .RandomMatching ;
6- import graphtea .extensions .reports .basicreports .Diameter ;
7- import graphtea .extensions .reports .basicreports .NumOfVerticesWithDegK ;
8- import graphtea .extensions .reports .clique .MaxCliqueSize ;
9- import graphtea .graph .graph .Edge ;
104import graphtea .graph .graph .GraphModel ;
115import graphtea .graph .graph .RenderTable ;
12- import graphtea .graph .graph .Vertex ;
136import graphtea .platform .lang .CommandAttitude ;
147import graphtea .plugins .reports .extension .GraphReportExtension ;
158
169import java .util .ArrayList ;
10+ import java .util .Arrays ;
1711import java .util .Collections ;
1812import java .util .List ;
1913
@@ -26,246 +20,34 @@ public class AGIndex implements GraphReportExtension<RenderTable> {
2620 public String getName () {
2721 return "AG" ;
2822 }
29-
3023
3124 public String getDescription () {
3225 return "AG" ;
3326 }
3427
3528 public RenderTable calculate (GraphModel g ) {
3629 ZagrebIndexFunctions zif = new ZagrebIndexFunctions (g );
37- ZagrebIndexFunctions zifL = new ZagrebIndexFunctions (AlgorithmUtils .createLineGraph (g ));
3830 RenderTable ret = new RenderTable ();
39- List <String > titles = new ArrayList <>();
40- titles .add (" m " );
41- // titles.add(" Max Planar ");
42- titles .add (" n " );
43- // titles.add(" Min ");
44- // titles.add(" Lanzhou ");
45- titles .add (" R " );
46- titles .add (" GA " );
47- titles .add (" AG " );
48- titles .add (" SDD " );
49- // titles.add(" R-min ");
50- // titles.add(" HM2 ");
51- // titles.add(" EM2 ");
52- // titles.add(" Hyper ");
53- // titles.add(" M2-M1 ");
54- // titles.add(" milo ");
55- // titles.add(" Inverse Sum Indeg ");
56- // titles.add(" SDD ");
57- // titles.add(" R.H.S ");
58- // titles.add(" max ");
59- // titles.add(" min ");
60- // titles.add(" Hyper ");
61- // titles.add("Th 7 ");
62- // titles.add("check");
63- // titles.add("Correct");
64- // titles.add(" matching ");
65- // titles.add(" GA/x ");
66- // titles.add(" Wp ");
67- // titles.add(" chrome ");
68- // titles.add(" chrome ");
69- // titles.add(" Lz ");
70- // titles.add(" Lz-Bar ");
71-
72- // titles.add(" R.H.S ");
73- // titles.add("Diameter");
74- // titles.add("Clique Number");
75-
76- titles .add (" V. Degrees " );
77-
78- ret .setTitles (titles );
79-
80- double maxDeg = 0 ;
81- double maxDeg2 = 0 ;
82- double minDeg = Integer .MAX_VALUE ;
83- double minDeg2 = AlgorithmUtils .getMinNonPendentDegree (g );
31+ ret .setTitles (Arrays .asList (" m " , " n " , " R " , " GA " , " AG " , " SDD " , " V. Degrees " ));
8432
8533 ArrayList <Integer > al = AlgorithmUtils .getDegreesList (g );
8634 Collections .sort (al );
87- maxDeg = al .get (al .size ()-1 );
88- if (al .size ()-2 >=0 ) maxDeg2 = al .get (al .size ()-2 );
89- else maxDeg2 = maxDeg ;
90- minDeg = al .get (0 );
91- if (maxDeg2 == 0 ) maxDeg2 =maxDeg ;
92-
93- double a =0 ;
94- double b =0 ;
95- double c =0 ;
96- double d =0 ;
97- int p = NumOfVerticesWithDegK .numOfVerticesWithDegK (g , 1 );
98-
99- for (Vertex v : g ) {
100- if (g .getDegree (v )==maxDeg ) a ++;
101- if (g .getDegree (v )==minDeg ) b ++;
102- if (g .getDegree (v )==maxDeg2 ) c ++;
103- if (g .getDegree (v )==minDeg2 ) d ++;
104- }
105- if (maxDeg ==minDeg ) b =0 ;
106- if (maxDeg ==maxDeg2 ) c =0 ;
10735
10836 double m = g .getEdgesCount ();
10937 double n = g .getVerticesCount ();
11038
111- double maxEdge = 0 ;
112- double maxEdge2 = 0 ;
113- double minEdge = Integer .MAX_VALUE ;
114-
115- ArrayList <Integer > all = new ArrayList <>();
116- for (Edge e : g .getEdges ()) {
117- int f = g .getDegree (e .source ) +
118- g .getDegree (e .target ) - 2 ;
119- all .add (f );
120- }
121- Collections .sort (all );
122- maxEdge = all .get (all .size ()-1 );
123- if (all .size ()-2 >=0 ) maxEdge2 = all .get (all .size ()-2 );
124- else maxEdge2 = maxEdge ;
125- minEdge = all .get (0 );
126-
127-
128-
129- double maxDel = 0 ;
130- double maxDel2 = 0 ;
131- double minDel = Integer .MAX_VALUE ;
132-
133- ArrayList <Integer > all1 = new ArrayList <>();
134- for (Edge e : g .getEdges ()) {
135- int f1 = ((2 *(g .getDegree (e .source ) * g .getDegree (e .target ) ) )/((g .getDegree (e .source ) + g .getDegree (e .target ) )*(g .getDegree (e .source ) + g .getDegree (e .target ) ))) ;
136- all1 .add (f1 );
137- }
138- Collections .sort (all1 );
139- maxDel = all1 .get (all1 .size ()-1 );
140- if (all1 .size ()-2 >=0 ) maxDel2 = all1 .get (all1 .size ()-2 );
141- else maxDel2 = maxDel ;
142- minDel = all1 .get (0 );
143- if (maxDel2 == 0 ) maxDel2 =maxDel ;
144-
145-
146- double M12 =zif .getSecondZagreb (1 );
147- double M21 =zif .getFirstZagreb (1 );
148- double H =zif .getHarmonicIndex ();
149- double M31 =zif .getFirstZagreb (2 );
150- double M41 =zif .getFirstZagreb (3 );
151- double M22 =zif .getSecondZagreb (2 );
152- double Mm31 =zif .getFirstZagreb (-4 );
153- double Mm11 =zif .getFirstZagreb (-2 );
154- double M3 =zif .getThirdZagreb ();
155- // double EM1 = zifL.getFirstZagreb(1);
156- // double EM2 = zifL.getSecondZagreb(1);
157- double SDD =zif .getSDDIndex ();
158- double R =zif .getSecondZagreb (-0.5 );
159- double R2 =zif .getSecondZagreb (2 );
160- double R1 =zif .getSecondZagreb (-1 );
161- double GA =zif .getGAindex ();
162- double AG =zif .getAGIndex ();
163- double ABC =zif .getABCindex ();
164- double HC =zif .getHarmonicCoindex ();
165- double chi11 =zif .getGeneralSumConnectivityIndex (-1 );
166- double chi2inv =zif .getGeneralSumConnectivityIndex (-2 );
167- double chi22 =zif .getGeneralSumConnectivityIndex (-0.5 );
168- double chi33 =zif .getGeneralSumConnectivityIndex (-0.1 );
169- double chi =zif .getGeneralSumConnectivityIndex (-0.5 );
170- double chi1 =zif .getGeneralSumConnectivityIndex (1 );
171- double chi2 =zif .getGeneralSumConnectivityIndex (2 );
172- double chi3 =zif .getGeneralSumConnectivityIndex (3 );
173- double IED =zif .getEdgeDegree (-1 );
174- double ID =zif .getFirstZagreb (-2 );
175- double AZI =zif .getAugumentedZagrebIndex ();
176- double ISI =zif .getInverseSumIndegIndex ();
177- double chrome =ChromaticNumber .getChromaticNumber (g );
178- double clique = MaxCliqueSize .maxCliqueSize (g );
179- double ZEnergy =zif .getRandicEnergy (g );
180- double VR =zif .getVariationRandicIndex ();
181- double check =zif .getCheck ();
182- double S3 =(M21 -M3 )/2 ;
183- double RM2 =zif .getRM2 ();
184- double HM2 =zif .getSecondHyperZagreb (1 );
185- double EM1 = zifL .getFirstZagreb (1 );
186- double EM2 = zifL .getSecondZagreb (1 );
187-
188-
189- List <Integer >[] gg = new List [g .getVerticesCount ()];
190- for (int i = 0 ; i < g .getVerticesCount (); i ++) {
191- gg [i ] = new ArrayList <>();
192- }
193-
194- for (Edge e : g .getEdges ()) {
195- gg [e .source .getId ()].add (e .target .getId ());
196- }
197- // double maxMatching = MaximumMatching.maxMatching(gg);
198-
199- double maxMatching = new RandomMatching ().calculateMaxMatching (g );
200-
201- double alpha =(1 /m )*(Math .floor (m ))*(1 -((1 /m )*(Math .floor (m /2 ))));
202- double alpha1 =(m )*(Math .floor (m /2 ))*(1 -((1 /m )*(Math .floor (m /2 ))));
203-
204- int diameter = new Diameter ().calculate (g );
205- WienerIndex wi = new WienerIndex ();
206- double Avg =(n *(n -1 )/2 );
39+ double R = zif .getSecondZagreb (-0.5 );
40+ double GA = zif .getGAindex ();
41+ double AG = zif .getAGIndex ();
42+ double SDD = zif .getSDDIndex ();
20743
20844 List <Object > v = new ArrayList <>();
20945 v .add (m );
210- // v.add((3*n)-6);
21146 v .add (n );
212- // v.add(minDeg);
213-
21447 v .add (R );
215- // v.add((n/2)-((13-Math.sqrt(6)-(3*Math.sqrt(2)))/6));
21648 v .add (GA );
21749 v .add (AG );
21850 v .add (SDD );
219- // v.add(M12);
220- // v.add(HM2);
221- // v.add(EM2);
222- // v.add(H);
223- // v.add(M12-M21);
224- // v.add(maxDel);
225- // v.add(minDel);
226- // v.add(chi2);
227- // v.add((n-1)*M21-M31);
228- // v.add(ISI);
229-
230-
231- // milo 1
232- //v.add((M21*M21/M12)-(2*m));
233- // v.add((4*m*m*m/(GA*GA))-(2*m));
234- // milo
235- // v.add((M21*M21/(4*m))*(Math.sqrt(maxEdge/minEdge)+Math.sqrt(minEdge/maxEdge))*(Math.sqrt(maxEdge/minEdge)+Math.sqrt(minEdge/maxEdge)) );
236- // GA new bound Try
237- // v.add((2*minDeg*m)/((2*minDeg)+((Math.sqrt(maxDeg)-Math.sqrt(minDeg))*(Math.sqrt(maxDeg)-Math.sqrt(minDeg))) ) );
238- // v.add(RM2);
239- // v.add( ((2*minDeg*minDeg*minDeg*maxDeg*maxDeg*maxDeg)/((minDeg*minDeg*minDeg)+(maxDeg*maxDeg*maxDeg)))*((R2/(4*minDeg*minDeg*minDeg*maxDeg*maxDeg*maxDeg)) + chi2inv ) ) ;
240- // v.add(maxMatching);
241- // v.add(RM2);
242- // v.add(H);
243- // Error in Hyper Zagreb index paper
244- // v.add((M21*(m+(2*minDeg)-1))-(2*m*minDeg*(m-1)));
245- // v.add((M21*(m+(2*minDeg)+1)) -(2*m*(m-1)) -(2*(minDeg-1)*((3*m)-1)) );
246- // v.add(4*m*m*m/(n*n));
247- // Wrong Wang
248- // v.add((M21*M21*M21)/(2*m*m));
249- // v.add( (M21-(2*m))*(M21-(2*m))*(M21-(2*m))/(2*m*m) );
250- // v.add(chrome/2);
251- // v.add( ((chrome-2)/2)+ (2*(chrome-1)/(n+chrome-2)) + (2*(n-chrome)/n));
252- // v.add(GA/chrome);
253- // Lanzhouv
254- // v.add(((n-1)*M21)-M31);
255- // v.add(4*n*(n-1)*(n-1)*(n-1)/27);
256-
257- // v.add((2*(n-1)*(n-1)*m) + M31-(2*(n-1)*M21) );
258- //v.add(R);
259-
260-
261- // v.add(ID);
262- // v.add(wi.calculate(g));
263- // v.add(Avg);
264- // v.add(diameter);
265-
266- // v.add(MaxCliqueExtension.maxCliqueSize(g));
267-
268-
26951 v .add (al .toString ());
27052
27153 ret .add (v );
@@ -277,7 +59,3 @@ public String getCategory() {
27759 return "Verification-Degree" ;
27860 }
27961}
280-
281-
282-
283-
0 commit comments