package graphtea.extensions.reports.zagreb; import graphtea.graph.graph.GraphModel; import graphtea.graph.graph.RenderTable; import graphtea.graph.graph.Vertex; import graphtea.platform.lang.CommandAttitude; import graphtea.plugins.main.core.AlgorithmUtils; import graphtea.plugins.reports.extension.GraphReportExtension; import java.util.ArrayList; import java.util.Collections; import java.util.Vector; /** * @author Ali Rostami */ @CommandAttitude(name = "ISIBound", abbreviation = "_ISIBound") public class ISIUpper implements GraphReportExtension{ public String getName() { return "ISIUpper"; } public String getDescription() { return " ISIUpper "; } public Object calculate(GraphModel g) { ZagrebIndexFunctions zif = new ZagrebIndexFunctions(g); RenderTable ret = new RenderTable(); Vector<String> titles = new Vector<>(); titles.add(" ISI "); titles.add("1 "); titles.add(" 2 "); // titles.add(" My-mix2 "); // titles.add(" Th-13 "); // titles.add(" Th-13.1 "); // titles.add(" Corollary 15 "); ret.setTitles(titles); double maxDeg = 0; double maxDeg2 = 0; double minDeg = Integer.MAX_VALUE; ArrayList<Integer> al = AlgorithmUtils.getDegreesList(g); Collections.sort(al); maxDeg = al.get(al.size()-1); if(al.size()-2>=0) maxDeg2 = al.get(al.size()-2); else maxDeg2 = maxDeg; minDeg = al.get(0); if(maxDeg2 == 0) maxDeg2=maxDeg; double a=0; double b=0; for(Vertex v : g) { if(g.getDegree(v)==maxDeg) a++; if(g.getDegree(v)==minDeg) b++; } if(maxDeg==minDeg) b=0; double m = g.getEdgesCount(); double n = g.getVerticesCount(); double M12=zif.getSecondZagreb(1); double M21=zif.getFirstZagreb(1); double M22=zif.getSecondZagreb(2); double Mm11=zif.getFirstZagreb(-2); double M212=zif.getSecondMixZagrebIndex(1,2); double chi=zif.getGeneralSumConnectivityIndex(2); double H=zif.getGeneralSumConnectivityIndex(-1); Vector<Object> v = new Vector<>(); v.add(zif.getInverseSumIndegIndex()); // my cauchy v.add(1); v.add(2 ); // my mixed simple // v.add( ( M12 * H ) / m ); //v.add( ( M21 ) / 4 ); // my mixed double // v.add( (( (m*chi) + (M12*M12) - (M21*M21) )) / M212); //Theorem 13 // double val = 0.0; // if(minDeg == 1) val=n+(1/n)-2; // else if(minDeg >= 2) { // if((n*minDeg)%2 == 0) { // val = (n*Math.pow(minDeg,2))/4.0; // } else { // val = (n*Math.pow(minDeg,2))/4.0; // val += minDeg/2.0; // val += (2*minDeg)/(8.0*(2*minDeg + 1.0)); // } // } // v.add(val); // ISI THeorem 13 proof point... // v.add(m*minDeg/2); //Corollary 15 // val = 0.0; // if((n*maxDeg)%2==0) val = (n*maxDeg*maxDeg)/4.0; // else { // val = ((n-1)*maxDeg*maxDeg)/4.0; // val += (maxDeg*(maxDeg-1)*(maxDeg-1.0))/(2.0*(2*maxDeg-1.0)); // } // v.add(val); ret.add(v); return ret; } @Override public String getCategory() { return "Topological Indices-Conjectures"; } }