Beruflich Dokumente
Kultur Dokumente
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
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).