SISTEMAS EXPERTOS TALLER 01.docx

5
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% %% UNIMINUTO VIRTUAL Y DISTANCIA %% %% %% %% SISTEMAS EXPERTOS %% %% %% %% 145313 - Jose Antonio Merino - 2013-Feb-09 %% %% %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /* a */ /* Qué personas son Parientes de otras */ /*------------------------------------------------------------------*/ hombre('abuelo_01'). hombre('abuelo_02'). hombre('tio_01'). hombre('tio_02'). hombre('papa_01'). hombre('hijo_01_02'). mujer('abuela_01'). mujer('abuela_02'). mujer('tia_01'). mujer('tia_02'). mujer('mama_02'). mujer('hija_01_02'). es_progenitor('abuela_01','tio_01'). es_progenitor('abuela_01','tia_01'). es_progenitor('abuela_01','papa_01'). es_progenitor('abuelo_01','tio_01'). es_progenitor('abuelo_01','tia_01'). es_progenitor('abuelo_01','papa_01'). es_progenitor('abuela_02','tio_02'). es_progenitor('abuela_02','tia_02'). es_progenitor('abuela_02','mama_02'). es_progenitor('abuelo_02','tio_02'). es_progenitor('abuelo_02','tia_02'). es_progenitor('abuelo_02','mama_02').

Transcript of SISTEMAS EXPERTOS TALLER 01.docx

Page 1: SISTEMAS EXPERTOS TALLER 01.docx

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%% UNIMINUTO VIRTUAL Y DISTANCIA %%%% %%%% SISTEMAS EXPERTOS %%%% %%%% 145313 - Jose Antonio Merino - 2013-Feb-09 %%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

/* a *//* Qué personas son Parientes de otras *//*------------------------------------------------------------------*/hombre('abuelo_01').hombre('abuelo_02').hombre('tio_01').hombre('tio_02').hombre('papa_01').hombre('hijo_01_02').

mujer('abuela_01').mujer('abuela_02').mujer('tia_01').mujer('tia_02').mujer('mama_02').mujer('hija_01_02').

es_progenitor('abuela_01','tio_01').es_progenitor('abuela_01','tia_01').es_progenitor('abuela_01','papa_01').

es_progenitor('abuelo_01','tio_01').es_progenitor('abuelo_01','tia_01').es_progenitor('abuelo_01','papa_01').

es_progenitor('abuela_02','tio_02').es_progenitor('abuela_02','tia_02').es_progenitor('abuela_02','mama_02').

es_progenitor('abuelo_02','tio_02').es_progenitor('abuelo_02','tia_02').es_progenitor('abuelo_02','mama_02').

es_progenitor('papa_01','hijo_01_02').es_progenitor('papa_01','hija_01_02').

es_progenitor('mama_02','hija_01_02').es_progenitor('mama_02','hijo_01_02').

Page 2: SISTEMAS EXPERTOS TALLER 01.docx

son_hermanos('tio_01','tia_01').son_hermanos('tia_01','tio_01').son_hermanos('tio_01','papa_01').son_hermanos('papa_01','tio_01').son_hermanos('papa_01','tia_01').son_hermanos('tia_01','papa_01').

son_hermanos('tio_02','tia_02').son_hermanos('tia_02','tio_02').son_hermanos('tio_02','mama_02').son_hermanos('mama_02','tio_02').son_hermanos('mama_02','tia_02').son_hermanos('tia_02','mama_02').

son_hermanos('hijo_01_02','hija_01_02').son_hermanos('hija_01_02','hijo_01_02').

/* Consultas de parentesco */

es_hermano(H,Z):-hombre(H),son_hermanos(H,Z).

es_hermana(M,Z):-mujer(M),son_hermanos(M,Z).

es_padre(X,Y):-es_progenitor(X,Y),hombre(X).

es_madre(X,Y):-es_progenitor(X,Y),mujer(X).

es_tio(X,Y):-es_progenitor(Z,Y),es_hermano(X,Z).

es_tia(X,Y):-es_hermana(X,Z),es_progenitor(Z,Y).

es_abuelo(X,Y):-es_padre(X,Z),es_progenitor(Z,Y).

es_abuela(X,Y):-es_madre(X,Z),es_progenitor(Z,Y).

es_nieto(X,Y):-es_abuelo(Y,X),hombre(X);es_abuela(Y,X),hombre(X).

es_nieta(X,Y):-mujer(X),(es_abuelo(Y,X);es_abuela(Y,X)).

/* es_nieta(X,Y):-es_abuelo(Y,X),mujer(X);es_abuela(Y,X),mujer(X). *//*------------------------------------------------------------------*//*------------------------------------------------------------------*//*------------------------------------------------------------------*/

Page 3: SISTEMAS EXPERTOS TALLER 01.docx

/* b *//*------------------------------------------------------------------*//* Regresa el elemento que se encuentra en la posicion N de la lista *//* Ejemplo de Consulta */%% elemento_en_N([],N,?).%% elemento_en_N([6,7,8,9,3],3,X).% X = 8.%% elemento_en_N([6,7,8,9,3],5,X).% X = 3.

elemento_en_N([],N,[]):-!.elemento_en_N([X|N],1,X):-!.elemento_en_N([X|R],N,S):-M is N - 1,elemento_en_N(R,M,S)./*------------------------------------------------------------------*//*------------------------------------------------------------------*/

/* c *//*------------------------------------------------------------------*//* Elimina el elemento que se encuentra en la posicion N de la lista*//* Ejemplo de Consulta */%% elimina_en_N([],N,?).%% elimina_en_N([6,7,8,9,3],3,X).% X = [6,7,9,3].%% elimina_en_N([6,7,8,9,3],5,X).% X = [6,7,8,9].

elimina_en_N([X|Y],1,Y):-!.elimina_en_N([X|Y],N,[X|R]):-N1 is N-1, elimina_en_N(Y,N1,R)./*------------------------------------------------------------------*//*------------------------------------------------------------------*/

/* d *//*------------------------------------------------------------------*//* Invertir una lista */%% Para invertir la lista definimos antes concatenar dos lista.%/*Concatenar una lista vacía con otra lista L resulta la lista L*/concatena_dos_listas([],L,L)./*concantenar la lista cuyo primer elemento es X|M con otra lista L da como resultado una lista cuyo primer elemento va a seguir siendo X|Z donde Z es nuevamente la concatenacion de M con L. */concatena_dos_listas([X|M],L,[X|Z]):-concatena_dos_listas(M,L,Z)./*Ejemplo de Consulta concatena_dos_listas

concatena_dos_listas([2,3,4],[5,6,7,8],Z).

Page 4: SISTEMAS EXPERTOS TALLER 01.docx

Z = [2, 3, 4, 5, 6, 7, 8].*/% concatena_dos_listas([4,5,6],[1,2,3,4],X).% X = [4, 5, 6, 1, 2, 3, 4].%%/*Invertir una lista de un solo elemento resulta la lista con el mismo elemento*/invertir_lista([X],[X])./*Invertir una lista cuyo primer elemento es X equivale a concatenar otra lista Sdejando al primer elemento X como el último. Todo el resto(cola M) secoloca delante de X que equivale a S, y M(la cola) se vuelve a invertir*/invertir_lista([X|M],Z):-invertir_lista(M,S), concatena_dos_listas(S,[X],Z)./* ------------------------------------------------------------------*//* Ejemplo de Consulta invertir_lista

invertir_lista([10,9,8,7],Z). Z = [7, 8, 9, 10]

invertir_lista([7,'T'],Z). Z = ['T', 7]

*//*------------------------------------------------------------------*//*------------------------------------------------------------------*/

/* e *//*---------------------------------------------------------------*//* Establecer si un elemento está o no en una lista

Ejemplo de Consulta elemento_esta

elemento_esta(5,[4,7,3,5,6,9]). true.

elemento_esta(2,[4,7,3,5,6,9]). false.

*/elemento_esta(X,[X|M]):-!.elemento_esta(X,[R|M]):-elemento_esta(X,M)./*---------------------------------------------------------------*//*------------------------------------------------------------------*/