![Page 1: Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de](https://reader036.vdocuments.com.br/reader036/viewer/2022062512/552fc10d497959413d8c4415/html5/thumbnails/1.jpg)
Sistema ProgolSistema Progol
TÉCNICAS E HEURÍSTICAS
![Page 2: Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de](https://reader036.vdocuments.com.br/reader036/viewer/2022062512/552fc10d497959413d8c4415/html5/thumbnails/2.jpg)
Progol – TópicosProgol – TópicosDefinição do sistema;Declarações de Modo;Construção da cláusula mais específica;Algoritmo de Covering do Progol;Algoritmo A* de construção de cláusula;Exemplo de construção de cláusula;
![Page 3: Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de](https://reader036.vdocuments.com.br/reader036/viewer/2022062512/552fc10d497959413d8c4415/html5/thumbnails/3.jpg)
Definição do SistemaDefinição do Sistema
O Progol é um interpretador Prolog com provador limitado por profundidade. (depth bound);
O Progol possui um mecanismo de inversão da conseqüência lógica, que o torna capaz de aprender e/ou refinar teorias de forma indutiva (através de exemplos);
![Page 4: Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de](https://reader036.vdocuments.com.br/reader036/viewer/2022062512/552fc10d497959413d8c4415/html5/thumbnails/4.jpg)
Progol – TópicosProgol – TópicosDefinição do sistema;Declarações de Modo;Construção da cláusula mais específica;Algoritmo de Covering do Progol;Algoritmo A* de construção de cláusula;Exemplo de construção de cláusula;
![Page 5: Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de](https://reader036.vdocuments.com.br/reader036/viewer/2022062512/552fc10d497959413d8c4415/html5/thumbnails/5.jpg)
Declarações de ModoDeclarações de Modo São uma forma de definir (restringir) as relações
entre diversos literais nas cláusulas geradas, como :– Os literais que podem aparecer no corpo e na cabeça;– O tipo de cada termo em um predicado;– A definição de termos de entrada e saída em um
predicado;– O número máximo de literais com os quais um
predicado pode se relacionar;
![Page 6: Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de](https://reader036.vdocuments.com.br/reader036/viewer/2022062512/552fc10d497959413d8c4415/html5/thumbnails/6.jpg)
Declarações de ModoDeclarações de ModoRestringindo literais do corpo e cabeçaRestringindo literais do corpo e cabeça
Modeb– As declarações modeb definem quais os literais
que podem aparecer no corpo de uma regra;Ex.: modeb(*, long(+car))
Modeh– As declarações modeh definem quais os literais
que podem aparecer na cabeça de uma regra;Ex.: modeh(*, eastbound(+train))
![Page 7: Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de](https://reader036.vdocuments.com.br/reader036/viewer/2022062512/552fc10d497959413d8c4415/html5/thumbnails/7.jpg)
Declarações de ModoDeclarações de ModoRestringindo utilização de variáveisRestringindo utilização de variáveis
Definição de Tipos :– As declarações modeb e modeh necessitam da
definição de um tipo para cada termo do literal sendo definido.
modeh(*,eastbound(+train)), modeb(*,long(+car))
Não é permitido : eastbound(A)<- long(A)
![Page 8: Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de](https://reader036.vdocuments.com.br/reader036/viewer/2022062512/552fc10d497959413d8c4415/html5/thumbnails/8.jpg)
Declarações de ModoDeclarações de ModoRestringindo utilização de variáveisRestringindo utilização de variáveis
Definição de Tipos :– Para cada tipo definido, nós devemos definir
também o seu domínio.
Ex. modeb(shape(+car, #shape))Domínio car :
car(car_11), car(car_12), car(car_22).
Domínio shape : shape(elipse), shape(hexagon), shape(u_shaped).
![Page 9: Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de](https://reader036.vdocuments.com.br/reader036/viewer/2022062512/552fc10d497959413d8c4415/html5/thumbnails/9.jpg)
Declarações de ModoDeclarações de ModoRestringindo utilização de variáveisRestringindo utilização de variáveis
Termos de Entrada e Saída :– Definição do predicado como uma função com
parâmetros de entrada (termos de entrada) e parâmetros de saída (termos de saída);
Existem três tipos de marcadores: +tipo(entrada), –tipo (saída) e #tipo (constante);
modeb(*, open(+car)), modeb(*, has_car(+train, -car)) modeb(*, shape(+car, #shape))
![Page 10: Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de](https://reader036.vdocuments.com.br/reader036/viewer/2022062512/552fc10d497959413d8c4415/html5/thumbnails/10.jpg)
Declarações de ModoDeclarações de ModoRestringindo utilização de variáveisRestringindo utilização de variáveis
Cadeia de variáveis :– Uma cláusula C é um encadeamento de variáveis (variable-
chaining) se e somente se ela contém uma cadeia de variáveis v1, ..., vn, tal que v1, vn são, respectivamente, termos de entrada e saída na cabeça de C e cada par vi,vi+1, 1 i < n, são respectivamente termos de entrada e saída em um literal do corpo de C.
Uma cláusula C é E/S completa (I/O complete) se e somente se para cada termo de saída u da cabeça de C, existe uma cadeia de variáveis v1,..,vn, onde vn = u.
![Page 11: Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de](https://reader036.vdocuments.com.br/reader036/viewer/2022062512/552fc10d497959413d8c4415/html5/thumbnails/11.jpg)
Declarações de ModoDeclarações de ModoRestringindo utilização de variáveisRestringindo utilização de variáveis
.
Considere o seguinte exemplo:modeh(*, mult(+real, +real,-real)), modeb(*, dec(+real,-real))modeb(*, plus(+real, +real,-real))
C é um encadeamento de variáveis pois contém a cadeia de variáveis E,H,I,G.
C é E/S completa pois existe uma cadeia de variáveis para G em C.
C = mult(E,F,G) dec(E, H), mult(F, H, I), plus(F,I,G).C = mult(E,F,G) dec(E, H), mult(F, H, I), plus(F,I,G).C = mult(E,F,G) dec(E, H), mult(F, H, I), plus(F,I,G).C = mult(E,F,G) dec(E, H), mult(F, H, I), plus(F,I,G).
![Page 12: Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de](https://reader036.vdocuments.com.br/reader036/viewer/2022062512/552fc10d497959413d8c4415/html5/thumbnails/12.jpg)
Declarações de ModoDeclarações de ModoRestringindo utilização de variáveisRestringindo utilização de variáveis
Restrição do Progol : – Uma variável só pode ser utilizada como termo de
entrada em um literal se ela for uma variável global (da cabeça, quantificada universalmente) ou uma variável de trabalho retornada anteriormente na regra como resposta (quantificada existencialmente).
eastbound(A)<-has_car(A,B), not open(B), not long(B)
eastbound(A)<-not open(B), has_car(A,B), not long(B)
![Page 13: Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de](https://reader036.vdocuments.com.br/reader036/viewer/2022062512/552fc10d497959413d8c4415/html5/thumbnails/13.jpg)
Declarações de ModoDeclarações de ModoRestringindo utilização de variáveisRestringindo utilização de variáveis
Literais determinados :– São literais que “fornecem somente uma resposta”
para uma determinada configuração de parâmetros de entrada.
dec(5,4), inc(5, 6), infront_of(car_11, car_12).
has_car(train1, car_11), has_car(train1, car_12)
![Page 14: Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de](https://reader036.vdocuments.com.br/reader036/viewer/2022062512/552fc10d497959413d8c4415/html5/thumbnails/14.jpg)
Declarações de ModoDeclarações de ModoRestringindo utilização de variáveisRestringindo utilização de variáveis
Profundidade de uma variável :– Seja A L1,..Ln uma cláusula ordenada– A profundidade de uma variável v é definida como :
prof(v) = 0, se v ocorre em A prof(v)=prof(x)+1, onde v, x ocorre em Li e x é a variável
de maior profundidade em Li. Se nenhuma das outras variáveis de Li tem a profundidade já definida então prof(v) =
![Page 15: Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de](https://reader036.vdocuments.com.br/reader036/viewer/2022062512/552fc10d497959413d8c4415/html5/thumbnails/15.jpg)
Declarações de ModoDeclarações de ModoRestringindo utilização de variáveisRestringindo utilização de variáveis
No Progol, nós podemos afirmar que a profundidade exprime o menor caminho entre uma variável de trabalho (quantificada existencialmente) e uma variável global (quantificada universalmente, da cabeça).
eastbound(A)<-has_car(A,B), has_car(A,C), long(B), short(C), infront_of(B,C).
Prof(A) = 0 Prof(B) = 1 Prof(C) = 1
![Page 16: Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de](https://reader036.vdocuments.com.br/reader036/viewer/2022062512/552fc10d497959413d8c4415/html5/thumbnails/16.jpg)
Declarações de ModoDeclarações de ModoRestringindo o número o de relações entre Restringindo o número o de relações entre
predicadospredicados
Parâmetro de Recall :– A declaração modeb (e/ou modeh) para um literal p
permitem definir o número máximo de possíveis instanciações para os termos de saída de p.
modeb(2, squareroot(+real, -real)),
modeb(1, dec(+int,-int))
modeb(*, has_car(+train,-car))
![Page 17: Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de](https://reader036.vdocuments.com.br/reader036/viewer/2022062512/552fc10d497959413d8c4415/html5/thumbnails/17.jpg)
Progol – TópicosProgol – TópicosDefinição do sistema;Declarações de Modo;Construção da cláusula mais específica;Algoritmo de Covering do Progol;Algoritmo A* de construção de cláusula;Exemplo de construção de cláusula;
![Page 18: Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de](https://reader036.vdocuments.com.br/reader036/viewer/2022062512/552fc10d497959413d8c4415/html5/thumbnails/18.jpg)
Algoritmo da Bottom ClauseAlgoritmo da Bottom Clause•Entrada : h, i naturais, B conhecimento preliminar, e uma instância e M um conjunto de declarações de modo.
Seja m uma declaração de modo. a(m) representa o átomo formado pela troca de cada marcador por uma variável distinta. Ex.: a(modeb(*, open(+car))) = open(B)
Seja hash : Termos + uma função que mapeia termos em números naturais.
•Seja k = 0, i = <>, TermosInt =
![Page 19: Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de](https://reader036.vdocuments.com.br/reader036/viewer/2022062512/552fc10d497959413d8c4415/html5/thumbnails/19.jpg)
Algoritmo da Bottom ClauseAlgoritmo da Bottom Clause1. Se não existe nenhum modeh em M tal que a(m) e
então retorne .
2. Caso contrário, seja m a primeira declaração de modo tal que a(m) e com substituição h. Seja ah uma cópia
de a(m). Para cada v/t em h, se v corresponde a um
marcador #tipo em m troque v em ah por t, caso
contrário troque v por vj onde j = hash(t). Adicione ah em
i. Se v for um termo de entrada (+tipo), adicione t a
TermosInt.
3. Se k = i então retorne i caso contrário k = k + 1.
![Page 20: Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de](https://reader036.vdocuments.com.br/reader036/viewer/2022062512/552fc10d497959413d8c4415/html5/thumbnails/20.jpg)
Algoritmo da Bottom ClauseAlgoritmo da Bottom Clause4.Para cada modeb mb seja {v1,..,vn} variáveis de entrada
em a(mb). Seja T(mb) = T1 x .. x Tn o conjunto de tuplas
de termos tal que cada Tj corresponde ao conjunto de
todos os termos do mesmo tipo de vj em TermosInt. Para
cada <t1,..,tn> seja ab uma cópia de a(mb) e =
{v1/t1,...,vn/tn}. Se Prolog com limite de profundidade h for
bem-sucedido na consulta ab?, retornando o conjunto de
respostas b então para cada b em b e v/t em b se v
for constante (#tipo) então troque v em ab por t caso
contrário troque v em ab por vj onde j = hash(t) e adicione
ab em i. Se v for um termo de saída(-tipo), adicione t a
TermosInt.
5.Vá para o passo 3.
.
![Page 21: Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de](https://reader036.vdocuments.com.br/reader036/viewer/2022062512/552fc10d497959413d8c4415/html5/thumbnails/21.jpg)
Algoritmo da Bottom ClauseAlgoritmo da Bottom Clause
eastbound(east2). (i = 2, h = 100)B = {has_car(east2,car_21), has_car(east2, car_22), has_car(east2, car_23), open(car_21), open(car_22), shape(car_21, u_shaped), shape(car_22, u_shaped), shape(car_23, rectangle)}
i = {eastbound(A) has_car(A,B), has_car(A,C), has_car(A,D),
TermosInt = {east2, car_21, car_22, car_23}
i = {eastbound(A) has_car(A,B), has_car(A,C), has_car(A,D),
open(B), open(C),
TermosInt = {east2, car_21, car_22, car_23}
i = {eastbound(A)
TermosInt = {east2.
i = {eastbound(A) has_car(A,B), has_car(A,C), has_car(A,D),
open(B), open(C), not open(D), not long(B), not long(C), not long(D),
TermosInt = {east2, car_21, car_22, car_23}
i = {eastbound(A) has_car(A,B), has_car(A,C), has_car(A,D),
open(B), open(C), not open(D), not long(B), not long(C), not long(D), shape(B, u_shaped), shape(C, u_shaped), shape(D, rectangle) }
TermosInt = {east2, car_21, car_22, car_23}
i = {eastbound(A) has_car(A,B), has_car(A,C), has_car(A,D),
open(B), open(C), not open(D),
TermosInt = {east2, car_21, car_22, car_23}
![Page 22: Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de](https://reader036.vdocuments.com.br/reader036/viewer/2022062512/552fc10d497959413d8c4415/html5/thumbnails/22.jpg)
Progol – TópicosProgol – TópicosDefinição do sistema;Declarações de Modo;Construção da cláusula mais específica;Algoritmo de Covering do Progol;Algoritmo A* de construção de cláusula;Exemplo de construção de cláusula;
![Page 23: Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de](https://reader036.vdocuments.com.br/reader036/viewer/2022062512/552fc10d497959413d8c4415/html5/thumbnails/23.jpg)
Algoritmo de Covering do Algoritmo de Covering do ProgolProgol
1.Se E = então retorne B.2.Seja e o primeiro exemplo de E.3.Construa a cláusula i de e.
4.Construa a cláusula cl para i.
5.Seja B = B cl6.Seja E’= {e | e E , B╞ e}7.E = E – E’ e retorna para 1.
![Page 24: Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de](https://reader036.vdocuments.com.br/reader036/viewer/2022062512/552fc10d497959413d8c4415/html5/thumbnails/24.jpg)
Progol – TópicosProgol – TópicosDefinição do sistema;Declarações de Modo;Construção da cláusula mais específica;Algoritmo de Covering do Progol;Algoritmo A* de construção de cláusula;Exemplo de construção de cláusula;
![Page 25: Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de](https://reader036.vdocuments.com.br/reader036/viewer/2022062512/552fc10d497959413d8c4415/html5/thumbnails/25.jpg)
Algoritmo A* de construção de Algoritmo A* de construção de cláusulacláusula
O algoritmo de construção de cláusula do Progol para um exemplo e busca encontrar a melhor cláusula cl tal que � cl i,
O algoritmo inicia com uma cláusula vazia e através de um operador de refinamento (especialização) e uma heurística, pesquisa no espaço de cláusulas tais que � cl i.
![Page 26: Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de](https://reader036.vdocuments.com.br/reader036/viewer/2022062512/552fc10d497959413d8c4415/html5/thumbnails/26.jpg)
Algoritmo A* de construção de Algoritmo A* de construção de cláusulacláusula
Definição da -subsumption :• Seja C e D duas cláusulas. C -subsume D
ou C D se e somente se CD.
C = eastbound(A)has_car(A,B), long(B), has_car(A,C), open(C).
D = eastbound(A)has_car(A,B), long(B), open(B), shape(B, triangle).
= {A/A, B/B, C/B}= {A/A, B/B, C/B}
C = eastbound(A)has_car(A,B), long(B), open(B)
= {A/A, B/B, C/B}
C = eastbound(A)has_car(A,B), long(B), open(B) D.
![Page 27: Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de](https://reader036.vdocuments.com.br/reader036/viewer/2022062512/552fc10d497959413d8c4415/html5/thumbnails/27.jpg)
Algoritmo A* de construção de Algoritmo A* de construção de cláusulacláusula
Um operador de refinamento retorna para uma determinada cláusula C, um conjunto de especializações de C.
Ex.:C = eastbound(A) (C) = {(eastbound(A) has_car(A,B)),
(eastbound(A) has_car(A,B), not open(B)), ...}
![Page 28: Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de](https://reader036.vdocuments.com.br/reader036/viewer/2022062512/552fc10d497959413d8c4415/html5/thumbnails/28.jpg)
Algoritmo A* de construção de Algoritmo A* de construção de cláusulacláusula
O operador de refinamento (C) é construído para manter � cl i :
– Ele trabalha com estados do tipo <C,,k>, onde C é uma cláusula, um conjunto de substituições tal que Ci e k (1 k n,
onde n = |i|) um índice indicando que os
literais l1,..,lk foram considerados para estar em C.
![Page 29: Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de](https://reader036.vdocuments.com.br/reader036/viewer/2022062512/552fc10d497959413d8c4415/html5/thumbnails/29.jpg)
Algoritmo A* de construção de Algoritmo A* de construção de cláusulacláusula
Seja C uma cláusula e uma substituição tal que C i.
<C´, ´, k´> está em (<C, , k>) se e somente se
C´ = C {l}, k´ = k, <l,´> (, k) e C´Li(M), ou
C´ = C, k´ = k+1, ´ = e k < n.
![Page 30: Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de](https://reader036.vdocuments.com.br/reader036/viewer/2022062512/552fc10d497959413d8c4415/html5/thumbnails/30.jpg)
Algoritmo A* de construção de Algoritmo A* de construção de cláusulacláusula
Uma variável v é dita splittable em um literal p se ela corresponde a um marcador +tipo ou –tipo em uma declaração modeh de p ou se corresponde a um marcador –tipo em uma definição modeb de p.
Ex.:eastbound(A) has_car(A,B), not open(B), not
long(B), has_car(A,C), long(C), open(C).
![Page 31: Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de](https://reader036.vdocuments.com.br/reader036/viewer/2022062512/552fc10d497959413d8c4415/html5/thumbnails/31.jpg)
Algoritmo A* de construção de Algoritmo A* de construção de cláusulacláusula
Sejam l = p(v1,...,vm), lk = p(u1,...,um), o k-ésimo
literal de i duas cláusulas, e ’, ’, dois
conjuntos de substituições
< l, ’> (,k) se e somente se • l’=lk,
’- = {(vj / uj) | uj é splittable em lk e vj não pertence a
dom()},
• Para cada variável uj splittable em lk, vj / uj ’
![Page 32: Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de](https://reader036.vdocuments.com.br/reader036/viewer/2022062512/552fc10d497959413d8c4415/html5/thumbnails/32.jpg)
Algoritmo A* de construção de Algoritmo A* de construção de cláusulacláusula
1. Seja Abertos = {<,,1>} e Fechados = 2. Seja s = melhor(Abertos) e Abertos = Abertos-{s}3. Seja Fechados = Fechados {s}.4. Se poda(s) vá até 6.5. Seja Abertos = (Abertos (s)) - Fechados.6. Se terminado(Fechados, Abertos) então retorne melhor(Fechado).7. Se Abertos = então imprima ´sem compressão´ e retorne <e, , 1>8. Vá até 2.
![Page 33: Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de](https://reader036.vdocuments.com.br/reader036/viewer/2022062512/552fc10d497959413d8c4415/html5/thumbnails/33.jpg)
Algoritmo A* de construção de Algoritmo A* de construção de cláusulacláusula
poda(s) =
Verdadeiro se ns = 0 e fs > 0
Falso caso contrário
terminado(S,S´) =
Verdadeiro se s = melhor(S), ns = 0,
fs > 0 e para cada s´ S´ fs fs´
Falso caso contrário
.
![Page 34: Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de](https://reader036.vdocuments.com.br/reader036/viewer/2022062512/552fc10d497959413d8c4415/html5/thumbnails/34.jpg)
Algoritmo A* de construção de Algoritmo A* de construção de cláusulacláusula
ps = |{e : e E | B C e╞h �}|(# ex. corretos)
ns = |{e : e E | B C e╞h �}|(# ex. incorretos)
cs = |C|-1 (# tamanho da cláusula-1)
Vs = {v : u / v e u está no corpo de C}
hs = min vVsd´(v) (# de átomos para completar a cláusula)
fs = ps – (ns + cs + hs) (medida de performance da cláusula)
melhor(S) é o estado s S que tem o maior valor de f e cs c. .
![Page 35: Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de](https://reader036.vdocuments.com.br/reader036/viewer/2022062512/552fc10d497959413d8c4415/html5/thumbnails/35.jpg)
Algoritmo A* de construção de Algoritmo A* de construção de cláusulacláusula
0 se não existe variável –tipo na cabeça de i.
0 se v é uma variável –tipo na cabeça de i.
se v não está em i.
(minuUvd´(u)+1) caso contrário.
.
d´(v)=
onde Uv são variáveis –tipo nos literais do corpo de C
onde v é um termo de entrada.
![Page 36: Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de](https://reader036.vdocuments.com.br/reader036/viewer/2022062512/552fc10d497959413d8c4415/html5/thumbnails/36.jpg)
Algoritmo A* de construção de Algoritmo A* de construção de cláusulacláusula
.
Considere o seguinte exemplo:modeh(*, mult(+real, +real,-real)), modeb(*, dec(+real,-real))modeb(*, plus(+real, +real,-real))
i = mult(A,B,C) dec(A, D), dec(B, E), mult(B, D, F), mult(A, E, G), plus(A, G, C), plus(B, F, C).
C = mult(A,B,C) dec(A, D), mult(B, D, F).d’(A)=3, d’(B)=2, d’(D) = 2, d’(F) = 1 e d’(C) = 0 (h = 1)
C = mult(A,B,C) dec(A, D), d’(A)=3, d’(B)=3, d’(D) = 2 e d’(C) = 0 (h = 2)
![Page 37: Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de](https://reader036.vdocuments.com.br/reader036/viewer/2022062512/552fc10d497959413d8c4415/html5/thumbnails/37.jpg)
Algoritmo A* de construção de Algoritmo A* de construção de cláusulacláusula
.
• Este algoritmo é garantido de terminar e retorna a cláusula, se existir, que tem o melhor poder explanatório com o menor tamanho possível. No pior caso, o algoritmo irá considerar todas as cláusulas da ordenação subsumption.
• Refinamentos de estados s são desconsiderados se fs > 0 e
ns = 0, porque os refinamentos aumentam cs e tendem a
diminuir ps, piorando o valor de fs. O algoritmo termina
quando existe um estado já fechado com maior fs já
encontrado até então e que não pode ser melhorado por refinamentos. Considera-se que nenhum outro estado s´ ainda aberto com fs fs´ pode ter refinamento melhor.
![Page 38: Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de](https://reader036.vdocuments.com.br/reader036/viewer/2022062512/552fc10d497959413d8c4415/html5/thumbnails/38.jpg)
Progol – TópicosProgol – TópicosDefinição do sistema;Declarações de Modo;Construção da cláusula mais específica;Algoritmo de Covering do Progol;Algoritmo A* de construção de cláusula;Exemplo de construção de cláusula;