ruta minima

40
Ruta M´ ınima de longitud tres entre dos ertices dados para un grafo completo Martha Yareli Sandoval Sandoval Universidad Aut´onoma de Zacatecas Unidad Acad´ emica de Matem´ aticas Coautor: Jos´ e Manuel G´ omez Soto 27 de octubre de 2014 Martha Yareli Sandoval Sandoval Ruta M´ ınima de longitud tres entre dos v´ ertices dados

Upload: antonio-briceno

Post on 14-Dec-2015

287 views

Category:

Documents


3 download

DESCRIPTION

Teoría de Conjuntos

TRANSCRIPT

Page 1: ruta minima

Ruta Mınima de longitud tres entre dosvertices dados para un grafo completo

Martha Yareli Sandoval Sandoval

Universidad Autonoma de ZacatecasUnidad Academica de Matematicas

Coautor: Jose Manuel Gomez Soto27 de octubre de 2014

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo

Page 2: ruta minima

Introduccion

Es muy comun entre nuestra vida diaria hablar de caminos o rutasmas cortas entre un lugar y otro, ası como siempre se busca hacerel menor tiempo, o el gasto mınimo posible para viajar de un lugara otro. Este es solo un ejemplo de los muchos que pueden existir altratar de elegir la opcion mas conveniente para cierta situacion. Espor ello que uno de los problemas mas importantes es el problemade la ruta mas corta o ruta mınima.

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo

Page 3: ruta minima

El objetivo de este trabajo es pues ilustrar cual serıa la ruta mınimaentre dos lugares, exigiendole que antes de llegar al destino paseexactamente por dos lugares mas, aparte del lugar de donde partio.Esto se hara haciendo uso del programa de Mathematica.

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo

Page 4: ruta minima

Definiciones Elementales

Algunas definiciones importantes para la realizacion del programason:Definicion 1. Un grafo G se define como un par ordenado deconjuntos,(V ,E ), donde V es un conjunto cuyos elementos sondenominados vertices o nodos y E es un subconjunto de V × Vque reciben el nombre de aristas o arcos.Si V = {v1, v2, v3, ..., vn}, los elementos de E se representan de laforma {vi , vj} donde i 6= j . Los elementos de una arista o arco sedenominan extremos de dicha arista.Un ejemplo es la siguiente figura.

Figura: Un ejemplo de un grafo

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo

Page 5: ruta minima

Definicion 2. Un grafo no dirigido es un grafo G = (V ,E ) donde:1. V 6= ∅2. E es un conjunto de pares no ordenados de elementos de V . Unpar no ordenado es un conjunto de la forma {a, b}, de manera que{a, b}={b, a}.Por ejemplo.

Figura: Un ejemplo de un grafo no dirigido

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo

Page 6: ruta minima

Definicion 3. Sea G un grafo y v ∈ V . Se define el grado de vcomo el numero de aristas de las cuales es extremo v. El grado dev se denota por grado(v).Ası pues en el ejemplo de la figura siguiente el grado del vertice 3es 3, esto es grad(3)=3

Figura: Ejemplo para ilustrar el grado de un vertice

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo

Page 7: ruta minima

Definicion 4. Sea G un grafo, con | V |= n (| V | es el numero devertices de un grafo). Se dice que G es un grafo completo sigrado(v) = n − 1 para todo v ∈ V . El grafo completo con n

vertices se denota por Kn. Tiene n(n−1)2 aristas.

La figura siguiente es un ejemplo de grafo completo (K5)

Figura: Un ejemplo de un grafo completo (K5)

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo

Page 8: ruta minima

Definicion 5. Sea G (V ,E ) un grafo. Una ruta es cualquiersecuencia de nodos conectados por las aristas. O bien, una ruta enel grafo G es una sucesion en la que aparecen de forma alternativaelementos de V y de E de la forma v0, e1, v1, e2, v2, ..., vn−1, en, vncon vi ∈ V para i = 0, 1, ..., n y ej ∈ E para j=1,2,...,n. y dondevi−1 es adyacente con vi , mediante la arista ei .Por ejemplo una ruta para el grafo (K5)(mostrado en la figuraanterior) serıa {{1, 2}, {2, 3}, {3, 4}, {4, 5}} que es una ruta para irdel vertice 1 al vertice 5.

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo

Page 9: ruta minima

Definicion 6. El numero de aristas que componen una ruta sedenomina longitud de dicha ruta.Para el ejemplo de la definicion 5 la longitud de la ruta es 4.

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo

Page 10: ruta minima

Definicion 7. El peso de una arista, es el valor asociado a dichaarista.Por ejemplo, para la figura siguiente el peso de la arista {1, 2} es17.

Figura: Un ejemplo de una arista con peso

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo

Page 11: ruta minima

Definicion 8.Un grafo ponderado es aquel que asocia un valor opeso a cada arista en el grafo.La figura siguiente es un ejemplo de grafo ponderado.

Figura: Un ejemplo de un grafo ponderado

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo

Page 12: ruta minima

Definicion 9. El peso de una ruta en un grafo con pesos es lasuma de los pesos de todas las aristas que componen dicha ruta.Ası pues, para la ruta {{1,4},{4,2},{2,3}} del grafo anterior(mostrado en la definicion 8), obtenemos que su peso es11 + 68 + 22 = 101.

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo

Page 13: ruta minima

Definicion 10. En un grafo ponderado llamamos ruta mas corta oruta mınima entre dos vertices dados, al camino de peso mınimoentre dichos vertices.Por ejemplo, para los vertices 1 y 3 del grafo mostrado en ladefinicion 8, la ruta mınima serıa {{1,4},{4,3}} con peso igual a36, pero si queremos una ruta de cierta longitud, por ejemplo delongitud 3, la ruta mınima serıa {{1,4},{4,2},{2,3}}, ya que estaes la que tiene el peso mınimo.

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo

Page 14: ruta minima

Descripcion del Programa

El planteamiento inicial por el que surgio este trabajo es elsiguiente:Dado K10 con el conjunto de vertices V={v1,v2,v3,...,v10}. Escribaun programa que tome como entradas los pesos de las aristas deK10 y encuentre una ruta de longitud 3 de los pesos mas pequenosposibles que una un par de vertices dados.Pero se busco que el programa no solo funcionara para el grafo K10

sino para cualquier grafo completo.

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo

Page 15: ruta minima

El programa recibira como entrada: la lista de los pesos de formaordenada (es decir que el primer elemento de la lista le correspondaal peso de la arista {1,2}, el segundo al peso de la arista {1,3} yası sucesivamente); un n, que indica el grado del grafo Kn deseado;el vertice inicial; el vertice final (es decir el par de vertices para loscuales queremos obtener la ruta mınima); la frase”quieroverticeso ”quieroaristas, segun lo quiera el usuario(si quiereque la ruta mınima le de con los vertices, tendra que poner”quierovertices”, pero si quiere que la ruta mınima se la de con lasaristas, tendra que poner ”quieroaristas”); y finalmente el color conel que el usuario quiera que se dibuje la ruta mınima.Y el programa dara como salida la ruta de longitud tres que una unpar de vertices dados, la cual tenga los pesos mas pequenosposibles, es decir, que esa ruta sea la ruta de peso mınimo.

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo

Page 16: ruta minima

Codigo Fuente

Matrizdeadyacenia[n_] :=

ReplacePart[Table[Table[1, {i, 1, n}], {j, 1, n}],

Table[{i, i} -> 0, {i, 1, n}]];

ListaAristas[mat_] :=

Select[Flatten[

Table[If[mat[[i]][[j]] == 1 && i > j, {i, j}, {}],

{i, 1, Length[mat]}, {j, 1, Length[mat[[1]]]}], 1],

Not[SameQ[#, {}]] &];

HayInformacionQ[renglon_] := Which[

Length[renglon] == 0, False, First[renglon] > 0, True,

True, HayInformacionQ[Rest[renglon]]];

ListaVertices[mat_] :=

Flatten[Position[HayInformacionQ[#] & /@ mat, True]];

SinDuplicados[candidato_] :=

Length[Union[candidato]] == Length[candidato];

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo

Page 17: ruta minima

MiPick[lista1_, lista2_, a_] :=

Which[lista1 == {}, {}, lista2 == {}, {},

First[lista2] == a, Join[{First[lista1]},

MiPick[Rest[lista1], Rest[lista2], a]], True,

MiPick[Rest[lista1], Rest[lista2], a]];

PosiblesRutas[listavertices_, veri_, verf_] :=

Module[{TodaslasRutasdelong3 = {},

Todaslasrutasdelong3converiyverf = {}, ListaFV = {}},

TodaslasRutasdelong3 = Tuples[listavertices, 4];

Todaslasrutasdelong3converiyverf =

Select[TodaslasRutasdelong3,

First[#] == veri && Last[#] == verf &];

ListaFV=SinDuplicados[#]& /@

Todaslasrutasdelong3converiyverf;

MiPick[Todaslasrutasdelong3converiyverf, ListaFV, True]

];

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo

Page 18: ruta minima

Rutasconpesos[listapesosdearistasord_,

listaaristasordenadas_, posiblesrutas_] :=

Module[{rutasconaristas = {}, rutasconaristassort = {},

listasdepesos = {}, listasdepesosFlatten = {}},

rutasconaristas = Partition[#, 2, 1] & /@ posiblesrutas;

rutasconaristassort =

Partition[Sort[#] & /@ Flatten[rutasconaristas, 1], 3];

listasdepesos =

MiPick[listapesosdearistasord,

listaaristasordenadas, #] & /@ # & /@ rutasconaristassort;

listasdepesosFlatten = Flatten[#] & /@ listasdepesos

];

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo

Page 19: ruta minima

SumaPesos[lista_] :=

If[Length[lista] == 0, 0, First[lista] +

SumaPesos[Rest[lista]]];

Minimoaux[e_, lista_] := Which[

Length[lista] == 0, e, e < First[lista],

Minimoaux[e, Rest[lista]],

True, Minimoaux[First[lista], Rest[lista]]];

Minimoo[lista_] := Minimoaux[First[lista],

Rest[lista]];

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo

Page 20: ruta minima

RutaMinima[listapesosdearistasord_,

listaaristasordenadas_, posiblesrutas_] :=

Module[{Rutasconpesoss = {}, ListaPesosderutas = {},

Pesominimo = {}},

Rutasconpesoss =

Rutasconpesos[listapesosdearistasord,

listaaristasordenadas, posiblesrutas];

ListaPesosderutas = SumaPesos[#] & /@ Rutasconpesoss;

Pesominimo = Minimoo[ListaPesosderutas];

MiPick[posiblesrutas, ListaPesosderutas, Pesominimo]

];

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo

Page 21: ruta minima

cambiarformaaristas[lista_] :=

First[lista] \[UndirectedEdge] Last[lista];

Asiganarpesosaaristas[listaaristas_, listapesos_] :=

MapThread[f, {listaaristas, listapesos}];

f[a_, b_] := a -> b;

MiUnion[lista_] :=

Which[Length[lista] == 0, {}, Length[lista] == 1, lista,

First[lista] == First[Rest[lista]],

Join[{First[lista]}, MiUnion[Rest[Rest[lista]]]], True,

Join[{First[lista]}, MiUnion[Rest[lista]]]];

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo

Page 22: ruta minima

Grafica2[matA_, rutmin_, listapesosdearistasord_,

colorderuta_] :=

Module[{ListaAristasOrdenadas = {}, NuevasAristas = {},

NuevosPesos = {}, Rutaconaristas = {},

NuevaRutaminimaantes = {}, NuevaRutaminimafinal = {}},

ListaAristasOrdenadas = Sort[Sort[#] & /@

ListaAristas[matA]];

NuevasAristas = cambiarformaaristas[#] & /@

ListaAristasOrdenadas;

NuevosPesos =

Asiganarpesosaaristas[NuevasAristas,

listapesosdearistasord];

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo

Page 23: ruta minima

Rutaconaristas = Partition[MiUnion[

Flatten[rutmin]], 2, 1];

NuevaRutaminimaantes = cambiarformaaristas[#] & /@

Rutaconaristas;

NuevaRutaminimafinal = Sort[#] & /@

NuevaRutaminimaantes;

AdjacencyGraph[matA, VertexLabels -> "Name",

ImagePadding -> 10, VertexStyle -> Purple,

EdgeStyle -> (# -> colorderuta & /@

NuevaRutaminimafinal),

EdgeLabels -> NuevosPesos]

];

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo

Page 24: ruta minima

DameRutaMinimadeLong3[listapesosdearistasord_, n_,

veri_, verf_, quieroaristasovertices_,

colorderuta_] :=

Module[{ListaAristasOrdenadas = {}, Listavertices = {},

Posiblesrutas = {}, rutmin = {}, rutas = {}},

ListaAristasOrdenadas = Sort[Sort[#] & /@

ListaAristas[Matrizdeadyacenia[n]]]];

Listavertices = ListaVertices[Matrizdeadyacenia[n]];

Posiblesrutas = PosiblesRutas[Listavertices,

veri, verf];

rutmin =

Which[quieroaristasovertices == "quierovertices",

RutaMinima[listapesosdearistasord,

ListaAristasOrdenadas, Posiblesrutas],

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo

Page 25: ruta minima

quieroaristasovertices == "quieroaristas",

Partition[#, 2, 1] & /@

(RutaMinima[listapesosdearistasord,

ListaAristasOrdenadas, Posiblesrutas]), True, {}];

Print[rutmin];

rutas = Grafica2[Matrizdeadyacenia[n], #,

listapesosdearistasord,

colorderuta] & /@ rutmin;

Manipulate[rutas[[i]], {i, 1, Length[rutas], 1}]

];

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo

Page 26: ruta minima

Ejemplos

DameRutaMinimadeLong3[{13, 17, 22, 31, 27, 15, 39, 40,

31, 30, 25, 12, 19, 23, 37, 28, 60, 72, 55, 53, 47,

77, 44, 37, 36, 21, 11, 67, 87, 19, 28, 18, 45, 71,

81, 41, 33, 48, 52, 61, 62, 26, 59, 24, 42}, 10,

1, 9,"quieroaristas", Red]

{{{1,7},{7,2},{2,9}}}

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo

Page 27: ruta minima

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo

Page 28: ruta minima

DameRutaMinimadeLong3[{13, 12, 72, 56, 92, 17, 127, 78,

29, 11, 112, 60, 39, 128, 22, 47, 31, 22, 56, 122, 27,

113, 8, 34, 69, 15, 27, 126, 12, 79, 82, 9, 57, 99, 15,

48, 61, 100, 39, 40, 31, 87, 16, 111, 93, 129, 49, 30,70,

30, 25, 114, 12, 80, 21, 23, 60, 130, 19, 91, 121, 13,58,

35, 53, 62, 101, 23, 61, 76, 49, 37, 28, 83, 60, 81, 72,

125, 68, 55, 90, 46, 102,53, 40, 94, 47, 115, 77, 10,110,

36, 59, 44, 75, 81, 63, 31, 17, 82, 123, 103, 37, 50, 89,

36, 67, 24, 20, 77, 104, 21, 11, 67, 71, 87, 14, 45, 74,

84, 19, 83, 53, 116, 41, 95, 28, 105, 64, 18, 78, 45, 71,

37, 51, 81, 108, 41, 32, 86, 107, 28, 85, 69, 26, 106,84,

124, 73, 96, 86, 33, 48, 18, 44, 79, 25, 109, 55, 65, 52,

117, 87, 19, 42, 11, 118, 97,80, 61, 62, 119, 85, 26, 52,

15, 38, 8, 59, 24,42, 120, 33, 12, 54, 88, 66, 43, 98,27},

20, 16, 17, "quierovertices", Magenta]

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo

Page 29: ruta minima

{{16,15,13,17}}

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo

Page 30: ruta minima

DameRutaMinimadeLong3[{143, 77, 612, 917, 811, 719, 88,

626, 523, 329, 410, 314, 219, 126, 225, 345, 75, 93, 424,

521, 615, 713, 85, 79, 829, 918, 230, 323, 419, 87, 521,

629, 712, 92, 95, 812}, 9, 3, 7, "quieroaristas", Green]

{{{3,1},{1,8},{8,7}},{{3,5},{5,9},{9,7}},

{{3,6},{6,4},{4,7}}}

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo

Page 31: ruta minima

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo

Page 32: ruta minima

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo

Page 33: ruta minima

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo

Page 34: ruta minima

DameRutaMinimadeLong3[{21, 3, 7, 4, 32, 9, 2, 11, 14,

17}, 5, 5, 2, "quierovertices", Cyan]

{{5,1,4,2}}

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo

Page 35: ruta minima

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo

Page 36: ruta minima

Resultados

Con la ayuda del programa de Mathematica se logro construir unprograma que nos ayude a encontrar la ruta mınima de longitudtres entre dos vertices dados para un grafo completo.Por lo quepodemos decir que se logro el objetivo planteado al inicio de estetrabajo. Ası mismo podemos decir que no solamente fue posiblehacer el programa para el grafo K10 sino que fue posible hacer quefuncione para cualquier grafo.

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo

Page 37: ruta minima

Conclusiones

Podemos concluir que con la ayuda del programa de Mathematicapodemos hacer un programa de casi cualquier cosa que podamosimaginar, aclaro que no con esto quiero decir que sea facil hacerlo,sino mas bien que es posible. Mathematica es una herramientamuy util, ası como tambien lo es el poder programar, debido a quecon un programa podemos ahorrarnos mucho tiempo en hacercalculos o procedimientos muy largos y tediosos.

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo

Page 38: ruta minima

Trabajos futuros

En trabajos futuros se puede buscar realizar un programa que nosde la ruta mınima pero de la longitud que el usuario decida, esdecir que el usuario pueda decidir de que longitud quiere la rutamınima, (en las actividades comunes, serıa que el usuario decidapor cuantas carreteras quiere pasar para ir de un lugar a otro).Otro trabajo que se podrıa realizar serıa que se haga un programa,el cual de todas las rutas de cualquier longitud que se puedantener, me de la ruta mınima.

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo

Page 39: ruta minima

Bibliografıa

Web-Seite:http://www.ptolomeo.unam.mx:8080/xmlui/bitstream/handle/132.248.52.100/539/A4.

pdf?sequence=4

Web-Seite:http://www.ual.es/~btorreci/tr-grafos.pdf

Web-Seite: http://www.uam.es/personal_pdi/ciencias/gallardo/capitulo8a.pdf

Web-Seite:http://www.slideshare.net/lcahuich/20-grafos

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo

Page 40: ruta minima

Web-Seite: http://es.wikipedia.org/wiki/Anexo:Glosario_de_teor

Web-Seite:http://blogs.ua.es/matematicadiscrecion/2011/01/

06/tema-7-grafos-ponderados-sesion-21122010/

Web-Seite: http://es.wikipedia.org/wiki/Grafo

Web-Seite:http://es.wikipedia.org/wiki/Matriz_de_adyacencia

Martha Yareli Sandoval Sandoval Ruta Mınima de longitud tres entre dos vertices dados para un grafo completo