예제 #1
0
    def setUp(self):
        self.graphA = graph.Graph(8)
        self.ListaSasiedztwaA = [
            edge.Edge(1, 2, 2),
            edge.Edge(2, 3, 9),
            edge.Edge(3, 4, 13),
            edge.Edge(4, 5, 4),
            edge.Edge(5, 6, 33),
            edge.Edge(6, 2, 1),
            edge.Edge(2, 4, 6),
            edge.Edge(4, 6, 30),
            edge.Edge(1, 3, 20),
            edge.Edge(3, 5, 11),
            edge.Edge(5, 1, 17),
            edge.Edge(5, 7, 5),
            edge.Edge(6, 1, 35)
        ]
        for item in self.ListaSasiedztwaA:
            self.graphA.add_edge(item)
        self.kruskalA = MSTKruskal.Kruskal(self.graphA)

        self.graphB = graph.Graph(9)
        self.ListaSasiedztwaB = [
            edge.Edge(0, 3, 9),
            edge.Edge(0, 1, 5),
            edge.Edge(0, 6, 3),
            edge.Edge(1, 5, 6),
            edge.Edge(1, 4, 8),
            edge.Edge(1, 7, 7),
            edge.Edge(1, 2, 9),
            edge.Edge(2, 3, 9),
            edge.Edge(2, 4, 4),
            edge.Edge(2, 7, 3),
            edge.Edge(3, 6, 8),
            edge.Edge(4, 6, 1),
            edge.Edge(4, 5, 2),
            edge.Edge(5, 6, 6),
            edge.Edge(6, 7, 9)
        ]
        for item in self.ListaSasiedztwaB:
            self.graphB.add_edge(item)
        self.kruskalB = MSTKruskal.Kruskal(self.graphB)

        self.graphC = graph.Graph(7)
        self.ListaSasiedztwaC = [
            edge.Edge(1, 2, 15),
            edge.Edge(2, 5, 40),
            edge.Edge(1, 5, 60),
            edge.Edge(1, 3, 35),
            edge.Edge(3, 5, 30),
            edge.Edge(3, 4, 10),
            edge.Edge(1, 4, 30),
            edge.Edge(1, 6, 50),
            edge.Edge(5, 6, 70),
            edge.Edge(4, 6, 15)
        ]
        for item in self.ListaSasiedztwaC:
            self.graphC.add_edge(item)
        self.kruskalC = MSTKruskal.Kruskal(self.graphC)
예제 #2
0
	def create_first_population(self):
		print "create first population"
		# création du graphe
		self.M=Chargement.EuclideanDistMatrix("./dev/data/n10-2")
		self.nb_nodes = len(self.M)
		F=MSTKruskal.MinimumSpanningTree(self.M)	
		self.graph = MSTKruskal.convertToAdjacent(F, self.M)
		# création de la première population
		adLN = MSTKruskal.convertToAdjacentN(F)
		Lev = Chargement.getLevels(adLN)
		#for cycle in Chargement.getCycles(Lev, adLN, 3):
		#    self.pop.append([int(i) for i in cycle])
		self.pop = [Chargement.getCycles(Lev, adLN, 3)]
		print self.pop
		print type(self.pop), type(self.pop[0][0])
예제 #3
0
        edge.Edge(1, 4, 30),
        edge.Edge(1, 6, 50),
        edge.Edge(5, 6, 70),
        edge.Edge(4, 6, 15)
    ]

    print "\nGraf 1:"
    for item in ListaSasiedztwa:
        graph1.add_edge(item)

    print "Lista wierzcholkow:"
    print graph1.list_nodes()

    graph1.show_graph()

    kruskal1 = MSTKruskal.Kruskal(graph1)
    kruskal1.show_mst(kruskal1.make_mst())

    print "\nGraf 2:"
    for item in ListaSasiedztwa2:
        graph2.add_edge(item)

    print "Lista wierzcholkow:"
    print graph2.list_nodes()

    graph2.show_graph()

    kruskal2 = MSTKruskal.Kruskal(graph2)
    kruskal2.show_mst(kruskal2.make_mst())

    print "\nGraf 3:"
예제 #4
0
	
	M=EuclideanDistMatrix("./dev/data/n40-1")
	print("=====================")
	print("Matrice de couts")
	print("=====================")
	print(M)
	
	print("=====================")
	print("ACM sous forme de liste d'aretes")
	print("=====================")
	F=K.MinimumSpanningTree(M)
	print(F)

	print("=====================")
	print("Liste d'adjacence")
	print("=====================")
	adL=K.convertToAdjacentN(F)
	print(adL)
	
	print("=====================")
	print("Liste des Niveaux de l'ACM: par defaut, le noeud 0 est la racine")
	print("=====================")
	Lev=getLevels(adL)
	print(Lev)
	
	print("=====================")
	k=5
	print("Solution finale: liste des cycles de longueur <=",k)
	print("=====================")
	print(getCycles(Lev,adL,k))