def test_create_random_dag(self):
     g = s.create_random_dag(13)
     for node in g:
         probs = []
         for edge in g.edges_iter([node]):
             probs.append(g.get_edge_data(*edge)["prob"])
         if g.out_degree(node) != 0:
             self.assertAlmostEqual(sum(probs), 1.0)
 def test_get_longest_path_length(self):
     self.assertEqual(5, mc.get_longest_path_length(self.path_graph, self.path_graph_sources[0], self.path_graph_sinks[0]), "should return 5 for a path graph with")   
     self.assertEqual(15, mc.get_longest_path_length(s.create_random_dag(15), 0, 14))
'''
Created on Jul 11, 2012

@author: bantosik
'''

import monte_carlo.utitities as utilities
import monte_carlo.simulation as sim
import networkx as nx
import dynamic_programming.possible_collision_counter as dp
from monte_carlo.simulation import get_sampled_distribution_of_collisions

from pylab import *

if __name__ == '__main__':
    g = sim.create_random_dag(15)
    s = []
    for i in xrange(1000):
        s.append(get_sampled_distribution_of_collisions(g, 0, 14, 1000))
    theoretic = dp.CollisionCounter(g, 0, 14).get_collision_distribution()
    empirical = zip(*s)
    means = [float(sum(x))/len(x) for x in empirical]
    summ = sum(means)
    means = [x / summ for x in means]