Solucion Ejercicios IA

Resolver los siguientes ejercicios Construir los siguientes programas en Prolog 1. Armar una base de datos con la sigu

Views 67 Downloads 2 File size 65KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Resolver los siguientes ejercicios Construir los siguientes programas en Prolog 1.

Armar una base de datos con la siguiente información sobre los vuelos de una aerolínea, el predicado puede ser “es_vuelo”, por ejemplo: es_vuelo(buenos_aires, córdoba). Ciudad de origen

Ciudad de destino

Buenos Aires Buenos Aires Buenos Aires Córdoba Córdoba Córdoba San Juan San Juan San Juan Mendoza Santa Rosa

Córdoba Santa Rosa San Juan Santa Fe Tucumán Santa Rosa Tucumán Mendoza Neuquén Tucumán San Juan

2.

Usando la base de vuelos, expresar las siguientes preguntas como consultas Prolog:

a) b) c) d)

e)

¿Tengo algún vuelo de Córdoba a Santa Rosa? es_vuelo(cordoba,santa_rosa). true. ¿Existe un vuelo desde Santa Fe hasta Neuquén? es_vuelo(santa_fe,neuquen). false. ¿Existe un vuelo desde Tucumán hasta San Juan? es_vuelo(tucuman,san_juan). false. ¿Hacia que ciudades van los vuelos que parten de Córdoba? es_vuelo(cordoba,X). X = santa_fe ; X = tucuman ; X = santa_rosa. ¿De donde provienen los vuelos que llegan a San Juan? es_vuelo(X,san_juan). X = buenos_aires ; X = santa_rosa.

3.

Con la base de vuelos, contestar las siguientes preguntas:

a)

¿Existe algún vuelo desde Santa Rosa a Mendoza pasando por San Juan? es_vuelo(santa_rosa,san_juan),es_vuelo(san_juan,mendoza). true. b) ¿Existe algún vuelo desde Buenos Aires a San Juan pasando por alguna otra ciudad? es_vuelo(buenos_aires,X),es_vuelo(X,san_juan). X = santa_rosa ; c) ¿Por qué ciudad intermedia pasa un vuelo que parte de Buenos Aires y llega a Santa Fe? es_vuelo(buenos_aires,X),es_vuelo(X,santa_fe). X = cordoba ; d) ¿Por cuáles dos ciudades intermedias pasa un vuelo que salga de Córdoba y llega a Mendoza? es_vuelo(cordoba,X),es_vuelo(X,Y),es_vuelo(Y,mendoza). X = santa_rosa, Y = san_juan. 4.

Suponer que se tiene la siguiente base de datos con información sobre la jerarquía militar de un país hipotético: tiene_rango(bush, coronel). tiene_rango(komehini, soldado). tiene_rango(kadafi, soldado). tiene_rango(fujimori, soldado). tiene_rango(gonzalez, capitan). tiene_rango(gorbachov, general). tiene_rango(chirac, cabo). tiene_rango(hussein, sargento). tiene_rango(ford, teniente). tiene_rango(arafat, mayor). es_jefe_de(general, coronel). es_jefe_de(coronel, mayor). es_jefe_de(mayor, capitán). es_jefe_de(capitán, teniente). es_jefe_de(teniente, sargento). es_jefe_de(sargento, cabo). es_jefe_de(cabo, soldado). Traducir las siguientes consultas al español, e indicar cuáles serían las respuestas del sistema en cada caso sin usar la computadora:

a)

?-es_jefe_de(teniente, X), es_jefe_de(X, Y). ¿El teniente es jefe de… y este a su vez es jefe de…? X = sargento, Y = cabo.

b)

?-es_jefe_de(X, Y), tiene_rango(hussein, X), tiene_rango(Z,Y). Averiguar el rango de Hussein, de quien es jefe y el rango de este. X = sargento, Y = cabo, Z = chirac ;

c)

?-tiene_rango(bush,X); tiene_rango(arafat, X). ¿Cuáles son los rangos de Bush o arafat? X = coronel; X = mayor.

d)

?-tiene_rango(X,Y), es_jefe_de(mayor,Y). ¿Cuál es la persona y el rango de esta, si tiene como jefe a un mayor? False;

e)

?-es_jefe_de(X, sargento), not(tiene_rango(kadafi, X)). ¿Qué rango tiene la persona q es jefe del sargento? No debe ser el rango que tiene kadafi X = teniente. (Not es un predicado autoconstruido del lenguaje que es verdadero cuando su argumento es un predicado falso y viceversa). Escribir en Prolog las siguientes consultas:

a) b) c)

5.

¿Qué rango tiene el jefe de González? tiene_rango(gonzalez,X),es_jefe_de(Y,X),tiene_rango(Z,Y). ¿Es Chirac jefe de Hussein? tiene_rango(chirac,y),es_jefe_de(y,z),tiene_rango(hussein,z). false ¿Quién o quienes dependen directamente de Chirac? tiene_rango(chirac,X),tiene_rango(Z,Y),es_jefe_de(X,Y). X = cabo,Z = komehini,Y = soldado ; X = cabo,Z = kadafi,Y = soldado ; X = cabo,Z = fujimori,Y = soldado ; Reescribir la base de vuelos incluyendo el tiempo de viaje, de acuerdo con la siguiente tabla: Ciudad de origen

Ciudad de destino

Duración (min)

Buenos Aires Buenos Aires Buenos Aires Córdoba Córdoba Córdoba San Juan San Juan San Juan Mendoza Santa Rosa

Córdoba Santa Rosa San Juan Santa Fe Tucumán Santa Rosa Tucumán Mendoza Neuquén Tucumán San Juan

80 70 120 40 60 75 85 15 100 95 80

Usar un predicado ternario, por ejemplo: vuelo(buenos_aires, cordoba, 80).

Efectuar las siguientes consultas: a)

¿Cuánto se tarda para ir desde Córdoba hasta Tucumán? vuelo(córdoba,tucumán,X). X = 60 b) ¿Cuánto se tarda para ir desde Buenos Aires hasta Santa Fe pasando por Córdoba? vuelo(buenos_aires,córdoba,X),vuelo(córdoba,santa_fe,Y). X = 80, Y = 40. c) ¿Cuánto se tarda para ir desde Buenos Aires hasta San Juan pasando por Córdoba y Santa Rosa? vuelo(buenos_aires,córdoba,X),vuelo(córdoba,santa_rosa,Y),vuelo(santa_rosa,san_juan,Z).

X = 80, Y = 75, Z = 80. d)

e)

f)

Saliendo desde Buenos Aires, ¿a qué ciudades se puede llegar en menos de 90 minutos? vuelo(buenos_aires,X,Y),Y60. X = buenos_aires,Y = córdoba,Z = 80 ; X = buenos_aires,Y = santa_rosa,Z = 70 ; X = buenos_aires,Y = san_juan,Z = 120 ; X = córdoba,Y = santa_rosa,Z = 75 ; X = san_juan,Y = tucumán,Z = 85 ; X = san_juan,Y = neuquén,Z = 100 ; X = mendoza,Y = tucumán,Z = 95 ; X = santa_rosa,Y = san_juan,Z = 80. ¿Cuál es la diferencia de tiempo entre el vuelo directo de Buenos Aires a San Juan y el que pasa por Santa Rosa? vuelo(buenos_aires,san_juan,X),vuelo(buenos_aires,santa_rosa,Y),vuelo(santa_ros a,san_juan,Z),Q=Y+Z-X. X = 120, Y = 70, Z = 80, Q = 70+80-120

6.

Armar una base con la siguiente información alimentaria: una ración de pollo tiene 270 calorías, un flan 190 y una de buen asado 380. Hoy me propongo no almorzar mas de 580 calorías. Obtener respuestas a las siguientes preguntas usando consultas: calorias(racion_pollo,270). calorias(flan,190). calorias(asado,380). a) ¿Cuántos flanes me puedo comer? b) ¿Puedo comer el asado y el pollo? calorias(asado,X), calorias(pollo,Y),M=(X+Y),M.

c) ¿Si me como el pollo y el flan, cuántas calorías, menos que las máximas ingiero? d) ¿Cuántas calorías ingiero si me como el pollo y dos flanes?