- Aprender
- Computação e TI
- Ciência da computação
- Inteligência artificial
- Problemas de satisfação de restrições
Problemas de satisfação de restrições
IntermediárioAula 3 de 10 do curso Curso de Inteligência artificial
O que você vai aprender
- Descreva um problema por suas variáveis, domínios e restrições, reconheça os tipos de restrições e transforme tarefas reais de programação e atribuição em problemas de satisfação de restrições bem formulados.
- Descreva os componentes de um problema de satisfação de restriçõesIdentifique as variáveis, os domínios e as restrições de um problema, diferencie atribuições parciais, consistentes e completas e desenhe o grafo de restrições.
- Diferencie os tipos de restriçõesClassifique restrições como unárias, binárias, de ordem superior ou globais, reescreva restrições de ordem superior como restrições binárias e separe restrições rígidas de preferências.
- Modele problemas de programação de tarefas e de atribuição como CSPsTransforme problemas de horários, programação de tarefas em oficina, atribuição e quebra-cabeças em CSPs, escolhendo variáveis e domínios que mantenham as restrições simples.
- Descreva os componentes de um problema de satisfação de restrições
- Busque uma solução atribuindo uma variável por vez, retroceda em becos sem saída e escolha a ordem das variáveis e dos valores para que a busca encontre uma solução, ou prove que não há nenhuma, com muito menos trabalho.
- Execute a busca com retrocesso passo a passoExplique por que o retrocesso atribui uma variável por nível, execute o algoritmo manualmente e informe sua completude e seu custo.
- Escolha variáveis e valores com heurísticas de ordenaçãoAplique a heurística dos valores mínimos restantes, a heurística de grau e o valor menos restritivo, explique por que apontam em direções opostas e meça seu efeito em uma busca.
- Faça retrocessos inteligentes ao chegar a um beco sem saídaUse conjuntos de conflitos para retroceder com salto, passando por variáveis que não causaram uma falha, e registre combinações proibidas para não repetir a mesma falha.
- Execute a busca com retrocesso passo a passo
- Use inferência para eliminar valores que não podem fazer parte de nenhuma solução, antes e durante a busca, e avalie o que a verificação antecipada, a consistência de arco e níveis mais fortes de consistência garantem.
- Aplique a verificação antecipada durante a buscaReduza os domínios das vizinhas de uma variável recém-atribuída, detecte domínios vazios, restaure valores no retrocesso e reconheça o que a verificação antecipada não detecta.
- Garanta a consistência de arco com AC-3Aplique a consistência de nó e de arco, execute AC-3 manualmente, conheça seu custo e seus limites e mantenha a consistência de arco durante a busca.
- Use níveis mais fortes de consistência e restrições globaisExplique consistência de caminho e de ordem k, propague restrições Alldiff e de limites e pondere a redução adicional de domínios em relação ao seu custo.
- Aplique a verificação antecipada durante a busca
- Comece com uma atribuição completa e repare-a com a heurística de conflitos mínimos, escape de platôs e mínimos locais e avalie quando a busca local ou o retrocesso é a melhor ferramenta.
- Repare atribuições com a heurística de conflitos mínimosExecute a heurística de conflitos mínimos manualmente em uma formulação de estado completo, explique por que ela funciona bem em problemas grandes e use-a para reparar uma programação após uma mudança.
- Escape de platôs e mínimos locais e escolha entre busca local e busca com retrocessoUse movimentos laterais, busca tabu, ponderação de restrições e reinícios, e decida qual método se adequa a um problema.
- Repare atribuições com a heurística de conflitos mínimos
- Interprete o grafo de restrições para dividir um problema em partes independentes, resolver problemas com estrutura de árvore em tempo linear e transformar em árvores problemas cuja estrutura se aproxima de uma árvore.
- Separe subproblemas independentes e resolva CSPs com estrutura de árvoreEncontre subproblemas independentes no grafo de restrições e resolva um CSP com estrutura de árvore usando as passagens dos filhos para os pais e dos pais para os filhos no algoritmo para árvores.
- Reduza a árvores os problemas cuja estrutura se aproxima de uma árvoreAplique o condicionamento por conjunto de corte e a decomposição em árvore, relacione seus custos ao tamanho do conjunto de corte e à largura de árvore e quebre a simetria de valores.
- Separe subproblemas independentes e resolva CSPs com estrutura de árvore
Guia de estudo de Problemas de satisfação de restrições
1Formule problemas como problemas de satisfação de restrições
Escolher uma programação de horários ou atribuir revisores começa com um modelo: o que precisa de um valor, quais valores são possíveis e quais combinações são permitidas. Um modelo claro permite que os mesmos métodos de resolução funcionem em tarefas muito diferentes. Você construirá esse modelo, distinguirá exigências de preferências e verá como a escolha das variáveis altera o trabalho de um resolvedor. Pequenos exemplos de programação de tarefas e quebra-cabeças tornam cada componente concreto.
1.1 Descreva os componentes de um problema de satisfação de restrições
Um problema de satisfação de restrições, ou CSP, descreve um conjunto de escolhas e as regras que as conectam. Seu estado é uma representação fatorada: você pode examinar variáveis individuais e seus valores e depois reutilizar métodos gerais de redução de domínios e busca.
Variáveis, domínios e restrições
Uma variável nomeia algo a ser escolhido. Seu domínio lista seus valores permitidos. Uma restrição especifica quais combinações podem ocorrer juntas. Para as oficinas A e B, seja cada valor um horário de . A regra “A ocorre antes de B” tem escopo e relação . Escrever expressa a mesma relação de forma compacta.
O escopo nomeia as variáveis envolvidas; a relação fornece as tuplas de valores permitidas. Confundi-los leva a um modelo em que “vermelho” se torna uma variável. Na coloração de mapas, as regiões são variáveis e as cores são valores.
O que constitui uma solução?
Uma atribuição dá valores a variáveis. Três verificações descrevem sua situação:
- Ela é parcial se algumas variáveis não têm valor.
- Ela é completa se toda variável tem um valor.
- Ela é consistente se não viola nenhuma restrição entre as variáveis atribuídas.
Uma solução deve ser completa e consistente. Apenas com , a atribuição é consistente, mas parcial. Estendê-la com torna-a completa e inconsistente. Escolher produz uma solução para este exemplo de duas variáveis. Uma atribuição parcial consistente ainda pode não ter nenhuma complementação possível: variáveis sem valor podem ficar sem escolhas compatíveis.
Interprete um grafo de restrições
Para um CSP binário, desenhe um nó por variável e uma aresta para cada par sujeito a uma restrição. Em um mapa simplificado da Austrália, as variáveis são WA, NT, SA, Q, NSW, V e T, cada uma com domínio {vermelho, verde, azul}. Os pares vizinhos são WA–NT, WA–SA, NT–SA, NT–Q, SA–Q, SA–NSW, SA–V, Q–NSW e NSW–V. Cada aresta exige cores diferentes.
Uma solução é WA vermelho, NT verde, SA azul, Q vermelho, NSW verde, V vermelho e T vermelho. Verifique cada aresta, incluindo SA–V. T não tem arestas, então sua cor é independente da parte continental. Há 6 colorações da parte continental e 3 escolhas para T, produzindo 18 soluções. Uma restrição que envolve várias variáveis precisa de uma representação em hipergrafo; um nó adicional de restrição pode se conectar a cada variável em seu escopo.
Domínios e tamanho da busca
Um domínio discreto finito é uma lista fixa, como três cores. Um domínio discreto infinito pode conter todos os horários de início inteiros não negativos. Um domínio contínuo pode conter horários com valores reais. Os dois últimos precisam de representações e métodos adequados a esses domínios; a programação linear trata restrições lineares contínuas.
Para variáveis com valores cada, há atribuições completas. O mapa tem candidatas antes que as restrições eliminem alguma. CSPs finitos incluem problemas NP-completos, então não se conhece um método geral de resolução em tempo polinomial. Sua estrutura interna ainda permite reduzir domínios: o resolvedor pode descartar uma escolha sem listar todas as atribuições completas que a contêm. Apenas os valores finais determinam se a resposta é válida; o caminho usado para encontrá-los é irrelevante.
Principais conclusões
- Um CSP especifica variáveis, seus domínios e restrições sobre combinações de valores.
- Uma solução é completa e consistente.
- Um grafo de restrições binárias mostra quais variáveis afetam diretamente umas às outras.
- Com domínios de mesmo tamanho, o número de atribuições completas é .
1.2 Diferencie os tipos de restrições
As restrições diferem no número de variáveis que conectam e em se estabelecem exigências ou preferências. Reconhecer essa estrutura ajuda você a escrever um modelo fiel e escolher métodos úteis de propagação.
Classifique o escopo
Uma restrição unária restringe uma variável. Se a oficina E não puder usar o horário 1, aplique reduzindo seu domínio de para antes da busca. Uma restrição binária relaciona duas variáveis, como ou . Um CSP binário contém apenas restrições unárias e binárias.
Uma restrição de ordem superior envolve pelo menos três variáveis. Se as durações das tarefas X, Y e Z devem preencher 10 horas, escreva . Com cada duração em , a tupla falha, enquanto funciona. Verificar uma regra de ordem superior exige que os valores funcionem em conjunto.
Mantenha restrições globais úteis
Uma restrição global fornece uma regra nomeada sobre um grupo de tamanho variável. exige valores diferentes para cada par. Seu conjunto de soluções é igual ao conjunto definido por desigualdades entre pares. Para nove células de Sudoku, isso equivale a 36 restrições binárias.
A forma global também dá ao resolvedor acesso ao raciocínio sobre o grupo. Três variáveis restritas a dois valores distintos não podem ser todas diferentes, embora cada par separadamente tenha uma atribuição compatível. Conjuntos de soluções iguais não garantem a mesma força de redução dos domínios.
Uma regra de capacidade também pode ser global. Aqui, significa : o número total de pessoas atribuídas às três tarefas não pode ultrapassar dez. Os argumentos representam quantidades que são somadas, então essa regra permite, por exemplo, .
Converta uma restrição finita para a forma binária
Introduza uma variável auxiliar U cujos valores sejam as triplas permitidas para . Um valor possível é . Adicione três restrições binárias: o primeiro componente de U é igual a X, o segundo é igual a Y e o terceiro é igual a Z. Portanto, selecionar esse valor para U exige , e .
Toda tripla original válida corresponde a um valor de U, e toda atribuição consistente que envolve U produz uma tripla original válida. Essa construção permite que métodos binários tratem uma restrição finita de ordem superior. Seu custo é o domínio de tuplas potencialmente grande, motivo pelo qual os resolvedores frequentemente mantêm a regra global ou de ordem superior original.
Exigências e preferências
| Tipo | O que significa | Exemplo de programação |
|---|---|---|
| Restrição rígida | Toda solução deve satisfazê-la. | Um instrutor não pode ministrar duas oficinas ao mesmo tempo. |
| Restrição flexível | Uma violação acrescenta um custo a uma escolha que, de outra forma, seria viável. | Um instrutor prefere uma sessão à tarde. |
Com restrições flexíveis, a tarefa se torna um problema de otimização com restrições, ou COP: satisfaça todas as regras rígidas e minimize o custo total das preferências. Ramificação e limitação e busca local podem ser usadas para otimização.
Teste o modelo com uma atribuição reconhecidamente válida e outra reconhecidamente inválida. Uma desigualdade inventada entre oficinas sem relação elimina programações legítimas; uma restrição omitida sobre um instrutor compartilhado admite programações impossíveis. Preferências também exigem cuidado: transformar “tarde preferida” em “tarde obrigatória” pode eliminar toda programação viável.
Principais conclusões
- Restrições unárias reduzem um domínio; restrições binárias conectam duas variáveis.
- Alldiff exige valores diferentes entre pares, mas pode permitir uma redução mais forte baseada no grupo.
- Variáveis auxiliares de tuplas podem converter restrições finitas de ordem superior para a forma binária.
- Restrições rígidas definem a viabilidade; restrições flexíveis ordenam as escolhas viáveis.
- Verifique um caso válido e um inválido ao testar um modelo.
1.3 Modele problemas de programação de tarefas e de atribuição como CSPs
Um modelo deve descrever as decisões de maneira suficientemente direta para que as regras sejam fáceis de expressar. Comece identificando o que deve ser escolhido, depois atribua domínios e traduza cada exigência sobre as variáveis que ela realmente envolve.
Construa uma programação de oficinas
Cinco oficinas que ocupam um horário cada compartilham três horários: 1 manhã, 2 meio-dia e 3 tarde. Seja A Fundamentos de Python, B Python Avançado, C Estatística, D Bancos de Dados e E Ética. Cada oficina é uma variável com domínio inicial .
Participantes compartilhados exigem , , , , e . Fundamentos deve preceder Avançado, então . O instrutor de Ética chega ao meio-dia, então . Isso produz sete arestas binárias e uma regra unária; C tem quatro vizinhas.
A atribuição satisfaz todas as regras: cada par com participantes compartilhados tem horários diferentes, Fundamentos precede Avançado e Ética não ocorre no horário 1. Ela é a única atribuição válida entre as candidatas. As oficinas B e D podem usar o horário 3 porque nenhuma regra exige que sejam diferentes.
Escolher uma variável por horário faria de cada valor um subconjunto de oficinas, com até subconjuntos possíveis por horário. As regras teriam então de examinar esses conjuntos e garantir que cada oficina ocorresse uma vez. Escolher oficinas como variáveis mantém as restrições mais simples.
Expresse horários das tarefas e recursos compartilhados
Na programação de tarefas em oficina, use uma variável de horário de início para cada tarefa. Preparar leva 20 minutos, Analisar 40 e Relatar 30. Os horários de início são minutos inteiros não negativos. A ordem e o prazo de 120 minutos fornecem
Os inícios mais cedo são 0, 20 e 60. Trabalhar de trás para frente a partir do prazo fornece os inícios mais tardios 30, 50 e 90. Assim, as janelas são , e .
Duas tarefas que compartilham uma máquina precisam de uma restrição disjuntiva: ou . Qualquer uma das tarefas pode ocorrer primeiro, mas elas não podem se sobrepor. Uma restrição simples de precedência imporia uma ordem específica e eliminaria a outra possibilidade.
Modele atribuições e quebra-cabeças
Para três relatórios atribuídos a três revisores, faça de cada relatório uma variável cujos valores são revisores. Use Alldiff se cada revisor ficar responsável por um relatório. Um conflito de interesse remove um revisor do domínio do relatório correspondente.
Para o problema das n rainhas, seja a linha da rainha na coluna . Uma rainha por coluna já está incorporada ao modelo. Para cada par, exija e para evitar ataques na mesma linha e diagonal. Para oito rainhas, isso reduz o espaço de candidatos de escolher 8 casas entre 64, disposições, para atribuições. Há 92 soluções.
Para Sudoku, as 81 variáveis das células têm domínios 1–9. Os números fornecidos impõem restrições unárias, e cada uma das 9 linhas, 9 colunas e 9 caixas impõe Alldiff.
Escolha as unidades de tempo menos detalhadas que ainda representem todos os inícios permitidos. Sessões que começam em horas cheias precisam de escolhas por hora; domínios minuto a minuto aumentariam o trabalho sem acrescentar uma programação útil. Termine separando preferências de regras rígidas e verificando um caso pequeno com resposta conhecida.
Principais conclusões
- Escolha variáveis que mantenham as restrições simples e domínios que não sejam mais detalhados que o necessário.
- A precedência usa desigualdades de término antes do início; recursos compartilhados exigem que não haja sobreposição.
- Uma rainha por coluna pode ser incorporada à escolha das variáveis.
- Um modelo correto inclui regras implícitas de recursos e preserva horários compartilhados permitidos.
2Resolva CSPs com busca com retrocesso
Uma busca pode desperdiçar a maior parte do esforço revisitando as mesmas escolhas ou descobrindo conflitos tarde demais. O retrocesso constrói uma atribuição uma variável por vez e retorna a escolhas anteriores quando um ramo falha. A ordenação de variáveis e valores ajuda a encontrar ramos promissores mais cedo, enquanto a análise de conflitos identifica quais escolhas causaram um beco sem saída. Acompanhar as decisões facilita a avaliação tanto do método básico quanto de suas melhorias.
2.1 Execute a busca com retrocesso passo a passo
O retrocesso constrói uma atribuição parcial usando busca em profundidade. Ele escolhe uma variável, testa um valor e continua até encontrar uma solução ou precisar desfazer uma escolha. A busca mantém as escolhas anteriores úteis quando uma escolha posterior falha.
Ramifique por valores, uma variável por vez
Atribuir A e depois B produz a mesma atribuição final que atribuir B e depois A. Essa comutatividade significa que um resolvedor de CSP pode escolher uma variável em cada nível e ramificar sobre seus valores. Permitir todas as ordens de variáveis produziria folhas para apenas atribuições completas distintas. Para cinco variáveis com três valores, são 29.160 folhas em vez de 243.
A próxima variável pode depender dos domínios atuais. O que importa é escolher uma única próxima variável em um nó; a busca não precisa de ramos separados para todas as ordens possíveis de atribuição.
Acompanhe as etapas recursivas
- Se a atribuição estiver completa e consistente, retorne-a.
- Escolha uma variável sem valor.
- Teste cada valor do domínio que seja consistente com a atribuição atual.
- Faça uma chamada recursiva após adicionar um valor. Se a chamada recursiva falhar, remova essa atribuição e tente o próximo valor.
- Se nenhum valor funcionar, retorne falha à chamada anterior.
O retrocesso simples testa uma restrição quando todas as variáveis em seu escopo têm valores. Com e B sem valor, não tem um par completo a rejeitar. Testar falha imediatamente. Esperar até que todas as variáveis tenham valores adiaria essa rejeição simples.
Acompanhe um beco sem saída
Use as regras das oficinas: . Considere as variáveis na ordem A, B, C, D, E e teste os valores 1, 2, 3.
- Defina . Rejeite e escolha .
- Rejeite por causa de A e por causa de B; escolha .
- Rejeite por causa de A; escolha .
- E não tem valor permitido: 1 é proibido, 2 entra em conflito com D e 3 entra em conflito com C.
A falha em E devolve o controle a D. Seu próximo valor, 3, entra em conflito com C. C não tem valor posterior, então o controle retorna a B. Testar acaba produzindo outro beco sem saída com . A busca então testa e chega a . Nessa ordem, o retrocesso simples testa 32 valores candidatos ao todo, incluindo os rejeitados.
O que o método garante
| Propriedade | Retrocesso simples em domínios finitos |
|---|---|
| Completude | Encontra uma solução se ela existir; esgotar a busca estabelece a inviabilidade. |
| Tamanho da busca no pior caso | Exponencial, atribuições no limite usual. |
| Memória do caminho de busca | Linear em ; um caminho ativo é armazenado. |
Verificar restrições e armazenar o modelo também têm custos. A descrição de memória linear refere-se ao caminho de busca, enquanto a propagação também pode armazenar domínios e registros para desfazer alterações.
O retrocesso cronológico retorna à escolha mais recente. Variantes mais rápidas melhoram quatro decisões distintas: a próxima variável, a ordem de seus valores, as consequências inferidas após uma escolha e a escolha anterior a revisitar após uma falha. Essas melhorias reduzem o trabalho prático sem alterar o que constitui uma solução.
Principais conclusões
- A comutatividade elimina a necessidade de buscar em todas as ordens de atribuição.
- O retrocesso atribui uma variável por nível e rejeita violações de restrições cujas variáveis já têm valores.
- Uma chamada recursiva que falha desfaz sua escolha e tenta outro valor.
- O retrocesso em domínios finitos é completo, mas tem busca exponencial no pior caso.
- A memória linear do caminho de busca não inclui todo o armazenamento do modelo e da propagação.
2.2 Escolha variáveis e valores com heurísticas de ordenação
Uma boa ordenação pode revelar uma falha perto do topo de uma árvore de busca ou preservar escolhas úteis para mais tarde. A ordenação de variáveis e a de valores servem a propósitos diferentes, então a direção mais promissora difere entre elas.
Escolha a variável mais restrita
A heurística dos valores mínimos restantes (MRV) seleciona a variável sem valor que tem menos valores atualmente permitidos. Ela também é chamada de heurística da variável mais restrita ou de falhar primeiro. Um domínio quase esgotado provavelmente revelará uma contradição em breve. Se um domínio estiver vazio, o ramo falha imediatamente.
Conte os valores atuais após a redução, não os tamanhos iniciais dos domínios. Sem domínios armazenados, um resolvedor deve determinar quais valores originais ainda são consistentes com a atribuição antes de aplicar a MRV.
A heurística de grau desempata na MRV escolhendo a variável com mais restrições sobre outras variáveis sem valor. Essa escolha afeta mais decisões restantes. Vizinhas já atribuídas não contam para esse grau restante. No início do mapa da Austrália, os domínios iguais de três cores empatam, e as cinco vizinhas de SA dão a ela o maior grau.
Mantenha opções abertas ao escolher um valor
O valor menos restritivo (LCV) testa o valor que remove menos valores dos domínios de vizinhas sem valor. Avaliar valores candidatos acrescenta processamento, mas pode evitar um ramo malsucedido e custoso.
Com WA vermelho e NT verde, SA só pode ser azul, enquanto Q pode ser vermelho ou azul. Escolher Q azul esvaziaria o domínio de SA. Escolher Q vermelho remove vermelho de NSW e preserva o azul de SA. Portanto, a LCV testa Q vermelho.
| Decisão de ordenação | Escolha preferida | Motivo |
|---|---|---|
| Próxima variável | Menos valores restantes | Revelar cedo uma provável falha. |
| Variável empatada | Mais vizinhas sem valor | Afetar mais decisões restantes. |
| Próximo valor | Menos valores eliminados das vizinhas | Preservar as chances de completar a atribuição. |
Toda variável deve receber um valor em algum momento, o que torna útil testar cedo uma variável com poucas opções. Apenas um valor é necessário para completar uma primeira solução, o que favorece um valor que deixe espaço para outras decisões.
Combine ordenação com verificação antecipada
Na programação das oficinas, aplique primeiro. E tem dois valores; A, B, C e D têm três cada uma. A MRV escolhe E. Teste , e a verificação antecipada remove 2 de C e D.
C e D agora empatam com domínios . C tem três vizinhas sem valor, A, B e D; D tem duas, A e C. A heurística de grau seleciona C. Escolha , deixando e . A MRV escolhe , o que força ; a regra de precedência então produz . Cinco atribuições encontram a solução sem retrocesso. A ordem fixa de variáveis com verificação antecipada exige 12 atribuições e chega a dois becos sem saída.
A ordenação preserva a completude porque altera a sequência de escolhas sem descartar ramos permitidos. A busca no pior caso continua exponencial. Ao enumerar todas as soluções ou provar a inviabilidade, todos os valores relevantes devem ser explorados em algum momento, então a vantagem da LCV de obter sucesso cedo é reduzida. Seu principal uso é encontrar uma primeira solução mais cedo.
Principais conclusões
- A MRV usa o número atual de valores permitidos.
- A heurística de grau desempata usando restrições sobre variáveis sem valor.
- A LCV preserva as escolhas das vizinhas ao testar um valor.
- A ordenação altera o esforço de busca e preserva a completude.
2.3 Faça retrocessos inteligentes ao chegar a um beco sem saída
Um beco sem saída frequentemente tem uma causa menor que toda a atribuição atual. O retrocesso com salto usa essa causa para decidir aonde retornar, e o aprendizado de restrições registra uma falha para que ela não precise ser descoberta novamente.
Encontre as escolhas que causaram a falha
No mapa da Austrália, considere a ordem de atribuição Q, NSW, V, T, SA. Sejam Q vermelho, NSW verde, V azul e T vermelho. SA é vizinha de Q, NSW e V, então as três cores são proibidas. Seu conjunto de conflitos é : variáveis anteriores cujas escolhas excluem seus valores.
O retrocesso cronológico tentaria alterar T. A Tasmânia não tem uma aresta com SA, então mudar sua cor não pode restaurar nenhuma opção para SA. O retrocesso com salto retorna a V, o membro atribuído mais recentemente no conjunto de conflitos, e ignora T.
Um conjunto de conflitos contém variáveis; uma combinação proibida de atribuições registra atribuições específicas. Essa distinção importa: outra cor para V pode corrigir a falha, embora V continue sendo vizinha de SA.
Propague um conflito por falhas anteriores
O retrocesso com salto simples usa o conjunto de conflitos direto da falha atual. O retrocesso com salto dirigido por conflitos leva informações por vários níveis que falharam. Quando uma variável X que falhou salta para Y, Y absorve o conjunto de conflitos de X com Y removida. Se Y esgotar todos os seus valores depois, seu conjunto combinado identificará uma causa mais atrás na atribuição.
Por exemplo, use a ordem WA, NSW, T, NT, Q, V, SA e comece com WA vermelho, NSW vermelho, T vermelho. WA e NSW não são vizinhas, então essa atribuição parcial é consistente. Suas escolhas removem vermelho de NT, Q e SA. Essas três regiões formam um triângulo, que não pode ser colorido usando apenas verde e azul.
Nenhuma escolha feita para T altera esse triângulo. As informações sobre conflitos podem voltar pelas tentativas que falharam e identificar WA e NSW como a causa subjacente. A busca retorna a NSW, a mais recente dessas duas decisões, em vez de gastar tempo mudando a cor de T.
Aprenda a combinação que falhou
Um resolvedor pode registrar como uma combinação proibida. Sempre que ambas as escolhas se repetirem, seguirá a mesma contradição no triângulo, então o ramo pode ser rejeitado imediatamente. Seria incorreto proibir WA vermelho isoladamente: WA pode ser vermelho em soluções válidas com outra cor para NSW.
O aprendizado acrescenta uma restrição ou uma combinação proibida armazenada em cache. A condição aprendida deve decorrer das restrições originais; uma falha causada apenas por atingir um limite de tempo não fornece tal justificativa lógica. Uma combinação proibida útil mantém atribuições suficientes para explicar a impossibilidade sem incluir escolhas não relacionadas.
Combine antecipação e análise retrospectiva
A verificação antecipada e a consistência de arco removem valores sem suporte antes que ocorra uma falha em níveis profundos. O retrocesso com salto diagnostica uma falha depois que ela ocorre. O retrocesso com salto direto e simples não acrescenta redução além do que a verificação antecipada já detecta, mas métodos dirigidos por conflitos podem combinar explicações de falhas mais profundas. O aprendizado preserva essas explicações em ramos posteriores.
Principais conclusões
- Um conjunto de conflitos identifica variáveis anteriores responsáveis por uma falha.
- O retrocesso com salto ignora escolhas que não estão relacionadas à falha.
- O retrocesso com salto dirigido por conflitos combina informações sobre conflitos entre níveis que falharam.
- Uma combinação proibida impede uma combinação impossível de atribuições, não cada atribuição separadamente.
- A redução antecipada de domínios e as explicações aprendidas podem trabalhar juntas.
3Reduza domínios com propagação de restrições
Um valor pode ser impossível mesmo antes de sua variável ser escolhida. A propagação de restrições acompanha as consequências dos domínios e das atribuições atuais, eliminando valores que não têm o suporte necessário. Os métodos diferem em até onde olham: das vizinhas imediatas de uma decisão a pares, triplas e grupos inteiros de variáveis. Exemplos de alterações nos domínios mostram o que cada método detecta, o que não detecta e quando o trabalho extra compensa.
3.1 Aplique a verificação antecipada durante a busca
A verificação antecipada identifica o que uma nova atribuição elimina imediatamente para as variáveis vizinhas sem valor. Ela elimina valores incompatíveis antes que a busca chegue a essas variáveis, tornando alguns becos sem saída visíveis vários níveis antes.
Reduza domínios após uma atribuição
Após escolher , examine cada Y sem valor que compartilhe uma restrição com X. Elimine de todo valor que entre em conflito com a escolha. Um domínio vazio significa que o ramo atual não pode ser completado, então retroceda imediatamente.
Para , atribuir remove 2 de Y. Para , atribuir remove todos os valores de Y menores ou iguais a 2. A relação determina o que é removido; a verificação antecipada não se limita a eliminar valores iguais.
A redução altera os domínios do ramo atual. Mantenha um registro de desfazimento, frequentemente chamado de trilha, de cada eliminação causada pela escolha. Quando essa escolha for desfeita, restaure os valores eliminados por ela, mantendo as restrições que pertencem a escolhas anteriores. Cópias dos domínios em cada nível oferecem outra implementação.
Acompanhe os domínios das oficinas
Use os horários 1–3 e as regras . Aplique a regra unária para obter e depois use a ordem fixa A, B, C, D, E.
- deixa B, C e D com .
- deixa C com .
- deixa D e E cada uma com .
- remove 2 de E, esvaziando seu domínio. Retroceda.
Restaurar os domínios e testar força C a ser 2. D e E passam a ser 3, então atribuir D esvazia E novamente. A busca precisa alterar A. Com , ela pode chegar a . Esse percurso testa 12 valores, em comparação com 32 testes de candidatos no retrocesso simples na mesma ordem.
Reconheça o limite da verificação de um passo
Após a etapa 3, D e E têm 2 como único valor e devem ser diferentes. A verificação antecipada ainda não verificou essa restrição: nem D nem E recebeu uma nova atribuição. Ela detecta a falha apenas quando D recebe seu valor.
Esse é o limite central da verificação antecipada. Ela testa a variável atribuída em relação às suas vizinhas sem valor, sem propagar adiante a redução do domínio de uma vizinha. A consistência de arco pode acompanhar essas consequências entre variáveis sem valor.
Use os domínios mantidos
A MRV agora pode selecionar diretamente o menor domínio restante. Um domínio com um único valor frequentemente se torna a próxima escolha; um domínio vazio sinaliza falha sem acrescentar outra atribuição. Manter os domínios atualizados ajuda tanto a inferência quanto a ordenação.
Para no máximo vizinhas e no máximo valores por vizinha, uma passagem de verificação antecipada usa cerca de verificações binárias, supondo um teste da relação em tempo constante. Ela remove apenas valores incompatíveis com a atribuição atual, então o retrocesso continua completo. Esquecer de restaurar um valor eliminado pode fazer um ramo posterior perder uma solução válida; reduzir o domínio de uma variável sem relação pode ter o mesmo efeito.
Principais conclusões
- A verificação antecipada reduz os domínios das vizinhas sem valor da variável recém-atribuída.
- Um domínio vazio rejeita imediatamente o ramo atual.
- Restaure as eliminações específicas do ramo ao desfazer uma escolha.
- A verificação antecipada não propaga restrições entre duas variáveis sem valor.
3.2 Garanta a consistência de arco com AC-3
Um valor precisa de um par compatível em cada domínio vizinho. A consistência de arco torna explícita essa exigência de suporte e acompanha os efeitos das mudanças de domínio em todo um CSP binário.
O suporte tem direção
A consistência de nó primeiro remove valores proibidos por regras unárias. Para uma restrição binária, o arco direcionado é consistente quando todo valor em X tem pelo menos um valor compatível em Y. Esse valor em Y é um suporte. Revisar o arco elimina os valores sem suporte de sua cauda, X.
Para com ambos os domínios , revisar elimina 3 de A. Revisar elimina 1 de B. Os domínios resultantes são e . Um valor restante pode usar um suporte diferente para cada vizinha; os suportes não precisam formar uma solução conjunta.
Execute AC-3
O AC-3 usa uma fila de arcos direcionados:
- Inicialmente, coloque todos os arcos na fila.
- Retire e revise X usando o domínio de Y.
- Se o domínio de X ficar vazio, pare com falha.
- Se o domínio de X diminuir, adicione para cada outra vizinha Z de X, exceto Y.
- Continue até a fila ficar vazia.
Uma eliminação em X pode remover um suporte para Z, então a fila deve receber arcos que apontem para o domínio alterado. O arco de Y não precisa ser verificado novamente de imediato: os valores eliminados de X não davam suporte a nenhum valor de Y, pois nenhum deles era compatível com Y desde o início. Os domínios finais não vazios independem da ordem de processamento; ordens diferentes podem chegar à falha em domínios vazios diferentes.
Propague uma decisão sobre as oficinas
Para as regras das oficinas , o AC-3 inicial remove 3 de A e 1 de B. Ele deixa C e D com e E com .
Agora decida . O arco remove 1 de A, deixando . Revisar B em relação a A força . D é diferente de C e A, então . E é diferente de D e não pode ser 1, então . As reduções de domínio foram além das vizinhas imediatas da decisão original.
A manutenção da consistência de arco (MAC) aplica essa inferência após cada decisão de busca. Partindo de domínios consistentes de arco, restringir exige uma fila de arcos que chegam de suas vizinhas sem valor. Os valores eliminados dos domínios devem ser restaurados quando a busca desfaz o ramo.
Interprete o resultado e o custo
| Resultado após consistência de nó e de arco | Significado |
|---|---|
| Um domínio vazio | Nenhuma solução estende as restrições atuais. |
| Todo domínio tem um único valor | A única atribuição restante satisfaz o CSP binário. |
| Alguns domínios têm vários valores | Pode ser necessária mais inferência ou busca. |
Um triângulo com domínios {vermelho, azul} e desigualdades nas três arestas continua consistente de arco, mas não tem solução. Cada aresta tem suportes separadamente, mas as três escolhas não podem funcionar juntas.
Com restrições binárias e tamanho máximo de domínio , AC-3 leva tempo : uma revisão de arco verifica até pares, e cada arco pode exigir até rodadas à medida que sua cabeça perde valores. MAC gasta mais por nó de busca que a verificação antecipada, frequentemente em troca de uma árvore de busca muito menor.
Principais conclusões
- Revisar remove de X os valores sem suporte.
- Após o domínio de X diminuir, AC-3 verifica novamente os arcos que apontam para X.
- Domínios não vazios e consistentes de arco ainda podem descrever um CSP sem solução.
- MAC mantém a consistência de arco após decisões de busca.
- AC-3 tem o limite padrão de pior caso .
- Conclusões sobre domínios com um único valor exigem que as restrições unárias e binárias tenham sido aplicadas.
3.3 Use níveis mais fortes de consistência e restrições globais
Suportes separados entre pares podem ocultar uma contradição no grupo. Níveis mais fortes de consistência e propagação global especializada examinam combinações que a consistência de arco não detecta, enquanto limites numéricos podem condensar domínios grandes em intervalos úteis.
Estenda atribuições a outra variável
A consistência de caminho examina triplas. Toda atribuição consistente a duas variáveis deve ter uma extensão a uma terceira que seja compatível com ambas. Em um triângulo colorido de vermelho ou azul, X vermelho e Y azul não deixam nenhum valor para Z. A consistência de caminho remove esse par permitido e acaba revelando a inviabilidade. Ela pode remover tuplas de relações, portanto faz mais do que eliminar valores individuais de domínios.
A consistência de ordem k exige que toda atribuição consistente a quaisquer variáveis possa ser estendida a qualquer variável adicional. Para CSPs binários, a consistência de ordem 1 corresponde à consistência de nó, a de ordem 2 à consistência de arco e a de ordem 3 à consistência de caminho. A consistência forte de ordem k inclui todos os níveis de 1 até k. Com consistência forte de ordem n em n variáveis e domínios não vazios, qualquer atribuição parcial consistente pode ser estendida até se tornar uma solução, sem retrocesso. Estabelecer essa propriedade tem custos de tempo e memória exponenciais no pior caso.
Conte os valores em Alldiff
Alldiff exige valores distintos para todas as variáveis em seu escopo. Se um grupo de m variáveis tiver apenas n valores possíveis distintos e , nenhuma atribuição poderá satisfazê-lo.
Para três células com domínios , as desigualdades entre pares são consistentes de arco: cada 4 tem suporte 7 em cada vizinha, e cada 7 tem suporte 4. Ainda assim, a contagem global falha porque são necessários três valores diferentes e existem apenas dois.
Se duas células tiverem o domínio , elas devem usar 4 e 7 entre si. Esses valores podem ser removidos de todas as outras células dessa linha. Esse raciocínio de par nu usa um subconjunto de todo o escopo de Alldiff. Um propagador global simples também pode processar repetidamente variáveis com um único valor, remover seus valores das demais e verificar se restam valores distintos insuficientes. Propagadores mais fortes também reconhecem subconjuntos restritos.
Estreite os limites numéricos
A propagação de limites armazena um domínio por seu mínimo e máximo. A consistência de limites exige que cada extremidade tenha uma extensão que satisfaça cada restrição relevante; ela não verifica cada valor interior.
Para dois ônibus que transportam 100 pessoas, sejam e , com . O segundo ônibus transporta no máximo 70, forçando . O primeiro transporta no máximo 50, forçando . As janelas reduzidas são e .
Para Preparar, Analisar e Relatar, que levam 20, 40 e 30 minutos nessa ordem, um prazo de 120 minutos dá os inícios mais tardios 30, 50 e 90. Inícios não negativos dão os inícios mais cedo 0, 20 e 60. A propagação para frente e para trás obtém essas janelas antes de um horário de início ser escolhido.
Escolha uma força de inferência útil
Cada célula de Sudoku tem 20 células relacionadas distintas: 8 em sua linha, 8 em sua coluna e mais 4 em sua caixa. Nas 81 células, isso produz pares distintos que devem ser diferentes. Restrições globais preservam as mesmas soluções que esses pares, mas podem revelar pares nus e falta de valores mais cedo. Uma inferência mais forte custa mais por passagem; resolvedores práticos equilibram esse custo com a busca economizada, frequentemente combinando consistência de arco com propagação especializada de restrições globais e de limites.
Principais conclusões
- A consistência de caminho verifica se um par consistente pode ser estendido a uma terceira variável.
- A consistência forte de ordem k inclui todos os níveis inferiores de consistência.
- Alldiff detecta grupos com valores distintos insuficientes.
- Um par nu reserva seus dois valores para essas duas variáveis.
- A propagação de limites estreita as extremidades sem enumerar um domínio numérico grande.
- Uma inferência mais forte troca trabalho extra por passagem por menos busca.
4Resolva CSPs com busca local
Uma programação de horários que viola algumas regras ainda pode ser um ponto de partida útil. A busca local mantém um valor para cada variável e repara conflitos um movimento por vez. O desafio é selecionar movimentos produtivos e escapar de regiões onde o progresso para. Você acompanhará a heurística de conflitos mínimos em um tabuleiro pequeno, examinará maneiras de dar continuidade aos reparos e escolherá um método de resolução adequado à evidência necessária em uma tarefa de programação ou atribuição.
4.1 Repare atribuições com a heurística de conflitos mínimos
A busca local começa com um valor para cada variável, mesmo quando algumas restrições falham. A heurística de conflitos mínimos repara essa atribuição completa mudando uma variável em conflito para um valor com o menor número possível de conflitos.
Escolha um reparo
- Construa uma atribuição completa, aleatoriamente ou de forma gulosa.
- Se nenhuma restrição for violada, retorne a solução.
- Escolha aleatoriamente uma variável envolvida em uma restrição violada.
- Avalie cada valor de seu domínio em relação às outras variáveis, que permanecem fixas.
- Escolha um valor com o menor número de conflitos, desempate aleatoriamente e repita até obter sucesso ou atingir um limite de passos.
Uma variável em conflito participa de pelo menos uma restrição violada. Ela não é necessariamente a variável com o maior número de violações. A escolha aleatória entre variáveis em conflito e valores empatados ajuda a evitar uma sequência rígida e repetida.
Repare um tabuleiro de 4 rainhas
Use uma rainha por coluna, com variáveis de linha . Um par entra em conflito se suas linhas forem iguais ou se a diferença entre suas linhas for igual à diferença entre suas colunas. Comece com . As colunas 1 e 3 compartilham a linha 2; as colunas 3 e 4 se atacam na diagonal. As variáveis em conflito são Q1, Q3 e Q4.
Escolha Q3 e avalie as linhas enquanto Q1, Q2 e Q4 permanecem fixas:
| Linha candidata para Q3 | Conflitos que envolvem Q3 |
|---|---|
| 1 | 0 |
| 2 | 2 |
| 3 | 2 |
| 4 | 3 |
A linha 1 produz , uma solução. Se Q1 tivesse sido escolhida, suas contagens para as linhas 1–4 seriam 0, 1, 2 e 2. Movê-la para a linha 1 produz , deixando o conflito diagonal Q3–Q4. Portanto, um reparo localmente melhor pode levar a um processo de reparo ainda incompleto.
Conte as restrições que envolvem a variável selecionada. Contar todas as violações em cada tabuleiro resultante produz a mesma ordenação, pois as restrições sem relação com a variável contribuem com uma constante para cada candidato. Isso simplesmente exige mais trabalho. Use uma definição consistente de conflito ao comparar candidatos.
Repare uma programação existente
Quando um instrutor fica indisponível, a programação atual já é uma atribuição completa. A heurística de conflitos mínimos pode começar nela e mover sessões até que as restrições novas e existentes sejam respeitadas. Uma pequena mudança frequentemente exige poucos reparos, embora um movimento possa criar novos conflitos em outro lugar. Se preservar o plano antigo for importante, atribua um custo explícito à mudança de uma atribuição; minimizar apenas as violações não minimiza as alterações na programação.
Experimentos com uma boa atribuição inicial exigiram relativamente poucos passos de reparo mesmo para um milhão de rainhas. Tabuleiros maiores ainda tornam cada passo mais custoso. A heurística de conflitos mínimos também foi usada na programação do Hubble, com uma redução relatada de cerca de três semanas para cerca de 10 minutos para programar uma semana de observações.
Interprete o comportamento da busca
Muitas famílias de CSPs aleatórios passam de majoritariamente solucionáveis para majoritariamente sem solução à medida que a razão entre restrições e variáveis aumenta. Perto dessa transição, decidir como as escolhas interagem costuma ser mais difícil. Problemas com poucas restrições podem ter muitas soluções fáceis de alcançar. Problemas sem solução e com muitas restrições podem ser rejeitados rapidamente por resolvedores completos baseados em propagação.
Atingir um limite de passos da heurística de conflitos mínimos significa que nenhuma solução foi encontrada naquela execução. O problema ainda pode ter solução. A força prática do método vem de reparos eficientes, incluindo movimentos entre valores com a mesma pontuação, embora as soluções sejam uma fração minúscula de todas as atribuições possíveis.
Principais conclusões
- A heurística de conflitos mínimos começa com uma atribuição completa e repara restrições violadas.
- Escolha uma variável em conflito e depois um valor com o mínimo de conflitos, com desempate aleatório.
- As pontuações dos candidatos podem ignorar restrições que não envolvem a variável escolhida.
- Reparar uma atribuição para torná-la viável e minimizar mudanças são objetivos diferentes.
- Uma falha por limite de passos deixa a viabilidade sem resposta.
4.2 Escape de platôs e mínimos locais e escolha entre busca local e busca com retrocesso
Uma busca por reparos pode parar de melhorar enquanto ainda há conflitos. Para continuar, o resolvedor precisa de uma maneira de percorrer estados de mesma pontuação ou alterar quais movimentos parecem compensar. O resultado necessário também importa: um reparo viável e rápido e uma prova de inviabilidade exigem métodos diferentes.
Atravesse um platô
Um mínimo local tem violações, mas nenhum movimento de uma única variável reduz sua contagem. Um platô é uma região conectada de atribuições com a mesma pontuação. Movimentos que apenas diminuem a pontuação podem ficar presos; um movimento lateral muda o estado sem diminuí-la.
No problema das 4 rainhas, tem um conflito entre Q3 e Q4. Com as outras rainhas fixas, as contagens de Q3 para as linhas 1–4 são 1, 1, 3 e 2; as de Q4 são 2, 2, 1 e 2. Nenhuma das variáveis tem um movimento que melhore a pontuação.
Mover Q3 para a linha 1 produz , ainda com um conflito, agora Q1–Q3 compartilhando uma linha. Nesse novo estado, as contagens de Q1 são 1, 0, 3 e 1. Mover Q1 para a linha 2 produz e elimina o conflito. O movimento lateral alterou quais movimentos de melhoria estavam disponíveis.
Mantenha a busca em andamento
| Método | Como altera a busca |
|---|---|
| Busca tabu | Proíbe temporariamente estados ou movimentos recentes para reduzir ciclos. |
| Ponderação de restrições | Aumenta a importância das restrições que continuam violadas. |
| Reinícios aleatórios | Recomeçam com outra atribuição completa após passos sem resultado. |
| Recozimento simulado | Às vezes aceita movimentos piores, com aceitação menor à medida que a temperatura cai. |
Uma lista tabu é uma memória de curta duração. Ela desencoraja o retorno imediato a um estado que acabou de ser deixado. Um reinício explora outra região, enquanto o recozimento pode atravessar uma região com mais conflitos na execução atual.
Com a ponderação de restrições, comece cada peso em 1 e pontue um estado pela soma dos pesos de suas restrições violadas. Escolha uma mudança que reduza essa pontuação ponderada e depois aumente os pesos das restrições que continuam violadas. Falhas repetidas ficam mais custosas, remodelando a paisagem da busca. Uma pontuação ponderada zero ainda significa que toda restrição rígida com peso positivo é satisfeita.
Escolha a evidência de que você precisa
A busca local é incompleta: ela pode deixar de encontrar uma solução existente, e uma execução finita malsucedida não resolve a questão da inviabilidade. O retrocesso com propagação em domínios finitos é completo: em algum momento encontra uma solução ou esgota todas as complementações possíveis.
Use a busca local quando um problema grande com poucas restrições precisar de uma atribuição viável ou de um reparo rápido. O retrocesso com MRV e MAC é uma escolha forte para quebra-cabeças com muitas restrições e sempre que a tarefa exigir um resultado de inviabilidade. O tempo de execução ainda depende da instância; essas escolhas de método se baseiam em suas garantias.
A programação das oficinas tem a solução única . Acrescentar a elimina. A heurística de conflitos mínimos pode tentar reparos até seu limite, mas apenas uma busca completa que esgote os casos restantes estabelece que o organizador precisa mudar uma exigência, por exemplo, acrescentando outro horário.
Principais conclusões
- Um movimento lateral pode revelar um movimento de melhoria além de um platô.
- Memória tabu, pesos, reinícios e recozimento tratam obstáculos diferentes ao progresso.
- A busca local é incompleta; o retrocesso exaustivo em domínios finitos é completo.
- Escolha um método completo quando for necessário estabelecer a inviabilidade.
5Aproveite a estrutura de um problema
A estrutura de um grafo de restrições pode ser tão importante quanto o tamanho de seus domínios. Componentes separados podem ser resolvidos independentemente, e uma árvore permite uma passagem de redução dos filhos para os pais seguida de atribuições dos pais para os filhos sem retrocesso. Ciclos exigem mais trabalho, mas um conjunto de corte pequeno ou uma decomposição em árvore de pequena largura podem controlá-lo. Esses métodos relacionam a estrutura do grafo ao tempo necessário para encontrar uma atribuição consistente.
5.1 Separe subproblemas independentes e resolva CSPs com estrutura de árvore
Um grafo de restrições pode revelar problemas menores dentro de um problema grande. Componentes independentes podem ser resolvidos separadamente, e componentes sem ciclos admitem um algoritmo particularmente eficiente, com uma passagem de redução dos filhos para os pais e uma passagem de atribuição dos pais para os filhos.
Separe componentes desconectados
Um componente conectado é independente quando nenhuma restrição liga suas variáveis a outro componente. Resolva cada componente e depois combine uma solução de cada um. Se algum componente não tiver solução, o CSP completo não terá solução. No mapa da Austrália, a Tasmânia é independente da parte continental.
Com n variáveis divididas em grupos independentes de tamanho c, encontrar uma atribuição completa exige trabalho da ordem de em vez de . Para 60 variáveis binárias divididas em três grupos de 20, buscas exaustivas separadas consideram no máximo atribuições em vez de cerca de . Enumerar todas as soluções combinadas ainda exigiria listar as combinações; a economia descreve a resolução dos problemas dos componentes.
Ordene uma árvore a partir da raiz
Um CSP binário tem estrutura de árvore quando seu grafo de restrições não tem ciclos. Uma árvore conectada tem um caminho entre cada par de variáveis; uma floresta contém árvores separadas. Primeiro aplique as restrições unárias. Escolha qualquer raiz e ordene as variáveis de modo que cada pai apareça antes de seus filhos.
A consistência de arco direcionada nessa ordem exige que cada variável anterior tenha suporte em cada vizinha posterior. Em uma árvore, essas vizinhas posteriores são seus filhos. A direção do suporte é do pai para o filho, embora o algoritmo processe os filhos antes dos pais.
Reduza dos filhos para os pais, atribua dos pais para os filhos
- Leia a ordem de trás para frente, excluindo a raiz. Para cada filho, revise o arco de seu pai para esse filho. Elimine do domínio do pai os valores sem suporte.
- Se um domínio ficar vazio, informe que não há solução.
- Leia a ordem de frente para trás. Escolha qualquer valor restante para a raiz e depois atribua a cada filho um valor compatível com o valor atribuído ao pai.
Os descendentes do filho já foram processados quando seu pai é revisado. Portanto, um valor restante do pai tem suporte em cada filho, e cada valor do filho já tem suporte nos níveis abaixo. Ramos de filhos diferentes não têm arestas que os conectem, então esses suportes podem ser escolhidos independentemente. Por isso, a passagem dos pais para os filhos não precisa de retrocesso.
Acompanhe a árvore das oficinas
Fixe na programação das oficinas e remova 1 dos domínios das outras oficinas. O grafo restante é o caminho B–A–D–E, com domínios e restrições .
Escolha a raiz A e a ordem A, B, D, E. A passagem dos filhos para os pais revisa e depois , sem alterações. Por fim, remove 3 de A porque B não tem valor maior. Atribuir dos pais para os filhos produz . Restaurar produz a programação completa.
Para n variáveis com tamanho máximo de domínio d, a passagem dos filhos para os pais revisa arcos a um custo de até cada, resultando em tempo . A garantia depende da ausência de ciclos. Um ciclo pode conectar ramos de filhos separados e invalidar a independência que tornava seguras essas escolhas locais.
Principais conclusões
- Componentes desconectados podem ser resolvidos independentemente e combinados.
- O método para árvores primeiro aplica restrições unárias e ordena os pais antes dos filhos.
- A passagem dos filhos para os pais revisa arcos do pai para o filho e reduz os domínios dos pais.
- A passagem dos pais para os filhos escolhe valores compatíveis sem retrocesso.
- O limite de tempo padrão para um CSP com estrutura de árvore é .
5.2 Reduza a árvores os problemas cuja estrutura se aproxima de uma árvore
Um grafo com poucos ciclos ainda pode estar próximo o suficiente de uma árvore para ser resolvido eficientemente. O condicionamento por conjunto de corte atribui valores primeiro a variáveis selecionadas; a decomposição em árvore agrupa variáveis em partes sobrepostas. Ambos fazem com que a coordenação restante tenha estrutura de árvore.
Condicione por um conjunto de corte de ciclos
Um conjunto de corte de ciclos é um conjunto de variáveis cuja remoção deixa uma árvore ou floresta. Verifique todos os ciclos restantes, não apenas o mais visível. Para o mapa da Austrália, remover SA deixa o caminho WA–NT–Q–NSW–V e T isolada. Para o grafo das oficinas, remover C deixa B–A–D–E.
Para cada atribuição ao conjunto de corte que satisfaça suas restrições internas:
- Remova valores incompatíveis dos domínios restantes.
- Resolva cada árvore restante usando a redução dos filhos para os pais e a atribuição dos pais para os filhos.
- Se todas tiverem sucesso, combine suas atribuições com os valores do conjunto de corte. Caso contrário, tente outra atribuição do conjunto de corte.
No problema das oficinas, deixa uma árvore solucionável. Com , A e B devem vir de e força . D deve ser diferente de A e C, produzindo . E não pode ser 1 e deve ser diferente de C e D, ficando sem valor. Com , A e B devem ser 1 e 2; D deve então ser 2, deixando E sem valor novamente.
Para um conjunto de corte de tamanho c, há no máximo atribuições, cada uma seguida de um problema em árvore de custo . O total é . Um c pequeno torna isso útil; o custo continua exponencial em c. Encontrar um conjunto de corte mínimo é NP-difícil, mas um conjunto de corte válido que não seja mínimo ainda produz um procedimento correto.
Una bolsas sobrepostas
Uma decomposição em árvore organiza conjuntos de variáveis, chamados bolsas, em uma árvore. Ela deve satisfazer três condições:
- Toda variável aparece em uma bolsa.
- O escopo de toda restrição cabe em pelo menos uma bolsa.
- As bolsas que contêm uma mesma variável formam uma parte conectada da árvore de bolsas.
A terceira regra é a propriedade de interseção contínua. Se X aparece nas duas extremidades de um caminho de bolsas, deve aparecer em todo esse caminho. Caso contrário, bolsas distantes poderiam escolher valores inconsistentes para X sem nenhuma verificação intermediária de concordância.
As atribuições localmente válidas de cada bolsa tornam-se valores de uma megavariável. Bolsas adjacentes devem concordar sobre as variáveis compartilhadas. A árvore resultante coordena as soluções locais. Para um triângulo X–Y–Z–X mais a aresta Z–W, as bolsas e cobrem todas as arestas e concordam sobre Z.
A largura de árvore da decomposição é o tamanho de sua maior bolsa menos 1. A largura de árvore de um grafo é o mínimo entre as decomposições válidas. Para largura w, o limite padrão de CSP é . Uma largura fixa e limitada controla o expoente.
Elimine a simetria de valores
Quando os nomes das cores não têm significado especial, permutar vermelho, verde e azul preserva a validade. As seis soluções da parte continental da Austrália são seis renomeações de um padrão. Fixar a ordem NT antes de SA antes de WA na ordem de cores vermelho, verde, azul mantém um representante. Essa restrição de quebra de simetria só é válida quando a renomeação preserva as regras originais. Uma regra que exige que determinada região seja vermelha torna essa cor especial e altera quais permutações continuam sendo simetrias.
Principais conclusões
- Um conjunto de corte de ciclos deve eliminar todos os ciclos.
- O condicionamento testa atribuições ao conjunto de corte e resolve a floresta restante.
- O custo do condicionamento é exponencial no tamanho do conjunto de corte.
- Decomposições em árvore abrangem variáveis e restrições e satisfazem a interseção contínua.
- A largura de árvore é o tamanho máximo de uma bolsa menos um, minimizado entre as decomposições do grafo.
- Quebre a simetria de valores apenas para renomeações que preservem as restrições originais.
Exercícios resolvidos de Problemas de satisfação de restrições
1Construa e verifique um modelo de CSP
13 passos
- 1IntroduçãoTransforme uma tarefa em escolhas
Um resolvedor precisa de uma descrição precisa do que pode ser escolhido e de quais combinações funcionam. Essa descrição é um conjunto de variáveis com domínios de valores, mais restrições que cobrem, cada uma, um escopo de variáveis, e qualquer erro nela se transmite a toda busca. Construa uma pequena programação de horários e depois compare-a com modelos de atribuição e de quebra-cabeças. O objetivo é tornar visíveis as decisões e suas dependências antes de tentar resolvê-las.
- 2ExplicaçãoNomeie cada decisão
Sejam A e B os horários das oficinas, cada um em . A deve preceder B, então escreva . As variáveis são as escolhas de horário das oficinas; os números são valores.
O escopo da restrição é A e B. Sua relação permite os pares . Um resolvedor pode usar essa lista de tuplas ou a regra de ordenação para testar uma candidata.
- 3ExemploVerifique uma atribuição candidata
Apenas com , a atribuição é parcial e consistente. Escolher a completa, mas viola a regra de ordenação. Escolher produz uma atribuição completa e consistente.
Essas são verificações separadas: toda variável precisa de um valor de seu domínio e toda restrição deve ser respeitada. Uma atribuição parcial pode passar nas verificações atuais e ainda assim não permitir nenhuma complementação.
- 4DesafioA escolha parcial pode ser completada?
Três variáveis X, Y e Z têm domínios e restrições . A X é atribuído 1. Essa atribuição parcial consistente pode ser estendida até uma solução?
---reveal---
Não. X, sozinha, não viola nenhuma restrição. Completá-la força Y e Z a serem 2, o que viola a desigualdade entre elas. Consistência atual e possibilidade de completar são exigências diferentes.
- 5ConexãoIdentifique dependências no grafo
Um grafo de restrições binárias coloca um nó em cada variável e uma aresta em cada par sujeito a uma restrição. O triângulo do desafio mostra três escolhas que interagem. Uma variável isolada não tem dependência binária de outra variável.
Esse grafo dá suporte a métodos posteriores: a redução de domínios segue as arestas, e componentes desconectados podem ser resolvidos independentemente. Uma restrição de ordem superior precisa ter todo o seu escopo representado, por exemplo, por um nó separado de restrição.
- 6ExplicaçãoRelacione a regra ao seu escopo
Uma regra unária restringe um domínio: remove o horário mais cedo de Ética. Uma regra binária conecta duas variáveis: ordena as oficinas. Uma regra de ordem superior, como , conecta três escolhas.
Uma restrição global fornece uma regra nomeada sobre um grupo de tamanho variável. Alldiff exige que todos os valores em seu escopo sejam diferentes entre si.
- 7ExemploPor que manter Alldiff?
Três variáveis de relatórios permitem, cada uma, os revisores 1 e 2. Cada par pode receber revisores diferentes, mas três relatórios não podem usar três revisores distintos de um conjunto de dois.
Alldiff revela essa falta de valores no nível do grupo. Sua forma de desigualdades entre pares tem as mesmas soluções, mas verificações separadas de pares podem não detectar a contradição. A representação afeta a inferência que um resolvedor pode realizar.
- 8DesafioExigência ou preferência?
Um plano de salas deve manter as reuniões dentro da capacidade. Uma pessoa organizadora prefere uma sala perto da entrada, mas há uma sala adequada mais distante disponível. Escolher a sala mais distante deve tornar o plano inviável?
---reveal---
Não. A capacidade é uma exigência rígida, enquanto a localização é uma preferência flexível. A sala mais distante pode ter um custo de preferência sem invalidar o plano. A viabilidade ainda exige que toda regra rígida seja respeitada.
- 9ExemploModele o dia de oficinas
Use as variáveis A–E para Fundamentos de Python, Python Avançado, Estatística, Bancos de Dados e Ética. Cada uma ocupa o horário 1, 2 ou 3.
Participantes compartilhados produzem . Fundamentos precede Avançado, então . Ética não pode ocorrer no horário 1, então . Cada regra conecta exatamente as decisões que ela rege.
- 10ExemploVerifique a programação completa
Teste . Os seis pares com participantes compartilhados têm horários diferentes. Fundamentos ocorre antes de Avançado, e Ética não ocorre de manhã. Toda oficina tem um horário permitido, então esta é uma solução.
B e D compartilham o horário 3, o que é permitido porque nenhuma restrição as conecta. Adicionar uma regra exigindo que todas as oficinas tenham horários diferentes rejeitaria essa programação legítima.
- 11ExplicaçãoEscreva corretamente a ausência de sobreposição
Se a tarefa X dura 20 minutos e a tarefa Y dura 35, a máquina que elas compartilham permite qualquer uma das ordens:
Cada alternativa compara um horário de término com o horário de início da outra tarefa. Usar “e” exigiria que as duas tarefas de duração positiva precedessem uma à outra. Use uma única regra de precedência apenas quando a ordem das tarefas estiver realmente fixada.
- 12DesafioConstrua um modelo de atribuição
Três relatórios precisam de três revisores diferentes. O revisor 2 tem um conflito de interesse com o relatório A. Quais variáveis, domínios e restrições expressam a tarefa?
---reveal---
Use uma variável por relatório com os valores de revisores 1–3. Remova 2 do domínio de A e aplique Alldiff aos três relatórios. Essas são uma restrição unária de elegibilidade e uma regra global de valores distintos; o modelo atribui exatamente um revisor a cada relatório.
- 13RecapitulaçãoVerifique o modelo antes da busca
Identifique as decisões, liste seus valores permitidos e escreva as exigências reais sobre elas. Verifique um caso válido e um inválido. Regras rígidas determinam a viabilidade; custos de preferência orientam a otimização. A escolha das variáveis deve manter essas regras fáceis de expressar.
2Acompanhe e melhore o retrocesso
14 passos
Salve esta aula para seguir cada Lição Interativa passo a passo.
- 1IntroduçãoConstrua uma solução uma escolha por vez
- 2Ideia-chaveUma próxima variável é suficiente
- 3ExemploInicie a busca de ordem fixa
- 4ExemploReconheça o beco sem saída
- 5DesafioQual chamada testa outro valor?
- 6ExplicaçãoEscolha a variável propensa a falhar
- 7ExemploDeixe os domínios orientarem a ordem das oficinas
- 8Ideia-chaveMantenha opções abertas ao escolher o valor
- 9DesafioEscolha um valor após selecionar a variável
- 10ExemploSalte uma decisão sem relação
- 11ExplicaçãoLeve as causas de volta pela busca
- 12ExemploAprenda uma combinação que falhou
- 13DesafioConcilie ordenação e aprendizado
- 14RecapitulaçãoDiferencie as melhorias da busca
3Acompanhe a redução de domínios de uma decisão até um conflito de grupo
17 passos
Salve esta aula para seguir cada Lição Interativa passo a passo.
- 1IntroduçãoAcompanhe as implicações de uma mudança de domínio
- 2ExplicaçãoReduza os domínios das vizinhas imediatas
- 3ExemploObserve a interação não detectada
- 4DesafioRestaure apenas os valores corretos
- 5ExplicaçãoO suporte é verificado da cauda para a cabeça
- 6ExemploInicie uma cadeia de consequências
- 7ExemploConclua o fechamento consistente de arco
- 8DicaColoque na fila os arcos que podem perder suporte
- 9DesafioO que significa um fechamento não vazio?
- 10ConexãoMantenha a consistência durante a busca
- 11ExplicaçãoVerifique um par em relação a uma terceira variável
- 12Ideia-chavePor que a consistência forte importa
- 13ExemploReserve um par de valores
- 14ExemploPropague limites numéricos nas duas direções
- 15DesafioDetecte a falta de valores em um grupo
- 16DesafioEscolha a inferência que explica a falha
- 17RecapitulaçãoInterprete cada garantia com precisão
4Repare um tabuleiro e escape de um platô
11 passos
Salve esta aula para seguir cada Lição Interativa passo a passo.
- 1IntroduçãoRepare uma candidata completa
- 2ExplicaçãoEscolha uma variável em conflito
- 3ExemploLocalize os ataques no tabuleiro
- 4ExemploPontue as linhas candidatas de uma rainha
- 5DesafioIgnore os conflitos constantes
- 6ExemploChegue a um estado sem movimento de melhoria
- 7ExemploUse um movimento lateral para permitir um reparo
- 8DicaRelacione o método de escape ao obstáculo
- 9DesafioEscolha um resolvedor para decidir a inviabilidade
- 10ConexãoRepare controlando as alterações
- 11RecapitulaçãoAvalie o resultado do reparo
5Resolva árvores e controle os ciclos restantes
15 passos
Salve esta aula para seguir cada Lição Interativa passo a passo.
- 1IntroduçãoUse o grafo para reduzir o trabalho
- 2ExplicaçãoResolva componentes independentes separadamente
- 3ExplicaçãoEstabeleça a ordem da árvore
- 4ExemploReduza a árvore das oficinas dos filhos para os pais
- 5ExemploAtribua os valores restantes dos pais para os filhos
- 6DesafioIdentifique um arco invertido
- 7ExplicaçãoQuebre todos os ciclos com um conjunto de corte
- 8ExemploTeste o conjunto de corte das oficinas
- 9Ideia-chaveConjuntos de corte pequenos controlam o expoente
- 10ExplicaçãoSubstitua ciclos por bolsas sobrepostas
- 11DesafioVerifique o caminho de bolsas
- 12ConexãoUse o tamanho da bolsa para determinar o custo
- 13ConexãoElimine nomes de cores intercambiáveis
- 14DesafioCombine um conjunto de corte com a garantia para árvores
- 15RecapitulaçãoVerifique a condição estrutural
Questões de Problemas de satisfação de restrições
Conjunto 1: Acompanhe a propagação e diagnostique falhas de busca10 Questões de Prática
Questão 1 de 10
Mostrar respostaOcultar resposta
Questão 2 de 10
Mostrar respostaOcultar resposta
Questão 3 de 10
Mostrar respostaOcultar resposta
Questão 4 de 10
Mostrar respostaOcultar resposta
Questão 5 de 10
Mostrar respostaOcultar resposta
Questão 6 de 10
Mostrar respostaOcultar resposta
Questão 7 de 10
Mostrar respostaOcultar resposta
Questão 8 de 10
Mostrar respostaOcultar resposta
Questão 9 de 10
Mostrar respostaOcultar resposta
Questão 10 de 10
Mostrar respostaOcultar resposta
Conjunto 2: Modele escolhas e acompanhe os algoritmos básicos10 Questões de Prática
Salve esta aula para ver todas as respostas e praticar cada conjunto.
Questão 1 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 2 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 3 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 4 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 5 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 6 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 7 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 8 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 9 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 10 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Conjunto 3: Combine decisões, inferência e reparo10 Questões de Prática
Salve esta aula para ver todas as respostas e praticar cada conjunto.
Questão 1 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 2 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 3 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 4 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 5 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 6 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 7 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 8 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 9 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 10 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Conjunto 4: Aplique os métodos a novos padrões de restrições10 Questões de Prática
Salve esta aula para ver todas as respostas e praticar cada conjunto.
Questão 1 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 2 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 3 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 4 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 5 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 6 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 7 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 8 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 9 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 10 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Travou em uma questão sua? Ajuda com Tarefas
Termos-Chave
A
AC-3
Aprendizado de restrições
Atribuição consistente
B
Busca com retrocesso
Busca completa
Busca tabu
C
Combinação proibida de atribuições
Componente independente
Comutatividade
Condicionamento por conjunto de corte
Conjunto de conflitos
Conjunto de corte de ciclos
Consistência de arco
Consistência de arco direcionada
Consistência de caminho
Consistência de limites
Consistência de nó
Consistência de ordem k
Consistência forte de ordem k
CSP com estrutura de árvore
D
Decomposição em árvore
Domínio
E
Escopo da restrição
Esvaziamento do domínio
F
Formulação de estado completo
G
Grafo de restrições
H
Heurística de conflitos mínimos
Heurística de grau
Heurística dos valores mínimos restantes (MRV)
L
Largura de árvore
M
Manutenção da consistência de arco (MAC)
Mínimo local
Modelo fatorado
Movimento lateral
P
Par nu
Passagem dos filhos para os pais na árvore
Passagem dos pais para os filhos na árvore
Platô
Ponderação de restrições
Princípio de falhar primeiro
Problema de atribuição
Problema de otimização com restrições
Problema de satisfação de restrições
Programação de tarefas em oficina
Propagação de limites
Propriedade de interseção contínua
R
Razão crítica de restrições
Recozimento simulado, ou têmpera simulada
Reinício aleatório
Relação da restrição
Reparo em tempo de execução
Restrição binária
Restrição de ordem superior
Restrição de precedência
Restrição de quebra de simetria
Restrição de valores todos diferentes (Alldiff)
Restrição disjuntiva
Restrição flexível
Restrição global
Restrição rígida
Restrição unária
Retrocesso com salto
Retrocesso com salto dirigido por conflitos
Retrocesso cronológico
Revisão de arco
S
Simetria de valores
Solução
Suporte
T
Trilha de desfazimento
V
Valor menos restritivo
Variável
Variável em conflito
Verificação antecipada
Sobre esta aula
Crie seus próprios Materiais de Estudo
Transforme suas anotações, slides e documentos em Guias de Estudo, Questões de Prática, Flashcards e mais 6 ferramentas.