A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

1 Pesquisa e Heurísticas Os algoritmos que mantêm um qualquer critério de consistência ao eliminar valores redundantes dos domínios reduzem, mas não eliminam.

Apresentações semelhantes


Apresentação em tema: "1 Pesquisa e Heurísticas Os algoritmos que mantêm um qualquer critério de consistência ao eliminar valores redundantes dos domínios reduzem, mas não eliminam."— Transcrição da apresentação:

1 1 Pesquisa e Heurísticas Os algoritmos que mantêm um qualquer critério de consistência ao eliminar valores redundantes dos domínios reduzem, mas não eliminam a necessidade de pesquisa. Com efeito se uma rede é consistente isto não implica que qualquer enumeração não esteja sujeita a falhas. Na realidade, uma rede de restrições consistente não é sequer necessáriamente satisfazivel (tal como uma rede satisfazível não é necessáriamente consistente). Tudo o que se pode garantir ao manter um qualquer critério de consistência é que não se perdem soluções isto é, todas as soluções da rede de restrições original são igualmente soluções da rede consistente.

2 2 Pesquisa e Heurísticas Desta forma a redução de domínios não implica em geral a eliminação da pesquisa. Em geral essa pesquisa será feita organizando o espaço de pesquisa numa árvore, havendo lugar a um retrocesso se se detectar uma falha (insatisfazibilidade). Como vimos antes, na árvore de pesquisa cada nível corresponde a uma atribuição de valor a uma variável, pelo que a pesquisa em árvore pretende construir uma etiqueta composta completa (incluido todas as variáveis) de uma forma incremental, isto é, completando sucessivamente uma etiqueta inicialmente vazia.

3 3 Pesquisa e Heurísticas Em termos do esquema de programação em lógica com restrições (ou mais geralmente, em qualquer algoritmo de pesquisa entrelaçado com propagação de restrições) Problema ( Vars):- Declaração de Variáveis e Domínios, Lançamento das Restrições, Enumeração das Variáveis. a enumeração das variáveis determina a árvore a ser pesquisada, porque os nós a pesquisar são condicionados pela ordem em que as variáveis são enumeradas. Com efeito, consideremos duas enumerações distintas das variáveis X in 1..2,Y in 1..3 e Z in 1..4 com os domínios indicados, que têm diferente cardinalidade.

4 4 Pesquisa e Heurísticas enum([X,Y,Z]):- indomain(X) propagação indomain(Y), propagação, indomain(Z) # de nós = 32 ( )

5 5 Pesquisa e Heurísticas enum([X,Y,Z]):- indomain(Z), propagação indomain(Y), propagação, indomain(X) # de nós = 32 ( )

6 6 Pesquisa e Heurísticas A ordem de enumeração das variáveis pode ter uma enorme influência na eficiência da pesquisa em árvore, pois O número de nós das árvores é diferente, apesar do espaço de pesquisa ser O( #X i ). As falhas podem ser detectadas de forma diferente, consoante as ordenações das variáveis. Durante a propagação, diferentes ordens podem conduzir a diferentes cortes no espaço de pesquisa. A ordem de escolha dos valores não tem influência no espaço de pesquisa, embora possa ter influência na detecção da primeira solução. Desta forma o estudo das heurísticas vai incidir fundamentalmente na ordem de escolha das variáveis.

7 7 Escolha Heurística da Variável A heurística na escolha da ordem de enumeração das variáveis pode ser Estática - determinada antes de se começar a enumeração e não tendo em consideração os efeitos da propagação Dinâmica - escolha que é determinada por análise do estado do problema após a enumeração de cada variável. Nas heurísticas estáticas que iremos abordar, são tidas em conta na ordenação das variáveis as características da rede de restrições, nomeadamenta a sua largura e largura de banda, pelo que a sua explicação será antecedida de algumas definições.

8 8 Heurística para Árvores de Restrições Antes ainda vamos estudar um caso especial de redes de restrições, constituído pelas redes em que as restrições (binárias) se podem representar numa árvore (não confundir com pesquisa em árvore !). A E CB GF D HI Se se enumerar a variável A em primeiro lugar, por exemplo com um valor a do seu domínio (A = a), o problema reduz-se a três problemas independentes. E CB GF D HI

9 9 Heurística para Árvores de Restrições Neste caso, para garantir que esta enumeração não conduz imediatamente a qualquer inconsistência, o valor a da variável A deve ter suporte nas variáveis B, C e D. Mas este raciocínio pode ser continuado recursivamente, para cada uma das sub-árvores independentes, com raízes B, C e D. Por exemplo a enumeração de B não conduz a qualquer inconsistência, se o valor b que fôr escolhido (isto é B = b) tiver suporte em E e F. E CB GF D HI

10 10 Heurística para Árvores de Restrições Assim uma boa heurística para a escolha da variável para árvores de restrições é a escolha de variáveis de forma descendente na árvore. A E CB GF D HI De uma forma geral, fazendo-se a enumeração das variáveis de uma forma descendente na árvore, os valores escolhidos para as variáveis nunca irão conduzir a contradições se os valores mantidos num nó tiverem suporte em todos os seus descendentes.

11 11 Heurística para Árvores de Restrições Embora este não seja o caso geral, como já foi visto anteriormente, no caso das árvores a consistência de arco é equivalente à satisfazibilidade das restrições! Com efeito, Usando uma qualquer heurística descendente na enumeração das variáveis, a escolha dos valores nunca conduz a contradições, pois estes têm suporte nos nós descendentes, que se tormam as raízes de sub-problemas independentes. Na realidade, a direccionalidade na enumeração, permite utilizar um algoritmo de manutenção de consistência de arco direccionado, e menos custoso que os AC-X.

12 12 Heurística para Árvores de Restrições Voltando ao exemplo anterior, não é necessário que todos os valores nos domínios de B, C e D tenham suporte nos valores do domínio de A. Apenas é necessário que todos os valores de A tenham suporte nos domínios de B, C e D. Quando um valor de A fôr escolhido, os valores não compatíveis com esse valor são eliminados pela simples manutenção de consistência de nó. A E CB GF D HI E CB GF D HI

13 13 Heurística para Árvores de Restrições Duma forma geral, pode definir-se um critério de consistência de arco dirigida se, ao contrário do que temos feito, considerarmos um grafo dirigido para representar a rede de restrições. Mais especificamente, se arbitrarmos uma direcção para cada restrição do problema. Definição (Consistência de Arco Dirigida): Um problema de restrições tem os seus arcos dirigidos consistentes sse 1.Tiver todos os nós consistentes; e 2.Para qualquer etiqueta X i -v i de qualquer variável X i, e para todas os arcos a ij dirigidos correspondentes a restrições R ij, existe um valor v j de suporte, isto é, a etiqueta composta {X i -v i, X j -v j } satisfaz a restrição R ij.

14 14 Algoritmo DAC Manutenção de Consistência de Arcos O algoritmo descrito abaixo assume que as variáveis estão ordenadas de 1 a n, sendo os arcos dirigidos da menor para a maior variável, e limita-se a impôr a consistência em todos os arcos dirigidos, começando pelas maiores variáveis, e sem posterior reavaliação procedimento DAC(V, D, R); para i de n até 1 com passo -1 fazer para R ij in R fazer se i < j então rev_dom(a ij,V,D,R) fim se fim para fim procedimento Nota: rev_dom(a ij,V,D,R) é o usado nos algoritmos AC-1 e AC-3.

15 15 Algoritmo DAC Complexidade temporal do algoritmo DAC Como habitual, vamos assumir que os arcos são em número de a, e que as n variáveis do problema têm cada com d valores no seu domínio. O algoritmo visita cada um dos a arcos exactamente uma vez. Em cada arco a ij, cada um dos d valores da variável X i é testado com d valores da variável X j. Tendo em conta estes factores, a complexidade temporal do DAC, no pior caso, é, tal como nos AC-4/6/7 O(ad 2 ) não apresentando o algoritmo quaisquer requisitos de espaço. Numa árvore, a = n, e a complexidade é O(nd 2 )

16 16 Algoritmo DAC Naturalmente, o algoritmo DAC descrito não garante a eliminação de todos os valores redundantes numa rede dirigida genérica, por não reavaliar as consequências das reduções de domínios. No entanto ele é suficiente para o caso das árvores se os arcos forem dirigidos no sentido descendente e analisados (revistos) no sentido ascendente, isto é, se as variáveis forem ordenadas de forma a que cada nó seja menor que os seus descendentes. Assim, todos os valores de um nó têm garantido suporte nos seus descendentes, embora não nos seus ascendentes! Quando estes são enumerados, a consistência de nó elimina os valores que não conduzam a soluções.

17 17 Algoritmo DAC Exemplo: Consideremos a árvore de restrições abaixo >> >>>>> > X 1 in {1, 3, 5, 7, 9}, X 2 in {2, 4, 6}, X 5 in {3, 9}, X 6 in {4, 8}, X 3 in {1, 5, 7}, X 7 in {3, 9}, X 4 in {1, 5, 8}, X 8 in {3, 7}, X 9 in {2, 9} Após revisão do arcoX 2 -> X 5 X 2 in {2, 4, 6}% X 5 >= 3 X 2 -> X 6 X 2 in {2, 4, 6}% X 6 >= 3 X 3 -> X 7 X 3 in {1, 5, 7}% X 7 >= 3 X 4 -> X 8 X 4 in {1, 5, 8}% X 8 >= 3 X 4 -> X 9 X 4 in {1, 5, 8} % X 9 >= 2 X 1 -> X 2 X 1 in {1, 3, 5, 7, 9}% X 6 >= 5 X 1 -> X 3 X 1 in {1, 3, 5, 7, 9}% X 3 >= 5 X 1 -> X 4 X 1 in {1, 3, 5, 7, 9}% X 4 >= 8

18 18 Algoritmo DAC Exemplo(cont): A enumeração não está sujeita a retrocesso >> >>>>> > X 1 in {7, 9}, X 2 in {6}, X 5 in {3, 9}, X 6 in {4, 8}, X 3 in {5, 7}, X 7 in {3, 9}, X 4 in {5, 8}, X 8 in {3, 7}, X 9 in {2, 9} X 1 = 7 NC impõe X 2 in {6}, X 3 in {5}, X 4 in {4} X 2 = 6 NC impõe X 5 in {3}, X 4 in {6}, X 3 = 5 NC impõe X 5 in {3}, X 4 = 4 NC impõe X 8 in {3}, X 9 in {2}, X 1 = 9 NC impõe X 2 in {6}, X 3 in {3}, X 4 in {4, 8} X 2 = 6...., X 3 = 5,.... X 4 = 4 NC impõe X 8 in {3}, X 9 in {2} ou X 4 = 8 NC impõe X 8 in {3, 7}, X 9 in {2}

19 19 Largura de Grafos O caso especial das árvores pode ser generalizado para outros tipos de redes de restrições binárias, se tivermos em conta que as árvores são um caso especial de grafos. Definição (Largura de Nó, segundo uma ordem O): Para uma ordenação total, O, dos nós de um grafo G, a largura de um nó N, segundo O é o número de nós anteriores que lhe são adjacentes >> >>>>> > Como é imediato constatar, com qualquer ordenação crescente, da raíz para as folhas, todos os nós de uma árvore (excepto a raíz) têm largura igual a 1.

20 20 Largura de Grafos Definição (Largura de um grafo G, segundo uma ordem O): Para uma ordenação total, O, dos nós de um grafo G, a largura do grafo segundo O, é a máxima largura dos seus nós, segundo essa ordem. Definição (Largura de um grafo G): A largura de um grafo G, é sua menor largura, para qualquer ordenação total, O, que seja considerada para os seus nós >> >>>>> > Como é imediato por estas definições, uma árvore é um caso especial de um grafo com largura igual a 1.

21 21 Largura de Grafos Exemplo: No grafo abaixo poderemos considerar várias ordenações dos nós, conducentes a diferentes larguras. A largura do grafo é 3 (é a largura obtida, por exemplo, pela ordenação O1 dir ) w O1inv = 5 (nó 1) w O1inv = 6 (nó 4)

22 22 Largura de Grafos Para evitar retrocessos, na enumeração, da raiz para as folhas, de uma rede de restrições (binárias) com a forma de árvore bastaria garantir que para cada nó existissem valores nos seus nós descendentes que os suportassem. A generalização para o caso de redes arbitrárias deverá ter em conta a ordenação considerada na enumeração. Se nessa ordenação, cada nó tiver no máximo k nós vizinhos enumerados antes de si, bastará manter consistência-k+1 forte, para garantir que não serão necessários retrocessos na enumeração. Na realidade, e tal como nas árvores, bastará manter uma consistência-k+1 forte ordenada, se o algoritmo que a mantiver visitar os grupos de k nós por ordem decrescente.

23 23 Largura de Grafos Exemplo: Com a ordenação L o1dir, bastará garantir consistência-4 forte. A consistência-4 forte garante que qualquer etiqueta de até 3 variáveis que satisfaz as restrições relevantes, pode ser estendida com uma quarta variável que satisfaça as restrições relevantes. Por um lado, qualquer valor v 1 do domínio da variável 1 pode ser escolhido (uma etiqueta-1 pode ser estendida, pois o sistema é fortemente consistente-4). Por outro lado, um algoritmo que mantenha a consistência-4 forte, elimina eventualmente valores dos domínios das variáveis, mas não esvazia o domínio de nenhuma variável (ver adiante)

24 24 Largura de Grafos Exemplo (cont.) : Assim o sistema de 6 variáveis é fortemente consistente-4 e tem menos uma variável que o anterior. Por recursão, pode verificar-se que não haverá lugar a retrocesso na enumeração das outras variáveis. Com efeito, podem ir-se enumerando as variáveis por ordem crescente. Após cada enumeração obtem-se um sistema, fortemente consistente-4, e com menos uma variável. Eventualmente atinge-se um sistema fortemente consistente-4, com apenas 4 variáveis, em que pode naturalmente ser feita uma enumeração sem retrocesso

25 25 Largura de Grafos Há que mostrar que, após enumeração da menor variável (segundo uma ordenação que garante uma largura w) de um sistema fortemente consistente-k (com k > w), o sistema resultante mantem valores no domínio de todas as outras variáveis (2 a n). Sendo o sistema fortemente consistente-k, as variáveis 2,..., k tem valores compatíveis com o valor v 1, escolhido arbitrariamente para a primeira variável. Um algoritmo que mantenha a consistência-4 forte pode eliminar os valores não compatíveis. A variável k+1 só pode estar ligada a w das variáveis anteriores (no exemplo, a variável 5 está ligada a 1, 2 e 4). Assim, qualquer triplo de valores dessas variáveis, nomeadamente os que não foram eliminados, tem um valor compatível na variável 5. O algoritmo que mantem a consistência-4 forte pode eliminar os valores não compatíveis. Continuando o raciocínio recursivamente, as variáveis 6,..., n manterão valores no domínio, como se pretendia mostrar.

26 26 Largura de Grafos Fica assim demonstrado (informalmente) o seguinte Teorema: Uma rede de restrições fortemente consistente- k, pode ser enumerada em profundidade sem retrocesso, se existir uma ordenação O segundo a qual o grafo tem uma largura w inferior a k. Em termos práticos, a enumeração livre de retrocesso faz- se por ordem crescente (segundo O) das variáveis, mantendo-se a consistência-k forte no problema resultante após a enumeração de cada variável.

27 27 Heurística de Mínima Largura (MWO) A manutenção de consistência-k forte é muito custosa computacionalmente, e não é em geral mantida. No entanto, especialmente em redes pouco densas e em que os graus dos nós variem significativamente, as ordens dos nós do grafo conducentes à sua menor largura podem ser usadas como heurística para a escolha da variável a enumerar. Mais especificamente, pode definir-se a Heurística MWO (Minimum Width Ordering): A heurística MWO (ordem de minima largura) determina que num problema de restrições as variáveis sejam enumeradas por ordem crescente duma enumeração que conduza à menor largura do grafo primal do problema.

28 28 Heurística de Mínima Largura (MWO) A definição dada refere o grafo primal de um problema. No caso das restrições serem binárias, o grafo de restrições é o grafo primal. No caso de restrições n-árias, o grafo primal inclui um arco entre quaiquer variáveis ligadas por uma restrição n-ária. Por exemplo, o grafo que temos vindo a utilizar, pode ser o grafo primal do problema com 2 restrições quaternárias (R 1245 e R 1346 ) e 3 restrições ternárias (R 123, R 457 e R 467 ). R >arcos a 12, a 13 e a 23 R >arcos a 12, a 14, a 15, a 24, a 25 e a 45 R >arcos a 13, a 14, a 16, a 34, a 36 e a 46 R >arcos a 45, a 47 e a 57 R >arcos a 46, a 47 e a

29 29 Heurística de Mínima Largura (MWO) Para se aplicar a heurística MWO, há que determinar a ordenação O dos nós, conducente à menor largura do grafo (primal) de restrições. O seguinte algoritmo pode ser utilizado para esse efeito função vars_ordenadas(V,R): Lista de nós; se V = {N} então % N é o único nó vars_ordenadas <- N senão N <- arg V i min {grau(V i,R) | V i in V} % N é um dos nós com menor número de vizinhos R<- R \ arcos(N,R) V<- V \ {N} vars_ordenadas <- vars_ordenadas(V,R) & N fim se fim função

30 30 Heurística de Mínima Largura (MWO) Exemplo: No grafo anterior o nó 7 é o de menor grau (=3) Retirado o nó 7, os nós 5 e 6 são os de menor grau (=3) São de seguida retirados sucessivamente os nós 5 e 4 (grau 3), e ainda os nós 3 (grau 2) e 2 (grau 1) Obtem-se assim, por ordem crescente, a ordenação [1,2,3,4,5,6,7] e verifica-se que a largura do grafo é Retirando-se o nó 6 obtem-se

31 31 Heurística de Mínimo Grau (MDO) Um aproximação da heurística MWO é a heurística MDO em que se evita o cálculo da ordem que conduz à mínima largura do grafo Heurística MDO (Maximum Degree Ordering): A heurística MDO (ordenação pelo maior grau) determina que num problema de restrições as variáveis sejam enumeradas por valor decrescente do seu grau no grafo primal do problema. Exemplo: A heurística MDO usaria uma ordenação começada pelos nós 4 (g=6) e 1(5) e terminada no nó 7(3). Os nós 2, 3, 5 e 6, todos com grau 4, seriam escolhidos arbitrariamente

32 32 Heurísticas MWO e MDO As heurísticas MWO e MDO baseiam-se no mesmo princípio - começar a enumeração pelas variáveis que têm mais variáveis ligadas a si por restrições, com o objectivo de detectar mais rapidamente as falhas na enumeração. (de notar que no algoritmo para determinar a ordem de largura mínima, as últimas variáveis são as de menor grau). As ordenações não são coincidentes necessariamente e podem ser usadas para desempate. Por exemplo as duas ordenações MDO O 1 = [4,1,5,6,2,3,7] O 2 = [4,1,2,3,5,6,7] induzem diferentes larguras (4 e 3)

33 33 Conjuntos Corta-Ciclos A heurística MWO é particularmente útil quando se mantêm níveis elevados de consistência, e baseia-se no Teorema que generaliza para redes de restrições arbitrárias as heurísticas usadas para as árvores. Uma alternativa quando não se se pretendem manter níveis elevados de consistência, é enumerar as variáveis por uma ordem que torne o grafo de restrições numa árvore, a partir do qual, a coerência de arco dirigida garante a eliminação do retrocesso. Esta é a ideia por detrás da determinação dos conjuntos corta-ciclos (Cycle-cut sets).

34 34 Conjuntos Corta-Ciclos Enumerando-se inicialmente os nós 1 e 4 no exemplo que temos usado, obtem-se o grafo Desta forma, a adição de qualquer nó ao conjunto {1,4} elimina o ciclo (tornando os restantes 4 nós numa árvore). Os conjuntos {1,4,2}, {1,4,3}, {1,4,5}, {1,4,6} e {1,4,7}, são pois conjuntos corta-ciclos Ao enumerar os nós do conjunto corta-ciclos {1,4,7}, o grafo resultante é uma árvore!

35 35 Conjuntos Corta-Ciclos Obviamente, o que se pretende é obter os conjuntos corta-ciclos de menor cardinalidade. Com efeito, numa rede de restrições, com n variáveis com domínios de dimensão d, se se determinar um conjunto corta-ciclos com k nós, a complexidade da pesquisa fica reduzida à pesquisa dum tuplo nos k nós, com complexidade temporal O(d k ) E à manutenção de consistência de arco dirigida na árvore de n-k nós, com complexidade O(ad 2 ). Tendo em atenção que a = n-k-1, e para k pequeno, a complexidade temporal global é de O(n d k+2 ).

36 36 Conjuntos Corta-Ciclos Pode portanto definir-se a Heurística CCS (Cycle-Cut Sets) Segundo a heurística CCS (Conjunto Corta-Ciclos), as primeiras variáveis a enumerar devem ser os elementos de um conjunto corta-ciclos de cardinalidade mínima. Infelizmente, não parece haver bons algoritmos para determinar os conjuntos corta-ciclos com cardinalidade mínima, ficando a utilidade da heurística dependente das aproximações utilizadas. Duas aproximações correspondem a utilizar o algoritmo vars_ordenadas, com a ordenação inversa, ou simplesmente começar pelos nós com maior grau.

37 37 Conjuntos Corta-Ciclos Nó 4 - grau(6) ficando o grafo Usando o algoritmo vars_ordenadas mas seleccionando os nós com maior grau obteríamos a seguinte ordenação Nó 1 - grau(4) ficando o grafo Nesta altura, a inclusão de qualquer dos outros nós (todos de grau 2) converte o sistema numa árvore. Escolhendo o nó 2, obtem-se um dos conjuntos corta- ciclos, {1,2,4}, que é mínimo.

38 38 Heurística MBO Em contraste com as heurísticas MWO e MDO que pretendem detectar mais rapidamente as falhas na enumeração, a heurística MBO tem como objectivo eliminar o retrocesso irrelevante. Para esse efeito pretende-se, na medida do possível, garantir que se uma variável X não pode ser enumerada então as variáveis que possam estar em conflito com X lhe sejam imediatamente anteriores, na ordem de enumeração. A ideia é que se o retrocesso fôr feito para uma variável Y que não está ligada a X por uma restrição, então é natural que a mudança de valor de Y não resolva a impossibilidade de enumeração de X. Tais ideias são captadas na noção de Largura de Banda.

39 39 Largura de Banda de Grafos Definição (Largura de Banda de G, segundo uma ordem O): Para uma ordenação total, O, dos nós de um grafo G, a largura de banda do grafo segundo O, é a máxima distância nessa ordem entre dois nós adjacentes Exemplo: Com a ordem O 1, ao lado, a largura de banda é 5, distância entre os nós adjacentes 1/2 e 6/7. Se a escolha do valor da variável X 1 fôr determinante para a escolha do valor de X 6, a alteração de X 1 só se faz após retrocesso das variáveis X 5, X 4, X 3 e X

40 40 Largura de Banda de Grafos Definição (Largura de Banda de um grafo G): A largura de banda de um grafo G, é menor largura de banda que pode ser obtida por uma qualquer ordenação total dos seus nós considerada Exemplo: Com a ordem O 2, ao lado, a largura de banda é 3, distância entre os nós adjacentes 2/3/4 e 5/6/7. Não há ordenação que induza uma largura de banda inferior a esta, pelo que a largura de banda do grafo é

41 41 Heurística MBO Com base no conceito de Largura de Banda define-se a Heurística MBO (Minimum Bandwidth Ordering): Segundo a heurística MBO (ordenação pela menor largura de banda) as variáveis de um problema de restrições devem ser enumeradas de acordo com uma ordem que induza uma largura de banda mínima no grafo primal do problema. Exemplo: A heurística MBO usaria uma ordenação como a O2 que induz uma largura de banda

42 42 Heurística MBO A utilização da heurística MBO em conjunto com a propagação de restrições é algo problemática já que: 1.Os grafos de restrições em que é mais útil devem ser esparsos e não ter nós com elevedo grau. Havendo um nó com grau elevado, a sua distância ao último vizinho domina a largura de banda. 2.O princípio em que se baseia, evitar retrocesso irrelevante é atingido, eventualmente mais eficientemente, pela propagação de restrições. 3.Não há algoritmos eficientes para calcular a largura de banda de um grafo (ver [Tsan93], cap. 6, para referências).

43 43 Heurística MBO Caso 1: Os grafos de restrições em que é mais útil devem ser esparsos e não ter nós com elevado grau. Havendo um nó com grau elevado, a sua distância ao último vizinho domina a largura de banda Exemplo: O nó interior, de grau 6, determina que não pode haver uma largura inferior a 3 (3 nós antes e 3 depois). Há muitas ordenações com essa largura de banda, e se 3 estivesse ligado a 7 não havia hipótese de evitar uma largura de banda 4.

44 44 Heurística MBO Caso 2: O retrocesso irrelevante é eliminado por propagação de restrições. Exemplo: Se a escolha do valor da variável X 1 fôr determinante para a escolha do valor de X 6, é muito natural que a propagação de restrições determine o esvaziamento do domínio de X 6 sem necessitar do retrocesso das variáveis X 5, X 4, X 3 e X A heurística MBO é mais apropriada se os algoritmos de retrocesso não usarem propagação de restrições.

45 45 Heurística MBO Caso 3: Não há algoritmos eficientes para calcular a largura de banda de um grafo. Em geral, menores larguras correspondem a menores larguras de banda, mas as ordenações que obtêm as menores larguras e larguras de banda não são coincidentes. A B C D E F G H CDABEFG H Largura (mínima) = 2; Largura de Banda = 5 CDEABFG H Largura = 3; Largura de Banda (mínima) = 4

46 46 Heurísticas Dinâmicas para Escolha da Variável Para além das heurísticas estáticas analizadas, MWO, MDO, CCS e MBO) a escolha da ordem de enumeração das variáveis pode ser determinada dinamicamente, isto é, em vez de fixada antes de começar a enumeração a escolha da variável é determinada (ou ajustada) durante a mesma. Para além de heurísticas dependentes do problema, existe um princípio genérico, first-fail, que se tem revelado muito eficiente. A ideia é muito simples: quando um problema se decompõe em vários sub-problemas relacionados, deveremos começar pelos mais difíceis. Não vale a pena resolver vários problemas simples com hipóteses irrealistas que depois serão desmentidas na resolução dos mais difíceis.

47 47 Heurísticas First-Fail Há várias maneiras de interpretar e implementar este princípio genérico de first-fail. Em primeiro lugar, identificamos no problema de satisfação das restrições os vários sub-problemas como sendo os de enumerar valores para as diversas variáveis. Como medir a dificuldade destes problemas? Como enumerar é imediato (uma escolha), o que torna os problemas difíceis é garantir que após a propagação de restrições a escolha do valor é viável. Esta avaliação é difícil em geral, pelo que devermos considerar características das variáveis fáceis de determinar, como O domínio das variáveis O número de restrições em que participam.

48 48 Heurísticas First-Fail O domínio das variáveis Intuitivamente, se tivermos uma variável X 1 com m 1 valores no seu domínio e outra X 2 com m 2 valores, é mais difícil atribuir valores à variável X 1, porque a escolha é mais reduzida! No limite, se a variável X 1 só tiver um valor no seu domínio (m 1 = 1), não há escolha possível e o melhor a fazer é mesmo atribuir o valor disponível à variável. Outra forma de ver a questão é a seguinte: Por um lado, a hipótese de acertar num valor de X 1 que pertence a uma solução é maior do que no caso de X 2. Por outro lado se esse valor se vier a revelar errado, pode eliminar-se um maior espaço de pesquisa.

49 49 Heurísticas First-Fail Exemplo: Na situação ao lado do problema da 8 rainhas em que já foram enumeradas as rainhas Q1, Q2 e Q3, temos para domínio das restantes rainhas Q4 in {2,7,8}, Q5 in {2,4,8}, Q6 in {4}, Q7 in {2,4,8}, Q8 in {2,4,6,7}. Desta forma, a variável a enumerar de seguida deverá ser a variável Q 6, e não Q 4, que se seguiria na ordem natural. De notar que a consistência de nó, com a escolha de variáveis de domínio unitário, atinge o mesmo efeito da consistência de arco, sem os seus custos computacionais!

50 50 Heurísticas First-Fail O número de restrições em que participam as variáveis Esta heurística é basicamente a heurística MDO, mas em que o grau das restrições é avaliado dinâmicamente. Como a heurística pretende resolver primeiro as variáveis mais difíceis, a enumeração torna-se mais difícil com o número de restrições em que participa a variável, já que uma restrição só pode limitar as possibilidades de atribuir valores a uma variável. Naturalmente, e tal como no caso do domínio, esta decisão é puramente heurística. O efeito das restrições depende muito da sua propagação, que é em geral muitodependente (da instância) do problema.

51 51 Outras Heurísticas Dinâmicas Em certos tipo de problemas podem utilizar-se heurísticas especialmente adequadas para a estrutura do problema. Por exemplo em problemas de escalonamento de tarefas, em que elas têm de se fazer num determinado período e não se podem sobrepôr, convem espalhá-las o mais possível no período em causa. Isto sugere que se comecem por enumerar (as variáveis que modelam) as tarefas que podem começar primeiro ou que podem acabar em ultimo lugar, de forma a dar espaço para acomodar as restantes tarefas. Neste caso, convém uma escolha dinâmica da variável que tenha em conta os valores existentes no domínio.

52 52 Heurísticas Mistas Tendo em conta as características das várias heurísticas descritas, poder-se-ão considerar estratégias híbridas, que integrem várias destas heurísticas. Por exemplo, a heurística estática CCS (Conjunto Corta- Ciclos), determina um conjunto de variáveis que devem ser enumeradas em primeiro lugar, de forma a converter o grafo de retsrições numa árvore. Dentro deste conjunto de nós, pode aplicar-se uma heurística dinâmica first-fail. Por outro lado, quando um conjunto de variáveis é enumerado de acordo com uma heurística estática, essa heurística pode ser reavalida tendo em conta a propagação já efectuada, tornando-a mais dinâmica

53 53 Heurísticas de Escolha de Valor Uma vez seleccionada uma variável para enumerar, há que escolher um valor dentro do seu domínio corrente. Neste caso, existem poucos métodos de aplicação generalizada. Existe no entanto um princípio genérico, que corresponde a escolher o valor que aumente a probabilidade do sucesso. A razão para isto é óbvia. Ao contrário da escolha da variável, a escolha do valor não vai influir no espaço de pesquisa, e portanto há que tentar descobrir o mais eficientemente possível o caminho para uma solução. A aplicação deste princípio depende muito do tipo de problema em consideração.

54 54 Heurísticas de Escolha de Valor Algumas heurísticas para escolha de valor são as seguintes: Escolha ad hoc: Em problemas de escalonamento de tarefas referidos, uma vez seleccionada uma variável com menores/maiores valores no seu domínio, a essa variável deverá ser atribuído o menor/maior valor desse domínio que é o que aumneta a possibilidade de sucesso. Antevisão de Sucesso: Pode-se tentar prever (lookahead) a probabilidade de sucesso, avaliando para os vários valores possíveis, e após a sua propagação, essa probabilidade através de medidas agregadas da cardinalidade dos domínios das variáveis ainda não enumeradas(como é feito na medida kappa), escolhendo-se naturalmente o valor que maximize essa medida.

55 55 Heurísticas de Escolha de Valor Optimização: Em problemas nos quais se pretenda optimizar uma função objectivo, podem obter-se limites (bounds) dessa função para os valores ainda permitidos nas variáveis não enumeradas, e verificar como eles se alteram com a atribuição dois vários valores possíveis para a variável escolhida. Naturalmente, a heurística optará pelo valor que optimize os limites da função em causa. De notar que neste caso, tanto se poderá fazer o cálculo dos limites antes da propagação (menos computação, mas também menos informação) ou após essa propagação ser efectuada.

56 56 Heurísticas no SICStus Baseado no paradigma da programação em lógica com restrições, um programa em SICStus tem a estrutura atrás descrita Problema ( Vars):- Declaração de Variáveis e Domínios, Lançamento das Restrições, Enumeração das Variáveis. Na enumeração das variáveis pretende atribuir-se às variáveis X 1, X 2,..., X n, de uma lista L x, valores no seu domínio. A implementação das heurísticas depende da forma como são seleccionadas as variáveis X i da lista, e escolhidos os seus valores.

57 57 Heurísticas no SICStus O SICStus permite controlar a enumeração de várias maneiras. A enumeração pode ser feita através de um único predicado predefinido, labeling/2, em que o 1º argumento é a lista de opções, eventualmente vazia o 2º argumento é a lista Lx de variáveis a enumerar. Por omissão, a chamada de labeling([], Lx) selecciona as variáveis X 1, X 2,..., X n, da lista L x, de acordo com a sua posição, da esquerda para a direita. O valor escolhido à variável é o menor valor do seu domínio. Este predicado pode ser usado sem quaisquer opções para heurísticas estáticas, desde que as variáveis sejam previamente ordenadas, de forma adequada, na lista L x.

58 58 Heurísticas no SICStus Com a lista de opções vazia, o predicado labeling([],L) é equivalente ao predicado enumera(L) abaixo enumera([]). enumera([X i |T]):- indomain(X i ), enumera(T). Em que o predicado, pré-definido, indomain(X i ), escolhe para a variável X i valores no domínio por ordem crescente. Há alternativas para escolha do valor, que passam pela análise do domínio corrente da variável, disponibilizado pelo predicado fd_dom/2. Por exemplo ?- X in 1..5, X #\=3, fd_dom(X,D). D = (1..2)\/(4..5), X in(1..2)\/(4..5) ?

59 59 Heurísticas no SICStus Geralmente, não é necessário descer a esse nível de programação, usando-se as opções pré-definidas no predicado labeling/2. As opções de interesse para a escolha do valor da variável seleccionada são up e down permitindo a atribuição por ordem crescente e decrescente de valores. Se se pretender garantir que os valores de algumas das variáveis Xi são escolhidos de forma decrescente, poder- se-á, para as variáveis em causa, substituir a chamada do predicado indomain(X i ) por labeling([down],[X i ])

60 60 Heurísticas no SICStus As opções de interesse para a escolha da variável são leftmost, min, max, ff, ffc e variable(Sel) leftmost - é o modo por omissão. Escolhe as variáveis pela sua ordem na lista. min, max - escolhe a variável com menor/maior valor no seu domínio. Pode ser útil por exemplo, para problemas de escalonamento de tarefas em que se pretende ir alocando as tarefas sequencialmente. ff, ffc - implementa e heurística first-fail, escolhendo a variável com domínio de menor cardinalidade, com desempate pelo número de restrições.

61 61 Heurísticas no SICStus variable(Sel) Sel deve ser definido no programa como um predicado, cujos últimos 3 últimos parâmetros são Vars, Selected, Rest em que dada a lista Vars de variáveis a atribuir, Selected é a variável seleccionada, sendo Rest uma lista com as restrantes variáveis. Outros parâmetros podem ser incluídos, antes destes três. Por exemplo, se se usar opção variable(contem(5)) dever-se-á especificar o predicado contem(V,Vars, Selected, Rest) que deverá escolher, na lista Vars, uma variável Selected, que contenha o valor V no seu domínio.

62 62 Heurísticas no SICStus De notar que todas estas opções do predicado labeling/2 podem ser programadas a mais baixo nível, usando as primitivas adequadas disponibilizadas pelo SICStus para inspecção do domínio das variáveis (Predicados Reflexivos) nomeadamente os predicados fd_min(?X, ?Min)fd_max(?X, ?Max) fd_size(?X, ?Size)fd_degree(?X, ?Degree ) com o significado óbvio. Por exemplo ?- X in 3..8, Y in 1..5, X #< Y, fd_size(X,S), fd_max(X,M), fd_degree(Y,D). D = 1, M = 4,S = 2, X in 3..4, Y in 4..5 ?

63 63 Exemplo no SICStus O programa rainhas_fd_h resolve o problema das rainhas rainhas(N,M,O,S,F) com várias opções de enumeração:rainhas_fd_h Escolha da Variável A opção ff é utilizada. As variáveis passadas para o predicado labeling/2 podem/não (com M=2/1 ) ser ordenadas do meio para as pontas (por exemplo, [X 4,X 5,X 3,X 6,X 2,X 7,X 1,X 8 ]) através do predicado ordena(2,Lx,Lo). Escolha do Valor Em vez de começar a enumeração das variáveis pelo valor 1, pode ser especificado um offset (valor do parâmetro O) começando a enumeração a meio do domínio.

64 64 Variantes à Pesquisa em Profundidade O paradigma da Programação em Lógica com Restrições, utiliza pesquisa em profundidade do espaço de soluções. Apesar de entrelaçado com a propagação de restrições, e da utilização de heurísticas, a eficiência da pesquisa depende criticamente das primeiras escolhas, isto é dos valores atribuídos às primeiras variáveis seleccionadas. Com efeito, o retrocesso destes valores, dito cronológico, apenas tem efeito quando todo os valores das restantes k variáveis são visitados, num tempo O(2 k ). Desta forma têm sido estudadas variantes à pesquisa em profundidade com retrocesso cronológico, nomeadamente o retrocesso inteligente, alargamento iterativo, discrepância limitada, e duração incremental.

65 65 Retrocesso Inteligente No retrocesso cronológico, a falha na enumeração de uma variável causa o retrocesso com a escolha do valor seguinte na variável enumerada imediatamente antes, mesmo que não seja esta a causa da falha. As várias técnicas de retrocesso inteligente, ou dirigido por dependências, (dependency directed backtracking) tentam identificar essas causas, de forma a retroceder directamente para a primeira variável com alguma participação na falha. Algumas das variantes de retrocesso inteligente são: Backjumping ; Backchecking ; e Backmarking.

66 66 Retrocesso Inteligente Backjumping Ao falhar a atribuição de valores para uma variável são analisadas todas as variáveis que contribuem para a falha de cada um dos valores, sendo o retrocesso feito para a maior das menores variáveis No exemplo ao lado, ao analisar-se a causa da falha na atribuição devalores à variável Q 6, verifica-se que o retrocesso deve ser feito para a variável Q 4, já que é a maior das menores variáveis que aparece nas variáveis em conflito.

67 67 Retrocesso Inteligente Backchecking e Backmarking Estas técnicas podem ser útil quando os testes de compatibilidade entre os valores de duas variáveis são custosos. A ideia base é memorizar conflitos, de forma a evitar calculá-los repetidamente. Em backchecking, são memorizados apenas as atribuições que entraram em conflito. Em backmarking são adicioanalmente memorizadas as atribuições que não entraram em conflito. Em geral, a utilidade destas técnicas é limitada se existir propagação de restrições (há algumas excepções como em alguns sistemas SAT), já que a propagação antecipa, de alguma forma, o retrocesso e evita retrocesso irrelevante!

68 68 Alargamento Iterativo No alargamento iterativo (iterative broadening) é atribuído um limite b ao número de vezes que um nó é visitado (a visita inicial mais as vezes em retrocesso). Se esse limite é atingido, o nó e os seus descendentes não são mais explorados No exemplo, assumindo-se que b=2, o espaço de solucões a sombreado não é visitado. Naturalmente, se a pesquisa falhar para um dado valor de b, ele pode ser aumentado incrementalmente, pelo que o espaço percorrido vai-se iterativamente alargando.

69 69 Discrepância Limitada A discrepância limitada, pressupõe que a heurística de atribuição de valores pode falhar um número pequeno de vezes, e dirige a pesquisa para a zona onde potencialmente estão as soluções, limitando a um valor d, o número de vezes que a sugestão da heurística não é seguida. No exemplo, assumindo-se as opções certas à esquerda e d=3, o espaço de solucões a sombreado não é visitado. Naturalmente, se a pesquisa falhar para um dado valor de b, ele pode ser aumentado incrementalmente, pelo que o espaço percorrido vai-se iterativamente alargando d = 3 d = 2

70 70 Duração Incremental A objectivo é semelhante ao alargamento iterativo, discrepância limitada mas implementado de forma diferente. Escolhidas os valores para as primeiras k variáveis, para cada etiqueta {X 1 -v 1,..., X k -v k } é permitida uma pesquisa durante um tempo T. Se após esse limite não fôr encontrada solução, é testada outra etiqueta. Naturalmente, se a pesquisa falhar para um dado valor de T, ele pode ser aumentado incrementalmente nas próximas iterações, pelo que o espaço percorrido vai-se igualmente alargando iterativamente. Apesar de em todos estes algoritmos (alargamento iterativo, discrepância limitada e duração incremental) se repetir a pesquisa de partes do espaço de soluções, esse efeito não aumenta a complexidade (pior caso).

71 71 Duração Incremental Com efeito, e para o caso da duração incremental se as sucessivas iterações (falhadas) tiverem um aumento de tempo entre iterações, isto é T j+1 = T j, as sucessivas iterações duram T 1 + T T j = T ( j-1 ) = = T( j -1)/( -1) T j Assim, se uma solução fôr encontrada na j+1-ésima iteração, o tempo desperdiçado nas iterações anteriores é de apenas T j. Em média, a solução encontrada nessa iteração demoraria metade do tempo dessa iteração (T j ) /2 pelo que o tempo desperdiçado é da ordem de grandeza do tempo útil.


Carregar ppt "1 Pesquisa e Heurísticas Os algoritmos que mantêm um qualquer critério de consistência ao eliminar valores redundantes dos domínios reduzem, mas não eliminam."

Apresentações semelhantes


Anúncios Google