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: conluna 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 atofor (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 nodoinicio 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) / REPLYLorne 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 fieldsare marked *
Name *
Email *
Website
Write your comment.
[NOTH MEF FOLLOWUP COMMENTS BY EMAL,
(Non e0F NeW PostSBY EAL
= BUSCAR ~
~ SUBSCRIPCION POR CORREO ~
Correo electrénicoPERFIL 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)