Sie sind auf Seite 1von 2

DISTANCIAS DEL MAPA

ParalaresolucinheempleadoelalgoritmodeDijkstra.Dichoalgoritmo (tambinllamadoalgoritmodecaminosmnimos),esunalgoritmoparala determinacindelcaminomscortodadounvrticeorigenalrestode vrticesenungrafodirigidoycondistanciasencadaarista. Heelegidoestealgoritmoporquelohemosvistoelfuncionamientoen clasesdeteoraymehaparecidobastanteeficiente(aunquetalvez complicadodeimplementar). Laideadeestealgoritmoconsisteenirexplorandotodosloscaminos mscortosquepartendelvrticeorigenyquellevanatodoslosdems vrtices;cuandoseobtieneelcaminomscortodesdeelvrticeorigen,al restodevrticesquecomponenelgrafo,elalgoritmosedetiene.Elalgoritmo esunaespecializacindelabsquedadecostouniforme,ycomotal,no funcionaengrafosconaristasdedistanciasnegativas(alelegirsiempreel nodocondistanciamenor,puedenquedarexcluidosdelabsquedanodos queenprximasiteracionesbajaranelcostogeneraldelcaminoalpasar porunaaristacondistancianegativa).

ALGORITMO
TeniendoungrafodirigidoponderadodeNnodosnoaislados,seaxelnodoinicial, unvectorDdetamaoNguardaralfinaldelalgoritmolasdistanciasdesdexalresto delosnodos.
1. InicializartodaslasdistanciasenDconunvalorinfinitorelativoyaqueson

desconocidasalprincipio,exceptuandoladexquesedebecolocaren0debidoa queladistanciadexaxsera0.

2. Seaa=x(tomamosacomonodoactual). 3. Recorremostodoslosnodosadyacentesdea,exceptolosnodosmarcados,

llamaremosaestosvi.

4. SiladistanciadesdexhastaviguardadaenDesmayorqueladistanciadesdex

hastaasumadaaladistanciadesdeahastavi;estasesustituyeconlasegunda nombrada,estoes: si(Di>Da+d(a,vi))entoncesDi=Da+d(a,vi)

5. Marcamoscomocompletoelnodoa.

6. TomamoscomoprximonodoactualeldemenorvalorenD(puedehacerse

almacenandolosvaloresenunacoladeprioridad)yvolvemosalpaso3mientras existannodosnomarcados.

Unavezterminadoalalgoritmo,Destarcompletamentelleno.

EXPLICACINDELPROGRAMA EnprimerlugarsecrealatablaHashciudades,quecontieneelnombredelaciudad ysuscoordenadas,despusserellenaelArrayListcarreteras,quecontieneladistancia quehayentreunaciudadcontodaslasdems. Ahoracrearemoslaventanayempezamosadibujarelmapa,indicandoconun puntorojolaubicacindecadaciudad;ypedimosalusuarioqueintroduzcalas ciudadesabuscar(mediantelaspestaasdelaparteinferior)yquepulsealbotn Buscar. Enelsiguientepasobuscaremoslarutadeseadaejecutandoelalgoritmodescrito arriba.(Nota:Elalgoritmoqueutilizoenelprograma,esttotalmentebasadoenelde Dijkstra,aunquehayalgunoscambios,principalmenteparapoderdibujarlascarreteras enelmapa).

LapracticahasidorealizadaenentornoWindows,porloquepodrahaberfallosala horadelocalizarelarchivodelmapa.Paracambiarlarutadedondeseencuentrael mapa,enlaclaseMapa,enlalnea34,modificarlarutacomosedesee.

Das könnte Ihnen auch gefallen