Anda di halaman 1dari 9
EI Baiil del Programador fewer an ALGORITMOS DE CAMINOS CORTOS. 2013/07/26/ BY Luzc 0 8 COMMENTS (/ALGORITMOS-DE-CAMINOS. vIN ALGORITMOS (/CATEGORY/ALGORITMOS. PROGRAMACION/) ¢ UCATEGORY/LENGUAJE INTELIGENCIA ARTIFICIAL CATEGORVIINTELIGENCIA-ARTIFICIAL/) YF orsoinwitercomnoneeatseAlgorinos de canines ovos shp.telballlropraradotcamllgaimnasde.camnas. frosVMCRRADa Adela) F ome snnnssrrostcamsnaer ste? tp ilonldsbrgrateombtorine erin cofoulicAgorinos Secarroscoras nip femidporanadsconalrmoncecanno® coreoucanADevioenos) 3* vrrosipis goat comisare?utAlpornos a canines coros sp iebsuseprogamadorcomblgormosse-connae crewsvnessaowtutans) Ogos (http: (hastened Para hablar de este tipo de algoritmos, tengo que hacer una breve introduccién a lo que es un grafo y cémo se representa en un ordenador. Un grafo en el émbito de las ciencias de la computacién es una estructura de datos, en concreto un tipo abstracto de datos (TDA), que consiste en un conjunto de nodos (también llamados vértices) y un conjunto de arcos (aristas) que establecen relaciones entre los nodos. El concepte de grafo TDA desciende directamente del concepto matematica de grafo. Informalmente se define como G = (V, 6), siendo los elementos de V os vértices,y los elementos de E, as aristas (edges en inglés). Formalmente, un grafo, G, se define como un par ordenado, G = (V, E), donde Ves un conjunte finite y € es un conjunto que consta de dos elementos de V. isten diferentes implementaciones del tipo grafo: con luna matrie ae aayacericias Worma acoraaay y Com sta y muttilistas de adyacencia (no acotadas). Matriz de adyacencias: se asocia cada fila y cada columna a cada nodo del grafo, siendo los elementos de la matriz la relacién entre los mismos, tomando los valores de 1 si existe la arista yO en caso contrario, ol+[+]»|=[2] =lel=/e]= |= PB) Una ver dicho esto, ex! n algoritmos que se dedican a buscar el camino mas corte en un espacio, entre dos puntos dado, el coger un camino u otro conlleva un valor cde mas o menos alto, es decir no es lo mismo ir del nodo 1 alnodo 3 con un valor de 5 unidades(metros), que ir del rnodo 1 pasando por ely llegando al 3 teniendo 4 unidades(metros), es preferible coger el que tenga menos coste, para que sea el valor mas corto, Es decir que el problema consiste en encontrar un camino entre dos vértices (0 nodos) de tal manera que la suma de los pesos de las aristas que lo constituyen es minima. Un ejemplo es encontrar el camino mas répido para ir de una ciudad a otra en un mapa. En este caso, los vértices representan las. ciudades, y las aristas las carreteras que las unen, cuya ponderacién viene dada por eltiempo que se emplea en atravesarlas, Para solucionar este problema, los tres algoritmos mas conocides son: et es cokles to improve youp emigre ALBA YOUrE ok wth his but youcan oof youisp ARERE. fea More (rpetbaueproe ore yg gFRURB aR BREE White en Ir explorando todos los camminos ms cortos que parten del vrtice origen y que llevan a todos los demas vértices; cuando se obtiene el camino més corto desde el vértce origen, al resto de vérlices que componen el grafo, el algoritmo se detiene (/content/uploads/2012/10/Caminosmascortos' jpg) ALGORITMO DE DIJKSTRA cessringst> arate eotenerGrafo (char * ronbee) ‘ns tam i7Tanao 62 grate (nine ss pas 11 peso ce caca nao const Ant TOPE_LEC = 16903 //TanaAe mbxino que va a Teer on chor vector suX[TOR KC]; //Wactor que alaacenand el conter {ieontador de Lat Linas, puesto que 1a que pas interens ee 18 4 cnr Gs sivarsanne ase 2 ‘tstream Ficheri// sono el flcher ‘hchero.open(nonoe); sai tseneroy, exe); > ‘rtecores hasta quedarne 7 1a 2ine0 7 pare white (cont_Line < 79 ‘ena’ getline(vector fuk, TOPELE); cont linet 6 (Conte 2 [Mla Linas oat 2a dimen. c= Ferenrector aun °°) ten = atot(o); erate attan 11Cr20 01 grafo cone tanato stano Los pesos datos por 1a natriz de adyacencla or (int $= 85 4 € tam S00) for (ane 5 = 8; 3 tan; $4006 senere >> peso; G.asigrar_peso( jp); > Fhehero-close(d: > wold atshetra(grate 46, vertice 5)¢ vectorevertice> P{G.si2e(), -1}i _ Mector de soluctores. vectorcdistanca> 0(6,5i2e(),INFIMITO); // Vector de aistan heap (6512005 D{sln@; /71a atstancia hasta et nisno es cero. Pls] = $5 54 camino of ol ato for (vertice £205 £4 G.s8ze() 3 toF) [Pettera 01 reap. Quinsert(ort}.2 17Para caéa nos actualiz0 Su peso buscando y 10 antrodunco + ite (lanenpty0)) { = queraee_nin( seconds 1) Fara cada nota eyaconse al vertica actual or ( vertice v.bogin séy(u); ¥ laé.end_ady(); ve) SF (2fv] > oful + sceovetver pesotusy}e fv) = ofu) + e-devarver pesetuyy); lv} = eupaate beaptolv)e Ws ? 1Mestcanes el vector 0 de distant for (vertice $= 8; LC size) | 16+) cout = for (vertice $285 1 Gurtze() 3 156) cout 4c PLT ce = snc singin argeyemare* argv) arate GlobtenerérafaCargvt.D): vertice org-35 out ce “Tana el Grafa” ce G.siteQ) & endl; out << “Lavo a Diskstra (origen) * cc ong <¢ endl «endl asjeateatsvore , eee > Para probar este algoritmo necesita una entrada de datos un archivo para probarlo. Elalgoritmo de Prim encuentra un subconjunto de aristas ue forman un arbol con todos los vértices, donde el peso total de todas las aristas en el drbol es el minimo posible. Siel grafo no es conexo, entonces el algoritmo encontraré el Arbol recubridor rinimo para uno de los componentes conexos que forman dicho grafo no conexo. Por Ultimo el algoritme Atevalia los nodos combinando g{n), el coste para alcanzar el nodo, y h(a), el costo de ir al nodo objetivo: Find= etn) + hin) Ya que la g(n) nos da el coste del camino desde el nodo inicio al nodo n, y la h(n) el caste estimado del camino mas barato desde n al objetivo, tenemos: Fin) = coste ms barato estimado de Ia solucién a traves de Asi sitratamos de encontrar la solucién mas bat razonable intentar primero el nodo con el valor més bajo de gin) + hin). Resulta que esta estrategia es més que razonable: con tal de que la funcién heuristica h(n) satisfaga ciertas condiciones, la busqueda A* es tanto completa como optima, ES POSIBLE QUE TE INTERESEN ESTOS ARTICULOS Cémo resolver sistemas de ecuaciones lineales con dos YF crcmiorconinone saneeAgorinos cameos Cores sp ebbasseprogamadorcomlgattnos-se-caniae- ero VHEBRADA EADS) F oso acroookeoharete? jlosldprogaadetcomatgortmot de caninoe catoei-Agortnos te canines coos. aauldeprogamaorcomalorimos-e-carinos- cores V¥SCORADSHNA DSA) 8 crsosiptis goal comisarer coro. hp:elbaullprograrador coos VRC3RAD ADAM) Inotoroede-aminas- Eres curioso? » sigue este enlace (index.php? UONETE ALA COMUNIDAD v f so git a (hito:/utpet ooelbaniietbtidadp eit “— PREVIOUS (/COMO-INVERTIR-UNA-CADENA-EN-UNDK) NEXT STORY ~+ (/HUMOR-DOS-VIDEOS-MUY-GFEK-PARA- PROGRAMADORES\) Tacs /ALGORITMO DE DIJKSTRA EN C Y/TAG/ALGORITMO-DE-DIKSTRAEN- a 1 ALGORITMO DI)KSTRA /TAGIALGORITMO-OIKSTRA) PRIM JAVA ALGORITMO (TAGIPRIMJAVA-ALGORITMON ABOUT LUZCILA (VAUTHOR/HIDDENO/) 8 COMMENTS JUAN MANUEL 2013/03/13 AT 15:33 /ALGORIIMOS-DE-CAMINOS. CcoRTOS/ACOWMENT-523) / REPLY Hola, como es el contenido del “grafo_heap.h” puedes publicar para descargar el programa? ALEJANDRO ALCALDE (HTTP:/WWW.ELBAULDELPROGRAMADOR.COM) 2013/03/13 AT 2:56 /ALGORITMOS-OF-CAMINOS- CCORTOS/#COMMENT.S24) /- REPLY Hola, no dispongo de ese archivo, ya que fue un articulo escrito por un companero de facukad Supongo que tinicamente tendré los prototipos de las funciones. Un saludo. MAURO 2013/11/14 1728 VALGORITMOS.08- 3870) / REPLY Lorne puues curnpar ur si enter et h queda obsoleto. ALEJANDRO ALCALDE (/) 2013/11/14 AT 18:00 VALGORITMOS-0E: CAMINOS-CORTOSIHCOMMENT sem / REPLY Hola, intentaré conseguir el. el problema es que este articulo fue una colaboracién y el c6digo no es mio, Saludos. LoL 2013/12/04 AT 17:11 YALGORITMOS-DE-CAMINOS. CCORTOS/HCOMMENT.S710) / REPLY boludo como no baja publicar el ALEJANDRO ALCALDE (/) 2013/12/04 AT 19:03 VALGORMTMOS. CAMINOS-CORTOS/#COMMENT-S733) /_ REPLY Lo siento, ya dije que este cédigo no era mio, el articulo lo escribié un compafiero yyano dispone del programa, ANONIMO 2014/06/19 AT 04:15 VALGORTTMOS-DE-CAMINOS: CORTOSMHCOWMENT-19245) 1 REPLY sin el ho funciona JONATHAN CCORTOS/#COWMENT.24960) /- REPLY Es una lastima queria observar la estructura del heap en el header @ Buen articulo en todo caso, LEAVE A REPLY Your email address will not be published. Required fields are marked * Name * Email * Website Write your comment. [NOTH MEF FOLLOWUP COMMENTS BY EMAL, (Non e0F NeW PostSBY EAL = BUSCAR ~ ~ SUBSCRIPCION POR CORREO ~ Correo electrénico PERFIL EN STACKOVERFLOW Sigur 1084 (nttp:/stackoverflow.com/users/1612432/algui91) = CATEGORIES ~ ‘Select Category * ~ BOOKMARKS ~ Blog de SAP wassSoft internautas21 Picando Cédigo, Subinet Batil del Programador. Todos los derechos reservados. Disefiado por WiThemes. 1 Bail del Programador por Al (hetpsv/plus google.com/1170300015620393501357 ‘Commons Reconocimiento 4.0 Internac (http://creativecommons org/licenses/by/4.0/) Ipringrensi4662432/algui91)

Anda mungkin juga menyukai