Vous êtes sur la page 1sur 32

GRAFO BOGOTA GIRARDOT FUNDAMENTOS DE LA INTELIGENCIA ARTIFICIAL

CRISTHIAM CAMILO MONTAEZ 1026253799 RODRIGO RODRIGUEZ 80.900.933

DOCENTE LUIS CAMARGO

COMPENSAR UNIPANAMERICANA BOGOTA D.C. 2013

PROBLEMA Iniciando en la ciudad de Bogot se debe generar y visualizar la distancia y ruta ms corta para viajar a la ciudad de Girardot.

ANALISIS ANALISIS DEL PROBLEMA:

A travs de una estructura lineal de datos expresada en un grafo se pretende crear una aplicacin que permita evaluar el recorrido de Bogot hacia Girardot teniendo en cuenta la distancia ms corta definiendo las ciudades o municipios en nodos con la posibilidad de la adicin o sustraccin de estos. Cuando se desea ir de un punto a otro por el camino ms corto en busca de optimizar los recursos, es necesario resolver este interrogante de forma eficiente, lo que requiere determinar las distancias ms cortas y las rutas entre los diferentes puntos de ella.

En el grafo se puede ver que la distancia entre 1 y 6 es 1 debido a que puede recorrerse de forma mnima tanto por 1-2-6 como por 1-3-6. De la misma forma la distancia entre 1 y 12 es 2 de cualquier forma

RESUMEN:

Definiciones Bsicas Un grafo consiste de un conjunto V de vrtices (o nodos) y un conjunto E de arcos que conectan a esos vrtices.

Ejemplos: Adems de esto, los grafos pueden ser extendidos mediante la adicin de rtulos (labels) a los arcos. Estos rtulos pueden representar costos, longitudes, distancias, pesos, etc.

Representaciones de grafos en memoria Matriz de adyacencia Un grafo se puede representar mediante una matriz A tal que A[i,j]=1 si hay un arco que conecta vi con vj, y 0 si no. La matriz de adyacencia de un grafo no dirigido es simtrica. Una matriz de adyacencia permite determinar si dos vrtices estn conectados o no en tiempo constante, pero requieren O(n2) bits de memoria. Esto puede ser demasiado para muchos grafos que aparecen en aplicaciones reales, en donde |E|<<n2. Otro problema es que se requiere tiempo O(n) para encontrar la lista de vecinos de un vrtice dado. Listas de adyacencia Esta representacin consiste en almacenar, para cada nodo, la lista de los nodos adyacentes a l. Para el segundo ejemplo anterior, v1: v2 v2: v2, v3 v3: v1, v4 v4: v3 Esto utiliza espacio O(|E|) y permite acceso eficiente a los vecinos, pero no hay acceso aleatorio a los arcos. Caminos, ciclos y rboles Un camino es una secuencia de arcos en que el extremo final de cada arco coincide con el extremo inicial del siguiente en la secuencia. Un camino es simple si no se repiten vrtices, excepto posiblemente el primero y el ltimo. Un ciclo es un camino simple y cerrado. Un grafo es conexo si desde cualquier vrtice existe un camino hasta cualquier otro vrtice del grafo. Se dice que un grafo no dirigido es un rbol si es conexo y acclico. Recorridos de Grafos

En muchas aplicaciones es necesario visitar todos los vrtices del grafo a partir de un nodo dado. Algunas aplicaciones son: Encontrar ciclos Encontrar componentes conexas Encontrar rboles cobertores

Hay dos enfoques bsicos: Recorrido (o bsqueda) en profundidad (depth-first search): La idea es alejarse lo ms posible del nodo inicial (sin repetir nodos), luego devolverse un paso e intentar lo mismo por otro camino. Recorrido (o bsqueda) en amplitud (breadth-first search): Se visita a todos los vecinos directos del nodo inicial, luego a los vecinos de los vecinos, etc. Recorrido en Profundidad (DFS) A medida que recorremos el grafo, iremos numerando correlativamente los nodos encontrados (1,2,...). Suponemos que todos estos nmeros son cero inicialmente, y utilizamos un contador global n, tambin inicializado en cero. Recorrido en amplitud (BFS) La implementacin es similar a la de DFS, pero se utiliza una cola en lugar de una pila. El resultado es que los nodos se visitan en orden creciente en relacin a su distancia al nodo origen. rboles cobertores Dado un grafo G no dirigido, conexo, se dice que un subgrafo T de G es un rbol cobertor si es un rbol y contiene el mismo conjunto de nodos que G.

Todo recorrido de un grafo conexo genera un rbol cobertor, consistente del conjunto de los arcos utilizados para llegar por primera vez a cada nodo. Para un grafo dado pueden existir muchos rboles cobertores. Si introducimos un concepto de "peso" (o "costo") sobre los arcos, es interesante tratar de encontrar un rbol cobertor que tenga costo mnimo. rbol Cobertor Mnimo En esta seccin veremos dos algoritmos para encontrar un rbol cobertor mnimo para un grafo no dirigido dado, conexo y con costos asociados a los arcos. El costo de un rbol es la suma de los costos de sus arcos. Algoritmo de Kruskal Este es un algoritmo del tipo "avaro" ("greedy"). Comienza inicialmente con un grafo que contiene slo los nodos del grafo original, sin arcos. Luego, en cada iteracin, se agrega al grafo el arco ms barato que no introduzca un ciclo. El proceso termina cuando el grafo est completamente conectado. En general, la estrategia "avara" no garantiza que se encuentre un ptimo global, porque es un mtodo "miope", que slo optimiza las decisiones de corto plazo. Por otra parte, a menudo este tipo de mtodos proveen buenas heursticas, que se acercan al ptimo global. En este caso, afortunadamente, se puede demostrar que el mtodo "avaro" logra siempre encontrar el ptimo global, por lo cual un rbol cobertor encontrado por esta va est garantizado que es un rbol cobertor mnimo. Una forma de ver este algoritmo es diciendo que al principio cada nodo constituye su propia componente conexa, aislado de todos los dems nodos. Durante el proceso de construccin del rbol, se agrega un arco slo si sus dos extremos se encuentran en componentes conexas distintas, y luego de agregarlo esas dos componentes conexas se fusionan en una sola. Para la operatoria con componentes conexas supondremos que cada componente conexa se identifica mediante un representante cannico (el "lider" del conjunto), y que se dispone de las siguientes operaciones: Union(a,b): Se fusionan las componentes cannicas representadas por a y b, respectivamente. Find(x): Encuentra al representante cannico de la componente conexa a la cual pertenece x. Es posible implementar Union-Find de modo que las operaciones Union demoran tiempo constante, y las operaciones Find un tiempo casi constante. Ms precisamente, el costo amortizado de un Find est acotado por log* n, donde log* n es una funcin definida como el nmero de veces que es necesario tomar el logaritmo de un nmero para que el resultado sea menor que 1. Por lo tanto, el costo total es O(m log m) o, lo que es lo mismo, O(m log n) (por

qu?). Ejemplo: La correctitud del algoritmo de Kruskal viene del siguiente lema: Lema Sea V' subconjunto propio de V, y sea e={v,w} un arco de costo mnimo tal que v est en V' y w est en V-V'. Entonces existe un rbol cobertor mnimo que incluye a e. Este lema permite muchas estrategias distintas para escoger los arcos del rbol. Veamos por ejemplo la siguiente: Algoritmo de Prim Comenzamos con el arco ms barato, y marcamos sus dos extremos como "alcanzables". Luego, a cada paso, intentamos extender nuestro conjunto de nodos alcanzables agregando el arco ms barato que tenga uno de sus extremos dentro del conjunto alcanzable y el otro fuera de l. De esta manera, el conjunto alcanzable se va extendiendo como una "mancha de aceite". Sea e={v,w} un arco de costo mnimo en E; Agregar e al rbol; A={v,w}; // conjunto alcanzable while(A!=V) { Encontrar el arco e={v,w} ms barato con v en A y w en V-A; Agregar e al rbol; Agregar w al conjunto alcanzable A; } Para implementar este algoritmo eficientemente, podemos mantener una tabla donde, para cada nodo de V-A, almacenamos el costo del arco ms barato que lo conecta al conjunto A. Estos costos pueden cambiar en cada iteracin. Si se organiza la tabla como una cola de prioridad, el tiempo total es O(m log n). Si se deja la tabla desordenada y se busca linealmente en cada iteracin, el costo es O(n2). Esto ltimo es mejor que lo anterior si el grafo es denso. Distancias Mnimas en un Grafo Dirigido En este problema los rtulos de los arcos se interpretan como distancias. La distancia (o largo) de un camino es la suma de los largos de los arcos que lo componen. El problema de encontrar los caminos ms cortos tiene dos variantes:

Caminos ms cortos desde un nodo "origen" Encontrar los n caminos ms cortos desde un nodo dado s hasta todos los nodos del grafo. Todos los caminos ms cortos Encontrar los n2 caminos ms cortos entre todos los pares de nodos (origen, destino). Esto se puede resolver resolviendo n veces el problema anterior, cambiando cada vez de nodo origen, pero puede ser ms eficiente encontrar todos los caminos de una sola vez.

Algoritmo de Dijkstra para los caminos ms cortos desde un nodo "origen" La idea del algoritmo es mantener un conjunto A de nodos "alcanzables" desde el nodo origen e ir extendiendo este conjunto en cada iteracin. Los nodos alcanzables son aquellos para los cuales ya se ha encontrado su camino ptimo desde el nodo origen. Para esos nodos su distancia ptima al origen es conocida. Inicialmente A={s}. Para los nodos que no estn en A se puede conocer el camino ptimo desde s que pasa slo por nodos de A. Esto es, caminos en que todos los nodos intermedios son nodos de A. Llamemos a esto su camino ptimo tentativo. En cada iteracin, el algoritmo encuentra el nodo que no est en A y cuyo camino ptimo tentativo tiene largo mnimo. Este nodo se agrega a A y su camino ptimo tentativo se convierte en su camino ptimo. Luego se actualizan los caminos ptimos tentativos para los dems nodos. Algoritmo de Floyd para todas las distancias ms cortas Para aplicar este algoritmo, los nodos se numeran arbitrariamente 1,2,...n. Al comenzar la iteracin k-sima se supone que una matriz D[i,j] contiene la distancia mnima entre i y j medida a travs de caminos que pasen slo por nodos intermedios de numeracin <k. Estas distancias se comparan con las que se obtendran si se pasara una vez por el nodo k, y si de esta manera se obtendra un camino ms corto entonces se prefiere este nuevo camino, de lo contrario nos quedamos con el nodo antiguo. Al terminar esta iteracin, las distancias calculadas ahora incluyen la posibilidad de pasar por nodos intermedios de numeracin <=k, con lo cual estamos listos para ir a la iteracin siguiente. Para inicializar la matriz de distancias, se utilizan las distancias obtenidas a travs de un arco directo entre los pares de nodos (o infinito si no existe tal arco). La distancia inicial entre un nodo y s mismo es cero. for(1<=i,j<=n)

D[i,j]=cost(i,j); // infinito si no hay arco entre i y j for(1<=i<=n) D[i,i]=0; for(k=1,...,n) for(1<=i,j<=n) D[i,j]=min(D[i,j], D[i,k]+D[k,j]); El tiempo total que demora este algoritmo es O(n3). Algoritmo de Warshall para cerradura transitiva Dada la matriz de adyacencia de un grafo (con D[i,j]=1 si hay un arco entre i y j, y 0 si no), resulta til calcular la matriz de conectividad, en que el casillero respectivo contiene un 1 si y slo si existe un camino (de largo >=0) entre i y j. Esta matriz se llama tambin la cerradura transitiva de la matriz original. La matriz de conectividad se puede construir de la siguiente manera: 1. Primero calcular la matriz de distancias mnimas usando Floyd. 2. Luego sustituir cada valor infinito por 0 y cada valor no infinito por 1. Mejor todava, podramos modificar el algoritmo de Floyd para que vaya calculando con ceros y unos directamente, usando las correspondencias siguientes: El resultado se denomina Algoritmo de Warshall: for(1<=i,j<=n) D[i,j]=adyacente(i,j); // 1 si existe, 0 si no for(1<=i<=n) D[i,i]=1; for(k=1,...,n) for(1<=i,j<=n) D[i,j]=D[i,j] or (D[i,k] and D[k,j]);

El vecino ms cercano (heurstica constructiva).

Esta heurstica se basa en la idea de moverse de una ciudad a la siguiente, de tal forma que, de todas las opciones, la ciudad elegida sea la ms cercana a donde se encuentra ubicado el agente viajero (figura ). Es una heurstica miope, ya que en una iteracin3 escoge la mejor opcin que tiene disponible, sin ver que esto puede obligarle a tomar malas decisiones posteriormente (Johnson et al., 2002).

DISEO 1. Selecciona un punto de partida 2. Para seleccionar la siguiente ciudad, se analiza todos los posibles destinos que an no se han visitado y se selecciona aquel que sea el ms cercano a la ciudad actual, ir a este destino en el siguiente paso. 3. Repetir el paso dos hasta que se haya llegado a la ciudad de Girardot 4. En cada ciudad se debe insertar la imagen con la ruta y distancia del siguiente destino.

DISEO DE GRAFO

MAPA CON MUNICIPIOS IDENTIFICADOS PARA EL GRAFO

MATRIZ DE ADYACENCIA

B 1 B M S L E G A S A V T F B T A M N R G 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 24 18 74 59 49 90 58 102 83 76 69 109 116 125 110 140 130 135

M S 2 3 24 18 26 26 49 51 59 41 50 32 65 66 58 40 78 78 83 65 76 58 69 51 109 72 91 92 101 101 111 92 140 123 130 112 119 118

L E G A 4 5 6 7 74 59 49 90 49 59 50 65 51 41 32 66 15 74 16 15 58 18 74 58 81 16 18 81 82 66 18 98 28 38 93 12 39 24 73 23 56 42 36 41 93 77 29 109 130 110 74 154 41 51 106 26 51 61 105 35 94 105 70 79 67 77 101 51 74 84 90 58 69 79 96 53

S 8 58 58 40 82 66 18 98 117 37 18 11 56 108 87 53 82 72 78

A 9 102 78 78 28 38 93 12 117 18 35 110 156 13 22 62 38 45 40

V 10 83 83 65 39 24 73 23 37 18 19 40 85 19 28 72 44 51 46

T 11 76 76 58 56 42 36 41 18 35 19 21 61 37 46 60 90 79 85

F 12 69 69 51 93 77 29 109 11 110 40 21 45 102 81 46 76 66 71

B 13 109 109 72 130 110 74 154 56 156 85 61 45 80 126 91 111 110 116

T 14 116 91 92 41 51 106 26 108 13 19 37 102 80 13 56 29 36 31

A 15 125 101 101 51 61 105 35 87 22 28 46 81 126 13

M 16 110 111 92 94 105 70 79 53 62 72 60 46 91 56 36

36 17 33 19 22 26 24 27 32

N 17 140 140 123 67 77 101 51 82 38 44 90 76 111 29 17 33

R 18 130 130 112 74 84 90 58 72 45 51 79 66 110 36 19 22 26 7

G 19 135 119 118 69 79 96 53 78 40 46 85 71 116 31 24 27 32 7

CODIGO FORM 1
Public Class Form1 'Dim distotal As Integer 'Dim distancias(19, 19) As Integer Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

distancias(1, distancias(1, distancias(1, distancias(1, distancias(1, distancias(1, distancias(1, distancias(1, distancias(1, distancias(1, distancias(1, distancias(1, distancias(1, distancias(1, distancias(1, distancias(1, distancias(1, distancias(1, distancias(1, distancias(2, distancias(2, distancias(2, distancias(2, distancias(2, distancias(2, distancias(2, distancias(2, distancias(2, distancias(2, distancias(2, distancias(2, distancias(2, distancias(2, distancias(2, distancias(2, distancias(2, distancias(2, distancias(2, distancias(3, distancias(3, distancias(3, distancias(3, distancias(3,

1) = 0 2) = 24 3) = 18 4) = 74 5) = 59 6) = 49 7) = 89 8) = 58 9) = 102 10) = 83 11) = 76 12) = 69 13) = 109 14) = 116 15) = 125 16) = 110 17) = 140 18) = 130 19) = 135 1) = 24 2) = 0 3) = 25 4) = 49 5) = 59 6) = 50 7) = 65 8) = 58 9) = 78 10) = 83 11) = 76 12) = 69 13) = 109 14) = 91 15) = 101 16) = 111 17) = 140 18) = 130 19) = 119 1) = 18 2) = 25 3) = 0 4) = 50 5) = 41

distancias(3, distancias(3, distancias(3, distancias(3, distancias(3, distancias(3, distancias(3, distancias(3, distancias(3, distancias(3, distancias(3, distancias(3, distancias(3, distancias(3, distancias(4, distancias(4, distancias(4, distancias(4, distancias(4, distancias(4, distancias(4, distancias(4, distancias(4, distancias(4, distancias(4, distancias(4, distancias(4, distancias(4, distancias(4, distancias(4, distancias(4, distancias(4, distancias(4, distancias(5, distancias(5, distancias(5, distancias(5, distancias(5, distancias(5, distancias(5, distancias(5, distancias(5, distancias(5, distancias(5, distancias(5, distancias(5, distancias(5, distancias(5, distancias(5, distancias(5, distancias(5, distancias(5, distancias(6, distancias(6, distancias(6, distancias(6, distancias(6, distancias(6,

6) = 32 7) = 66 8) = 40 9) = 78 10) = 65 11) = 58 12) = 51 13) = 92 14) = 92 15) = 101 16) = 92 17) = 123 18) = 112 19) = 118 1) = 74 2) = 49 3) = 50 4) = 0 5) = 19 6) = 74 7) = 15 8) = 82 9) = 28 10) = 39 11) = 56 12) = 93 13) = 130 14) = 41 15) = 51 16) = 94 17) = 67 18) = 74 19) = 69 1) = 59 2) = 59 3) = 41 4) = 14 5) = 0 6) = 58 7) = 18 8) = 66 9) = 38 10) = 24 11) = 42 12) = 77 13) = 110 14) = 51 15) = 61 16) = 105 17) = 77 18) = 84 19) = 79 1) = 49 2) = 50 3) = 32 4) = 74 5) = 58 6) = 0

distancias(6, distancias(6, distancias(6, distancias(6, distancias(6, distancias(6, distancias(6, distancias(6, distancias(6, distancias(6, distancias(6, distancias(6, distancias(6, distancias(7, distancias(7, distancias(7, distancias(7, distancias(7, distancias(7, distancias(7, distancias(7, distancias(7, distancias(7, distancias(7, distancias(7, distancias(7, distancias(7, distancias(7, distancias(7, distancias(7, distancias(7, distancias(7, distancias(8, distancias(8, distancias(8, distancias(8, distancias(8, distancias(8, distancias(8, distancias(8, distancias(8, distancias(8, distancias(8, distancias(8, distancias(8, distancias(8, distancias(8, distancias(8, distancias(8, distancias(8, distancias(8, distancias(9, distancias(9, distancias(9, distancias(9, distancias(9, distancias(9, distancias(9,

7) = 80 8) = 18 9) = 93 10) = 73 11) = 36 12) = 29 13) = 74 14) = 106 15) = 105 16) = 70 17) = 101 18) = 90 19) = 96 1) = 89 2) = 65 3) = 66 4) = 15 5) = 18 6) = 89 7) = 0 8) = 98 9) = 12 10) = 23 11) = 41 12) = 109 13) = 154 14) = 26 15) = 35 16) = 79 17) = 51 18) = 58 19) = 53 1) = 58 2) = 58 3) = 40 4) = 82 5) = 66 6) = 18 7) = 98 8) = 0 9) = 117 10) = 37 11) = 18 12) = 11 13) = 56 14) = 108 15) = 87 16) = 53 17) = 82 18) = 72 19) = 78 1) = 102 2) = 78 3) = 78 4) = 28 5) = 38 6) = 93 7) = 12

distancias(9, 8) = 117 distancias(9, 9) = 0 distancias(9, 10) = 18 distancias(9, 11) = 35 distancias(9, 12) = 110 distancias(9, 13) = 156 distancias(9, 14) = 13 distancias(9, 15) = 22 distancias(9, 16) = 62 distancias(9, 17) = 38 distancias(9, 18) = 45 distancias(9, 19) = 40 distancias(10, 1) = 83 distancias(10, 2) = 83 distancias(10, 3) = 65 distancias(10, 4) = 39 distancias(10, 5) = 24 distancias(10, 6) = 73 distancias(10, 7) = 23 distancias(10, 8) = 37 distancias(10, 9) = 18 distancias(10, 10) = 0 distancias(10, 11) = 18 distancias(10, 12) = 40 distancias(10, 13) = 85 distancias(10, 14) = 19 distancias(10, 15) = 28 distancias(10, 16) = 72 distancias(10, 17) = 44 distancias(10, 18) = 51 distancias(10, 19) = 46 distancias(11, 1) = 76 distancias(11, 2) = 76 distancias(11, 3) = 58 distancias(11, 4) = 56 distancias(11, 5) = 42 distancias(11, 6) = 36 distancias(11, 7) = 41 distancias(11, 8) = 18 distancias(11, 9) = 35 distancias(11, 10) = 18 distancias(11, 11) = 0 distancias(11, 12) = 21 distancias(11, 13) = 61 distancias(11, 14) = 37 distancias(11, 15) = 46 distancias(11, 16) = 60 distancias(11, 17) = 90 distancias(11, 18) = 79 distancias(11, 19) = 85 distancias(12, 1) = 69 distancias(12, 2) = 69 distancias(12, 3) = 51 distancias(12, 4) = 93 distancias(12, 5) = 77 distancias(12, 6) = 29 distancias(12, 7) = 109 distancias(12, 8) = 11

distancias(12, distancias(12, distancias(12, distancias(12, distancias(12, distancias(12, distancias(12, distancias(12, distancias(12, distancias(12, distancias(12, distancias(13, distancias(13, distancias(13, distancias(13, distancias(13, distancias(13, distancias(13, distancias(13, distancias(13, distancias(13, distancias(13, distancias(13, distancias(13, distancias(13, distancias(13, distancias(13, distancias(13, distancias(13, distancias(13, distancias(14, distancias(14, distancias(14, distancias(14, distancias(14, distancias(14, distancias(14, distancias(14, distancias(14, distancias(14, distancias(14, distancias(14, distancias(14, distancias(14, distancias(14, distancias(14, distancias(14, distancias(14, distancias(14, distancias(15, distancias(15, distancias(15, distancias(15, distancias(15, distancias(15, distancias(15, distancias(15, distancias(15,

9) = 110 10) = 40 11) = 41 12) = 0 13) = 45 14) = 102 15) = 81 16) = 46 17) = 76 18) = 66 19) = 71 1) = 109 2) = 109 3) = 72 4) = 130 5) = 110 6) = 74 7) = 154 8) = 156 9) = 156 10) = 85 11) = 61 12) = 45 13) = 0 14) = 80 15) = 126 16) = 91 17) = 111 18) = 110 19) = 116 1) = 116 2) = 91 3) = 92 4) = 41 5) = 51 6) = 106 7) = 26 8) = 108 9) = 13 10) = 19 11) = 37 12) = 102 13) = 80 14) = 0 15) = 13 16) = 56 17) = 29 18) = 36 19) = 31 1) = 125 2) = 101 3) = 101 4) = 51 5) = 61 6) = 105 7) = 35 8) = 87 9) = 22

distancias(15, distancias(15, distancias(15, distancias(15, distancias(15, distancias(15, distancias(15, distancias(15, distancias(15, distancias(15, distancias(16, distancias(16, distancias(16, distancias(16, distancias(16, distancias(16, distancias(16, distancias(16, distancias(16, distancias(16, distancias(16, distancias(16, distancias(16, distancias(16, distancias(16, distancias(16, distancias(16, distancias(16, distancias(16, distancias(17, distancias(17, distancias(17, distancias(17, distancias(17, distancias(17, distancias(17, distancias(17, distancias(17, distancias(17, distancias(17, distancias(17, distancias(17, distancias(17, distancias(17, distancias(17, distancias(17, distancias(17, distancias(17, distancias(18, distancias(18, distancias(18, distancias(18, distancias(18, distancias(18, distancias(18, distancias(18, distancias(18, distancias(18,

10) = 28 11) = 46 12) = 81 13) = 126 14) = 13 15) = 0 16) = 36 17) = 17 18) = 19 19) = 24 1) = 110 2) = 111 3) = 92 4) = 94 5) = 105 6) = 70 7) = 79 8) = 53 9) = 62 10) = 72 11) = 60 12) = 46 13) = 91 14) = 56 15) = 36 16) = 0 17) = 34 18) = 22 19) = 27 1) = 140 2) = 140 3) = 123 4) = 67 5) = 77 6) = 101 7) = 51 8) = 82 9) = 38 10) = 44 11) = 90 12) = 76 13) = 111 14) = 29 15) = 17 16) = 34 17) = 0 18) = 26 19) = 32 1) = 130 2) = 130 3) = 112 4) = 74 5) = 84 6) = 90 7) = 58 8) = 72 9) = 45 10) = 51

distancias(18, distancias(18, distancias(18, distancias(18, distancias(18, distancias(18, distancias(18, distancias(18, distancias(18, distancias(19, distancias(19, distancias(19, distancias(19, distancias(19, distancias(19, distancias(19, distancias(19, distancias(19, distancias(19, distancias(19, distancias(19, distancias(19, distancias(19, distancias(19, distancias(19, distancias(19, distancias(19, distancias(19, End Sub

11) = 79 12) = 66 13) = 110 14) = 36 15) = 19 16) = 22 17) = 26 18) = 0 19) = 6 1) = 135 2) = 119 3) = 118 4) = 69 5) = 79 6) = 96 7) = 53 8) = 78 9) = 40 10) = 46 11) = 85 12) = 71 13) = 116 14) = 31 15) = 24 16) = 27 17) = 32 18) = 6 19) = 0

Private Sub Label1_Click(sender As Object, e As EventArgs) Handles Label1.Click End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click Button2.Visible = False Label3.Visible = True Button5.Visible = True If distancias(1, 2) <= distancias(1, 3) Then Label4.Text = distancias(1, 2) Label3.Text = "Mosquera" Label4.Visible = True Else End If

' If distancias(3, 2) <= distancias(3, 4) <= distancias(3, 5) <= distancias(3, 6) Then 'Label4.Text = distancias(3, 2) ' Label3.Text = "Mosquera"

'Else

'If distancias(2, 4) <= distancias(2, 5) <= distancias(2, 6) Then ' Label4.Text = distancias(2, 4) 'Label3.Text = "La Mesa" 'Else 'If distancias(4, 5) <= distancias(4, 6) <= distancias(4, 7) Then 'Label4.Text = distancias(4, 5) ' Label3.Text = "El Colegio" 'Else ' If distancias(5, 6) <= distancias(5, 7) <= distancias(5, 10) Then

'Label4.Text = distancias(5, 6) 'Label3.Text = "Granada" 'Else 'If distancias(5, 7) <= distancias(5, 6) <= distancias(5, 10) Then ' Label4.Text = distancias(5, 7) 'Label3.Text = "Anapoima" 'Label4.Text = distancias(7, 9) 'Label3.Text = "Apulo" 'Else 'If distancias(9, 10) <= distancias(9, 14) Then 'Label4.Text = distancias(9, 10) 'Label3.Text = "Viota" 'Else 'Label4.Text = distancias(9, 14) 'Label3.Text = "Tocaima" 'If distancias(14, 10) <= distancias(14, 15) <= distancias(14, 19) Then 'Label4.Text = distancias(14, 10) 'Label3.Text = "Viota" 'Else 'If distancias(14, 15) <= distancias(14, 10) <= distancias(14, 19) Then 'Label4.Text = distancias(14, 15) 'Label3.Text = "Agua de Dios" 'Else 'If distancias(15, 18) <= distancias(15, 19) Then ' Label4.Text = distancias(15, 18) 'Label3.Text = "Ricaurte" ' Else

' 19) Then

If distancias(18, 16) <= distancias(18, 17) <= distancias(18,

' Label4.Text = distancias(14, 15) 'Label3.Text = "Nilo" 'Else 'If distancias(18, 17) <= distancias(18, 16) <= distancias(18, 19) Then 'Label4.Text = distancias(14, 15) 'Label3.Text = "Melgar" 'Else 'Label4.Text = distancias(18, 19) 'Label3.Text = "Girardot" 'End If 'End If 'End If 'End If 'End If 'End If 'End If 'End If 'End If 'End If 'End If 'End If End Sub

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click Application.Restart()

End Sub Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs)

End Sub Private Sub Label2_Click(sender As Object, e As EventArgs) Handles Label2.Click End Sub Private Sub Label3_Click(sender As Object, e As EventArgs) Handles Label3.Click

End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click PictureBox1.Visible = True

Label3.Visible = True Label4.Text = distancias(1, 3) Label3.Text = "Soacha" Label4.Visible = True Button2.Visible = True distotal = distancias(1, 3) Label9.Text = distotal Label9.Visible = True End Sub

Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click End End Sub Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click Button5.Visible = False Button6.Visible = True PictureBox1.Image = System.Drawing.Image.FromFile("c:\Users\Camilo\Documents\UNIVERSIDAD 8\inteligencia artificial\PROGRAMA FINAL\MAPAS\soacha mosquera.jpg") If distancias(3, 2) <= distancias(3, 4) <= distancias(3, 5) <= distancias(3, 6) Then Label4.Text = distancias(3, 2) Label3.Text = "Mosquera" distotal = distotal + distancias(3, 2) Label9.Text = distotal Else End If

End Sub Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click Button6.Visible = False Button7.Visible = True PictureBox1.Image = System.Drawing.Image.FromFile("c:\Users\Camilo\Documents\UNIVERSIDAD 8\inteligencia artificial\PROGRAMA FINAL\MAPAS\mosquera lamesa.jpg") If distancias(2, 4) <= distancias(2, 5) <= distancias(2, 6) Then Label4.Text = distancias(2, 4) Label3.Text = "La Mesa"

distotal = distotal + distancias(2, 4) Label9.Text = distotal Else End If

End Sub Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click Button7.Visible = False Button8.Visible = True PictureBox1.Image = System.Drawing.Image.FromFile("c:\Users\Camilo\Documents\UNIVERSIDAD 8\inteligencia artificial\PROGRAMA FINAL\MAPAS\lamesa el colegio.jpg") If distancias(4, 5) <= distancias(4, 6) <= distancias(4, 7) Then Label4.Text = distancias(4, 5) Label3.Text = "El Colegio" distotal = distotal + distancias(4, 5) Label9.Text = distotal Else End If

End Sub Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click Button8.Visible = False Button9.Visible = True PictureBox1.Image = System.Drawing.Image.FromFile("c:\Users\Camilo\Documents\UNIVERSIDAD 8\inteligencia artificial\PROGRAMA FINAL\MAPAS\el colegio anapoima.jpg") If distancias(5, 7) <= distancias(5, 6) <= distancias(5, 10) Then Label4.Text = distancias(5, 7) Label3.Text = "Anapoima" distotal = distotal + distancias(5, 7) Label9.Text = distotal Else End If

End Sub Private Sub Button9_Click(sender As Object, e As EventArgs) Handles Button9.Click Button9.Visible = False Button10.Visible = True

PictureBox1.Image = System.Drawing.Image.FromFile("c:\Users\Camilo\Documents\UNIVERSIDAD 8\inteligencia artificial\PROGRAMA FINAL\MAPAS\anapoima apulo.jpg") Label4.Text = distancias(7, 9) Label3.Text = "Apulo" distotal = distotal + distancias(7, 9) Label9.Text = distotal

End Sub Private Sub Button10_Click(sender As Object, e As EventArgs) Handles Button10.Click Button10.Visible = False Button11.Visible = True PictureBox1.Image = System.Drawing.Image.FromFile("c:\Users\Camilo\Documents\UNIVERSIDAD 8\inteligencia artificial\PROGRAMA FINAL\MAPAS\apulo tocaima.jpg") If distancias(9, 10) <= distancias(9, 14) Then Label4.Text = distancias(9, 10) Label3.Text = "Viota" distotal = distotal + distancias(9, 10) Label9.Text = distotal Else Label4.Text = distancias(9, 14) Label3.Text = "Tocaima" distotal = distotal + distancias(9, 14) Label9.Text = distotal End If

End Sub Private Sub Button11_Click(sender As Object, e As EventArgs) Handles Button11.Click Button11.Visible = False Button12.Visible = True PictureBox1.Image = System.Drawing.Image.FromFile("c:\Users\Camilo\Documents\UNIVERSIDAD 8\inteligencia artificial\PROGRAMA FINAL\MAPAS\tocaima agua de dios.jpg") If distancias(14, 15) <= distancias(14, 10) <= distancias(14, 19) Then Label4.Text = distancias(14, 15) Label3.Text = "Agua de Dios" distotal = distotal + distancias(14, 15) Label9.Text = distotal Else End If

End Sub Private Sub Button12_Click(sender As Object, e As EventArgs) Handles Button12.Click

Button12.Visible = False Button13.Visible = True PictureBox1.Image = System.Drawing.Image.FromFile("c:\Users\Camilo\Documents\UNIVERSIDAD 8\inteligencia artificial\PROGRAMA FINAL\MAPAS\agua de dios ricaurte.jpg") If distancias(15, 18) <= distancias(15, 19) Then Label4.Text = distancias(15, 18) Label3.Text = "Ricaurte" distotal = distotal + distancias(15, 18) Label9.Text = distotal Else End If

End Sub Private Sub Button13_Click(sender As Object, e As EventArgs) Handles Button13.Click PictureBox1.Image = System.Drawing.Image.FromFile("c:\Users\Camilo\Documents\UNIVERSIDAD 8\inteligencia artificial\PROGRAMA FINAL\MAPAS\ricaurte girardot.jpg") If distancias(18, 17) <= distancias(18, 16) <= distancias(18, 19) Then Label4.Text = distancias(18, 16) Label3.Text = "Girardot" distotal = distotal + distancias(18, 16) Label9.Text = distotal

Else Label4.Text = distancias(18, 19) Label3.Text = "Melgar" distotal = distotal + distancias(18, 19) Label9.Text = distotal End If

End Sub

Private Sub Button14_Click(sender As Object, e As EventArgs) Handles Button14.Click Form2.Visible = True

End Sub

Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click Form3.Show() End Sub

End Class

CODIGO FORM 2
Public Class Form2 Private Sub Label1_Click(sender As Object, e As EventArgs) Handles Label1.Click End Sub 'muesra la imagen de la ciudad a eliminar Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged If ComboBox1.Text = "BOGOTA" Then PictureBox1.Image = System.Drawing.Image.FromFile("c:\Users\Camilo\Documents\UNIVERSIDAD 8\inteligencia artificial\PROGRAMA FINAL\MAPAS\bogota.jpg")

End If If ComboBox1.Text = "MOSQUERA" Then PictureBox1.Image = System.Drawing.Image.FromFile("c:\Users\Camilo\Documents\UNIVERSIDAD 8\inteligencia artificial\PROGRAMA FINAL\MAPAS\mosquera.jpg") End If If ComboBox1.Text = "SOACHA" Then PictureBox1.Image = System.Drawing.Image.FromFile("c:\Users\Camilo\Documents\UNIVERSIDAD 8\inteligencia artificial\PROGRAMA FINAL\MAPAS\soacha.jpg") End If If ComboBox1.Text = "LA MESA" Then PictureBox1.Image = System.Drawing.Image.FromFile("c:\Users\Camilo\Documents\UNIVERSIDAD 8\inteligencia artificial\PROGRAMA FINAL\MAPAS\la mesa.jpg") End If If ComboBox1.Text = "EL COLEGIO" Then PictureBox1.Image = System.Drawing.Image.FromFile("c:\Users\Camilo\Documents\UNIVERSIDAD 8\inteligencia artificial\PROGRAMA FINAL\MAPAS\el colegio.jpg") End If If ComboBox1.Text = "GRANADA" Then PictureBox1.Image = System.Drawing.Image.FromFile("c:\Users\Camilo\Documents\UNIVERSIDAD 8\inteligencia artificial\PROGRAMA FINAL\MAPAS\granada.jpg")

End If If ComboBox1.Text = "ANAPOIMA" Then PictureBox1.Image = System.Drawing.Image.FromFile("c:\Users\Camilo\Documents\UNIVERSIDAD 8\inteligencia artificial\PROGRAMA FINAL\MAPAS\anapoima.jpg")

End If If ComboBox1.Text = "SILVANIA" Then PictureBox1.Image = System.Drawing.Image.FromFile("c:\Users\Camilo\Documents\UNIVERSIDAD 8\inteligencia artificial\PROGRAMA FINAL\MAPAS\silvania.jpg") End If If ComboBox1.Text = "APULO" Then PictureBox1.Image = System.Drawing.Image.FromFile("c:\Users\Camilo\Documents\UNIVERSIDAD 8\inteligencia artificial\PROGRAMA FINAL\MAPAS\apulo.jpg") End If If ComboBox1.Text = "VIOTA" Then PictureBox1.Image = System.Drawing.Image.FromFile("c:\Users\Camilo\Documents\UNIVERSIDAD 8\inteligencia artificial\PROGRAMA FINAL\MAPAS\viota.jpg") End If If ComboBox1.Text = "TIBACUY" Then PictureBox1.Image = System.Drawing.Image.FromFile("c:\Users\Camilo\Documents\UNIVERSIDAD 8\inteligencia artificial\PROGRAMA FINAL\MAPAS\tibacuy.jpg") End If If ComboBox1.Text = "FUSAGASUGA" Then PictureBox1.Image = System.Drawing.Image.FromFile("c:\Users\Camilo\Documents\UNIVERSIDAD 8\inteligencia artificial\PROGRAMA FINAL\MAPAS\fusagasuga.jpg") End If If ComboBox1.Text = "BOQUERON" Then PictureBox1.Image = System.Drawing.Image.FromFile("c:\Users\Camilo\Documents\UNIVERSIDAD 8\inteligencia artificial\PROGRAMA FINAL\MAPAS\boqueron.jpg") End If If ComboBox1.Text = "TOCAIMA" Then PictureBox1.Image = System.Drawing.Image.FromFile("c:\Users\Camilo\Documents\UNIVERSIDAD 8\inteligencia artificial\PROGRAMA FINAL\MAPAS\tocaima.jpg") End If If ComboBox1.Text = "AGUA DE DIOS" Then

PictureBox1.Image = System.Drawing.Image.FromFile("c:\Users\Camilo\Documents\UNIVERSIDAD 8\inteligencia artificial\PROGRAMA FINAL\MAPAS\agua de dios.jpg") End If If ComboBox1.Text = "MELGAR" Then PictureBox1.Image = System.Drawing.Image.FromFile("c:\Users\Camilo\Documents\UNIVERSIDAD 8\inteligencia artificial\PROGRAMA FINAL\MAPAS\melgar.jpg")

End If If ComboBox1.Text = "NILO" Then PictureBox1.Image = System.Drawing.Image.FromFile("c:\Users\Camilo\Documents\UNIVERSIDAD 8\inteligencia artificial\PROGRAMA FINAL\MAPAS\nilo.jpg") End If If ComboBox1.Text = "RICAURTE" Then PictureBox1.Image = System.Drawing.Image.FromFile("c:\Users\Camilo\Documents\UNIVERSIDAD 8\inteligencia artificial\PROGRAMA FINAL\MAPAS\ricaurte.jpg") End If If ComboBox1.Text = "GIRARDOT" Then PictureBox1.Image = System.Drawing.Image.FromFile("c:\Users\Camilo\Documents\UNIVERSIDAD 8\inteligencia artificial\PROGRAMA FINAL\MAPAS\girardot.jpg")

End If End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click Me.Visible = False

End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click If ComboBox1.Text = "BOGOTA" Then ComboBox1.Items.RemoveAt(0) distotal = distotal - distancias(1, 1) distancias(1, 1) = 0 Form1.Label9.Text = distotal End If If ComboBox1.Text = "MOSQUERA" Then ComboBox1.Items.RemoveAt(2)

distotal = distotal - distancias(1, 2) distancias(1, 2) = 0 Form1.Label9.Text = distotal End If If ComboBox1.Text = "SOACHA" Then ComboBox1.Items.RemoveAt(1) distotal = distotal - distancias(1, 3) distancias(1, 3) = 0 Form1.Label9.Text = distotal

End If If ComboBox1.Text = "LA MESA" Then ComboBox1.Items.RemoveAt(3) distotal = distotal - distancias(1, 4) distancias(1, 4) = 0 Form1.Label9.Text = distotal End If If ComboBox1.Text = "EL COLEGIO" Then ComboBox1.Items.RemoveAt(4) distotal = distotal - distancias(1, 5) distancias(1, 5) = 0 Form1.Label9.Text = distotal End If If ComboBox1.Text = "GRANADA" Then ComboBox1.Items.RemoveAt(5) distotal = distotal - distancias(1, 6) distancias(1, 6) = 0 Form1.Label9.Text = distotal End If If ComboBox1.Text = "ANAPOIMA" Then ComboBox1.Items.RemoveAt(6) distotal = distotal - distancias(1, 7) distancias(1, 7) = 0 Form1.Label9.Text = distotal End If If ComboBox1.Text = "SILVANIA" Then ComboBox1.Items.RemoveAt(7) distotal = distotal - distancias(1, 8) distancias(1, 8) = 0 Form1.Label9.Text = distotal End If If ComboBox1.Text = "APULO" Then ComboBox1.Items.RemoveAt(8) distotal = distotal - distancias(1, 9) distancias(1, 9) = 0 Form1.Label9.Text = distotal End If

If ComboBox1.Text = "VIOTA" Then ComboBox1.Items.RemoveAt(9) distotal = distotal - distancias(1, 10) distancias(1, 10) = 0 Form1.Label9.Text = distotal End If If ComboBox1.Text = "TIBACUY" Then ComboBox1.Items.RemoveAt(10) distotal = distotal - distancias(1, 11) distancias(1, 11) = 0 Form1.Label9.Text = distotal End If If ComboBox1.Text = "FUSAGASUGA" Then ComboBox1.Items.RemoveAt(11) distotal = distotal - distancias(1, 12) distancias(1, 12) = 0 Form1.Label9.Text = distotal End If If ComboBox1.Text = "BOQUERON" Then ComboBox1.Items.RemoveAt(12) distotal = distotal - distancias(1, 13) distancias(1, 13) = 0 Form1.Label9.Text = distotal End If If ComboBox1.Text = "TOCAIMA" Then ComboBox1.Items.RemoveAt(13) distotal = distotal - distancias(1, 14) distancias(1, 14) = 0 Form1.Label9.Text = distotal End If

If ComboBox1.Text = "AGUA DE DIOS" Then ComboBox1.Items.RemoveAt(14) distotal = distotal - distancias(1, 15) distancias(1, 15) = 0 Form1.Label9.Text = distotal End If If ComboBox1.Text = "MELGAR" Then ComboBox1.Items.RemoveAt(15) distotal = distotal - distancias(1, 16) distancias(1, 16) = 0 Form1.Label9.Text = distotal End If If ComboBox1.Text = "NILO" Then ComboBox1.Items.RemoveAt(16) distotal = distotal - distancias(1, 17) distancias(1, 17) = 0

Form1.Label9.Text = distotal End If If ComboBox1.Text = "RICAURTE" Then ComboBox1.Items.RemoveAt(17) distotal = distotal - distancias(1, 18) distancias(1, 18) = 0 Form1.Label9.Text = distotal End If If ComboBox1.Text = "GIRARDOT" Then ComboBox1.Items.RemoveAt(18) distotal = distotal - distancias(1, 19) distancias(1, 19) = 0 Form1.Label9.Text = distotal End If

End Sub Private Sub Button3_Click(sender As Object, e As EventArgs) ComboBox1.Items.RemoveAt(0) End Sub End Class

CODIGO FORM 3
Public Class Form3 Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click Me.Visible = False End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click If TextBox1.Text.Trim = "" Then MsgBox("Ingrese nombre de la ciudad" & TextBox1.AccessibleName) TextBox1.BackColor = Color.Yellow TextBox1.Focus()

Else If TextBox2.Text.Trim = "" Then MsgBox("Ingrese distancia " & TextBox1.AccessibleName) TextBox2.BackColor = Color.Yellow TextBox2.Focus() Else TextBox1.BackColor = Color.White Form2.ComboBox1.Items.Add(TextBox1.Text) ReDim distancias(25, 25) distancias(1, 20) = (TextBox2.Text) distotal = distotal + distancias(1, 20) Form1.Label9.Text = distotal Me.Visible = False End If End If End Sub End Class

CODIGO DEL MODULO


Module Module1

Public distotal As Integer Public distancias(19, 19) As Integer End Module

Vous aimerez peut-être aussi