fbpx

Tarea para el segundo modulo unidad de grafos

Jovenes tienen que subir sus codigos fuentes de sus implementaciones de la clase grafo, con todos sus metodos.

28 junio, 2018

2respuestas sobre "Tarea para el segundo modulo unidad de grafos"

  1. class arista:
    def __init__(self):
    self.__arista =[]

    class Vertice:
    def __init__(self, clave):
    self.__id = clave
    self.__conectadoA = []
    a=arista()

    def agregarArista(self,origen,destino,peso):
    if len(self.__conectadoA)!=0:
    i= []
    i.append(origen,destino,peso)
    a.append(i)

    def getVertice(self):
    return self.__id

    def LongC(self):
    return len(self.__conectadoA)

    def insertarVecino(self, vecino):
    self.__conectadoA.append(vecino)

    def __str__ (self):
    return “%s %s” %(self.__id,self.__conectadoA)

    def seEncuentra(self, elem):
    if elem in self.__conectadoA:
    return True
    else:
    return False

    def getElementConect(self):
    cad=””
    if len(self.__conectadoA) > 0:
    for elemento in self.__conectadoA:
    cad+=str(elemento)+” ”
    else:
    cad= “El nodo no tiene relacion con otro”
    return cad

    import ClaseVertice

    CV = ClaseVertice

    class Grafo:
    def __init__(self):
    super(Grafo, self).__init__()
    self.__listaVertices = []

    # Creamos una nuevo objeto vertice
    def insertarVertice(self, name):
    comprobante=True
    if len(self.__listaVertices)==0:
    nuevoVertice = CV.Vertice(name)
    self.__listaVertices.append(nuevoVertice)
    else:
    for i in self.__listaVertices:
    if i.getVertice() == name:
    comprobante= False
    if (comprobante==True):
    nuevoVertice = CV.Vertice(name)
    self.__listaVertices.append(nuevoVertice)

    #print(nuevoVertice)

    # Creamos una relacion entre los vertices
    def insertarArista(self, verticeA, verticeB,peso):
    for i in self.__listaVertices:
    if i.getVertice() == verticeA:
    for e in self.__listaVertices:
    if e.getVertice() == verticeB:
    i.insertarVecino(verticeB)
    i.AgregarArista(verticeA,verticeB,peso)

    # Eliminamos un objeto de la listaVertices
    def eliminarVertice(self, verticeA):
    for i in self.__listaVertices:
    if i.getVertice() == verticeA:
    self.__listaVertices.remove(i)

    # Mostrar las relaciones de un vertice
    def verticeEnlazadoA(self, verticeA):
    for i in self.__listaVertices:
    if i.getVertice() == verticeA:
    return i.getElementConect()

    def __str__(self):
    for elemento in self.listaVertices:
    print(elemento)
    “””
    return str([0 for x in self.listaVertices])
    “””

    def showVertices(self):
    if len(self.__listaVertices) > 0:
    cad = “”
    for elemento in self.__listaVertices:
    cad += str(elemento) + ” ”
    return cad
    else:
    print(“El nodo no tiene relacion”)

    “””

    def main():
    g = Grafo()
    for i in range(10,15):
    g.insertarVertice(i)

    g.insertarArista(0,4)
    g.insertarArista(1,3)
    g.insertarArista(2,2)
    g.insertarArista(3,1)
    g.insertarArista(4,0)
    g.insertarArista(10,11)
    g.insertarArista(10,12)
    g.insertarArista(10,20)
    print(g.showVertices())
    print(g.verticeEnlazadoA(10))
    g.eliminarVertice(14)
    print(g.showVertices())

    # g.insertarArista(a,b)

    main()
    “””

  2. class Grafo:

    # TIPO =1 => GRAFO DIRIGIDO
    # TIPO =2 => GRAFO NO DIRIGIDO
    def __init__(self,tipo):
    self.vertices=[]
    self.adyascentes=[]
    self.tipo=tipo

    def addVertice(self,v):
    if not self.existeVertice(v):
    self.vertices.append(v)
    listaAdyV=[]
    self.adyascentes.append(listaAdyV)
    else:
    print ‘el vertice ya existe’

    def existeVertice(self,vertice):
    return (vertice in self.vertices)

    def addArista(self,vOrg,vDest,peso):
    if (not self.existeVertice(vOrg) or
    not self.existeVertice(vDest)):
    print ‘vertices no existentes’
    return

    if (self.existeArista(vOrg,vDest)):
    print ‘ya existe adyascencia entre los vert.’
    return

    posVOrg=self.vertices.index(vOrg)
    posVDest=self.vertices.index(vDest)
    listAdyVOrigen=self.adyascentes[posVOrg]
    listAdyVOrigen.append(posVDest)
    listAdyVOrigen.append(peso)
    if (self.tipo==2 and posVOrg!=posVDest):
    listAdyVDest=self.adyascentes[posVDest]
    listAdyVDest.append(posVOrg)
    listAdyVDest.append(peso)

    def deletArista(self, vOrg, vDest):
    posVOrg=self.vertices.index(vOrg)
    posVDest=self.vertices.index(vDest)
    listAdyVOrigen=self.adyascentes[posVOrg]
    c=0
    while (c<len(listAdyVOrigen)):
    if (listAdyVOrigen[c]==posVDest):
    listAdyVOrigen.pop(c)
    listAdyVOrigen.pop(c)
    c=c-2
    c=c+2
    if (self.tipo==2 and posVOrg!=posVDest):
    listAdyVDest=self.adyascentes[posVDest]
    c=0
    while (c<len(listAdyVDest)):
    if (listAdyVDest[c]==posVOrg):
    listAdyVDest.pop(c)
    listAdyVDest.pop(c)
    c=c-2
    c=c+2

    def deletVertice(self, Vert):
    posVert=self.vertices.index(Vert)
    iV=0
    while (iV<len(self.vertices)):
    c=0
    listAdy=self.adyascentes[iV]
    while (c<len(listAdy)):
    if (listAdy[c]==posVert):
    listAdy.pop(c)
    listAdy.pop(c)
    c=c-2
    c=c+2
    iV=iV+1
    self.adyascentes.pop(posVert)
    self.vertices.pop(posVert)

    def existeArista(self,a,b):
    posA=self.vertices.index(a)
    listAdyA=self.adyascentes[posA]
    return (b in listAdyA)

    def eliminarArista(self,v1,v2):
    if self.existeArista(v1,v2):
    posV1=self.vertices.index(v1)
    posV2=self.vertices.index(v2)
    listaAdyV1=self.adyascentes.get(posV1)
    p=listaAdyV1.index(posV2)
    del listAdyV1[p]
    if (self.tipo==2 and posV1!=posV2):
    listaAdyV2=self.adyascentes.get(posV2)
    p=listaAdyV2.index(posV1)
    del listaAdyV2[p]
    else:
    print 'no existe la arista entra v1 y v2'

    g=Grafo(1)
    g.addVertice("LPZ")
    g.addVertice("CCBA")
    g.addVertice("SCZ")
    g.addVertice("TAR")

    g.addArista("LPZ","SCZ",100)
    g.addArista("LPZ","TAR",200)
    g.addArista("CCBA","TAR",250)
    g.addArista("SCZ", "CCBA",100)

Deja un mensaje

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Desarrollado por © AraiCenter. Derechos Reservados.
Select your currency
USDDólar de los Estados Unidos (US)
X