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

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

1 Domínios Finitos A eficiência das programas em domínios finitos (incluindo booleanos) podem ainda ser melhoradas pelo uso de Algoritmos de Propagação.

Apresentações semelhantes


Apresentação em tema: "1 Domínios Finitos A eficiência das programas em domínios finitos (incluindo booleanos) podem ainda ser melhoradas pelo uso de Algoritmos de Propagação."— Transcrição da apresentação:

1 1 Domínios Finitos A eficiência das programas em domínios finitos (incluindo booleanos) podem ainda ser melhoradas pelo uso de Algoritmos de Propagação adequados Heurísticas para escolha da variável e do valor Antes de investigarmos estes aspectos, nomeadamente a propagação de restrições, convém formalizar alguns conceitos tais como restrições e rede de restrições soluções parciais e totais satisfação e consistência

2 2 Domínios Finitos Definição (Domínio de Variável): O domínio de uma variável é o conjunto (finito) de valores que podem ser atribuídos a uma variável. Dada uma variável X, o seu domínio será normalmente denotado por dom(X) ou simplesmente D x. Exemplo: O Problema das n rainhas pode ser modelado através de n variáveis X 1 a X n, todas com domínio de 1 a n. Dom(X i ) = {1,2,..., n} ou X i :: 1..n.

3 3 Domínios Finitos Definição (Etiqueta): Uma etiqueta é um par Variável-Valor, sendo o valor um dos elementos do domínio da variável. Com a definição de etiqueta pretende-se formalizar a atribuição do valor à variável. Definição (Etiqueta Composta): Uma etiqueta composta é um conjunto de etiquetas referentes a variáveis distintas. Com a definição de etiqueta pretende-se formalizar a noção de solução (parcial), em que algumas (todas) variáveis do problema têm valor atribuído.

4 4 Domínios Finitos Definição (Restrição): Dado um conjunto de variáveis, uma restrição é um conjunto de etiquetas compostas definidas nessas variáveis. De facto, uma restrição pode ser vista como um subconjunto do produto cartesiano dos domínios das variáveis envolvidas na restrição. Por exemplo, para qualquer restrição R ijk envolvendo as variáveis X i, X j e X k, teremos R ijk dom(X i ) x dom(X j ) x dom(X k )

5 5 Domínios Finitos Dada uma restrição R, o conjunto de variáveis da restrição será denotado por Vars(R). De uma forma simétrica, o conjunto de restrições em que participa a variável X é denotado por cons(X). De notar ainda que sendo a restrição uma relação (não um a função) temos que R ij = R ji. As restrições podem ser especificadas por Extensão: através da enumeração das etiquetas permitidas; ou Intenção: através de um predicado (procedimento) que determina as etiquetas permitidas

6 6 Domínios Finitos Por exemplo, dadas as variáveis X 1 e X 3 do problema das 4 rainhas, existe uma restrição entre elas, R 13, que pode ser especificada Por extensão: R 13 = {{X 1 -1, X 3 -2}, {X 1 -1, X 3 -4}, {X 1 -2, X 3 -1}, {X 1 -2, X 3 -3}, {X 1 -3, X 3 -2}, {X 1 -3, X 3 -4}, {X 1 -4, X 3 -1}, {X 1 -4, X 3 -3}} ou, omitindo as variáveis R 13 = {,,,,,,, } Por intenção: R 13 = (X 1 X 3 ) (1+X 1 3+X 3 ) (3+X 1 1+X 3 )

7 7 Domínios Finitos Definição (Aridade de uma Restrição): A aridade de uma restrição R é o número de variáveis sobre as quais a restrição é definida, ou seja a cardinalidade do conjunto vars(R). Apesar das restrições poderem ter uma aridade arbitrária, um subconjunto muito importante de restrições é constituído pelas restrições binárias. A importância dessas restrições advém de que 1.Todas as restrições podem ser convertidas em restrições binárias. 2. Existem conceitos e algoritmos apropriados para essas restrições.

8 8 Domínios Finitos Conversão para Restrições Binárias Uma restrição n-ária, R, constituída por k etiquetas compostas nas suas variáveis X 1 a X n, é equivalente a n restrições binárias, B i, através da adição de uma variável adicional, Z, que tem como domínio os valores de 1 a k. Com efeito, as k etiquetas n-árias podem ser arbitrariamente ordenadas. Cada uma das n restrições binárias B i relaciona uma das n variáveis X i com a nova variável Z. A etiqueta composta {X i -v i, Z-z} pertence à restrição B i sse X i -v i pertencer à z-ésima etiqueta composta que define R.

9 9 Domínios Finitos Exemplo: Dadas as variáveis X 1 a X 3, com domínios 1 a 3, converter em restrições binárias a restrição R que impõe valores diferentes para as três variáveis. R(X 1, X 2, X 3 ) = {,,,,, } Associemos a cada etiqueta composta um valor de 1 a 6 1 :, 2 :,... 6: As restrições binárias equivalentes à restrição inicial são B 1 (Z, X 1 ) = {,,,,, }

10 10 Domínios Finitos Definição (Satisfação de Restrição 1): Uma etiqueta composta satisfaz um restrição se as suas variáveis (da etiqueta e da restrição) forem as mesmas e se a etiqueta for um elemento da restrição. Na prática, é conveniente generalizar a satisfação a situações em que as etiquetas compostas contêm estritamente as variáveis da restrição. Definição (Satisfação de Restrição 2 ): Uma etiqueta composta satisfaz um restrição se as suas variáveis incluirem as da restrição e se a sua (da etiqueta) projecção para as variáveis da restrição fôr um elemento da restrição.

11 11 Domínios Finitos Definição (Problema de Satisfação de Restrições): Um problema de satisfação de restrições é um triplo em que V é o conjunto das variáveis do problema D é o domínio das variáveis R é o conjunto das restrições do problema Definição (Solução dum Problema): Uma solução de um problema de satisfação de restrições P = é uma etiqueta composta sobre as variáveis V do problema que satisfaz todas as restrições R.

12 12 Domínios Finitos Em muitas situações é conveniente considerar as várias restrições de um problema sob a forma de um grafo. Definição (Grafo ou Rede de Restrições): O grafo ou rede de restrições de um problema de restrições binárias tem como nós as variáveis do problema. Para cada restrição não-trivial do problema envolvendo uma ou duas variáveis, o grafo contém um arco ligando os nós correspondentes a essas variáveis Quando os problemas contêm restrições com aridade arbitrária, elas podem ser convertidas nas suas equivalentes binárias.

13 13 Domínios Finitos Quando por algum motivo não seja conveniente converter as restrições n-árias em binárias, o problema pode ser representado por um hiper-grafo. Definição (Hiper-Grafo de Restrições): Qualquer problema de restrições n-árias arbitrárias pode ser representado através de um hiper-grafo, cujos nós são as variáveis do problema. Para cada restrição do problema, o grafo contém um hiper-arco ligando os nós correspondentes às variáveis envolvidas na restrição. Como é óbvio, se o problema só contém restrições binárias, o hiper-grafo de restrições degenera num grafo.

14 14 Domínios Finitos Exemplo: O problema das 4 rainhas pode ser definido pelo seguinte grafo: X 1 in 1..4 X 4 in 1..4 X 3 in 1..4X 2 in 1..4 R 12 R 23 R 14 R 24 R 34 R 13 {,,,,,,, }

15 15 Domínios Finitos Definição (Grafo de Restrições Completo): Um grafo de restrições é completo quando existem arcos ligando qualquer par de nós (isto é, quando existe uma restrição sobre qualquer par de variáveis). O problema das 4 rainhas tem um grafo completo. No entanto, esse não é sempre o caso, podendo os grafos ser esparsos por não conterem alguns arcos potenciais. Nesse caso importa definir a densidade de um grafo. Definição (Densidade de um Grafo de Restrições): A densidade de um grafo de restrições corresponde à razão entre o número de arcos e o número de arcos de um grafo completo com o mesmo número de nós.

16 16 Domínios Finitos Em princípio, a dificuldade de um problema de restrições está relacionada com a densidade do seu grafo. Intuitivamente, quanto mais denso fôr o grafo, mais difícil é o problema, já que há mais oportunidades de invalidar uma etiqueta composta. Não confundir a dificuldade de um problema com a dificuldade de resolver um problema. Em particular, um problema pode ser trivialmente verificado como impossível! A dificuldade de um problema está também relacionada com a dificuldade de cada restrição. Essa dificuldade pode ser avaliada através do seu grau de aperto (tightness).

17 17 Domínios Finitos Definição (Grau de Aperto de uma Restrição): Dada uma restrição R sobre as variáveis X 1... X n, com domínios D 1 a D n, o grau de aperto da restrição R é dado pela razão entre o número de etiquetas que a definem e a cardinalidade do produto cartesiano D 1 x D 2 x.. D n. Por exemplo, a restrição R 13 no problemas das 4 rainhas, definida sobre as variáveis X 1 e X 3 com domínios 1..4 R 13 = {,,,,,,, } tem um grau de aperto de 8/(4*4) = 1/2. Este conceito pode ser generalizado para o problema como um todo.

18 18 Domínios Finitos Definição (Grau de Aperto de um Problema): O grau de aperto de um problema definido nas variáveis X 1... X n, é obtido pela razão entre o número das suas soluções e a cardinalidade do produto cartesiano D 1 x D 2 x.. D n. Por exemplo, o problema das 4 rainhas que admite as soluções e tem um grau de aperto de 2/4*4*4*4 = 1/128.

19 19 Domínios Finitos A dificuldade de resolver um problema de restrições está relacionada quer com a densidade do seu grafo, quer com o seu grau de aperto. Na realidade, para testar algoritmos de resolução de problemas de restrições são criadas aleatoriamente instâncias de problemas parametrizadas pelos valores escolhidos para a densidade e grau de aperto das restrições. O estudo destes aspectos levou a concluir sobre a existência de uma transição de fase, entre os problemas trivialmente satisfazíveis e trivialmente insatisfazíveis, que é necessário ter em conta quando se testam algoritmos de resolução.

20 20 Domínios Finitos Um outro aspecto a considerar na dificuldade de resolver um problema de restrições está relacionada com a existência de valores e etiquetas redundantes em restrições. Definição (Valor Redundante): Um valor do domínio de uma variável é redundante, se não aparece em nenhuma solução do problema. Definição (Etiqueta Redundante): Uma etiqueta composta de uma restrição é redundante se ela não é a projecção para as variáveis da restrição de qualquer solução do problema.

21 21 Domínios Finitos Exemplo: O problema das 4 rainhas só admite as soluções e. Desta forma os valores 1 e 4 são redundantes no domínio das variáveis X 1 e X 4, e os valores 2 e 3 são redundantes no domínio das variáveis X 2 e X 3. Por outro lado, as etiquetas e são redundantes na restrição R 13.

22 22 Domínios Finitos Exemplo: O problema das 4 rainhas que só admite as soluções e pode ser simplificado por eliminação dos valores e etiquetas redundantes. X 1 in 1,2,3,4 X 4 in 1,2,3,4 X 3 in 1,2,3,4X 2 in 1,2,3,4 R 12 R 23 R 14 R 24 R 34 R 13 {,,,,,,, }

23 23 Domínios Finitos Os problemas inicial e simplificado são equivalentes. Definição (Problemas Equivalentes): Dois problemas P 1 = e P 2 = são equivalentes sse têm as mesmas variáveis (i.e. V 1 = V 2 ) e o mesmo conjunto de soluções. A simplificação pode igualmente ser formalizada Definição (Problema Reduzido): Um problema P= é reduzido para P= se a) P e P são equivalentes; b)os domínios D x estão incluídos em D x ; e c)as restrições R são igualmente ou mais restritivas que as restrições de R.

24 24 Resolução Construtiva em Domínios Finitos Como se viu antes, e independentemente de se poder reduzir o problema, um processo de geração e teste é muito ineficiente. Assim é preferível utilizar um processo de resolução construtivo e incremental. Neste processo, uma etiqueta composta vai sendo completada (aspecto construtivo), variável a variável (aspecto incremental), até se atingir uma solução. No entanto há que garantir que em cada passo de completamento da etiqueta composta, a etiqueta resultante ainda tem potencial para atingir uma solução.

25 25 Resolução Construtiva em Domínios Finitos Idealmente, uma etiqueta composta deverá ser a projecção de uma solução do problema. Infelizmente, num processo de resolução do problema, não se conhecem (geralmente) as soluções! Assim, pode recorrer-se a uma noção mais fraca, nomeadamente a noção de solução parcial Definição (Solução Parcial-k): Uma solução parcial de um problema de satisfação de restrições P = é uma etiqueta composta sobre um subconjunto de k das variáveis V do problema que satisfaz todas as restrições de R definidas completamente por essas variáveis.

26 26 Resolução Construtiva em Domínios Finitos Este é o princípio de resolução dos problemas de restrições de domínios finitos através do retrocesso. Este processo pode ser visto como uma pesquisa em árvore, em que as soluções parciais correspondem aos nós da árvore e as soluções às suas folhas. 2 4 1 3 3 14 1 4 2

27 27 Resolução Construtiva em Domínios Finitos Quanto mais reduzido fôr um problema mais fácil será, em princípio resolvê-lo. Com efeito, dado um problema P= com n variáveis (i.e. V = {X 1,..,X n }) o espaço de pesquisa potencial onde se poderão encontrar soluções (ou seja as folhas da árvore de pesquisa onde se encontram etiquetas compostas do tipo {,..., }), tem uma cardinalidade #S = #D 1 * #D 2 *... * #D n Sendo a cardinalidade dos domínios idênticas (#D i = d) o espaço de pesquisa #S = d n é exponencial na dimensão n do problema.

28 28 Resolução Construtiva em Domínios Finitos Se em vez de cardinalidade d do problema inicial, se trabalhar num problema reduzido em que a cardinalidade dos domínios fôr d (<d) o espaço de pesquisa potencial diminui exponencialmente! S/S = d n / d n = (d/d) n Essa diminuiução exponencial pode ser muito significativa para valores razoavelmente grandes de n. Por exemplo:

29 29 Resolução Construtiva em Domínios Finitos Na prática, esta redução potencial do espaço de pesquisa tem um custo, correspondente à computação dos valores (e etiquetas) redundantes. Uma análise detalhada do processo é extremamente complexa de uma forma geral, pois o processo depende muito da instância do problema em causa. No entanto, em geral, podemos considerar que o esforço computacional na redução de domínios não é proporcional à redução obtida tornando-se cada vez menos eficiente. Assim, a partir de um certo ponto a redução do espaço de pesquisa já não compensa, pois acarreta um maior aumento da computação para atingir essa redução!

30 30 Resolução Construtiva em Domínios Finitos Qualitativamente, este processo pode ser apresentado através do seguinte gráfico Custo computacional R - Custo de Redução P- Custo de Pesquisa R+P Custo Combinado Esforço dispendido na redução do problema

31 31 Resolução Construtiva em Domínios Finitos O esforço de redução de domínios deve ser entendida no esquema de resolução de problema que alterna enumeração com propagação. Com efeito, na especificação de um programa (em Programação em Lógica com Restrições) o lançamento das restrições antecede a enumeração das variáveis. Problema ( Vars):- Declaração de Variáveis e Domínios, Lançamento das Restrições, Enumeração das Variáveis. No entanto o esquema de execução alterna a enumeração com a propagação (redução do problema) durante o completar de uma solução parcial.

32 32 Resolução Construtiva em Domínios Finitos Assim dado um problema com n variáveis X 1 a X n o esquema de execução segue o seguinte padrão: Declaração de Variáveis e Domínios, Lançamento das Restrições, indomain(X 1 ),% escolha com retrocesso propagação indomain(X 2 ), % escolha com retrocesso propagação,... indomain(X n-1 ) % escolha com retrocesso propagação indomain(X n ) % escolha com retrocesso Há pois que balancear o esforço na redução com os resultados obtidos na redução dos domínios.

33 33 Redução de Domínios Apesar de se ter definido formalmente a redução de um problema de restrições não foi apresentada nenhum procedimento para o obter. Pior, nem sequer foi definido um procedimento para reconhecer se um problema é uma redução do problema inicial. Com efeito, a definição pressupõe que o problema reduzido seja equivalente ao inicial, isto é que tenha as mesmas soluções. No entanto, essas soluções não são, em geral, conhecidas! Assim, o que se pode estudar são critérios que permitam garantir que no processo de redução não se perdem soluções.

34 34 Redução de Domínios Esses critérios de consistência permitem estabelecer valores redundantes nos domínios das variáveis, de uma forma indirecta, isto é, sem requerer o conhecimento dos valores que pertencem a soluções do problema. Mais exactamente, a manutenção destes critérios durante a resolução do problema permite a eliminação destes valores redundantes. Em problemas de restrições binárias, os critérios mais comuns são, com complexidade crescente, os seguintes Consistência dos Nó Consistência dos Arco Consistência dos Caminho

35 35 Redução de Domínios Definição (Consistência de Nó): Um problema de restrições tem os nós consistentes, se nenhum valor no domínio das variáveis violar as restrições unárias. Este critério pode parecer óbvio e inútil. Ninguém vai especificar domínios para as variáveis que não satisfaçam à partida as restrições unárias! No entanto, este critério deve ser entendido no contexto do completar de uma solução parcial, tal como discutido atrás.

36 36 Redução de Domínios Exemplo: Após o lançamento das restrições, a rede de restrições do problema das 4 rainhas é a seguinte: X 1 in 1..4 X 4 in 1..4 X 3 in 1..4X 2 in 1..4 R 12 R 23 R 14 R 24 R 34 R 13 Após a enumeração da variável X1, com a escolha de X1=1, as restrições R12, R13 e R14 tornam-se unárias! X 4 in 1..4 X 3 in 1..4X 2 in 1..4 R 23 R 24 R 34 X 2 1,2 X 3 1,3 X 4 1,4

37 37 Redução de Domínios A manutenção da consistência dos nós deverá retirar do domínio das variáveis os valores apropriados. Consegue-se assim uma redução de domínios semelhante à que se conseguia no caso das restrições booleanas. X 4 1,4 X 2 1,2 X 3 1,3 X 4 in 2,3 X 3 in 2,4X 2 in 3,4 R 23 R 24 R 34 X 2 1,2 X 3 1,3 X 4 1,4

38 38 Redução de Domínios Manutenção de Consistência de Nós Dada a simplicidade do critério de consistência de nós, o algoritmo para proceder à sua manutenção é bastante simples e de baixa complexidade. Um possível algoritmo para manter a consistência de nós é o algoritmo NC-1 procedimento NC-1(V, D, R); para X in V para v in Dx fazer se não satisfaz(X-v, Cx) então Dx <- Dx \ {v} fim para fim procedimento

39 39 Redução de Domínios Complexidade espacial do algoritmo NC-1 Havendo n variáveis no problema, cada qual com d valores no seu domínio, e assumindo-se uma representação por extensão dos domínios das variáveis, é necessário um espaço de nd para guardar os domínios das variáveis. Por exemplo, o domínio inicial 1..4 das variáveis X i do problema das 4 rainhas, é representado pelos vectores booleanos X i = [1,1,1,1] ou 1111. Após a enumeração X 1 =1 e a manutenção de coerência de nós, os domínios ficam X1 = 1000, X2 = 0011, X3 = 0101 e X4 = 0110 O algoritmo NC-1 não requer espaço adicional, pelo que tem uma complexidade espacial O(nd).

40 40 Redução de Domínios Complexidade temporal do algoritmo NC-1 Havendo n variáveis no problema, cada qual com d valores no seu domínio, e tendo em conta que cada valor é avaliado uma vez, é fácil concluir que o algoritmo tem uma complexidade O(nd). Em geral, a baixa complexidade temporal e espacial permite que o procedimento NC-1 seja utilizado muito eficientemente na propagação de restrições. No entanto, a manutenção de consistência de nós, não permite detectar todas as reduções possíveis dos domínios das variáveis.

41 41 Redução de Domínios Um critério mais exigente (e complexo) que a consistência de nós é o de Consistência de Arcos Definição (Consistência de Arco): Um problema de restrições tem os arcos consistentes, (está numa forma consistente de arcos) se, 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 as restrições R ij, envolvendo as variáveis X i e X j, deve existir um valor v j de suporte, isto é, tal que a etiqueta composta {X i -v i, X j -v j } satisfaz a restrição R ij.

42 42 Redução de Domínios Exemplo: Após a enumeração da variável X 1, com a escolha de X 1 =1, a rede de restrições do problema das 4 rainhas, e os domínios das suas variáveis são os seguintes: No entanto a etiqueta X 2 -3 não tem suporte na variável X 3, já que nem a etiqueta composta {X 2 -3, X 3 -2} nem a etiqueta {X 2 -3, X 3 -4} satisfazem a restrição R 23. Assim, o valor 3 pode ser removido do domínio de X 2. X 4 in 2,3 X 3 in 2,4X 2 in 3,4 R 23 R 24 R 34 X 2 1,2 X 3 1,3 X 4 1,4 X 2 1,2 X 3 1,3

43 43 Redução de Domínios Na realidade, nenhum dos valores de X 3 tem suporte nas variáveis X 2 e X 4 ! Com efeito, a etiqueta X 3 -4 não tem suporte na variável X 2, já que nenhuma das etiquetas {X 2 -3, X 3 -4} e {X 2 -4, X 3 -4} satisfazem a restrição R 23. a etiqueta X 3 -2 não tem suporte na variável X 4, já que nenhuma das etiquetas {X 3 -2, X 4 -2} e {X 3 -2, X 4 -3} satisfazem a restrição R 34. X 4 1,4 X 2 1,2 X 3 1,3

44 44 Redução de Domínios Como nenhum dos valores de X 3 tem suporte nas variáveis X 2 e X 4, a manutenção de arco deve tornar vazio o domínio de X 3 ! Assim, a simples manutenção de consistência de arco não só reduz o domínio das variáveis como também antecipa a detecção de insatisfazibilidade. Desta forma, o retrocesso de X 1 =1 pode ser iniciado, sem se terem atribuído (e retrocedido) valores às restantes variáveis, nomeadamente à variável X 2. X 4 1,4 X 2 1,2 X 3 1,3

45 45 Redução de Domínios Manutenção de Consistência de Arcos Um algoritmo muito simples para impôr a consistência de arcos é o algoritmo AC-1, descrito abaixo procedimento AC-1(V, D, R); NC-1(V,D,R);% impõe a consistência de nós Q = {a ij | R ij R R ji R }; % ver nota repetir alterado <- falso; para a ij in Q fazer alterado <- alterado ou rev_dom(a ij,V,D,R) fim para até não alterado fim procedimento Nota: para R ij são considerados os arcos dirigidos aij e a ji

46 46 Redução de Domínios Manutenção de Consistência de Arcos (cont.) O predicado rev_dom(a ij,V,D,R) sucede se eliminar valores do domínio das variáveis (como um efeito lateral). predicado rev_dom(a ij,V,D,R): Booleano; sucede <- falso; para v i in dom(X i ) fazer se não existir v j in dom(X j )tal que satisfaz({X i -v i,X j -v j },R ij ) então dom(X i ) <- dom(X i ) \ {v i }; sucede <- verdade; fim se rev_dom <- sucede; fim predicado

47 47 Redução de Domínios Complexidade temporal do algoritmo AC-1 Assumindo n variáveis no problema, cada com d valores no seu domínio, e sendo os arcos em número de a, no pior caso, o predicado rev_dom, verifica d 2 pares de valores. O número de arcos a ij na fila Q é de 2a (para cada restrição Rij são considerados arcos dirigidos a ij e a ji ). Por cada valor removido, rev_dom é chamado 2a vezes. No pior caso, por cada ciclo é removido um valor de uma só variável, pelo que o ciclo pode ser executado nd vezes. Tendo em conta estes factores, a complexidade temporal do AC-1, no pior caso, é O( d 2 * 2a * nd), i.e. O(nad 3 )

48 48 Redução de Domínios Complexidade espacial do algoritmo AC-1 O algoritmo AC-1 tem de manter uma fila Q, com comprimento máximo de 2a. Assim a complexidade espacial inerente do algoritmo AC-1 é O(a). A este espaço há que acrescentar o espaço destinado à representação dos domínios O(nd) e para representar as restrições do problema. Existindo a restrições e d valores no domínio de cada variável o espaço necessário é de O(ad 2 ), sendo o total de O(nd + ad 2 ). Para redes de restrições densas, a n 2 /2. Pelo que este termo domina a complexidade espacial total que é O(ad 2 ).

49 49 Redução de Domínios Ineficiência do algoritmo AC-1 Cada vez que um valor v i é removido do domínio de uma variável X i, pelo predicado rev_dom(a ij,V,D,R), todos os arcos são reexaminados. Na realidade, apenas os arcos a ki (para k i e k j ) deveriam ser reexaminados. Com efeito, a remoção de v i pode eliminar o suporte de um valor v k de uma variável X k para a qual existe uma restrição R ki (ou R ik ). Essa ineficiência é eliminada no algoritmo AC-3.

50 50 Redução de Domínios procedimento AC-3(V, D, R); NC-1(V,D,R); % impõe a consistência de nós Q = {a ij | R ij R R ji R }; enquanto Q fazer Q = Q \ {a ij } % remove um elemento de Q se rev_dom(a ij,V,D,R) então Q = Q {a ki | R ki R k i k j} até não alterado fim procedimento Como é intuitivo, e para além de uma melhor complexidade típica, a complexidade para o pior caso do algoritmo AC-3 é melhor que a do AC-1.

51 51 Redução de Domínios Complexidade temporal do algoritmo AC-3 Cada arco a ki só é inserido quando um valor v i é eliminado do domínio de X i. No total, cada um dos 2a arcos pode ser inserido (e removido) d vezes da fila Q. Cada vez que é removido um arco, é chamado o predicado rev_dom, que verifica no máximo d 2 pares de valores. Tendo em conta todos estes, e em contraste com o algoritmo AC-1 de complexidade temporal O(nad 3 ), a complexidade temporal do algoritmo AC-3, pior caso, é O(2ad * d 2 ), ou seja O(ad 3 )


Carregar ppt "1 Domínios Finitos A eficiência das programas em domínios finitos (incluindo booleanos) podem ainda ser melhoradas pelo uso de Algoritmos de Propagação."

Apresentações semelhantes


Anúncios Google