Algoritmia - codigo de primm

 
Vista:

codigo de primm

Publicado por abraham ortega sanche (1 intervención) el 15/07/2005 06:36:38
por favor lo necesito
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Algoritmo de Prim para el árbol de expansión mínima (MST)

Publicado por Alejandro (307 intervenciones) el 05/03/2024 18:54:54
Abraham, el algoritmo de Prim es un algoritmo voraz que se utiliza para encontrar el árbol de expansión mínima (MST) en un grafo ponderado conexo. Aquí tienes una implementación básica del algoritmo de Prim en Python:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import heapq
 
class Grafo:
    def __init__(self, vertices):
        self.vertices = vertices
        self.grafo = [[] for _ in range(vertices)]
 
    def agregar_arista(self, u, v, peso):
        self.grafo[u].append((v, peso))
        self.grafo[v].append((u, peso))
 
    def prim(self):
        MST = []
        visitado = [False] * self.vertices
        heap = [(0, 0)]  # (peso, vértice)
 
        while heap:
            peso, actual = heapq.heappop(heap)
 
            if not visitado[actual]:
                visitado[actual] = True
                MST.append((peso, actual))
 
                for vecino, peso_vecino in self.grafo[actual]:
                    if not visitado[vecino]:
                        heapq.heappush(heap, (peso_vecino, vecino))
 
        return MST
 
# Ejemplo de uso
g = Grafo(5)
g.agregar_arista(0, 1, 2)
g.agregar_arista(0, 3, 8)
g.agregar_arista(1, 2, 3)
g.agregar_arista(1, 3, 5)
g.agregar_arista(1, 4, 1)
g.agregar_arista(2, 4, 7)
g.agregar_arista(3, 4, 4)
 
resultado_prim = g.prim()
print("Árbol de expansión mínima (MST) obtenido por el algoritmo de Prim:")
for peso, vertice in resultado_prim:
    print(f"Arista: {vertice} - Peso: {peso}")

Este código crea un objeto `Grafo` y utiliza el algoritmo de Prim para encontrar el MST. Puedes personalizar el grafo ajustando las aristas y pesos según tus necesidades. La implementación utiliza una cola de prioridad (heap) para seleccionar la arista de menor peso en cada paso del algoritmo de Prim.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar