Example #1
0
    def as_AM(self):

        matrix = AM.Graph(self.vertices, self.weighted, self.directed)

        for i in self.el:
            matrix.insert_edge(i.source, i.dest, i.weight)
        return matrix
Example #2
0
    def as_AM(self):
        g = am.Graph(len(self.al), self.weighted, self.directed)
        for i in range(len(self.al)):
            for j in range(len(self.al[i])):
                g.insert_edge(i, self.al[i][j].dest, self.al[i][j].weight)
        print(g.representation)

        return g
Example #3
0
 def as_AM(self):
     matrix = AM.Graph(
         len(self.al), self.weighted,
         self.directed)  # makes a AM graph that is same size as AL graph
     for i in range(len(self.al)):
         for j in self.al[i]:
             matrix.insert_edge(i, j.dest, j.weight)  # inserts edges
     return matrix
Example #4
0
def build_graphAM():
    g_am = AM.Graph(4039)
    f = open('facebook_combined.txt', 'r')
    for line in f:  # Iterates until there is no line left to read
        v = line.split(' ')  # Array of size 2 containing source and dest
        g_am.insert_edge(int(v[0]), int(v[1]))
    f.close()
    return g_am
Example #5
0
def al_to_am(g_al):
    g_am = graphAM.Graph(len(g_al.al),
                         directed=g_al.directed,
                         weighted=g_al.weighted)
    for v in range(len(g_al.al)):
        for e in g_al.al[v]:
            g_am.insert_edge(v, e.dest, e.weight)
    return g_am
Example #6
0
    def as_AM(self):

        matrix = AM.Graph(len(self.al), self.weighted, self.directed)

        for i in range(len(self.al)):
            for j in self.al[i]:
                matrix.insert_edge(i, j.dest, j.weight)

        return matrix
Example #7
0
 def as_AM(self):
     #constructor for AM
     g = gam.Graph(self.vertices,
                   weighted=self.weighted,
                   directed=self.directed)
     for edge in self.el:  #iterate through edges list
         g.insert_edge(edge.source, edge.dest,
                       edge.weight)  #insert corresponding values
     return g
Example #8
0
 def as_AM(self):
     
      # create an empty graph with the same length as current graph
     matrix =  AM.Graph(self.vertices, self.weighted, self.directed)
     
     # insert edges using a loop
     for i in self.el:
         matrix.insert_edge(i.source, i.dest, i.weight)
     return matrix
Example #9
0
    def as_AM(self):

        matrix = AM.Graph(len(self.al))

        for i in range(len(self.al)):
            for edge in self.al[i]:

                matrix.insert_edge(i, edge.dest)

        return matrix
Example #10
0
 def as_AM(self):
     g = graph_AM.Graph(len(self.al), weighted=self.weighted, directed=self.directed)
     for i in range(len(self.al)):
         for edge in self.al[i]:
             if not self.directed:
                 if i < edge.dest: 
                     g.insert_edge(i, edge.dest, edge.weight)
             else:
                 g.insert_edge(i, edge.dest, edge.weight)
     return g
Example #11
0
    def as_AM(self):

        # create an empty graph with the same length as current graph
        matrix = AM.Graph(len(self.al), self.weighted, self.directed)

        # insert edges using a nested loop
        for i in range(len(self.al)):
            for j in self.al[i]:
                matrix.insert_edge(i, j.dest, j.weight)

        return matrix
Example #12
0
 def as_AM(self):
     #constructor for AM graph
     g = gam.Graph(len(self.al),
                   weighted=self.weighted,
                   directed=self.directed)
     for i in range(len(self.al)):  #iterates through np array
         for j in range(len(self.al[i])):  #lists inside np array
             g.insert_edge(
                 i, self.al[i][j].dest,
                 self.al[i][j].weight)  #inserts corresponding values
     return g
Example #13
0
 def as_AM(self):
     g = graph_AM.Graph(self.vertices,
                        weighted=self.weighted,
                        directed=self.directed)
     for i in range(self.vertices):
         for j in self.el:
             if j.source == i:
                 if not self.directed:
                     if i < j.dest:
                         g.insert_edge(i, j.dest, j.weight)
                 else:
                     g.insert_edge(i, j.dest, j.weight)
     return g
Example #14
0
def matrix(s):
    f = open(s, 'r', encoding="utf8")
    lines = f.readlines()
    f.close()
    f = open(s, 'r', encoding="utf8")
    nums = f.read()
    f.close()
    size = get_size(nums, lines)
    G = graphAM.Graph(size)
    for i in lines:
        nums = i.split()
        G.insert_edge(int(nums[0]), int(nums[1]), 1)
    return G
Example #15
0
 def as_AM(self):
     """
     Convert an adjacency list representation of a graph to an adjacency
     matrix by traversing through the original representation and calling
     the insert_edge() function from the adjacency matrix class for each
     Edge object in the adjacency list.
     """
     AM = am_graph.Graph(len(self.al), weighted=self.weighted, directed=self.directed)
     for i in range(len(self.al)):
         for edge in self.al[i]:
             source = i
             dest = edge.dest
             weight = edge.weight
             AM.insert_edge(source, dest, weight)
     return AM
Example #16
0
 def as_AM(self):
     g = g_AM.Graph(self.vertices, self.weighted, self.directed)
     for list in range(len(self.al)):
         for edge in range(len(self.al[list])):
             g.insert_edge(edge.source, edge.dest, edge.weight)                
     return g
    print(internal(T.root))

    print('================ Question 10 ===============')
    S = [1, 2, 3, 4, 6, 7]
    for i in range(15):
        print(i, find_sum_pair(S, i))

    print('================ Question 11 ===============')
    print(remove_duplicates([4, 2, 7, 9, 7, 8, 1, 9, 2, 4]))
    print(remove_duplicates([4, 2, 7, 9, 9, 2, 4]))
    print(remove_duplicates([2, 2, 4, 4, 4, 2, 4, 4, 2]))
    print(remove_duplicates([2302]))
    print(remove_duplicates([]))

    print('================ Question 12 ===============')
    g8 = graph_AM.Graph(5)
    g8.insert_edge(0, 1)
    g8.insert_edge(1, 2)
    g8.insert_edge(1, 3)
    g8.insert_edge(0, 3)
    g8.insert_edge(2, 3)
    g8.insert_edge(3, 4)
    g8.insert_edge(2, 4)
    g8.display()
    if draw_figs:
        g8.draw()

    for i in range(5):
        for j in range(i + 1, 5):
            for k in range(j + 1, 5):
                print('(u,v,w) = ({},{},{}), clique = {}'.format(
    return g


#Question 5
def out_degrees(G):
    return list(np.sum(G.am > -1, axis=1))


#question 6
def in_degrees(G):
    return list(np.sum(G.am > -1, axis=0))


if __name__ == "__main__":
    plt.close("all")
    g_uduw = graph.Graph(5)
    g_uduw.insert_edge(0, 1)
    g_uduw.insert_edge(0, 2)
    g_uduw.insert_edge(1, 2)
    g_uduw.insert_edge(2, 3)
    g_uduw.insert_edge(3, 4)
    g_uduw.insert_edge(4, 1)
    g_uduw.display()
    g_uduw.draw()

    g_duw = graph.Graph(5, directed=True)
    g_duw.insert_edge(0, 1)
    g_duw.insert_edge(0, 2)
    g_duw.insert_edge(1, 2)
    g_duw.insert_edge(2, 3)
    g_duw.insert_edge(3, 4)
Example #19
0
Ismael Villalobos
11-17-19
Lab Assignment 6
Professor Fuentes
TA-Dita Nath
Purpose:
'''
import matplotlib.pyplot as plt
import numpy as np
#import graph_AL as graph
import graph_AM as graph  # Replace line 3 by this one to demonstrate adjacy maxtrix implementation
#import graph_EL as graph # Replace line 3 by this one to demonstrate edge list implementation

if __name__ == "__main__":
    plt.close("all")
    g = graph.Graph(6)
    g.insert_edge(0, 1)
    g.insert_edge(0, 2)
    g.insert_edge(1, 2)
    g.insert_edge(2, 3)
    g.insert_edge(3, 4)
    g.insert_edge(4, 1)
    g.display()
    g.draw()
    g.delete_edge(1, 2)
    g.display()
    g.draw()

    g = graph.Graph(6, directed=True)
    g.insert_edge(0, 1)
    g.insert_edge(0, 2)
def circle_graph(n):
    g = graph.Graph(n, directed=True)
    g.am[np.arange(n), (np.arange(n) + 1) % n] = 1
    return g
Example #21
0
 def as_AM(self):
     g  = am.Graph(len(self.al),self.weighted,self.directed)
     for i in self.al:
         for j in i:
             g.insert_edge(j.source,j.dest)
     return g
Example #22
0
 def as_AM(self):
     temp = gAM.Graph(len(self.al), directed=False)
     for x in range(len(self.al)):
         for y in range(len(self.al[x])):
             temp.insert_edge(x, self.al[x][y].dest)
     return temp
Example #23
0
 def as_AM(self):
     g = am.Graph(self.vertices, self.weighted, self.directed)
     for e in self.el:
         g.insert_edge(e.source, e.dest, e.weight)
     return g
Example #24
0
 def as_AM(self):
     temp = gAM.Graph(self.vert, directed=False)
     for x in range(len(self.el)):
         temp.insert_edge(self.el[x].source, self.el[x].dest)
     return temp
Example #25
0
import matplotlib.pyplot as plt

import graph_AM as graph

if __name__ == "__main__":
    plt.close("all")
    g = graph.Graph(16)
    g.insert_edge(0, 10)
    g.insert_edge(10, 2)
    g.insert_edge(2, 14)
    g.insert_edge(2, 11)
    g.insert_edge(14, 4)
    g.insert_edge(11, 1)
    g.insert_edge(4, 13)
    g.insert_edge(1, 13)
    g.insert_edge(13, 5)
    g.insert_edge(5, 15)
    g.display()
    #    g.draw()
    print("Breadth-first search:")
    print(g.bfs(0, 15))
    print("Depth-first search:")
    print(g.dfs(0, 15))
p = g.DFS()
end = time.time()
print('To solve the puzzle, you must first travel from world state ', end = '')
for state in range(len(p)-1):
    print(p[state], ' to ', end = ' ')
print(p[-1])
print('Runtime for DFS: ', end-start)
print()

#Solving Puzzle using Adjacency Matrix Representation; we first create the graph and insert
#legal transition edges into the graph, connecting only legal states with legal
#transitions.

print('Adjacency Matrix Representation of Graph')
print()
g = g_AM.Graph(16)
g.insert_edge(0, 5, 1)
g.insert_edge(2, 7, 1)
g.insert_edge(2, 11, 1)
g.insert_edge(4, 13, 1)
g.insert_edge(4, 7, 1)
g.insert_edge(4, 5, 1)
g.insert_edge(8, 13, 1)
g.insert_edge(8, 11, 1)
g.insert_edge(10, 15, 1)
g.insert_edge(10, 11, 1)
g.draw()
g.display()
start = time.time()
p = g.BFS()
end = time.time()
Example #27
0
 #fox, chicken, grain, person
 #invalid:   [1,1,0,0](12) and [0,0,1,1](3)
 #           [0,1,1,0](6) and [1,0,0,1](9)
 #           [0,0,0,1](1) and [1,1,1,0] (14)
 
 valid = validV() #valid inputs
 bfirst = {"1","3","5"} #options for breadth first
 dfirst = {"2","4","6"} #options for depth first
 if (option in bfirst or option in dfirst):
     if (option in bfirst):
         if (option=="1"): #AL Breadth-first
             print("======READING AL BREADTH-FIRST======")
             g = gal.Graph(16)
         elif (option=="3"): #AM Breadth-first
             print("======READING AM BREADTH-FIRST======")
             g = gam.Graph(16)
         else: #EL Breadth-first
             print("======READING EL BREADTH-FIRST======")
             g = gel.Graph(16)
         start = time.time()
         fillGraph(g, valid) #call to fill graph that was chosen
         timeGraph = time.time()-start
         g.display() #show graph
         
         start = time.time()
         path = g.breadth_search() #call to search
         timePath = time.time()-start
     else:
         if (option=="2"): #AL Depth-first
             print("======READING AL DEPTH-FIRST======")
             g = gal.Graph(16)
 #3 [1, 2]
 #4 [1, 3]
 #5 [2, 3]
 #6 [2, 4]
 #7 [3, 4]
 #8 [2, 6]
 #9 [3, 6]
 #10 [4, 6]
 #11 [4, 7]
 #12 None
 #13 [6, 7]
 #14 None    
 
 
 print('================ Question 8 ===============')
 g8 = graph_AM.Graph(5,directed=True)
 g8.insert_edge(0,1)
 g8.insert_edge(1,2)
 g8.insert_edge(1,3)    
 g8.insert_edge(0,3)
 g8.insert_edge(2,3)
 g8.insert_edge(3,4)
 g8.insert_edge(2,4)
 g8.display()
 g8.draw('Hey 1')
 make_undirected(g8)
 g8.display()
 g8.draw('Hey 2')
 
 #Graph representation
 #directed: False, weighted: False
Example #29
0
print('\n1. Test Graphs')
print('2. Puzzle')

choice2=int(input('Select choice: '))

if choice2==1:
    
    test.tests(choice)
    
if choice2==2:
    
    if choice==1:
        g=AL.Graph(16)
    if choice==2:
        g=AM.Graph(16)
    if choice==3:
        g=EL.Graph(16)
    
    g.insert_edge(0,5)
    g.insert_edge(5,4)
    g.insert_edge(4,7)
    g.insert_edge(4,13)
    g.insert_edge(2,13)
    g.insert_edge(7,11)
    g.insert_edge(10,11)
    g.insert_edge(10,15)
    
    timer=0    
    
    print('\n1. Breadth First Search')
Example #30
0
    print('\n *********** Question 2 **************')
    g = graph_EL.Graph(5, weighted=True, directed=True)
    g.insert_edge(0, 1, 4)
    g.insert_edge(0, 2, 7)
    g.insert_edge(1, 2, 2)
    g.insert_edge(2, 3, 1)
    g.insert_edge(2, 4, 8)
    g.insert_edge(3, 4, 5)
    g.insert_edge(4, 1, 4)
    g.display()
    g.draw()
    print(in_degrees(g))

    print('\n *********** Question 3 **************')
    g = graph_AM.Graph(5, weighted=True, directed=True)
    g.insert_edge(0, 1, 4)
    g.insert_edge(0, 2, 7)
    g.insert_edge(1, 2, 2)
    g.insert_edge(2, 3, 1)
    g.insert_edge(2, 4, 8)
    g.insert_edge(3, 4, 5)
    g.insert_edge(4, 1, 4)
    g.display()
    g.draw()
    prev = [-1, 0, 1, 2, 2]
    for v in range(5):
        print('dist to {} = {}'.format(v, dist_from_prev(g, prev, v)))

    print('\n *********** Question 4 **************')
    g = graph_AL.Graph(6, weighted=True)