Professional Documents
Culture Documents
Documentation of Project
Documentation of Project
On
Submitted by
of
Shanmukh srinivas.A
BACHELOR OF TECHNOLOGY
IN
Awarded by
2019-2020
A.SHANMUK SRINIVAS
(Guide )
ACKNOWLEDGEMENT
The final phase of our project work has finally been completed with satisfying results. The
successful completion of any software project would never be possible without the help and
cooperation of the people involved. Likewise, our project would never materialize without
the support and encouragement of many people around us.
We are very grateful to our respected project guide A.shanmukh srinivas(guide), for his
personal involvement and constructive suggestions throughout the project schedule. He took
deep interest in correcting the minor problems and guided us through our journey so far. Also
he has been a persistent source of inspiration for us.
We wish to express our thanks to our p.chandra sekhar , who continuously gave us advice
and useful hints that helped make our project a very special work.
DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING
GITAM
(Deemed to be University)
DECLARATION
We, hereby declare that the project report entitled “Automation of trimet graphs
optimization topology” is an original work done in the Department of Computer Science
and Engineering, GITAM Institute of Technology, GITAM (Deemed to be University)
submitted in partial fulfillment of the requirements for the award of the degree of B.Tech. in
Computer Science and Engineering. The work has not been submitted to any other college or
Date:
1215316964 sravani.u
The whole project is to automate the concept of trimet graph . In practical there could be
realistic situations to connect with each other in a group for better communication system
among all. In practical there could be realistic situations to connect with each other in a group
for better communication system among all. To tackle these types of problems graph theory
has envisaged Complete Graph, K (1, n) Graph etc. A Graph has been introduced so called
TRIMET, which has been conceived from typical and optimized properties of Existing
Complete Graph. The main purpose of this TRIMET is to establish a better communication
system with fewer infrastructures when compared with Complete Graph. TRIMET monitors
all the vertices with the help of Dominant Vertex, which is having a communication path
from all the vertices of Graph, by making sectors, which establishes a communication path
among two or three vertices of Sector. Finally we analyze the normal graph trimet with
network scheme and standard properties like diameter,average path length etc
Problem definition:
The capability of a system, network, or process to handle a growing amount of
work, or its potential to be enlarged in order to accommodate that growth.It means in near
future the network devices increase exponentially . our project goal is used to develop a
model (trimet graph) which can handle large number of devices with less complexity
scalability
Machine learning gametheory
Artificial intelligence
Graph theory
scalability
Trimet graph
TGO TOPOLOGY
Technologies used:
Python: Python was designed for readability, and has some similarities to the English
language with influence from mathematics.
Libraries of python:
ii)matplotlib: It is used to visualize the data in the form of pie charts or graphs And It
is a plotting library in python numpy provide an environment.
iii)networkx: It is a python library used to make graphs like directed and multigraphs
and we can perform operations on graphs.
Algorithm:
Input: V={Dv, Hv, Sv }, Cn={Dvn, Hvn, Svn}
Output: Tg of Tg(TGO of TGO)
1. Start
2. Creations of n number of clusters with vertices set V of
a network.
3. Unequal Size clusters are formed using Fibonacci
sequence.
4. Apply Trimet graph algorithm recursively on each
cluster and also on dominant vertices Dvn in a
network
5. Trimet graph of Trimet graph (Tg of Tg) network is
generated.
6. Removing of Nodes randomly in an iterative process.
7.stop
output:
for even trimet
For odd trimet
Visualization of star,wheel,TGO graph
def generate(parameter,nodes):
G1=nx.star_graph(nodes)
G2=nx.complete_graph(nodes)
G3=nx.wheel_graph(nodes)
if(parameter=="Diameter"):
height = [nx.diameter(G1),nx.diameter(G2),nx.diameter(G3)]
print(height)
elif(parameter=="Density"):
height = [nx.density(G1),nx.density(G2),nx.density(G3)]
print(height)
elif(parameter=="Avg Clustring"):
height =
[nx.average_clustering(G1),nx.average_clustering(G2),nx.average_clustering(G3)]
print(height)
elif(parameter=="Transitivity"):
height = [nx.transitivity(G1),nx.transitivity(G2),nx.transitivity(G3)]
print(height)
elif(parameter=="Edge Connectivity"):
height =
[nx.edge_connectivity(G1),nx.edge_connectivity(G2),nx.edge_connectivity(G3)]
print(height)
elif(parameter=="Avg Path Length"):
height =
[nx.average_shortest_path_length(G1),nx.average_shortest_path_length(G2),nx.average_shor
test_path_length(G3)]
print(height)
else:
print("nothing")
bars = ('Star', 'Complete','Wheel')
y_pos = np.arange(len(bars))
plt.bar(y_pos, height)
plt.xticks(y_pos, bars)
plt.show()
def compare():
newwin1 = Toplevel(window)
newwin1.title("Compare Window")
newwin1.geometry('800x600')
Label(newwin1, text="Select Graph to be compared: ").grid(column=1,row=1)
Checkbutton(newwin1, text="Star Graph").grid(column=2,row=1)
Checkbutton(newwin1, text="Trimet Graph").grid(column=3,row=1)
Checkbutton(newwin1, text="Wheel Graph").grid(column=4,row=1)
Checkbutton(newwin1, text="Complete Graph").grid(column=5,row=1)
Label(newwin1, text="Parameter 1: ").grid(column=1,row=2)
combo3 = Combobox(newwin1)
combo3['values']= ("Nodes", "Edges", "Degree","Avg
Degree","Diameter","Density","Transitivity","Avg Clustring","Edge Connectivity", "Avg
Path Length")
combo3.current(1)
combo3.grid(column=2, row=2)
btn = Button(newwin1, text="Compare",command=lambda:
generate(combo3.get(),int(combo4.get())))
btn.grid(column=4, row=2)
Label(newwin1, text="no of nodes: ").grid(column=3,row=2)
combo4 = Combobox(newwin1)
combo4['values']= (10,20,30,40,50,60,70)
combo4.current(0) #set the selected item
combo4.grid(column=4, row=3)
def info(graph,node):
newwin = Toplevel(window)
newwin.title("Graph Information")
newwin.geometry('600x600')
if (graph=="Star graph"):
G3=nx.star_graph(int(node))
elif(graph=="Complet graph"):
G3=nx.complete_graph(int(node))
elif(graph=="Wheel graph"):
G3=nx.wheel_graph(int(node))
else:
print("nothing")
display = Label(newwin, text=str(nx.info(G3)))
display.grid(column=1,row=1)
display1 = Label(newwin, text="Diameter: "+str(nx.diameter(G3)))
display1.grid(column=1,row=2)
display3 = Label(newwin, text="Density: "+str(nx.density(G3)))
display3.grid(column=1,row=3)
display4 = Label(newwin, text="Average Clustring: "+str(nx.average_clustering(G3)))
display4.grid(column=1,row=4)
display5 = Label(newwin, text="Transitivity: "+str(nx.transitivity(G3)))
display5.grid(column=1,row=5)
display6 = Label(newwin, text="Edge_connectivity: "+str(nx.edge_connectivity(G3)))
display6.grid(column=1,row=6)
display7 = Label(newwin, text="average_path_length:
"+str(nx.average_shortest_path_length(G3, weight=None)))
display7.grid(column=1,row=7)
def Trimet(n):
#n=n+1
l=[]
for i in range(1,n):
l.append((0,i))
if n%2==0 and n>2:
n=n-1
for i in range(1,n,2):
l.append((i,i+1))
l.append((n-1,n))
elif n%2==1 and n>2:
n=n+1
for i in range(1,n-1,2):
l.append((i,i+1))
#l.append((n-1,n))
return l
def do(graph,node):
lbl = Label(window, text=graph+" with "+node+" nodes ")
lbl.grid(column=1, row=5)
if (graph=="Star graph"):
G3=nx.star_graph(int(node)-1)
elif(graph=="Complet graph"):
G3=nx.complete_graph(int(node))
elif(graph=="Wheel graph"):
G3=nx.wheel_graph(int(node))
elif(graph=="Trimet graph"):
nodex=Trimet(int(node))
G3=nx.Graph(nodex)
else:
print("nothing")
outputs:
Graph info of Star,Wheel,TGO graph:
Visualization of star of star, star of TGO,TGO of star, TGO of TGO Graphs:
window = Tk()
window.title("Welcome to LikeGeeks app")
window.geometry('600x600')
def generate(parameter,nodes):
G1=nx.star_graph(nodes)
G2=nx.complete_graph(nodes)
G3=nx.wheel_graph(nodes)
if(parameter=="Diameter"):
height = [nx.diameter(G1),nx.diameter(G2),nx.diameter(G3)]
print(height)
elif(parameter=="Density"):
height = [nx.density(G1),nx.density(G2),nx.density(G3)]
print(height)
elif(parameter=="Avg Clustring"):
height =
[nx.average_clustering(G1),nx.average_clustering(G2),nx.average_clustering(G3)]
print(height)
elif(parameter=="Transitivity"):
height = [nx.transitivity(G1),nx.transitivity(G2),nx.transitivity(G3)]
print(height)
elif(parameter=="Edge Connectivity"):
height =
[nx.edge_connectivity(G1),nx.edge_connectivity(G2),nx.edge_connectivity(G3)]
print(height)
elif(parameter=="Avg Path Length"):
height =
[nx.average_shortest_path_length(G1),nx.average_shortest_path_length(G2),nx.average_shor
test_path_length(G3)]
print(height)
else:
print("nothing")
bars = ('Star', 'Complete','Wheel')
y_pos = np.arange(len(bars))
plt.bar(y_pos, height)
plt.xticks(y_pos, bars)
plt.show()
def compare():
newwin1 = Toplevel(window)
newwin1.title("Compare Window")
newwin1.geometry('800x600')
Label(newwin1, text="Select Graph to be compared: ").grid(column=1,row=1)
Checkbutton(newwin1, text="Star Graph").grid(column=2,row=1)
Checkbutton(newwin1, text="Trimet Graph").grid(column=3,row=1)
Checkbutton(newwin1, text="Wheel Graph").grid(column=4,row=1)
Checkbutton(newwin1, text="Complete Graph").grid(column=5,row=1)
Label(newwin1, text="Parameter 1: ").grid(column=1,row=2)
combo3 = Combobox(newwin1)
combo3['values']= ("Nodes", "Edges", "Degree","Avg
Degree","Diameter","Density","Transitivity","Avg Clustring","Edge Connectivity", "Avg
Path Length")
combo3.current(1)
combo3.grid(column=2, row=2)
btn = Button(newwin1, text="Compare",command=lambda:
generate(combo3.get(),int(combo4.get())))
btn.grid(column=4, row=2)
Label(newwin1, text="no of nodes: ").grid(column=3,row=2)
combo4 = Combobox(newwin1)
combo4['values']= (10,20,30,40,50,60,70)
combo4.current(0) #set the selected item
combo4.grid(column=4, row=3)
def info(graph,node):
newwin = Toplevel(window)
newwin.title("Graph Information")
newwin.geometry('600x600')
if (graph=="Star graph"):
G3=nx.star_graph(int(node))
elif(graph=="Complet graph"):
G3=nx.complete_graph(int(node))
elif(graph=="Wheel graph"):
G3=nx.wheel_graph(int(node))
else:
print("nothing")
display = Label(newwin, text=str(nx.info(G3)))
display.grid(column=1,row=1)
display1 = Label(newwin, text="Diameter: "+str(nx.diameter(G3)))
display1.grid(column=1,row=2)
display3 = Label(newwin, text="Density: "+str(nx.density(G3)))
display3.grid(column=1,row=3)
display4 = Label(newwin, text="Average Clustring: "+str(nx.average_clustering(G3)))
display4.grid(column=1,row=4)
display5 = Label(newwin, text="Transitivity: "+str(nx.transitivity(G3)))
display5.grid(column=1,row=5)
display6 = Label(newwin, text="Edge_connectivity: "+str(nx.edge_connectivity(G3)))
display6.grid(column=1,row=6)
display7 = Label(newwin, text="average_path_length:
"+str(nx.average_shortest_path_length(G3, weight=None)))
display7.grid(column=1,row=7)
def Star(a,n):
l=[]
for i in range(a,n):
l.append((a,i))
return l
def SOS(n):
Fs=[]
a=3
b=5
Fs.append(a)
Fs.append(b)
for i in range(18):
c=a+b
a=b
b=c
Fs.append(c)
x=0
X=[]
L=[]
s=Fs[0]
abc=0
for i in range(1,len(Fs)):
if s>n:
break
else:
X.append(x)
b=Star(x,s)
L.append(b)
x=s
s=s+Fs[i]
abc=abc+Fs[i-1]
l=[]
if n-x<2:
pass
elif n-x>2:
X.append(x)
na=n-x
abc=[]
for i in range(x,n):
abc.append(i)
for i in range(1,na):
l.append((abc[0],abc[i]))
L.append(l)
h=X[0]
hx=[]
for i in range(1,len(X)):
hx.append((h,X[i]))
L.append(hx)
return L
def StarOfStars(n):
L=SOS(n)
Fs=[]
for i in L:
for j in i:
Fs.append(j)
return Fs
def Trimet(a,n):
#n=n+1
l=[]
for i in range(a,n):
l.append((a,i))
if n%2==0 and n>2:
n=n-1
for i in range(a+1,n,2):
l.append((i,i+1))
l.append((n-1,n))
elif n%2==1 and n>2:
n=n+1
for i in range(a+1,n-1,2):
l.append((i,i+1))
#l.append((n-1,n))
return l
def TrimetOfTrimet(n):
Fs=[]
a=3
b=5
Fs.append(a)
Fs.append(b)
for i in range(18):
c=a+b
a=b
b=c
Fs.append(c)
x=0
X=[]
L=[]
s=Fs[0]
abc=0
x=0
for i in range(1,len(Fs)):
if s>n:
break
else:
X.append(x)
b=Trimet(x,s)
L.append(b)
x=s
s=s+Fs[i]
abc=abc+Fs[i-1]
l=[]
if n-x<2:
pass
elif n-x>2:
X.append(x)
na=n-x
abc=[]
for i in range(x,n):
abc.append(i)
if na%2==0 and na>2:
for i in range(1,na):
l.append((abc[0],abc[i]))
print("a=",l)
na=na-1
for i in range(1,na,2):
l.append((abc[i],abc[i+1]))
l.append((abc[na-1],abc[na]))
elif na%2==1 and na>2:
na=na+1
for i in range(1,na-1):
l.append((abc[0],abc[i]))
for i in range(1,na-1,2):
l.append((abc[i],abc[i+1]))
#l.append((n-1,n))
L.append(l)
Y=X[0]
Z=X[1]
l=[]
for i in range(len(X)):
l.append((Y,X[i]))
n=len(X)
if n%2==0 and n>2:
n=n-1
for i in range(1,n,2):
l.append((X[i],X[i+1]))
l.append((X[n-1],X[n]))
elif n%2==1 and n>2:
n=n+1
for i in range(1,n-1,2):
l.append((X[i],X[i+1]))
#l.append((n-1,n))
L.append(l)
Fs=[]
for i in L:
for j in i:
Fs.append(j)
return Fs
def StarOfTrimet(n):
NumberOfNodes=5
a=0
c=1
L=[]
X=[]
d=int(n/NumberOfNodes)
for i in range(d):
X.append(a)
b=Trimet(a,NumberOfNodes*c)
c=c+1
a=a+NumberOfNodes
L.append(b)
return L
def SOT(n):
L=StarOfTrimet(n)
t1=[]
for i in L:
for j in i:
if j[0]==j[1]:
t1.append(j[0])
Fs1=[]
for i in L:
for j in i:
Fs1.append(j)
x=t1[0]
for i in range(1,len(t1)):
Fs1.append((x,t1[i]))
return Fs1
def TrimetOfStars(n):
Fs=[]
a=3
b=5
for i in range(18):
c=a+b
a=b
b=c
Fs.append(c)
x=0
X=[]
L=[]
s=Fs[0]
abc=0
for i in range(1,len(Fs)):
if s>n:
break
else:
X.append(x)
b=Star(x,s)
L.append(b)
x=s
s=s+Fs[i]
abc=abc+Fs[i-1]
l=[]
if n-x<1:
pass
elif n-x>1:
X.append(x)
na=n-x
abc=[]
for i in range(x,n):
abc.append(i)
for i in range(1,na):
l.append((abc[0],abc[i]))
L.append(l)
a=X[0]
n=len(X)
l=[]
for i in range(a,n):
l.append((X[a],X[i]))
if n%2==0 and n>2:
n=n-1
for i in range(a+1,n,2):
l.append((X[i],X[i+1]))
l.append((X[n-1],X[n]))
elif n%2==1 and n>2:
n=n+1
for i in range(a+1,n-1,2):
l.append((X[i],X[i+1]))
L.append(l)
f=[]
for i in L:
for j in i:
f.append(j)
return f
def StarOfWheel(n):
Fs=[]
a=3
b=5
Fs.append(a)
Fs.append(b)
for i in range(18):
c=a+b
a=b
b=c
Fs.append(c)
x=0
X=[]
L=[]
s=Fs[0]
abc=0
for i in range(1,len(Fs)):
if s>n:
break
else:
X.append(x)
b=Star(x,s)
L.append(b)
x=s
s=s+Fs[i]
abc=abc+Fs[i-1]
l=[]
if n-x<2:
pass
elif n-x>2:
X.append(x)
na=n-x
abc=[]
for i in range(x,n):
abc.append(i)
for i in range(1,na):
l.append((abc[0],abc[i]))
L.append(l)
h=X[0]
hx=[]
for i in range(1,len(X)):
hx.append((h,X[i]))
for i in range(1,len(X)-1):
hx.append((X[i],X[i+1]))
i=i+1
hx.append((X[1],X[len(X)-1]))
L.append(hx)
Lx=[]
for i in L:
for j in i:
Lx.append(j)
return Lx
def WheelOfStar(n):
temp=TOS(n)
l=temp[1]
Fs=[]
for i in temp[0]:
Fs.append(i)
x=l[0]
for i in range(1,len(l)):
Fs.append((x,l[i]))
for i in range(1,len(l)-1):
Fs.append((l[i],l[i+1]))
i=i+1
Fs.append((l[1],l[len(l)-1]))
return Fs
def TrimetOfWheel(n):
l=StarOfTrimet(n)
y=[]
Fs=[]
for i in l:
for j in i:
if j[0]==j[1]:
y.append(j[0])
Fs.append(j)
x=y[0]
for i in range(1,len(y)):
Fs.append((x,y[i]))
for i in range(1,len(y)-1):
Fs.append((y[i],y[i+1]))
i=i+1
Fs.append((y[1],y[len(y)-1]))
return Fs
def Wheel(a,n):
l=[]
for i in range(a,n):
l.append((a,i))
for i in range(a+1,n-1):
l.append((i,i+1))
l.append((n-1,a+1))
return l
def WOWx(n):
Fs=[]
a=5
b=8
Fs.append(a)
Fs.append(b)
for i in range(18):
c=a+b
a=b
b=c
Fs.append(c)
x=0
X=[]
L=[]
s=Fs[0]
abc=0
for i in range(1,len(Fs)):
if s>n:
break
else:
X.append(x)
b=Wheel(x,s)
L.append(b)
x=s
s=s+Fs[i]
abc=abc+Fs[i-1]
l=[]
if n-x<4:
pass
elif n-x>=4:
X.append(x)
na=n-x
abc=[]
for i in range(x,n):
abc.append(i)
for i in range(0,na):
l.append((abc[0],abc[i]))
for i in range(1,na-1):
l.append((abc[i],abc[i+1]))
#l.append((0,abc[0]))
L.append(l)
return L
def WOW(n):
Fs=[]
a=5
b=8
Fs.append(a)
Fs.append(b)
for i in range(18):
c=a+b
a=b
b=c
Fs.append(c)
x=0
X=[]
L=[]
s=Fs[0]
abc=0
for i in range(1,len(Fs)):
if s>n:
break
else:
X.append(x)
b=Wheel(x,s)
L.append(b)
x=s
s=s+Fs[i]
return L
def WheelOfWheel(n):
l=WOWx(n)
y=[]
Fs=[]
for i in l:
for j in i:
if j[0]==j[1]:
y.append(j[0])
Fs.append(j)
x=y[0]
for i in range(1,len(y)):
Fs.append((x,y[i]))
for i in range(1,len(y)-1):
Fs.append((y[i],y[i+1]))
i=i+1
Fs.append((y[1],y[len(y)-1]))
return Fs
def WheelOfStar(n):
l=WOWx(n)
y=[]
Fs=[]
for i in l:
for j in i:
if j[0]==j[1]:
y.append(j[0])
Fs.append(j)
x=y[0]
for i in range(1,len(y)):
Fs.append((x,y[i]))
return Fs
def WheelOfTrimet(n):
L=WOWx(n)
X=[]
Fs=[]
for i in L:
for j in i:
if j[0]==j[1]:
X.append(j[0])
Fs.append(j)
Y=X[0]
Z=X[1]
l=[]
for i in range(len(X)):
l.append((Y,X[i]))
n=len(X)
if n%2==0 and n>2:
n=n-1
for i in range(1,n,2):
l.append((X[i],X[i+1]))
l.append((X[n-1],X[n]))
elif n%2==1 and n>2:
n=n+1
for i in range(1,n-1,2):
l.append((X[i],X[i+1]))
#l.append((n-1,n))
L.append(l)
Fs=[]
for i in L:
for j in i:
Fs.append(j)
return Fs
def do(graph,node):
lbl = Label(window, text=graph+" with "+node+" nodes ")
lbl.grid(column=1, row=5)
X=0
def Fibonnacix(xx,n):
lx=[]
a=3
b=5
l=[]
l.append(a)
l.append(b)
for i in range(15):
c=a+b
a=b
b=c
l.append(c)
x=0
for j in range(xx):
x=x+l[j]
for j in range(xx,15):
y=x+l[j]
x=y
lx.append(y)
return lx
if(graph=="Star of stars"):
nodex=StarOfStars(int(node))
G3=nx.Graph(nodex)
ly=Fibonnacix(2,15)
elif(graph=="TrimetOfTrimet"):
ly=Fibonnacix(2,15)
nodex=TrimetOfTrimet(int(node))
G3=nx.Graph(nodex)
elif(graph=="Star of Trimet"):
ly=Fibonnacix(2,15)
nodex=TrimetOfStars(int(node))
G3=nx.Graph(nodex)
elif(graph=="Trimet of Stars"):
ly=Fibonnacix(2,15)
nodex=SOT(int(node))
G3=nx.Graph(nodex)
elif(graph=="Wheel of Star"):
ly=Fibonnacix(2,15)
nodex=WheelOfStar(int(node))
G3=nx.Graph(nodex)
elif(graph=="Trimet of Wheel"):
ly=Fibonnacix(3,15)
nodex=TrimetOfWheel(int(node))
G3=nx.Graph(nodex)
elif(graph=="Wheel of Wheel"):
ly=Fibonnacix(4,15)
nodex=WheelOfWheel(int(node))
G3=nx.Graph(nodex)
elif(graph=="Star Of Wheel"):
ly=Fibonnacix(3,15)
nodex=StarOfWheel(int(node))
G3=nx.Graph(nodex)
elif(graph=="Wheel of Trimet"):
ly=Fibonnacix(3,15)
nodex=WheelOfTrimet(int(node))
G3=nx.Graph(nodex)
else:
print("nothing")
output:
Graph info of star of star,star of TGO,TGO of star,TGO of TGO graphs:
Scalability:
Survivabiity:
Conclusion:
In network world there is problem called scalability which can be addressed by graph
theory,game theory,machine learning,artificial intelligence.
We addressed the problem through graph theory and prepared model(trimet graph) as TGO
TOPOLOGY as solution.
References :