8 Puzzle
8 Puzzle
8 Puzzle
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
% 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
Referencias
http://www.cs.princeton.edu/introcs/assignments/8puzzle.html