All pastes #260153 Raw Edit

Miscellany

public text v1 · immutable
#260153 ·published 2006-11-28 01:46 UTC
rendered paste body
MAX_VAL=2**10
V=[]
E=[]
D=[]
P=[]
S=[]
VR=[]
DC=[0]
a = 0
n1= int(raw_input("ingrese el numero de vertices del grafo "))
for i in range (0,n1):
	vertice= str(raw_input('Nombre del vertice ' ))
	tupla = (vertice)
	V.append(tupla)
	D.append(MAX_VAL)
	P.append(' ')
print "Los vertices ingresados son:"
print V
n2= int(raw_input("ingrese el numero de arcos del grafo "))
for i in range (0,n2):
	inicial= str(raw_input('Nodo inicial: ' ))
	terminal=  str(raw_input('Nodo terminal: '))
	valor= int(raw_input('valor arista: '))
	tupla = (inicial,terminal,valor)
	E.append(tupla)	
print "El listado de aristas son: "
print E
def relajar(nodo):	
	peso = D[V.index(nodo)]
	for a in E[:]:
		if a[0] == nodo:
			print "Arco:"
			print a
			if a[1] not in S: 
				objetivo_indice = V.index(a[1])
				peso_actual = D[objetivo_indice]
				print objetivo_indice
				if peso_actual > peso + a[2]:
					D[objetivo_indice] = peso + a[2]
					P[objetivo_indice] = nodo 
					DC.append(D[objetivo_indice])
			E.remove(a)				
def extraer_barato():	
	print "Este es el costo minimo"
	print DC
	min_val = min(DC)
	DC.pop(DC.index(min_val))
	return D.index(min_val)	
def algo():
	while VR != []:
		nodo_a_considerar = V[extraer_barato()]
		print "Ahora el nodo a revisar es "+(nodo_a_considerar)
		VR.remove(nodo_a_considerar)
		S.append(nodo_a_considerar) 
		relajar(nodo_a_considerar)
	print "Este es el listado de valores de las rutas =",D
	print "P =",P
	

	
def init():
	VR[:]=V[:]
	DC[0] = D[0] = 0
def main():
	init()
	algo()

if __name__ == '__main__':
    main()