Notes - MIECT
Inteligência Artificial
Notes - MIECT
Inteligência Artificial
  • Inteligência Artificial
  • Tópicos de Inteligência Artificial
    • Definição de “Inteligência”
    • História até à “Inteligência Artificial”
  • Agentes
    • Definição de “Agente”
    • Teste de Turing
    • A "Sala Chinesa" de Searle
    • Agentes Reactivos
    • Agentes Deliberativos
    • Arquiteturas
  • Representação do Conhecimento
    • Redes Semântica
      • GOLOG
      • UML / Diagramas de Classes
      • Indução versus Dedução
      • Em Python
    • Resolução e Refutação na Lógica de Primeira Ordem
    • Lógica Proposicional e Lógica de Primeira Ordem
      • Interpretações em Lógica Proposicional
      • Interpretações em Lógica de Primeira Ordem
      • Lógica - Regras de Substituição
      • CNF e Forma Clausal
      • Consequências Lógicas, Provas
      • Correcção, Completude
      • Metateoremas
      • Resolução não é Completa
      • Refutação por Resolução
      • Substituições, Unificação
      • Resolução com Claúsulas de Horn
    • Linguagem KIF
    • Engenharia do Conhecimento
    • Ontologias
    • Redes de Bayes
  • Técnicas de Resolução de Problemas
    • Resolução de problemas em IA
    • Formulação de problemas e pesquisa de soluções
    • Estratégias de pesquisa
      • Avaliação das estratégias de pesquisa
      • Pesquisa A*
        • Avaliação da Pesquisa em Árvore
      • IDA*
      • RBFS
      • SMA*
      • Pesquisa com propagação de restrições
      • Pesquisa por melhorias sucessivas
      • Planeamento
        • Aprendizagem
      • Árvores de decisão
      • Avaliação de algoritmos de aprendizagem supervisionada
  • Bayesian Networks
    • Ways to deal with Uncertainty
    • Discrete Random Variables
    • Probabilities
    • Conditional Probability
    • More General Forms of Bayes Rule
    • The Joint Distribution
    • Independence
    • Computing a Joint Entry
    • Exercises
Powered by GitBook
On this page
  • Pesquisa para problemas de atribuição
  • Pesquisa com propagação de restrições em problemas de atribuição
  • Algoritmo
  • Propagação de restrições
  • Tipos de restrições
  • Exemplo
  • Quebra-cabeças critpoaritmético
  • Conversão para restrições binárias
  1. Técnicas de Resolução de Problemas
  2. Estratégias de pesquisa

Pesquisa com propagação de restrições

Pesquisa para problemas de atribuição

Nos problemas de atribuição pretende-se atribuir valores a um conjunto de variáveis, respeitando um conjunto de restrições.

Exemplos:

  • Problema das 8 rainhas - distribuir 8 rainhas num tabuleiro de xadrez de forma a que haja uma e uma só rainha em cada linha e em cada coluna e não haja mais do que uma rainha em cada diagonal.

  • Invenção de palavras cruzadas – dada uma matriz de palavras cruzadas vazia, preencher os espaços brancos com letras, de forma a que a matriz possa ser usada como passatempo de palavras cruzadas.

Técnicas de resolução de problemas de atribuição:

  • Método construtivo – usando técnicas de pesquisa em árvore.

    • Em cada passo da pesquisa atribui-se um valor a uma variável.

  • Método construtivo combinado com propagação de restrições.

  • Resolução por melhorias sucessivas.

Pesquisa com propagação de restrições em problemas de atribuição

Construir um grafo de restrições:

  • Em cada nó do grafo está uma variável.

  • Um arco dirigido liga um nó i a um nó j se o valor da variável de j impõe restrições ao valor da variável de i.

  • Um arco (i,j) é consistente se, para cada valor da variável i, existe um valor da variável j que não viola as restrições.

Tipicamente, usa-se uma estratégia de pesquisa em profundidade; em cada iteração da pesquisa, faz-se o seguinte:

  1. Seleciona-se arbitrariamente um dos valores possíveis para uma das variáveis (descartam-se os restantes).

  2. Restringem-se os conjuntos de valores possíveis das restantes variáveis por forma a que os arcos do grafo de restrições continuem consistentes.

Nota: Neste caso, cada estado da pesquisa não representa uma situação ou configuração possível do mundo, como acontece no problema dos blocos; o estado é constituído pelos conjuntos de valores possíveis para as variáveis.

Algoritmo

  1. Inicialização: o nó inicial da árvore de pesquisa é composto por todas as variáveis e todos os valores possíveis para cada uma delas.

  2. Se pelo menos uma variável tem um conjunto de valores vazio, falha e retrocede; se não puder retroceder, a pesquisa falha.

  3. Se todas as variáveis têm exactamente um valor possível, tem-se uma solução; retornar com sucesso.

  4. Expansão: Escolher arbitrariamente uma variável Vk e, de entre os valores possíveis, um dado valor Xkl – descartar os restantes valores possíveis dessa variável.

  5. Propagação de restrições: para cada arco (i,j) no grafo de restrições, remover os valores na variável Vi por forma a que o arco fique consistente.

  6. Caso tenha sido preciso remover valores na origem de algum arco, voltar a repetir o passo 5.

  7. Voltar ao passo 2.

Propagação de restrições

Algoritmo

Os passos 5 e 6 do algoritmo anterior executam a propagação de restrições.

Esta parte do processo é suportada por uma fila de arestas do grafo de restrições.

  • Inicialmente, a fila contém as arestas que apontam para a variável cujo valor foi fixado.

Tipos de restrições

Restrições unárias – envolvem apenas uma variável.

  • Podem ser satisfeitas através de pré-processamento do domínio de valores da variável – aproveitam-se apenas os valores que satisfazem a restrição.

Restrições binárias – envolvem duas variáveis.

  • Uma restrição binária é directamente representada por uma aresta no grafo de restrições.

Restrições de ordem superior – envolvem três ou mais variáveis.

  • Através da introdução de variáveis auxiliares, uma restrição de ordem superior pode ser transformada num conjunto de restrições binárias e/ou unárias.

Exemplo

Quebra-cabeças critpoaritmético

Restrições:

Conversão para restrições binárias

No exemplo anterior, a restrição ternária 2∙O = R + 10∙X1 pode ser transformada no seguinte conjunto de restrições:

  • Restrições binárias:

    • O = primeiro(Aux)

    • R = segundo(Aux)

    • X1 = terceiro(Aux)

  • Restrição unária:

    • 2∙ primeiro(Aux) = segundo(Aux) + 10∙ terceiro(Aux)

Aux é uma variável auxiliar cujo domínio é o produto cartesiano dos domínios de O, R e X1.

  • A restrição unária sobre Aux pode ser satisfeita através de pré- processamento.

PreviousSMA*NextPesquisa por melhorias sucessivas

Last updated 2 years ago

Variáveis principais:

Variáveis internas: X1 (transporte das unidades para as dezenas) e X2 (transporte das dezenas para as centenas)

Ou seja: