In [1]:
import numpy as np
import pandas as pd
In [3]:
# from operator import itemgetter, attrgetter
def BFS(graph, start):
queue = list()
most = dict()
visited = set()
queue.append(start)
while queue:
node = queue.pop(0)
visited.add(node)
if node in most:
most[node][0] = len(graph[node])
else:
most[node] = [len(graph[node]), 0];
for adjacent in graph[node]:
#LOGICA DO QUE A GENTE QUER
if adjacent in most:
most[adjacent][1] += 1;
else:
most[adjacent] = [0, 1];
if adjacent not in visited:
visited.add(adjacent)
if adjacent in graph:
queue.append(adjacent)
# print(most)
#SORT MOST EM [0] e depois em [1]
def s(t):
v = t[1]
return -v[0], -v[1]
# sorted(d.items(), key=lambda (y,x): (-x[0], -x[1]))
return sorted(most.items(), key=s)
In [8]:
file_name = 'real1'
mt = np.genfromtxt('networks/' + file_name + '.csv',delimiter=',').astype(np.int32)
In [9]:
network = {}
for row in mt:
source = row[0]
target = row[1]
if source not in network:
network[source] = set()
network[source].add(target)
# print(graph)
In [10]:
print(len(network))
In [21]:
from pprint import pprint
pprint(list(network.keys())[-10:])
In [11]:
result = BFS(network, 0)
# print(len(result))
# print(result[:30])
In [22]:
print(len(result))
print(result[-30:])
In [87]:
graph = { 'A': ['B', 'C'],
'B': ['A', 'C'],
'C': ['B', 'D', 'E' ,'F'],
'D': ['E'],
'E': ['C'],
'F': ['B', 'D'],
'G': ['H'],
'H': ['G']}
In [16]:
def BFS(graph, start):
queue = []
visited = set()
queue.append(start)
while queue:
node = queue.pop(0)
visited.add(node)
for adjacent in graph[node]:
if adjacent not in visited:
queue.append(adjacent)
visited.add(adjacent)
print(visited)
In [102]:
def s(t):
v = t[1]
return -v[0], -v[1]
# sorted(d.items(), key=lambda (y,x): (-x[0], -x[1]))
sorted(d.items(), key=s)
Out[102]:
In [ ]:
graph = { 'A': ['B', 'C'],
'B': ['A', 'C'],
'C': ['B', 'D', 'E' ,'F'],
'D': ['E'],
'E': ['C'],
'F': ['B', 'D'] }
def BFS(graph, start, end):
parent = {}
queue = []
queue.append(start)
while queue:
node = queue.pop(0)
if node == end:
return backtrace(parent, start, end)
for adjacent in graph.get(node, []):
parent[adjacent] = node
queue.append(adjacent)
def backtrace(parent, start, end):
path = [end]
while path[-1] != start:
path.append(parent[path[-1]])
path.reverse()
return path
print (BFS(graph, 'A', 'E'))
In [ ]:
BFS(G,s)
1. for each vertex u ∈ G.V - {s}
2. u.color == WHITE
3. u.d = INF
4. u.pi = NIL
5. s.color = GRAY
6. s.d = 0
7. s.pi = NIL
8. Q = ∅
9. ENQUEUE(Q,s)
10. while Q ≠ ∅
11. u = DEQUEUE(Q)
12. for each v ∈ G.Adj[u]
13. if v.color == WHITE
14. v.color = GRAY
15. v.d = u.d + 1
16. v.pi = u
17. ENQUEUE(Q,v)
18. u.color = BLACK
In [ ]:
# G que tem a propriedade V, vértices
def BFS(G, s):
for each vertex in G[V] - [s]:
In [ ]:
def bfs(graph, root):
S = set()
Q = list()
S.add(root)
Q.append(root)
while len(Q) is not 0:
current = Q.pop()
if current