You are on page 1of 3

IS563ProyectodeProgramacin

8Puzzle
Escribaunprogramapararesolverelproblemadel8puzzle(ysugeneralizacionnatural)usandoelalgoritmodebusquedaA*. ElProblema.Elproblemadel8puzzleesunrompecabezaspopularizadoporSamLoydenladcadade1870.Sejuegaenunacuadrculade3 por3conbloquesmarcadosdel1al8yunoenblanco.Suobjetivoesreorganizarlosbloquesparaqueestnenorden.Estpermitidodeslizar losbloqueshorizontaloverticalmentedentrodelcuadroenblanco.Acontinuacinsemuestraunasecuenciademovimientoslegalesdesdeun tableroinicial(izquierda)alaposicinobjetivo(derecha).
1 3 1 3 1 2 3 1 2 3 1 2 3 4 2 5 = > 4 2 5 = > 4 5 = > 4 5 = > 4 5 6 7 8 6 7 8 6 7 8 6 7 8 6 7 8 i n i c i a l m e t a

Bsquedamejorelprimero.Acontinuacinsedescribeunasolucinalgortmicaalproblemaquemuestraunametodologadeinteligencia artificialconocidacomoAlgoritmodebsquedaA*.Sedefineunestadodeljuegocomo:laposicindeltablero,elnmerodemovimientos realizadosparaalcanzarlaposicindeltableroylosestadosanteriores.Primero,seinsertaelestadoinicial(eltableroinicial,0movimientosy, unestadoanteriornulo)dentrodeunacoladeprioridad.Luego,seborradelacoladeprioridadelestadoconlaprioridadmnimayseinserta, dentrodelacoladeprioridad,todoslosestadosvecinos(aquellosquepuedenseralcanzadosenunmovimiento).Repitaesteprocedimiento hastaqueelestadosacadoseaelestadoobjetivo.Elxitodeesteenfoquedependedelaeleccindelafuncindeprioridadparaunestado.Se considerandosfuncionesdeprioridad: FuncinprioridaddeHamming.Elnmerodebloquesenposicinincorrecta,mselnmerodemovimientosrealizadosparaalcanzarel estado.Intuitivamente,estadosconunnmeromenordebloquesenposicinincorrectaestncercadelestadoobjetivoyseprefiere estadosquehayansidoalcanzadosusandounpequeonmerodemovimientos FuncinprioridadManhattan.Lasumadelasdistancias(sumadeladistanciaverticalyhorizontal)delosbloquesasuposicinobjetivo, mselnmerodemovimientosrealizadoshastaahoraparaalcanzarelestado. Porejemplo,lasprioridadesHammingyManhattandelestadoinicialacontinuacinson5y10,respectivamente.
8 1 3 1 2 3 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 4 2 4 5 6 7 6 5 7 8 1 1 0 0 1 1 0 1 1 2 0 0 2 2 0 3 i n i c i a l m e t a H a m m i n g = 5 + 0 M a n h a t t a n = 1 0 + 0

Observacinclave:pararesolverelpuzzledesdeunestadodadoenlacoladeprioridad,elnmerototaldemovimientosquedebemoshacer (incluidoslosqueyasehanhecho)esalmenossuprioridad,usandolafuncinHammingoManhattan.(ParalaprioridadHamming,estoes cierto,yaquecadaboquefueradelugardebemoversealmenosunavezparallegarasuposicinobjetivo.ParalaprioridadManhattan,estoes cierto,yaquecadabloquedebemoversudistanciaManhattanasuposicinobjetivo.Observequenosecuentaelbloqueenblancocuandose calculalasprioridadesHammingoManhattan.) Consecuentemente,tanprontocomosesacaunestado,noslosehadescubiertounasecuenciademovimientosdesdeeltableroinicialaltablero asociadoconelestado,sinoquesetieneelmenornmerodemovimientos.(Desafoparaaquellosconinclinacinmatemtica:probareste hecho). Unaoptimizacinimportante.Despusdeimplementarlabsquedamejorelprimero,sedarcuentadeunacaractersticamolesta:estados correspondiendoalamismaposicindeltableroestnestnenlacoladeprioridadmuchasveces.Paraevitarexploracionesinnecesariasde estadosnotiles,cuandoconsiderelosvecinosdeunestado,nointroduzcaelvecinosisuposicindetableroeslamismaqueladelestado anterior.
8 1 3 8 1 3 8 1 3 4 2 4 2 4 2 7 6 5 7 6 5 7 6 5 a n t e r i o r e s t a d o e v i t a r

Sutarea.EscribaunprogramaS o l v e r . j a v a queleaeltableroinicialdesdestdineimprimaastdoutunasecuenciadeposicionesdetableroque resuelvaelpuzzleenelmenornmerodemovimientos.Tambinimprimaelnmerototaldemovimientosyelnmerototaldeestados encolados. LaentradaconsistirdeuntabelrodedimensinNseguidoporlaconfiguracininicialNporNdeltablero.Elformatodeentradausa0para representarelbloqueenblanco.Comounejemplo,

% m o r e p u z z l e 0 4 . t x t 3 0 1 3 4 2 5 7 8 6 % j a v a S o l v e r < p u z z l e 0 4 . t x t 1 3 4 2 5 7 8 6 1 3 4 2 5 7 8 6 1 2 3 4 5 7 8 6 1 2 3 4 5 7 8 6 1 2 3 4 5 6 7 8 N m e r o d e e s t a d o s e n c o l a d o s = 1 0 N m e r o d e m o v i m i e n t o s = 4

TengaencuentaquesuprogramadebertrabajarparatablerosarbitariosdeNporN(paratodoNmayorque1),aunquepuedeserdemasiado lentoresolveralgunosdeellosenunacantidaddetiemporazonable. Detectandopuzzlessinsolucin.Notodaslasposicionesdetablerosinicialespuedenalcanzarelestadoobjetivo.Modifiquesuprogramapara detectaryreportartalessituaciones.


% m o r e i m p o s i b l e p u z z l e 3 x 3 . t x t 3 1 2 3 4 5 6 8 7 0 % j a v a S o l v e r < i m p o s i b l e p u z z l e 3 x 3 . t x t S i n s o l u c i n p o s i b l e

Sugerencia:usarelhechodequelasposicionesdeltableroestndivididasdentrodedosclasesdeequivalenciarespectoasualcanzabilidad:(i) aquellasquellevanalaposicinobjetivoy(ii)aquellasquellevanalaposicinobjetivosisemodificaeltableroinicialmedianteelintercambio decualquierpardebloquesadyacentes(nobanco).Haydosformasdeaplicarestasugerencia: EjecutarelalgoritmoA*simultneamentesobredosinstanciasdepuzzleunaconeltableroinicialylaotraconeltableroinicial modificadomedianteelintercambiodeunpardebloquesadyacentes(noblanco).Exactamenteunodelosdosllevaralaposicin objetivo. Deriveunafrmulamatemticaqueledigacuandountablerotieneonosolucin. Resultados.Organicesuprogramaenunnmeroapropiadodetiposdedatos.Comomnimo,seestobligadoaimplementarlasiguienteAPI. Sinembargo,seeslibredeaadirmtodosotiposdedatos(talescomoS t a t e ).


p u b l i c c l a s s B o a r d { p u b l i c B o a r d ( i n t [ ] [ ] t i l e s ) / / c o n s t r u y e u n t a b l e r o d e u n a r r e g l o d e b l o q u e s d e N p o r N p u b l i c i n t h a m m i n g ( ) / / r e t o r n a e l n m e r o d e b l o q u e s f u e r a d e l u g a r p u b l i c i n t m a n h a t t a n ( ) / / r e t o r n a l a s u m a d e d i s t a n c i a M a n h a t t a n e n t r e b l o q u e s y o b j e t i v o p u b l i c b o o l e a n e q u a l s ( O b j e c t y ) / / h a c e q u e e l t a b l e r o s e a i g u a l p u b l i c I t e r a b l e < B o a r d > n e i g h b o r s ( ) / / r e t o r n a u n I t e r a d o r d e t o d o s l o s v e c i n o s d e l a s p o s i c i o n e s d e l t a b l e r o p u b l i c S t r i n g t o S t r i n g ( ) / / r e t o r n a u n a c a d e n a r e p r e s e n t a n d o e l t a b l e r o / / c l i e n t e d e p r u e b a p u b l i c s t a t i c v o i d m a i n ( S t r i n g [ ] a r g s ) } p u b l i c c l a s s S o l v e r { p u b l i c S o l v e r ( B o a r d i n i t i a l ) / / e n c u e n t r a u n a s o l u c i n d e l t a b l e r o i n i c i a l p u b l i c b o o l e a n i s S o l v a b l e ( ) / / t i e n e e l t a b l e r o i n i c i a l u n a s o l u c i n ? p u b l i c i n t m o v e s ( ) / / r e t o r n a n m e r o m i n d e m o v i m i e n t o s p a r a r e s o l v e r t a b l e r o i n i c i a l / / 1 s i n o h a y s o l u c i n p u b l i c S t r i n g t o S t r i n g ( ) / / r e t o r n a c a d e n a r e p r e s e n t a n d o l a s o l u c i n ( c o m o s e d e s c r i b e a n t e s ) / / l e e u n a i n s t a n c i a d e l p u z z l e d e s d e s t d i n e i m p r i m e s o l u c i n a s t d o u t ( e n f o r m a t o d e a r r i b a ) p u b l i c s t a t i c v o i d m a i n ( S t r i n g [ ] a r g s ) }

EnviarB o a r d . j a v a ,S o l v e r . j a v a (conlaprioridadManhattan)ycualquierotrotipodedatosdeayudaqueuse.Finalmente,envieunarchivo readme.txtdondehagaunrecuentodesuproyecto.

Referencias
http://www.cs.princeton.edu/introcs/assignments/8puzzle.html

You might also like