0% encontró este documento útil (0 votos)
26 vistas8 páginas

Tutorial de Flujo Máximo en Redes

c

Cargado por

Andres 05
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
26 vistas8 páginas

Tutorial de Flujo Máximo en Redes

c

Cargado por

Andres 05
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd

import tkinter as tk

import Furkerson as FK
import Procesos as pc
global ejemplo
ejemplo = [[0,7,6 ,0 ,7 ,9 ,4 ,1],
[0 ,0 ,3 ,1 ,0 ,2 ,0 ,3],
[0 ,0 ,0 ,3 ,3 ,2 ,6 ,0],
[0 ,0 ,0 ,0 ,9 ,3 ,5 ,0],
[0 ,0 ,0 ,0 ,0 ,8 ,2 ,0],
[0 ,0 ,0 ,0 ,0 ,0 ,0 ,8],
[0 ,0 ,0 ,0 ,0 ,0 ,0 ,9],
[0 ,0 ,1 ,0 ,7 ,0 ,0 ,0]]

def Resultado1():
Flujo = [Link](ejemplo,len(ejemplo))
[Link](Flujo)

def Resultado2():
Maximo, Flujo = [Link](ejemplo,0,2)
G = [Link](ejemplo,len(ejemplo),Flujo)
[Link](G)

def Tutorial1():
ventana = [Link]()
[Link]("Tutorial principal 1")
[Link]("500x550")
[Link](bg="lightblue")

Titulo = [Link](ventana, text="Como usar el programa", font= ("Helvetica",


16, "bold", "underline"))
[Link](pady=20)
[Link](bg="lightblue")
[Link](x=130,y=30)

Texto1 = [Link](ventana, text="Bienvenido a la solucion del grupo 1, en donde


podrás hallar fácilmente el flujo")
Texto2 = [Link](ventana, text="máximo de una red. A continuación se
detallaran los pasos para su uso:")

Texto3 = [Link](ventana, text="Paso 1: Generar matriz o cargar una", font=


("Helvetica", 16, "bold"))

Texto4 = [Link](ventana, text="Para generar una matriz, el usuario debe


insertar un numero del 8 al 16 en el espacio")
Texto5 = [Link](ventana, text="donde dice N° de nodos de la red y pulsar el
boton Generar Matriz. En caso se requiera")
Texto6 = [Link](ventana, text="cargar una matriz, esta debe estar en un
archivo .txt y cada valor debe ser entre 1 y 9.")
Texto7 = [Link](ventana,text="Si el proceso se realizo con éxito, el recuadro
blanco se rellenara con los valores.")

Texto8 = [Link](ventana,text="Paso 2: Visualizar la red", font= ("Helvetica",


16, "bold"))

Texto9 = [Link](ventana,text="Para visualizar la red, se deberá pulsar el


botón Mostrar red teniendo ya una matriz")
Texto10 = [Link](ventana,text="generada o cargada, caso contrario no pasará
nada. Si se realizó con éxito, esta se podrá")
Texto11 = [Link](ventana,text="visualizar correctamente.")
Texto12 = [Link](ventana,text="Para continuar con el tutorial, deberás pulsar
el botón Flujo max. y Como usar")

boton = [Link](ventana,text="Siguiente", command=Tutorial2)

[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)

[Link](x=30,y=90)
[Link](x=30,y=110)
[Link](x=30,y=150)
[Link](x=30,y=190)
[Link](x=30,y=210)
[Link](x=30,y=230)
[Link](x=30,y=250)
[Link](x=30,y=290)
[Link](x=30,y=330)
[Link](x=30,y=350)
[Link](x=30,y=370)
[Link](x=30,y=390)
[Link](x=430,y=500)

[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")

def Tutorial2():
ventana = [Link]()
[Link]("Tutorial Ford Furkerson")
[Link]("500x550")
[Link](bg="lightblue")

Titulo = [Link](ventana, text="Mostrando el flujo máximo", font=("Helvetica",


16, "bold", "underline"))
[Link](pady=20)
[Link](bg="lightblue")
[Link](x=130,y=30)

Texto1 = [Link](ventana, text="Una vez generada una matriz e interpretado su


flujo,")
Texto2 = [Link](ventana, text="el usuario podrá hallar el flujo máximo entre
2 nodos en este.")
Texto3 = [Link](ventana, text="Se deben seguir los siguientes pasos para que
se muestre correctamente:")

Texto4 = [Link](ventana, text="Paso 1: Seleccionar los nodos",


font=("Helvetica", 16, "bold"))

Texto5 = [Link](ventana,text="Se deben seleccionar 2 nodos para poder


realizar el proceso y después")
Texto6 = [Link](ventana,text="pulsar el boton mostrar max.")
Texto7 = [Link](ventana,text="En caso de que se seleccione un mismo nodo, no
se encuentre un camino o")
Texto8 = [Link](ventana,text="se inserte una opcion que no esta dentro del
rango de los nodos, el programa")
Texto9 = [Link](ventana, text="devolvera un error. ")

Texto10 = [Link](ventana,text="Paso 2: Visualizar la representación",


font=("Helvetica", 16, "bold"))

Texto11 = [Link](ventana,text="Si se realizó correctamente, se podrá


visualizar el flujo máximo total y una")
Texto12 = [Link](ventana,text="representación de este acompañada del flujo
usado en cada arista.")

[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)

[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")

[Link](x=30,y=90)
[Link](x=30,y=110)
[Link](x=30,y=130)
[Link](x=30,y=170)
[Link](x=30,y=210)
[Link](x=30,y=230)
[Link](x=30,y=250)
[Link](x=30,y=270)
[Link](x=30,y=290)
[Link](x=30,y=330)
[Link](x=30,y=370)
[Link](x=30,y=390)

def Paso_Paso1():
ventana = [Link]()
[Link]("Paso a Paso 1")
[Link]("500x550")
[Link](bg="lightblue")

Titulo = [Link](ventana, text="Encontrando el flujo máximo",


font=("Helvetica", 16, "bold", "underline"))
[Link](pady=20)
[Link](bg="lightblue")
[Link](x=130,y=30)

Texto1 = [Link](ventana, text="Esta seccion está dedicada a explicar el


algoritmo de Ford Furkerson")
Texto2 = [Link](ventana, text="y como se aplica a través de grafos. A
continuación se muestran los pasos:")

Sub_titulo1 = [Link](ventana,text="Paso 1: Interpretar una matriz a flujo",


font=("Helvetica", 16, "bold"))

Texto3 = [Link](ventana, text="Una matriz puede ser intepretada como un


flujo. Interpretemos esta:")

Var = [Link](ventana,text= " A B C D E F G H")


Mat1 = [Link](ventana,text="A 0 7 6 0 7 9 4 1")
Mat2 = [Link](ventana,text="B 0 0 3 1 0 2 0 3")
Mat3 = [Link](ventana,text="C 0 0 0 3 3 2 6 0")
Mat4 = [Link](ventana,text="D 0 0 0 0 9 3 5 0")
Mat5 = [Link](ventana,text="E 0 0 0 0 0 8 2 0")
Mat6 = [Link](ventana,text="F 0 0 0 0 0 0 0 8")
Mat7 = [Link](ventana,text="G 0 0 0 0 0 0 0 9")
Mat8 = [Link](ventana,text="H 0 0 1 0 7 0 0 0")

Texto4 = [Link](ventana,text="Interpretamos la matriz a flujo añadiendo


aristas a sus respectivos nodos.")
Texto5 = [Link](ventana,text="Si recordamos que 0 implica que no hay arista,
el resultado debe ser asi:")

Boton = [Link](ventana,text="Siguiente", command=Paso_Paso2)


[Link](pady=10)
[Link](x=430,y=500)

Resultado = [Link](ventana,text="Resultado",command=Resultado1)
[Link](pady=10)
[Link](x=200,y=450)

[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
Sub_titulo1.pack(pady=10)

[Link](x=30,y=90)
[Link](x=30,y=110)
Sub_titulo1.place(x=30,y=150)
[Link](x=30,y=190)
[Link](x=200,y=210)
[Link](x=200,y = 230)
[Link](x=200,y = 250)
[Link](x=200,y = 270)
[Link](x=200,y = 290)
[Link](x=200,y = 310)
[Link](x=200,y = 330)
[Link](x=200,y = 350)
[Link](x=200,y = 370)
[Link](x=30,y=400)
[Link](x=30,y=420)

[Link](background="lightblue")
Sub_titulo1.configure(background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")

def Paso_Paso2():
ventana = [Link]()
[Link]("Paso a Paso 2")
[Link]("550x800")
[Link](bg="lightblue")

Sub_titulo2 = [Link](ventana,text="Paso 2: Seleccionar 2 aristas",


font=("Helvetica", 16, "bold"))

Texto1 = [Link](ventana,text="Una vez obtenido el flujo seleccionamos 2


nodos, uno como punto de inicio")
Texto2 = [Link](ventana,text=" y otro como destino. A partir de aqui
empezamos a calcular todas las rutas")
Texto3 = [Link](ventana,text="desde el nodo de inicio al nodo de destino. En
este ejemplo vamos a")
Texto4 = [Link](ventana,text="estar usando el nodo A y C como nodos de inicio
y destino respectivamente.")

Sub_titulo3 = [Link](ventana,text="Paso 3: Calcular las rutas",


font=("Helvetica", 16, "bold"))

Texto5 = [Link](ventana,text="Recuerda que el camino del flujo máximo se basa


en")
Texto6 = [Link](ventana,text="utilizar las aristas que cuenten con mayor
capacidad para")
Texto7 = [Link](ventana,text="poder transportar mayor flujo de un nodo a
otro.")
Texto8 = [Link](ventana,text="Siguiendo con nuestro previo ejemplo, las rutas
serian asi:")

Etiquetas1 = [Link](ventana,text="[-,∞] [A,7] [B,3]")


Ruta1 = [Link](ventana,text=" A -> B -> C Flujo=3" )
Etiquetas2 = [Link](ventana,text="[-,∞] [A,6]")
Ruta2 = [Link](ventana,text=" A -> C Flujo=6")
Etiquetas3 = [Link](ventana,text="[-,∞] [A,1] [H,1]")
Ruta3 = [Link](ventana,text=" A -> H -> C Flujo=1")
#Imagen

Texto9 = [Link](ventana,text="Una vez no se pueda pasar más flujo por las


aristas al nodo destino, procedemos a sumar")
Texto10 = [Link](ventana,text="el flujo usado total y tendremos:")

Flow = [Link](ventana,text="|f|= 3+6+1 = 10")


Texto11 = [Link](ventana,text="Ahora actualizamos nuestra representación de
flujo y nos debe quedar asi:")

Boton = [Link](ventana,text="Flujo max.", command=Resultado2)


[Link](pady=10)
[Link](x=250,y=600)

Texto12 = [Link](ventana,text="Para comprobar de que hemos encontrado el


flujo maximo entre los 2 nodos podemos realizar")
Texto13 = [Link](ventana,text="un corte entre las aristas usadas. En este
caso vamos a usar las aristas [B,C], [A,C] y [H,C]")
Texto14 = [Link](ventana,text="Sumamos el flujo usado en cada arista
conformada en el corte y en caso sea igual al flujo")
Texto15 = [Link](ventana,text="encontrado, se confirma que realizamos el
proceso con éxito.")

[Link](pady=10)
Sub_titulo2.pack(pady=10)
Sub_titulo3.pack(pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)
[Link](pady=10)

Sub_titulo2.place(x=30,y=30)
[Link](x=30,y=70)
[Link](x=30,y=90)
[Link](x=30,y=110)
[Link](x=30,y=130)
Sub_titulo3.place(x=30,y=170)
[Link](x=30,y=210)
[Link](x=30,y=230)
[Link](x=30,y=250)
[Link](x=30,y=270)
[Link](x=30,y=310)
[Link](x=30,y=330)
[Link](x=30,y=360)
[Link](x=30,y=380)
[Link](x=30,y=410)
[Link](x=30,y=430)
[Link](x=30,y=470)
[Link](x=30,y=490)
[Link](x=30,y=530)
[Link](x=30,y=550)
[Link](x=30,y=660)
[Link](x=30,y=680)
[Link](x=30,y=700)
[Link](x=30,y=720)

[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
Sub_titulo2.configure(background="lightblue")
Sub_titulo3.configure(background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")
[Link](background="lightblue")

También podría gustarte