1. A computer-executable method for dynamically assigning vertices to processors to generate a recommendation for a customer, comprising: receiving graph data indicating vertices and edges of the graph, wherein the vertices represent customers and products and the edges represent purchases; determining, based on the graph data, a vertex that represents the customer; traversing the graph from the vertex representing the customer to a set of vertices representing products; dividing the set of vertices representing products among a set of processors; determining a set of frontier vertices representing products for each processor of the set of processors; traversing, by the set of processors, the graph from the set of frontier vertices representing products to a set of vertices representing customers; dividing the set of vertices representing customers among a set of processors; determining a set of frontier vertices representing customers for each processor of the set of processors; traversing, by the set of processors, the graph from the set of frontier vertices representing customers to a set of vertices representing recommendable products; and generating a product recommendation for the customer based on the set of vertices representing recommendable products.