O que é o menor valor de restrição?


11

Em problemas de satisfação com restrições, as heurísticas podem ser usadas para melhorar o desempenho de um solucionador de bactracking. Três heurísticas comumente fornecidas para solucionadores de retorno simples são:

  • Valores restantes mínimos (quantos valores ainda são válidos para essa variável)
  • Heurística de grau (quantas outras variáveis ​​são afetadas por essa variável)
  • Valor menos restritivo (qual valor deixará mais outros valores para outras variáveis)

Os dois primeiros são bastante óbvios e simples de implementar. Primeiro, escolha a variável que tiver menos valores em seu domínio e, se houver empate, escolha a que afeta mais outras variáveis. Dessa forma, se uma etapa pai no solucionador escolher uma tarefa incorreta, é provável que você descubra mais cedo e, assim, economize tempo se escolher a variável com o menor valor restante que afeta a maioria das outras coisas.

São simples, claramente definidos e fáceis de implementar.

O menor valor de restrição não está claramente definido, em qualquer lugar que eu olhei. Inteligência Artificial: Uma Abordagem Moderna (Russel & Norvig) apenas diz:

Prefere o valor que exclui o menor número de opções para as variáveis ​​vizinhas no gráfico de restrição.

A busca por "valor de menor restrição" só resultou em muitas apresentações de slides da universidade com base neste livro, sem mais informações sobre como isso seria feito algoritmicamente.

O único exemplo dado para essa heurística é um caso em que uma opção de valor elimina todas as opções para uma variável vizinha e a outra não. O problema com este exemplo é que se trata de um caso trivial, que seria eliminado imediatamente quando a atribuição potencial for verificada quanto à consistência com as restrições do problema. Portanto, em todos os exemplos que pude encontrar, a heurística de menor valor de restrição não beneficiou o desempenho do solucionador de maneira alguma, exceto por um pequeno efeito negativo de adicionar uma verificação redundante.

A única outra coisa em que posso pensar seria testar as possíveis atribuições das variáveis ​​vizinhas para cada atribuição e contar o número de atribuições possíveis dos vizinhos que existem para cada atribuição possível dessa variável e, em seguida, ordenar os valores para essa variável com base no número de atribuições de vizinhos disponíveis se esse valor for escolhido. No entanto, não vejo como isso ofereceria uma melhoria em uma ordem aleatória, pois isso exige o teste de várias combinações de variáveis ​​e a classificação com base nos resultados da contagem.

Alguém pode fornecer uma descrição mais útil do valor de menor restrição e explicar como essa versão do valor de menor restrição realmente traria uma melhoria?


AI: AMA (pp. 228) menciona que a heurística de menor valor restritivo foi proposta por Haralick e Elliot (1980). O artigo ( encontrado aqui ) usa uma linguagem muito diferente da usada em AI: AMA e estou tendo problemas para determinar qual seção se refere à heurística de LCV.
Ryan

Respostas:


3

veja este link:

https://people.cs.pitt.edu/~wiebe/courses/CS2710/lectures/constraintSat.example.txt

Ele primeiro escolhe a variável "O" e depois testa "O" com todos os seus valores legais "i" para ver o número de reduções nos vizinhos "N" de "O". Adiciona todos eles. e escolhe um "i" que causa menos reduções:

   sums = {0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0}
   For i from 0 to 9:  
     plug "o=i" into the constraint formulas
     For each neighbor "N" of "o" in the constraint graph:
       sums[i] += the number of values remaining for "N"

Ele seleciona "i" para que:

sums[i] = MAX{sums[i] | for all "i" that is a member of "O",s valid values}

Espero que isso possa ajudá-lo a encontrar sua resposta!


11
Não respondeexplain how that version of least-constraining-value would actually yield an improvement?
skrtbhtngr 9/09/17

1

Penso que o principal aqui é que essas heurísticas são aplicadas dependendo da tarefa para a qual o solucionador foi escrito. E se houver a possibilidade de que, se o valor selecionado de uma variável não deixar um único valor no domínio de outra variável (digamos que tenhamos um problema fortemente restrito com apenas uma solução), a solução parará. . E uma pesquisa aleatória pode seguir o caminho certo, levando a uma decisão e a decisão errada. E se der errado, você precisará fazer o retorno (consulte o salto em direção ao conflito), e isso leva tempo computacional. Mas o algoritmo que usa heurísticas de LCV tem mais chances de seguir um caminho mais correto e nenhum retorno é necessário. Mas se houver um problema pouco restrito, acho que será muito parecido com a pesquisa aleatória.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.