Fecha y hora actual: Jueves 17 Ene 2019 05:19
Índice del Foro

Foros de programación informática, diseño gráfico y Web

En esta comunidad intentaremos dar soporte de programación a todos los niveles, desde principiantes a profesionales de la informática, desarrollo de programas, programación web y mucho más.

necesito ayuda con el algoritmo de dijkstra en python y archivos txt

Responder al Tema

Índice del Foro > Python > necesito ayuda con el algoritmo de dijkstra en python y archivos txt

Autor Mensaje
mery



Registrado: 13 Dic 2018
Mensajes: 2

Mensaje Publicado: Jueves 13 Dic 2018 18:07

Título del mensaje: necesito ayuda con el algoritmo de dijkstra en python y archivos txt

Responder citando

hola.. necesito si me pueden ayudar soy estudiante de software y tengo el algoritmo con las variables en orto archivo pero en python funciona genial pero lo que necesito es que las variables esten en un archivo txt y que cuando este corriendo el algoritmo python agarre el archivo txt con las variables y las inculuya.
he tratado de hacerlo pero no me funciona. aqui les dejo el codigo y si me pueden ayudar se los agradeceria muchisimo.saludos

archivo = open("variables.txt","r")
archivo.read()

class Grafo(object):
def __init__(self):

self.relaciones = {}

def imprimir (elemento):
print elemento



def __str__(self):
return str(self.relaciones)

class Arista(object):
def __init__(self, elemento, peso):
self.elemento = elemento
self.peso = peso
def __str__(self):
return str(self.elemento) + str(self.peso)


def agregar(grafo, elemento):
grafo.relaciones.update({elemento:[]})

def relacionar(grafo, elemento1, elemento2, peso = 1):
relacionarUnilateral(grafo, elemento1, elemento2, peso)
relacionarUnilateral(grafo, elemento2, elemento1, peso)

def relacionarUnilateral(grafo, origen, destino, peso):
grafo.relaciones[origen].append(Arista(destino, peso))


def caminoMinimo(grafo, origen, destino):
etiquetas = {origen:(0,None)}
dijkstra(grafo, destino, etiquetas, [])
return construirCamino(etiquetas, origen, destino)

def construirCamino(etiquetas, origen, destino):
if(origen == destino):
return [origen]
return construirCamino(etiquetas, origen, anterior(etiquetas[destino])) + [destino]


def dijkstra(grafo, destino, etiquetas, procesados):
nodoActual = menorValorNoProcesado(etiquetas, procesados)
# print "-----------------------------"
# print "Nodo Actual:",nodoActual
# print "Procesados",procesados
# print "Etiquetas",etiquetas
if(nodoActual == destino):
return
procesados.append(nodoActual)
for vecino in vecinoNoProcesado(grafo, nodoActual, procesados):
generarEtiqueta(grafo, vecino, nodoActual, etiquetas)
dijkstra(grafo, destino, etiquetas, procesados)

def generarEtiqueta(grafo, nodo, anterior, etiquetas):
etiquetaNodoAnterior = etiquetas[anterior]
etiquetaPropuesta = peso(grafo, anterior, nodo) + acumulado(etiquetaNodoAnterior),anterior
if(not(etiquetas.has_key(nodo)) or acumulado(etiquetaPropuesta) < acumulado(etiquetas[nodo]) ):
etiquetas.update({nodo:etiquetaPropuesta})

def aristas(grafo, nodo):
return grafo.relaciones[nodo]

def vecinoNoProcesado(grafo, nodo, procesados):
aristasDeVecinosNoProcesados = filter(lambda x: not x in procesados, aristas(grafo,nodo))
return [arista.elemento for arista in aristasDeVecinosNoProcesados]


def peso (grafo, nodoOrigen, nodoDestino):
return reduce(lambda x,y: x if x.elemento == nodoDestino else y, grafo.relaciones[nodoOrigen]).peso

def acumulado(etiqueta):
return etiqueta[0]

def anterior(etiqueta):
return etiqueta[1]

def menorValorNoProcesado(etiquetas, procesados):
etiquetadosSinProcesar = filter(lambda (nodo,_):not nodo in procesados, etiquetas.iteritems())
return min(etiquetadosSinProcesar, key=lambda (_, (acum, __)): acum)[0]

================================================================================================================================================================================================
este es mi archivo en txt

a = "a"
b = "b"
c = "c"
d = "d"
e = "e"
f = "f"
g = "g"
h = "h"

grafo = Grafo()
agregar(grafo, a)
agregar(grafo, b)
agregar(grafo, c)
agregar(grafo, d)
agregar(grafo, e)
agregar(grafo, f)
agregar(grafo, g)
agregar(grafo, h)

relacionar(grafo, a, c, 1)
relacionar(grafo, a, b, 3)
relacionar(grafo, b, d, 1)
relacionar(grafo, b, g, 5)
relacionar(grafo, c, f, 5)
relacionar(grafo, c, d, 2)
relacionar(grafo, d, f, 2)
relacionar(grafo, d, e, 4)
relacionar(grafo, e, h, 1)
relacionar(grafo, e, g, 2)
relacionar(grafo, f, h, 3)

Volver arriba
Ver perfil del usuario Enviar mensaje privado
Responder al Tema
Mostrar mensajes anteriores:   
Ir a:  
Todas las horas están en GMT + 2 Horas

Temas relacionados

Tema Autor Foros Respuestas Publicado
El foro no contiene ningún mensaje nuevo

Ayuda creando página web

lamek HTML y CSS 1 Lunes 14 Ene 2019 08:10 Ver último mensaje
El foro no contiene ningún mensaje nuevo

AYUDA CON LOGEO Y BASE DE DATOS

gonzaloramirez PHP 1 Domingo 28 Oct 2018 03:29 Ver último mensaje
El foro no contiene ningún mensaje nuevo

No se utilizar func_get_args (). Necesito imple...

InfoTips PHP 0 Sábado 27 Oct 2018 13:36 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Ayuda en algoritmo de productos medios

Antony Python 1 Viernes 26 Oct 2018 06:27 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Necesito ayuda en este codigo en lenguaje c

EmmanuelTR9 C, C#, Visual C++ 0 Lunes 08 Oct 2018 18:38 Ver último mensaje
Panel de Control
No puede crear mensajes, No puede responder temas, No puede editar sus mensajes, No puede borrar sus mensajes, No puede votar en encuestas,