|
TProcura
Biblioteca em C++ para testes paramรฉtricos de algoritmos, e coleรงรฃo de algoritmos de procura e otimizaรงรฃo
|
Execuรงรฃo de exemplo com base no problema do Puzzle 8. Pode acompanhar o teste executando as aรงรตes localmente.
No Visual Studio, selecione o projeto TProcuraConstrutiva, e execute. No Linux na pasta .../TProcura/Construtiva/Teste$ execute make seguido de ./bin/Release/TProcuraConstrutiva
Nota: ao executar no terminal, os parรขmetros, indicadores e outros elementos, aparecem com realce de cor para facilitar a leitura.
โโ Teste TProcuraConstrutiva โโโ
โ 1 - Aspirador โ
โ 2 - Puzzle 8 โ
โ 3 - 8 Damas โ
โ 4 - Partiรงรฃo โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Opรงรฃo: 2
Vamos entrar no problema Puzzle 8, introduza: 2.
Puzzle 8 โโ โ Parรขmetros โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ P1(ALGORITMO): Largura Primeiro | P2(NIVEL_DEBUG): NADA | P3(SEMENTE): 1 โ P4(LIMITE_TEMPO): 10 | P5(LIMITE_ITERACOES): 0 | P6(VER_ACOES): 4 | P7(LIMITE): 0 โ P8(ESTADOS_REPETIDOS): ascendentes | P11(BARALHAR_SUCESSORES): 0 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ 3 1 2 โ 4 7 5 โ 6 8 . โโ โฐ Menu โโโโโโโโโโฌโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ โ 1 ๐ Instรขncia โ 2 ๐ Explorar โ 3 โ Parรขmetros โ 4 โ Soluรงรฃo โ โ 5 โ Indicadores โ 6 โบ Executar โ 7 ๐ ๏ธ Configuraรงรตes โ 8 ๐งช Teste โ โโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโ Opรงรฃo:
Aparece uma instรขncia do Puzzle 8. Poderiamos procurar resolver manualmente. No entanto esta instรขncia estรก distante da soluรงรฃo, pelo que vamos ver outra instรขncia. Introduza: 1;4.
Opรงรฃo: 1 โโ ๐ Instรขncia โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ ID atual: 40 Intervalo: [1โ1000] โ Prefixo atual: 'instancia_' โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ Novo ID (ENTER mantรฉm) ou novo prefixo (texto): 4 Puzzle 8 ... 3 1 2 6 4 5 7 8 . ... Opรงรฃo:
Estavamos na instรขncia 40, e existem instรขncias de 1 a 1000. Como as instรขncias sรฃo construรญdas com base em movimentos aleatรณrios em quantidade igual ao ID da instรขncia, ao escolher um ID de 4 garantimos que estamos a uma distรขncia de 4 ou menos da soluรงรฃo.
Vamos entรฃo resolver a instรขncia manualmente. Introduza: 2; dir dir baixo baixo; ENTER.
Opรงรฃo: 2 โโคโ ๐ฐ g:0 ๐ฏ h:4 โ 1|2|3 โโโ โ 3 1 2 โ 6 4 5 โ 7 8 . โ โโ โก โโโโ baixo dir ๐ Sucessor [1-2, aรงรฃo(รตes), exe]: dir dir baixo baixo โโ โ โโโโโโโโโโโโโโโโ โ Executadas 4 aรงรตes. โโโโโโโโโโโโโโโโโโโโโโ โโคโ ๐ฐ g:0 โ 6|14|6 โโโ โ . 1 2 โ 3 4 5 โ 6 7 8 โ โโ โก โโโโ cima esq ๐ Sucessor [1-2, aรงรฃo(รตes), exe]: โต Puzzle 8 ... โ . 1 2 โ 3 4 5 โ 6 7 8 ... Opรงรฃo:
A instรขncia estรก resolvida. Vamos agora ver o caminho gravado. Introduza 4.
Opรงรฃo: 4
Parte 1, aรงรตes: dir dir baixo baixo
(3) 1 2
(6) 4 5
(7)(8) .
Puzzle 8
...
โ . 1 2
โ 3 4 5
โ 6 7 8
...
Opรงรฃo:
Vemos agora a soluรงรฃo num formato compacto. Num sรณ tabuleiro, vemos as peรงas que mudam. Ou se se quiser, vemos o percurso do espaรงo. Existe uma sรณ parte, com as aรงรตes que demos manualmente. Caso o caminho intersecte, existiriam mais partes.
Esta forma de ver soluรงรตes รฉ especรญfica do Puzzle 8 porque foi redefinido o mรฉtodo MostrarSolucao(). Assim temos uma forma compacta mais cรณmoda de ver soluรงรตes.
Comeรงamos pela procura em largura nesta instรขncia, colocando debug a 4. Introduza: 1; 4; 3; 2; 4; ENTER; 6
Opรงรฃo: 6 โโคโ โบ Execuรงรฃo iniciada โโโ โโ โโคโ ๐ฐ g:0 โโโ { } โ 3 1 2 โ 6 4 5 โ 7 8 . โ โโ โก โโโโ baixo dir { ๐ 1 ๐ 2 } โโ โโคโ ๐ 1 ๐ฐ g:1 โ 1|2 โโโ { ๐ 2 } โ 3 1 2 โ 6 4 . โ 7 8 5 โ โโ โก โโโโ baixo dir { ๐ 3 ๐ 4 } โโ โโคโ ๐ 2 ๐ฐ g:1 โ 2|4 โโโ { ๐ 3 ๐ 4 } โ 3 1 2 โ 6 4 5 โ 7 . 8 โ โโ โก โโโโ baixo dir { ๐ 5 ๐ 6 } โโ โโคโ ๐ 3 ๐ฐ g:2 โ 3|6 โโโ { ๐ 4 ๐ 5 ๐ 6 } โ 3 1 . โ 6 4 2 โ 7 8 5 โ โโ โก โโโโ dir { ๐ 7 } โโ โโคโ ๐ 4 ๐ฐ g:2 โ 4|7 โโโ { ๐ 5 ๐ 6 ๐ 7 } โ 3 1 2 โ 6 . 4 โ 7 8 5 โ โโ โก โโโโ baixo cima dir { ๐ 8 ๐ 9 ๐ 10 } โโ โโคโ ๐ 5 ๐ฐ g:2 โ 5|10 โโโ { ๐ 6 ๐ 7 ๐ 8 ๐ 9 ๐ 10 } โ 3 1 2 โ 6 . 5 โ 7 4 8 โ โโ โก โโโโ baixo dir esq { ๐ 11 ๐ 12 ๐ 13 } โโ โโคโ ๐ 6 ๐ฐ g:2 โ 6|13 โโโ { ๐ 7 ๐ 8 ๐ 9 ๐ 10 ๐ 11 ๐ 12 ๐ 13 } โ 3 1 2 โ 6 4 5 โ . 7 8 โ โโ โก โโโโ baixo { ๐ 14 } โโ โโคโ ๐ 7 ๐ฐ g:3 โ 7|14 โโโ { ๐ 8 ๐ 9 ๐ 10 ๐ 11 ๐ 12 ๐ 13 ๐ 14 } โ 3 . 1 โ 6 4 2 โ 7 8 5 โ โโ โก โโโโ cima dir { ๐ 15 ๐ 16 } โโ โโคโ ๐ 8 ๐ฐ g:3 โ 8|16 โโโ { ๐ 9 ๐ 10 ๐ 11 ๐ 12 ๐ 13 ๐ 14 ๐ 15 ๐ 16 } โ 3 . 2 โ 6 1 4 โ 7 8 5 โ โโ โก โโโโ dir esq { ๐ 17 ๐ 18 } โโ โโคโ ๐ 9 ๐ฐ g:3 โ 9|18 โโโ { ๐ 10 ๐ 11 ๐ 12 ๐ 13 ๐ 14 ๐ 15 ๐ 16 ๐ 17 ๐ 18 } โ 3 1 2 โ 6 8 4 โ 7 . 5 โ โโ โก โโโโ dir esq { ๐ 19 ๐ 20 } โโ โโคโ ๐ 10 ๐ฐ g:3 โ 10|20 โโโ { ๐ 11 ๐ 12 ๐ 13 ๐ 14 ๐ 15 ๐ 16 ๐ 17 ๐ 18 ๐ 19 ๐ 20 } โ 3 1 2 โ . 6 4 โ 7 8 5 โ โโ โก โโโโ baixo cima { ๐ 21 ๐ 22 } โโ โโคโ ๐ 11 ๐ฐ g:3 โ 11|22 โโโ { ๐ 12 ๐ 13 ๐ 14 โฆ ๐ 20 ๐ 21 ๐ 22 } #11 โ 3 . 2 โ 6 1 5 โ 7 4 8 โ โโ โก โโโโ dir esq { ๐ 23 ๐ 24 } โโ โโคโ ๐ 12 ๐ฐ g:3 โ 12|24 โโโ { ๐ 13 ๐ 14 ๐ 15 โฆ ๐ 22 ๐ 23 ๐ 24 } #12 โ 3 1 2 โ . 6 5 โ 7 4 8 โ โโ โก โโโโ baixo cima { ๐ 25 ๐ 26 } โโ โโคโ ๐ 13 ๐ฐ g:3 โ 13|26 โโโ { ๐ 14 ๐ 15 ๐ 16 โฆ ๐ 24 ๐ 25 ๐ 26 } #13 โ 3 1 2 โ 6 5 . โ 7 4 8 โ โโ โก โโโโ baixo cima { ๐ 27 ๐ 28 } โโ โโคโ ๐ 14 ๐ฐ g:3 โ 14|28 โโโ { ๐ 15 ๐ 16 ๐ 17 โฆ ๐ 26 ๐ 27 ๐ 28 } #14 โ 3 1 2 โ . 4 5 โ 6 7 8 โ โโ โก โโโโ baixo esq { ๐ 29 ๐ 30 } โ ๐ฏ Soluรงรฃo encontrada! ๐ฐ g:4 โ . 1 2 โ 3 4 5 โ 6 7 8 โโ Parรขmetros โ P1=1 P2=4 P3=1 P4=10 P5=0 P6=4 P7=0 P8=2 P11=0 โโงโ ๐ Execuรงรฃo terminada โฑ โโโ Puzzle 8 โโ โ Parรขmetros โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ P1(ALGORITMO): Largura Primeiro | P2(NIVEL_DEBUG): COMPLETO | P3(SEMENTE): 1 โ P4(LIMITE_TEMPO): 10 | P5(LIMITE_ITERACOES): 0 | P6(VER_ACOES): 4 | P7(LIMITE): 0 โ P8(ESTADOS_REPETIDOS): ascendentes | P11(BARALHAR_SUCESSORES): 0 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ . 1 2 3 4 5 6 7 8 โโ โ Indicadores โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ I1(IND_CUSTO): 4 | I2(Tempo(ms)): 0 | I3(Iteraรงรตes): 0 | I4(IND_EXPANSOES): 15 | โ I5(IND_GERACOES): 30 | I6(IND_LOWER_BOUND): 0 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ ... Opรงรฃo:
Foi encontrada uma soluรงรฃo de distรขncia 4. Podemos ver a ordem das expansรตes, houve estados expandidos que em nada contribuiam para a soluรงรฃo, mas serviram para garantir que nรฃo havia outra soluรงรฃo mais curta.
Vemos a lista de estados gerados nรฃo expandidos, vai cada vez aumentando, e na geraรงรฃo 14 jรก tinha 14 elementos. A partir de 10 elementos, em vez de colocar todos os elementos da lista, colocamos apenas os primeiros e รบltimos, acompanhado com a quantidade de elementos.
Esta instรขncia era fรกcil, mas e a instรขncia inicial? Vamos ver, mas reduzindo o debug para 2, e a semente para 2. Introduza: 3; 2; 2; 3; 2; ENTER; 1; 40; 6.
Opรงรฃo: 6 โโคโ โบ Execuรงรฃo iniciada โโโ โโ โโคโ ๐ฐ g:0 โโโ { } โโ โโคโ ๐ 1 ๐ฐ g:1 โ 1|4 โโโ { ๐ 2 ๐ 3 ๐ 4 } โโ โโคโ ๐ 2 ๐ฐ g:1 โ 2|6 โโโ { ๐ 3 ๐ 4 ๐ 5 ๐ 6 } โโ โโคโ ๐ 3 ๐ฐ g:1 โ 3|8 โโโ { ๐ 4 ๐ 5 ๐ 6 ๐ 7 ๐ 8 } โโ โโคโ ๐ 4 ๐ฐ g:1 โ 4|10 โโโ { ๐ 5 ๐ 6 ๐ 7 ๐ 8 ๐ 9 ๐ 10 } โโ โโคโ ๐ 5 ๐ฐ g:2 โ 5|12 โโโ { ๐ 6 ๐ 7 ๐ 8 ๐ 9 ๐ 10 ๐ 11 ๐ 12 } โโ โโคโ ๐ 6 ๐ฐ g:2 โ 6|13 โโโ { ๐ 7 ๐ 8 ๐ 9 ๐ 10 ๐ 11 ๐ 12 ๐ 13 } โโ โโคโ ๐ 7 ๐ฐ g:2 โ 7|14 โโโ { ๐ 8 ๐ 9 ๐ 10 ๐ 11 ๐ 12 ๐ 13 ๐ 14 } โโ โโคโ ๐ 8 ๐ฐ g:2 โ 8|15 โโโ { ๐ 9 ๐ 10 ๐ 11 ๐ 12 ๐ 13 ๐ 14 ๐ 15 } โโ โโคโ ๐ 9 ๐ฐ g:2 โ 9|16 โโโ { ๐ 10 ๐ 11 ๐ 12 ๐ 13 ๐ 14 ๐ 15 ๐ 16 } โโ โโคโ ๐ 10 ๐ฐ g:2 โ 10|17 โโโ { ๐ 11 ๐ 12 ๐ 13 ๐ 14 ๐ 15 ๐ 16 ๐ 17 } โโ โโคโ ๐ 11 ๐ฐ g:2 โ 11|18 โโโ { ๐ 12 ๐ 13 ๐ 14 ๐ 15 ๐ 16 ๐ 17 ๐ 18 } โโ โโคโ ๐ 12 ๐ฐ g:2 โ 12|19 โโโ { ๐ 13 ๐ 14 ๐ 15 ๐ 16 ๐ 17 ๐ 18 ๐ 19 } โโ โโคโ ๐ 13 ๐ฐ g:3 โ 13|20 โโโ { ๐ 14 ๐ 15 ๐ 16 ๐ 17 ๐ 18 ๐ 19 ๐ 20 } โโ โโคโ ๐ 14 ๐ฐ g:3 โ 14|22 โโโ { ๐ 15 ๐ 16 ๐ 17 ๐ 18 ๐ 19 ๐ 20 ๐ 21 ๐ 22 } โโ โโคโ ๐ 15 ๐ฐ g:3 โ 15|24 โโโ { ๐ 16 ๐ 17 ๐ 18 ๐ 19 ๐ 20 ๐ 21 ๐ 22 ๐ 23 ๐ 24 } โโ โโคโ ๐ 16 ๐ฐ g:3 โ 16|26 โโโ { ๐ 17 ๐ 18 ๐ 19 ๐ 20 ๐ 21 ๐ 22 ๐ 23 ๐ 24 ๐ 25 ๐ 26 } โโ โโคโ ๐ 17 ๐ฐ g:3 โ 17|28 โโโ { ๐ 18 ๐ 19 ๐ 20 โฆ ๐ 26 ๐ 27 ๐ 28 } #11 ... โโ โโคโ ๐ 1273 ๐ฐ g:11 โ 1273|2107 โโโ { ๐ 1274 ๐ 1275 ๐ 1276 โฆ ๐ 2105 ๐ 2106 ๐ 2107 } #834 โโ โโคโ ๐ 1274 ๐ฐ g:11 โ 1274|2109 โโโ { ๐ 1275 ๐ 1276 ๐ 1277 โฆ ๐ 2107 ๐ 2108 ๐ 2109 } #835 โโ โโคโ ๐ 1275 ๐ฐ g:11 โ 1275|2111 โโโ { ๐ 1276 ๐ 1277 ๐ 1278 โฆ ๐ 2109 ๐ 2110 ๐ 2111 } #836 โโ โโคโ ๐ 1276 ๐ฐ g:11 โ 1276|2113 โโโ { ๐ 1277 ๐ 1278 ๐ 1279 โฆ ๐ 2111 ๐ 2112 ๐ 2113 } #837 โโ โโคโ ๐ 1277 ๐ฐ g:11 โ 1277|2115 โโโ { ๐ 1278 ๐ 1279 ๐ 1280 โฆ ๐ 2113 ๐ 2114 ๐ 2115 } #838 โโ โโคโ ๐ 1278 ๐ฐ g:11 โ 1278|2117 โโโ { ๐ 1279 ๐ 1280 ๐ 1281 โฆ ๐ 2115 ๐ 2116 ๐ 2117 } #839 โโ โโคโ ๐ 1279 ๐ฐ g:11 โ 1279|2119 โโโ { ๐ 1280 ๐ 1281 ๐ 1282 โฆ ๐ 2117 ๐ 2118 ๐ 2119 } #840 โโ โโคโ ๐ 1280 ๐ฐ g:11 โ 1280|2121 โโโ { ๐ 1281 ๐ 1282 ๐ 1283 โฆ ๐ 2119 ๐ 2120 ๐ 2121 } #841 โโ โโคโ ๐ 1281 ๐ฐ g:11 โ 1281|2123 โโโ { ๐ 1282 ๐ 1283 ๐ 1284 โฆ ๐ 2121 ๐ 2122 ๐ 2123 } #842 โโ โโคโ ๐ 1282 ๐ฐ g:11 โ 1282|2125 โโโ { ๐ 1283 ๐ 1284 ๐ 1285 โฆ ๐ 2123 ๐ 2124 ๐ 2125 } #843 โโ โโคโ ๐ 1283 ๐ฐ g:11 โ 1283|2127 โโโ { ๐ 1284 ๐ 1285 ๐ 1286 โฆ ๐ 2125 ๐ 2126 ๐ 2127 } #844 โโ โโคโ ๐ 1284 ๐ฐ g:11 โ 1284|2129 โโโ { ๐ 1285 ๐ 1286 ๐ 1287 โฆ ๐ 2127 ๐ 2128 ๐ 2129 } #845 โ ๐ฏ Soluรงรฃo encontrada! ๐ฐ g:12 โ . 1 2 โ 3 4 5 โ 6 7 8 โโ Parรขmetros โ P1=1 P2=2 P3=2 P4=10 P5=0 P6=4 P7=0 P8=2 P11=0 โโงโ ๐ Execuรงรฃo terminada โฑ 8ms โโโ Puzzle 8 โโ โ Parรขmetros โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ P1(ALGORITMO): Largura Primeiro | P2(NIVEL_DEBUG): PASSOS | P3(SEMENTE): 2 โ P4(LIMITE_TEMPO): 10 | P5(LIMITE_ITERACOES): 0 | P6(VER_ACOES): 4 | P7(LIMITE): 0 โ P8(ESTADOS_REPETIDOS): ascendentes | P11(BARALHAR_SUCESSORES): 0 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ . 1 2 3 4 5 6 7 8 โโ โ Indicadores โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ I1(IND_CUSTO): 12 | I2(Tempo(ms)): 8 | I3(Iteraรงรตes): 0 | I4(IND_EXPANSOES): 1285 | โ I5(IND_GERACOES): 2131 | I6(IND_LOWER_BOUND): 0 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ ,,, Opรงรฃo:
Foi encontrado um resultado com 12 movimentos, mas foram realizadas 1285 expansรตes, resultando em 2131 geraรงรตes. Notar que a lista de estados gerados nรฃo expandidos foi continuamente crescendo, e no momento em que foi encontrada a soluรงรฃo haviam 845 estados nesta lista.
Vamos confirmar a soluรงรฃo. Introduza 4.
Opรงรฃo: 4
Parte 1, aรงรตes: baixo esq cima cima
4 (7)(3)
1 . (2)
6 8 (5)
Parte 2, aรงรตes: dir baixo baixo dir
(4)(3) 2
1 (7) 5
6 (8) .
Parte 3, aรงรตes: cima esq
. 4 2
(1)(3) 5
6 7 8
Parte 4, aรงรตes: baixo dir
(1)(4) 2
3 . 5
6 7 8
Puzzle 8
...
. 1 2
3 4 5
6 7 8
...
Opรงรฃo:
Nesta instรขncia foram precisas 4 partes para mostrar a soluรงรฃo com 12 aรงรตes.
Embora o estado inicial tenha sido obtido por 40 movimentos aleatรณrios desde o estado objetivo, alguns dos movimentos acabaram por se inverter resultando numa instรขncia ร distรขncia 12 do objetivo.
Utilizamos P3(SEMENTE)=2, naturalmente que outra semente aleatรณria poderia gerar um puzzle de 0 a 40 movimentos da soluรงรฃo.
Vamos ver a procura em profundidade na instรขncia 40, que sabemos ter uma soluรงรฃo de 12. Vamos alterar o algoritmo, colocar a profundidade a 4, debug a completo e visualizaรงรฃo de aรงรตes a 1, para ser ver todos os estados. Introduza: 1; 40; 3; 1; 3; 7; 4; 2; 4; 6; 1; ENTER; 6.
Opรงรฃo: 6 โโคโ โบ Execuรงรฃo iniciada โโโ โโ โโคโ ๐ฐ g:0 โโโ โ 4 7 3 โ 1 . 2 โ 6 8 5 โ โโ โโคโ ๐ 1 ๐ฐ g:1 โ 1|4 โโโ โก baixo โ โ 4 . 3 โ โ 1 7 2 โ โ 6 8 5 โ โ โโ โโคโ ๐ 5 ๐ฐ g:2 โ 2|6 โโโ โก dir โ โ โ . 4 3 โ โ โ 1 7 2 โ โ โ 6 8 5 โ โ โ โโ โโคโ ๐ 7 ๐ฐ g:3 โ 3|7 โโโ โก cima โ โ โ 1 4 3 โ โ โ . 7 2 โ โ โ 6 8 5 โ โ โ ๐ ๐ช โ โ โโ โโคโ ๐ 6 ๐ฐ g:2 โ 3|7 โโโ โก esq โ โ 4 3 . โ โ 1 7 2 โ โ 6 8 5 โ โ โโ โโคโ ๐ 8 ๐ฐ g:3 โ 4|8 โโโ โก cima โ โ 4 3 2 โ โ 1 7 . โ โ 6 8 5 โ โ ๐ ๐ช โ โโ โโคโ ๐ 2 ๐ฐ g:1 โ 4|8 โโโ โก cima โ โ 4 7 3 โ โ 1 8 2 โ โ 6 . 5 โ โ โโ โโคโ ๐ 9 ๐ฐ g:2 โ 5|10 โโโ โก dir โ โ โ 4 7 3 โ โ โ 1 8 2 โ โ โ . 6 5 โ โ โ โโ โโคโ ๐ 11 ๐ฐ g:3 โ 6|11 โโโ โก baixo โ โ โ 4 7 3 โ โ โ . 8 2 โ โ โ 1 6 5 โ โ โ ๐ ๐ช โ โ โโ โโคโ ๐ 10 ๐ฐ g:2 โ 6|11 โโโ โก esq โ โ 4 7 3 โ โ 1 8 2 โ โ 6 5 . โ โ โโ โโคโ ๐ 12 ๐ฐ g:3 โ 7|12 โโโ โก baixo โ โ 4 7 3 โ โ 1 8 . โ โ 6 5 2 โ โ ๐ ๐ช โ โโ โโคโ ๐ 3 ๐ฐ g:1 โ 7|12 โโโ โก dir โ โ 4 7 3 โ โ . 1 2 โ โ 6 8 5 โ โ โโ โโคโ ๐ 13 ๐ฐ g:2 โ 8|14 โโโ โก baixo โ โ โ . 7 3 โ โ โ 4 1 2 โ โ โ 6 8 5 โ โ โ โโ โโคโ ๐ 15 ๐ฐ g:3 โ 9|15 โโโ โก esq โ โ โ 7 . 3 โ โ โ 4 1 2 โ โ โ 6 8 5 โ โ โ ๐ ๐ช โ โ โโ โโคโ ๐ 14 ๐ฐ g:2 โ 9|15 โโโ โก cima โ โ 4 7 3 โ โ 6 1 2 โ โ . 8 5 โ โ โโ โโคโ ๐ 16 ๐ฐ g:3 โ 10|16 โโโ โก esq โ โ 4 7 3 โ โ 6 1 2 โ โ 8 . 5 โ โ ๐ ๐ช โ โโ โโคโ ๐ 4 ๐ฐ g:1 โ 10|16 โโโ โก esq โ 4 7 3 โ 1 2 . โ 6 8 5 โ โโ โโคโ ๐ 17 ๐ฐ g:2 โ 11|18 โโโ โก baixo โ โ 4 7 . โ โ 1 2 3 โ โ 6 8 5 โ โ โโ โโคโ ๐ 19 ๐ฐ g:3 โ 12|19 โโโ โก dir โ โ 4 . 7 โ โ 1 2 3 โ โ 6 8 5 โ โ ๐ ๐ช โ โโ โโคโ ๐ 18 ๐ฐ g:2 โ 12|19 โโโ โก cima โ 4 7 3 โ 1 2 5 โ 6 8 . โ โโ โโคโ ๐ 20 ๐ฐ g:3 โ 13|20 โโโ โก dir โ 4 7 3 โ 1 2 5 โ 6 . 8 โ ๐ ๐ช โโ Parรขmetros โ P1=3 P2=4 P3=2 P4=10 P5=0 P6=1 P7=4 P8=2 P11=0 โโงโ ๐ Execuรงรฃo terminada โฑ โโโ Puzzle 8 โโ โ Parรขmetros โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ P1(ALGORITMO): Profundidade Primeiro | P2(NIVEL_DEBUG): COMPLETO | P3(SEMENTE): 2 โ P4(LIMITE_TEMPO): 10 | P5(LIMITE_ITERACOES): 0 | P6(VER_ACOES): 1 | P7(LIMITE): 4 โ P8(ESTADOS_REPETIDOS): ascendentes | P11(BARALHAR_SUCESSORES): 0 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 4 7 3 1 . 2 6 8 5 โโ โ Indicadores โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ I1(IND_CUSTO): -1 | I2(Tempo(ms)): 0 | I3(Iteraรงรตes): 0 | I4(IND_EXPANSOES): 13 | โ I5(IND_GERACOES): 20 | I6(IND_LOWER_BOUND): 0 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ ... Opรงรฃo:
Foram vistos todos os estados, e nรฃo se encontrou uma soluรงรฃo. No entanto todos os nรณs folha foram cortados devido ao limite, motivo pelo qual tรชm o รญcon da escada. Vamos agora colocar o limite a 0, de modo a executar a iterativa, e debug no nรญvel 2. Introduza: 1; 40; 3; 7; 0; 2; 2; ENTER; 6.
Opรงรฃo: 6 โโคโ โบ Execuรงรฃo iniciada โโโ โโโโโโโโโโโโ ๐ณ ๐ช 1 โฑ โโโโโโโโโโโโ โโ โโคโ ๐ฐ g:0 โโโ โโโ ๐ ๐ช โโโโโโโโโโโโ ๐ณ ๐ช 2 โฑ โโโโโโโโโโโโ โโ โโคโ ๐ฐ g:0 โโโ โ โโ โโคโ ๐ 1 ๐ฐ g:1 โ 1|4 โโโ โก baixo โโโ ๐ ๐ช โ โโ โโคโ ๐ 2 ๐ฐ g:1 โ 1|4 โโโ โก cima โโโ ๐ ๐ช โ โโ โโคโ ๐ 3 ๐ฐ g:1 โ 1|4 โโโ โก dir โโโ ๐ ๐ช โ โโ โโคโ ๐ 4 ๐ฐ g:1 โ 1|4 โโโ โก esq โโโ ๐ ๐ช โโโโโโโโโโโโ ๐ณ ๐ช 3 โฑ โโโโโโโโโโโโ โโ โโคโ ๐ฐ g:0 โ 1|4 โโโ โ โโ โโคโ ๐ 5 ๐ฐ g:1 โ 2|8 โโโ โก baixo โ โ โโ โโคโ ๐ 9 ๐ฐ g:2 โ 3|10 โโโ โก dir โโโ ๐ ๐ช โ โ โโ โโคโ ๐ 10 ๐ฐ g:2 โ 3|10 โโโ โก esq โโโ ๐ ๐ช โ โโ โโคโ ๐ 6 ๐ฐ g:1 โ 3|10 โโโ โก cima โ โ โโ โโคโ ๐ 11 ๐ฐ g:2 โ 4|12 โโโ โก dir โโโ ๐ ๐ช โ โ โโ โโคโ ๐ 12 ๐ฐ g:2 โ 4|12 โโโ โก esq โโโ ๐ ๐ช โ โโ โโคโ ๐ 7 ๐ฐ g:1 โ 4|12 โโโ โก dir โ โ โโ โโคโ ๐ 13 ๐ฐ g:2 โ 5|14 โโโ โก baixo โโโ ๐ ๐ช โ โ โโ โโคโ ๐ 14 ๐ฐ g:2 โ 5|14 โโโ โก cima โโโ ๐ ๐ช โ โโ โโคโ ๐ 8 ๐ฐ g:1 โ 5|14 โโโ โก esq โ โโ โโคโ ๐ 15 ๐ฐ g:2 โ 6|16 โโโ โก baixo โโโ ๐ ๐ช โ โโ โโคโ ๐ 16 ๐ฐ g:2 โ 6|16 โโโ โก cima โโโ ๐ ๐ช โโโโโโโโโโโโ ๐ณ ๐ช 4 โฑ โโโโโโโโโโโโ โโ โโคโ ๐ฐ g:0 โ 6|16 โโโ โ โโ โโคโ ๐ 17 ๐ฐ g:1 โ 7|20 โโโ โก baixo โ โ โโ โโคโ ๐ 21 ๐ฐ g:2 โ 8|22 โโโ โก dir โ โ โ โโ โโคโ ๐ 23 ๐ฐ g:3 โ 9|23 โโโ โก cima โโโ ๐ ๐ช โ โ โโ โโคโ ๐ 22 ๐ฐ g:2 โ 9|23 โโโ โก esq โ โ โโ โโคโ ๐ 24 ๐ฐ g:3 โ 10|24 โโโ โก cima โโโ ๐ ๐ช โ โโ โโคโ ๐ 18 ๐ฐ g:1 โ 10|24 โโโ โก cima โ โ โโ โโคโ ๐ 25 ๐ฐ g:2 โ 11|26 โโโ โก dir โ โ โ โโ โโคโ ๐ 27 ๐ฐ g:3 โ 12|27 โโโ โก baixo โโโ ๐ ๐ช โ โ โโ โโคโ ๐ 26 ๐ฐ g:2 โ 12|27 โโโ โก esq โ โ โโ โโคโ ๐ 28 ๐ฐ g:3 โ 13|28 โโโ โก baixo โโโ ๐ ๐ช โ โโ โโคโ ๐ 19 ๐ฐ g:1 โ 13|28 โโโ โก dir โ โ โโ โโคโ ๐ 29 ๐ฐ g:2 โ 14|30 โโโ โก baixo โ โ โ โโ โโคโ ๐ 31 ๐ฐ g:3 โ 15|31 โโโ โก esq โโโ ๐ ๐ช โ โ โโ โโคโ ๐ 30 ๐ฐ g:2 โ 15|31 โโโ โก cima โ โ โโ โโคโ ๐ 32 ๐ฐ g:3 โ 16|32 โโโ โก esq โโโ ๐ ๐ช โ โโ โโคโ ๐ 20 ๐ฐ g:1 โ 16|32 โโโ โก esq โ โโ โโคโ ๐ 33 ๐ฐ g:2 โ 17|34 โโโ โก baixo โ โ โโ โโคโ ๐ 35 ๐ฐ g:3 โ 18|35 โโโ โก dir โโโ ๐ ๐ช โ โโ โโคโ ๐ 34 ๐ฐ g:2 โ 18|35 โโโ โก cima โ โโ โโคโ ๐ 36 ๐ฐ g:3 โ 19|36 โโโ โก dir โโโ ๐ ๐ช โโโโโโโโโโโโ ๐ณ ๐ช 5 โฑ โโโโโโโโโโโโ ... โโโโโโโโโโโโ ๐ณ ๐ช 13 โฑ 6ms โโโโโโโโโโโโ โโ โโคโ ๐ฐ g:0 โ 2699|4628 โโโ โ โโ โโคโ ๐ 4629 ๐ฐ g:1 โ 2700|4632 โโโ โก baixo โ โ โโ โโคโ ๐ 4633 ๐ฐ g:2 โ 2701|4634 โโโ โก dir โ โ โ โโ โโคโ ๐ 4635 ๐ฐ g:3 โ 2702|4635 โโโ โก cima โ โ โ โโ โโคโ ๐ 4636 ๐ฐ g:4 โ 2703|4637 โโโ โก cima โ โ โ โ โโ โโคโ ๐ 4638 ๐ฐ g:5 โ 2704|4638 โโโ โก esq โ โ โ โ โโ โโคโ ๐ 4639 ๐ฐ g:6 โ 2705|4640 โโโ โก baixo โ โ โ โ โ โโ โโคโ ๐ 4641 ๐ฐ g:7 โ 2706|4643 โโโ โก baixo โ โ โ โ โ โ โโ โโคโ ๐ 4644 ๐ฐ g:8 โ 2707|4645 โโโ โก dir โ โ โ โ โ โ โ โโ โโคโ ๐ 4646 ๐ฐ g:9 โ 2708|4646 โโโ โก cima โ โ โ โ โ โ โ โโ โโคโ ๐ 4647 ๐ฐ g:10 โ 2709|4648 โโโ โก cima โ โ โ โ โ โ โ โ โโ โโคโ ๐ 4649 ๐ฐ g:11 โ 2710|4649 โโโ โก esq โ โ โ โ โ โ โ โ โโ โโคโ ๐ 4650 ๐ฐ g:12 โ 2711|4651 โโโ โก baixo โโโ ๐ ๐ช โ โ โ โ โ โ โ โ โโ โโคโ ๐ 4651 ๐ฐ g:12 โ 2711|4651 โโโ โก esq โโโ ๐ ๐ช โ โ โ โ โ โ โ โโ โโคโ ๐ 4648 ๐ฐ g:10 โ 2711|4651 โโโ โก esq โ โ โ โ โ โ โ โโ โโคโ ๐ 4652 ๐ฐ g:11 โ 2712|4654 โโโ โก baixo โ โ โ โ โ โ โ โ โโ โโคโ ๐ 4655 ๐ฐ g:12 โ 2713|4656 โโโ โก dir โโโ ๐ ๐ช ... โ โ โ โโ โโคโ ๐ 5056 ๐ฐ g:11 โ 2942|5060 โโโ โก esq โ โ โ โโ โโคโ ๐ 5061 ๐ฐ g:12 โ 2943|5062 โโโ โก baixo โโโ ๐ ๐ช โ โ โ โโ โโคโ ๐ 5062 ๐ฐ g:12 โ 2943|5062 โโโ โก cima โโโ ๐ ๐ช โ โ โโ โโคโ ๐ 4634 ๐ฐ g:2 โ 2943|5062 โโโ โก esq โ โ โโ โโคโ ๐ 5063 ๐ฐ g:3 โ 2944|5063 โโโ โก cima โ โ โโ โโคโ ๐ 5064 ๐ฐ g:4 โ 2945|5065 โโโ โก cima โ โ โ โโ โโคโ ๐ 5066 ๐ฐ g:5 โ 2946|5066 โโโ โก dir โ โ โ โโ โโคโ ๐ 5067 ๐ฐ g:6 โ 2947|5068 โโโ โก baixo โ โ โ โ โโ โโคโ ๐ 5069 ๐ฐ g:7 โ 2948|5071 โโโ โก baixo โ โ โ โ โ โโ โโคโ ๐ 5072 ๐ฐ g:8 โ 2949|5073 โโโ โก dir โ โ โ โ โ โ โโ โโคโ ๐ 5074 ๐ฐ g:9 โ 2950|5074 โโโ โก cima โ โ โ โ โ โ โโ โโคโ ๐ 5075 ๐ฐ g:10 โ 2951|5076 โโโ โก cima โ โ โ โ โ โ โ โโ โโคโ ๐ 5077 ๐ฐ g:11 โ 2952|5077 โโโ โก esq โ โ โ โ โ โ โ โโ โโคโ ๐ 5078 ๐ฐ g:12 โ 2953|5079 โโโ โก baixo โโโ ๐ ๐ช โ โ โ โ โ โ โ โโ โโคโ ๐ 5079 ๐ฐ g:12 โ 2953|5079 โโโ โก esq โโโ ๐ ๐ช โ โ โ โ โ โ โโ โโคโ ๐ 5076 ๐ฐ g:10 โ 2953|5079 โโโ โก esq โ โ โ โ โ โ โโ โโคโ ๐ 5080 ๐ฐ g:11 โ 2954|5082 โโโ โก baixo โ โ โ โ โ โ โ โโ โโคโ ๐ 5083 ๐ฐ g:12 โ 2955|5084 โโโ โก dir โ โ โ โ โ โ โ โ ๐ฏ Soluรงรฃo encontrada! ๐ฐ g:12 โ โ โ โ โ โ โ โ . 1 2 โ โ โ โ โ โ โ โ 3 4 5 โ โ โ โ โ โ โ โ 6 7 8 โโโ ๐ฏ 12 โ ๐ โโโ { ๐ 5084 } โโโ { ๐ 5081 ๐ 5082 } โโโ { ๐ 5073 } โโโ { ๐ 5070 ๐ 5071 } โโโ { ๐ 5068 } โโโ { ๐ 5065 } โโโ { ๐ 4630 ๐ 4631 ๐ 4632 } โโ Parรขmetros โ P1=3 P2=2 P3=2 P4=10 P5=0 P6=1 P7=0 P8=2 P11=0 โโงโ ๐ Execuรงรฃo terminada โฑ 7ms โโโ Puzzle 8 โโ โ Parรขmetros โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ P1(ALGORITMO): Profundidade Primeiro | P2(NIVEL_DEBUG): PASSOS | P3(SEMENTE): 2 โ P4(LIMITE_TEMPO): 10 | P5(LIMITE_ITERACOES): 0 | P6(VER_ACOES): 1 | P7(LIMITE): 0 โ P8(ESTADOS_REPETIDOS): ascendentes | P11(BARALHAR_SUCESSORES): 0 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ . 1 2 3 4 5 6 7 8 โโ โ Indicadores โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ I1(IND_CUSTO): 12 | I2(Tempo(ms)): 7 | I3(Iteraรงรตes): 0 | I4(IND_EXPANSOES): 2955 | โ I5(IND_GERACOES): 5084 | I6(IND_LOWER_BOUND): 0 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ ... Opรงรฃo:
A procura em profundidade iterativa encontrou tambรฉm a soluรงรฃo รณtima, com 12 movimentos, na 13ยช iteraรงรฃo. Foram realizadas 2955 expansรตes e 5084 geraรงรตes, um valor superior ร procura em largura.
Notar no entanto no parรขmetro P8(ESTADOS_REPETIDOS): ascendentes. Significa que nรฃo foram gerados estados, que num dado ramo, jรก tinham ocorrido anteriormente. Esta รฉ a opรงรฃo por omissรฃo para este problema, jรก que foi redefinido CPuzzle8::ResetParametros().
Vamos repetir esta execuรงรฃo, com debug no nรญvel 1, e ignorando repetidos. Introduza: 1; 40; 3; 2; 1; 8; 1; ENTER; 6.
Opรงรฃo: 6 โโคโ โบ Execuรงรฃo iniciada โโโ#########...########### โโ ๐ฏ Soluรงรฃo encontrada! ๐ฐ g:12 โ . 1 2 โ 3 4 5 โ 6 7 8 โโ Parรขmetros โ P1=3 P2=1 P3=2 P4=10 P5=0 P6=1 P7=0 P8=1 P11=0 โโงโ ๐ Execuรงรฃo terminada โฑ 83ms โโโ Puzzle 8 โโ โ Parรขmetros โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ P1(ALGORITMO): Profundidade Primeiro | P2(NIVEL_DEBUG): ATIVIDADE | P3(SEMENTE): 2 โ P4(LIMITE_TEMPO): 10 | P5(LIMITE_ITERACOES): 0 | P6(VER_ACOES): 1 | P7(LIMITE): 0 โ P8(ESTADOS_REPETIDOS): ignorar | P11(BARALHAR_SUCESSORES): 0 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ . 1 2 3 4 5 6 7 8 โโ โ Indicadores โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ I1(IND_CUSTO): 12 | I2(Tempo(ms)): 83 | I3(Iteraรงรตes): 0 | I4(IND_EXPANSOES): 156105 | โ I5(IND_GERACOES): 440523 | I6(IND_LOWER_BOUND): 0 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ ... Opรงรฃo:
Podemos ver que o nรบmero de expansรตes e geraรงรตes รฉ consideravelmente superior. O tempo foi idรชntico mesmo com mais geraรงรตes, mas isso deve-se ao nรญvel de debug utilizado.
A verificaรงรฃo dos estados repetidos, รฉ portanto um parรขmetro bastante importante neste problema, em que o mesmo estado pode surgir vรกrias vezes. Vamos entรฃo testar a eliminaรงรฃo de todos os estados repetidos gerados. Introduza: 1; 40; 3; 8; 3; ENTER; 6.
Opรงรฃo: 6 โโคโ โบ Execuรงรฃo iniciada โโโ#### โโ ๐ฏ Soluรงรฃo encontrada! ๐ฐ g:12 โ . 1 2 โ 3 4 5 โ 6 7 8 โโ Parรขmetros โ P1=3 P2=1 P3=2 P4=10 P5=0 P6=1 P7=0 P8=3 P11=0 โโงโ ๐ Execuรงรฃo terminada โฑ 22ms โโโ Puzzle 8 โโ โ Parรขmetros โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ P1(ALGORITMO): Profundidade Primeiro | P2(NIVEL_DEBUG): ATIVIDADE | P3(SEMENTE): 2 โ P4(LIMITE_TEMPO): 10 | P5(LIMITE_ITERACOES): 0 | P6(VER_ACOES): 1 | P7(LIMITE): 0 โ P8(ESTADOS_REPETIDOS): gerados | P11(BARALHAR_SUCESSORES): 0 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ . 1 2 3 4 5 6 7 8 โโ โ Indicadores โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ I1(IND_CUSTO): 12 | I2(Tempo(ms)): 22 | I3(Iteraรงรตes): 0 | I4(IND_EXPANSOES): 2647 | โ I5(IND_GERACOES): 4400 | I6(IND_LOWER_BOUND): 0 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ ... Opรงรฃo:
Podemos ver que o nรบmero de exapansรตes e geraรงรตes รฉ ligeiramente inferior ร configuraรงรฃo inicial, de remover repetidos ascendentes.
Pergunta: o que acontecia se executarmos a procura em profundidade ilimitada, ao deixar limite com -1, e sem verificar estados repetidos?
A procura nรฃo retorna, crasha devido a entrar num ciclo infinito.