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

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

1 Exemplo: companhia aérea Suponhamos que a companhia aérea VoAlto pretende construir um programa para gerir ligações aéreas entre vários destinos. A eficiência.

Apresentações semelhantes


Apresentação em tema: "1 Exemplo: companhia aérea Suponhamos que a companhia aérea VoAlto pretende construir um programa para gerir ligações aéreas entre vários destinos. A eficiência."— Transcrição da apresentação:

1 1 Exemplo: companhia aérea Suponhamos que a companhia aérea VoAlto pretende construir um programa para gerir ligações aéreas entre vários destinos. A eficiência deste programa passa por responder rapidamente a perguntas rotineiras tais como: existe uma ligação directa entre o destino X e Y?, é possível voar entre o destino X e Y?, quais são os destinos que é possível alcançar a partir de um destino X?, etc. Para simplificar, vamos assumir somente que a VoAlto assegura as ligações (ida e volta) entre Lisboa, Boston, Nova York, São Francisco e Los Angeles, do seguinte modo: Lisboa Boston Lisboa Nova York Boston São FranciscoSão Francisco Los Angeles

2 2 Exemplo: companhia aérea Implementação em Prolog directo(lisboa,boston). directo(lisboa,nova_york). A ligação entre Lisboa e Nova York é directa. directo(boston,sao_francisco). directo(são_francisco,los_angeles). ligacao(X,Y) :- directo(X,Y). Existe uma ligação entre X e Y se a ligação entre X e Y é directa. ligacao(X,Y) :- directo(X,Z),ligacao(Z,Y). Existe uma ligação entre X e Y se, existe um destino Z, tal que a ligação entre X e Z é directa e existe uma ligação entre Z e Y.

3 3 Exemplo: companhia aérea Perguntas/Respostas Existe uma ligação directa entre Lisboa e Boston? ?- ligacao(lisboa,nova_york). Yes Para onde é possível voar a partir de Boston? ?- ligacao(boston,X). X = são_francisco; X = los_angeles; no É possível voar a partir de Los Angeles? ?- ligacao(los_angeles,X). no

4 4 Exemplo: companhia aérea Reutilização Suponhamos que a VoAlto pretende assegurar ligações bidireccionais (i.e. se existe uma ligação entre X e Y então, também, existe uma ligação entre Y e X) e iniciar uma ligação directa entre Boston e Chicago e uma ligação entre Nova York e Los Angeles com escala em Chicago e São Francisco. directo(boston,chicago). directo(nova_york,chicago). directo(chicago,são_francisco). directo(X,Y) :- directo(Y,X), X \== Y. A ligação entre X e Y é directa se a ligação entre Y e X é directa. É possível voar a partir de Los Angeles? ?- ligacao(los_angeles,X). X = são_francisco; X = chicago; X = nova_york; no


Carregar ppt "1 Exemplo: companhia aérea Suponhamos que a companhia aérea VoAlto pretende construir um programa para gerir ligações aéreas entre vários destinos. A eficiência."

Apresentações semelhantes


Anúncios Google