for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
from abc import ABCMeta, abstractmethod
from pyalgs.data_structures.commons.queue import Queue
from pyalgs.data_structures.commons.stack import Stack
class Paths(object):
__metaclass__ = ABCMeta
@abstractmethod
def pathTo(self, v):
pass
def hasPathTo(self, v):
class DepthFirstSearch(Paths):
marked = None
edgesTo = None
s = None
def __init__(self, G, s):
self.s = s
vertex_count = G.vertex_count()
self.marked = [False] * vertex_count
self.edgesTo = [-1] * vertex_count
self.dfs(G, s)
def dfs(self, G, v):
self.marked[v] = True
for w in G.adj(v):
if not self.marked[w]:
self.edgesTo[w] = v
self.dfs(G, w)
return self.marked[v]
x = v
path = Stack.create()
while x != self.s:
path.push(x)
x = self.edgesTo[x]
path.push(self.s)
return path.iterate()
class BreadthFirstSearch(Paths):
edgeTo = None
self.edgeTo = [-1] * vertex_count
queue = Queue.create()
queue.enqueue(s)
while not queue.is_empty():
v = queue.dequeue()
self.edgeTo[w] = v
queue.enqueue(w)
x = self.edgeTo[x]