Learning Combinatorial Optimization Algorithms over Graphs