Está en la página 1de 13

2da Práctica – Inteligencia Artificial I Verónica Chávez Ponce

DESPLAZAMIENTO DE FIGURA Y FUNCIONES

1. Desplazamiento de figuras, funciones. Salve las tres funciones con nombres que
correspondan a las funciones.

 function figurap(x0)
yb=x0.*x0+2
text(x0,yb,'IA');
end

 function base()
xb=[-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6];
yb=xb.*xb+2;;
line(xb,yb);
end

 function fina()
r1 =[0,70];
r2 =[70,0];
%axis([0 70 0 70]);
for i=0:1:2
for j=-6:0.08:6
%mostramos un fondo de color blanco, a su vez borra todo el contenido que había
antes
plot(r1,r2,'w:');
base();
if(i==0)
figurap(j);
end
pause(0.09);
end

end
end
2da Práctica – Inteligencia Artificial I Verónica Chávez Ponce

70
70

60
60

50
50

40
40

30
30

20
20 IA
IA
10
10

0
-100 0 10 20 30 40 50 60 70
-10 0 10 20 30 40 50 60 70

70
70

60
60

50
50

40
40

30
30

20
20

10
10
IA
0
-100 0 IA 10 20 30 40 50 60 70
-10 0 10 20 30 40 50 60 70

70
70

60
60

50
50

40
40
IA
30
IA
30

20
20

10
10

0
-100 0 10 20 30 40 50 60 70
-10 0 10 20 30 40 50 60 70
2da Práctica – Inteligencia Artificial I Verónica Chávez Ponce

2. Solución Problema 8 reinas, con matlab.

clc
close all
clear all
tic;
hold on
reinas=4;
x=-reinas:1:0;
yx=-reinas:1:0;
b=-reinas:0;
c=-reinas:0;
m=0;arbol={};visitado={};
%%%%%%%%%%%%%%%pinta el tablero
for i=1:length(b)
y=m*x+b(i);
plot(x,y);
x1=m*yx+c(i);
plot(x1,yx);
end
tablero = zeros(reinas,reinas);
%%%%%%%%%%%%%%%%%%
raiz=tablero;%nodo raiz
arbol(1)={raiz};%al principio de la lista
2da Práctica – Inteligencia Artificial I Verónica Chávez Ponce

index_raiz=2;
index_vis=1;
flag=1;
inicio1=1;
inicio2=1;
while (flag==1)
%colisiones y siguiente movimiento
[iqx iqy]=find(9==tablero);%buscamos las reinas del tablero
queen=[iqx iqy];%reinas del tablero

if isempty(queen)%si no hay reinas


if inicio2==reinas%iniciamos 1 reina en la primer casilla
inicio1=inicio1+1;
inicio2=1;
end
if inicio1==reinas
inicio1=1;
end
tablero(inicio1,inicio2)=9;%la ponemos en el tablero
arbol(index_raiz)={tablero};%la metemos en la pila
visitado(index_vis)={tablero};

index_raiz=index_raiz+1;
index_vis=index_vis+1;

index_i=inicio1;index_j=inicio2;
posx=(-reinas+index_i)-.5;%pintamos en el tablero
posy=-index_j+.5;
text(posx,posy,'R');
inicio2=inicio2+1;
cond=0;
else

fou=0;dodiag=0;
for i=1:reinas%recorremos todo el tablero
for j=1:reinas
cond=0;cont=0;
move_done=0;%condicion para movimientos repetidos
next_move=[i j];%siguiente posible jugada
if dodiag==0
diagonal=zeros(12*reinas,2);
for z=1:size(queen,1)
for m=1:reinas-1
diagonal(m+cont,1)=queen(z,1)+m;%diagonales de colisión
diagonal(m+cont,2)=queen(z,2)+m;
diagonal(m+1+cont,1)=queen(z,1)-m;%diagonales de colisión
diagonal(m+1+cont,2)=queen(z,2)-m;
diagonal(m+2+cont,1)=queen(z,1)-m;%diagonales de colisión
2da Práctica – Inteligencia Artificial I Verónica Chávez Ponce

diagonal(m+2+cont,2)=queen(z,2)+m;
diagonal(m+3+cont,1)=queen(z,1)+m;%diagonales de colisión
diagonal(m+3+cont,2)=queen(z,2)-m;
cont=cont+reinas-1;
end
cont=cont+reinas-1;
end
dodiag=1;
end
for d =1:size(next_move,1)%verificamos las colisiones
for c=1:length(diagonal)%si choca en diagonal
if next_move(d,1)==diagonal(c,1)...
&& next_move(d,2)==diagonal(c,2)
cond=1;
index_i=next_move(1);index_j=next_move(2);
posx=(-reinas+index_i)-.5;
posy=-index_j+.5;
text(posx,posy,'C');
pause(.5);
text(posx,posy,'\color{white}\bfC','BackgroundColor',[1 1 1]);
[ix iy]=find(9==tablero);%pintamos en el tablero
queens_in=[ix iy];
for n=1:size(queens_in,1)
index_i=queens_in(n,1);index_j=queens_in(n,2);
posx=(-reinas+index_i)-.5;
posy=-index_j+.5;
text(posx,posy,'R');
end
break;
end
end
if cond==1
break;
end
end
for x=1:size(queen,1)
if next_move(1,1)==queen(x,1) || next_move(1,2)==queen(x,2)
cond=1;%si choca en fila o columna
index_i=next_move(1);index_j=next_move(2);
posx=(-reinas+index_i)-.5;
posy=-index_j+.5;
text(posx,posy,'C');
pause(.5);
text(posx,posy,'\color{white}\bfC','BackgroundColor',[1 1 1]);
[ix iy]=find(9==tablero);%pintamos en el tablero
queens_in=[ix iy];
for n=1:size(queens_in,1)
index_i=queens_in(n,1);index_j=queens_in(n,2);
2da Práctica – Inteligencia Artificial I Verónica Chávez Ponce

posx=(-reinas+index_i)-.5;
posy=-index_j+.5;
text(posx,posy,'R');
end
end
if cond==1
break;
end
end

if cond==1%si choca otra jugada


continue;
else
tablero(next_move(1),next_move(2))=9;%si no la tomamos
move=tablero;
for t=1:length(visitado)%verificar si no fue visitado
ya_visitado=cell2mat(visitado(t));
if ya_visitado == tablero
move_done=1;%si ya fue visitado no lo metemos a la lista
cond=1;
tablero(next_move(1),next_move(2))=0;
continue;
end
end
if move_done==0%si no es visitado lo pintamos y agragamos a la lista
index_i=next_move(1);index_j=next_move(2);
posx=(-reinas+index_i)-.5;
posy=-index_j+.5;
text(posx,posy,'R');
fou=1;
pause(.3);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%
arbol(index_raiz)={move};%lo ponemos al tope de la lista
visitado(index_vis)={move};%lo ponemos como cuadro visitado
index_raiz=index_raiz+1;%incrementamos contador
index_vis=index_vis+1;
break;
end

end
end
if fou==1
break;
end
end

if cond==1%si no hay mas movimientos


index_raiz=index_raiz-1;
2da Práctica – Inteligencia Artificial I Verónica Chávez Ponce

arbol{index_raiz}={};%borramos el último de la lista


tablero=cell2mat(arbol(index_raiz-1));%tomamos el de la pila de la lista como
estado inicial
[ix iy]=find(9==tablero);%pintamos en el tablero
queens_in=[ix iy];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
hold off

x=-reinas:1:0;
yx=-reinas:1:0;
b=-reinas:0;
c=-reinas:0;
m=0;
for i=1:length(b)%pintamos el tablero
y=m*x+b(i);
plot(x,y);
x1=m*yx+c(i);
plot(x1,yx);
hold on
end

%%%%%pintamos en el tablero las reinas


for n=1:size(queens_in,1)
index_i=queens_in(n,1);index_j=queens_in(n,2);
posx=(-reinas+index_i)-.5;
posy=-index_j+.5;
text(posx,posy,'R');
end
pause(.5);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%
%%%%%%%%
%disp('No hay posibles. Retroceso')
else
tablero=move;%nueva jugada
solu=find(9==tablero);%verificar si ya llegamos a la solución
if size(solu,1)==reinas% solución terminar
flag=2;
disp('solución encontrada');
end
end
end
end%continuar
toc;

0
0

-0.5 C
R C C C
-0.5 C
R C C C

-1
-1
-1.5 C C C
R C
-1.5 C C C
R C

-2
-2
2da Práctica – Inteligencia Artificial I Verónica Chávez Ponce
-2.5 C C C C
-2.5 C C C C

-3
-3

-3.5 C C C
-3.5 C C C

-4
-4
-4 -3.5 -3 -2.5 -2 -1.5 -1 -0.5 0
-4 -3.5 -3 -2.5 -2 -1.5 -1 -0.5 0

0
0

-0.5 C
R C C C
-0.5 C
R C C C

-1
-1

-1.5 C C C R
-1.5 C C C R

-2
-2

-2.5 C C C
-2.5 C C C

-3
-3

-3.5 C C C
R
-3.5 C C C
R

-4
-4
-4 -3.5 -3 -2.5 -2 -1.5 -1 -0.5 0
-4 -3.5 -3 -2.5 -2 -1.5 -1 -0.5 0
2da Práctica – Inteligencia Artificial I Verónica Chávez Ponce

0
0

-0.5 C C C
R C
-0.5 C C C
R C

-1
-1

-1.5 C
R C C C
-1.5 C
R C C C

-2
-2

-2.5 C C C R
-2.5 C C C R

-3
-3

-3.5 C C
R C
-3.5 C C
R C

-4
-4
-4 -3.5 -3 -2.5 -2 -1.5 -1 -0.5 0
-4 -3.5 -3 -2.5 -2 -1.5 -1 -0.5 0

DESARROLLE

1. Emplee dos funciones diferentes para el desplazamiento de figuras.

 Desplazamiento de una onda senoidal

function figurap(x0)
yb=60*sin(x0);
text(x0,yb,'IA');
end

function base()
xb=[-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6];
yb=60*sin(xb)
line(xb,yb);
end

function fina()
r1 =[0,15];
r2 =[70,0];
%axis([0 70 0 70]);
for i=0:1:2
for j=-6:0.08:6
%mostramos un fondo de color blanco asu vez borra todo el contenido q
habia antes
plot(r1,r2,'w:');
2da Práctica – Inteligencia Artificial I Verónica Chávez Ponce

base();
if(i==0)
figurap(j);
end
pause(0.09);
end

end
end

80
80

60
60

40
40
IA
20 IA
20

0
0

-20
-20

-40
-40

-60
-10
-60 -5 0 5 10 15
-10 -5 0 5 10 15

80
80

60
60

IA
40
IA
40

20
20

0
0

-20
-20

-40
-40

-60
-10
-60 -5 0 5 10 15
-10 -5 0 5 10 15

80
80

60
60

40
40

20
20
0

-20
-20 IA
IA
2da Práctica – Inteligencia Artificial
-40 I Verónica Chávez Ponce
-40

-60
-10
-60 -5 0 5 10 15
-10 -5 0 5 10 15

 Desplazamiento sobre dos rectas

function base1()
xb=[-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6];
yb=-xb+12;
line(xb,yb);
end

function figurap1(x0)
yb=-x0+12;
text(x0,yb,'IA');
end

function base()
xb=[-6,-5,-4,-3,- 2,-1,0,1,2,3,4,5,6];
yb=xb;
line(xb,yb);
end

function figurap(x0)
yb=x0;
text(x0,yb,'IA');
end

function fina()
r1 =[0,15];
r2 =[22 0];
for i=0:1:2
for j=-6:0.08:6
2da Práctica – Inteligencia Artificial I Verónica Chávez Ponce

%mostramos un fondo de
color blanco asu vez borra todo el
contenido q habia antes
plot(r1,r2,'w:');
base();
base1();
if(i==0)
figurap1(j);
end
pause(0.09);
end

for j=6:-0.08:-6
%mostramos un fondo de color
blanco asu vez borra todo el
contenido q habia antes
plot(r1,r2,'w:');
base1();
base();
if(i==0)
figurap(j);
end
pause(0.09);
end
end
end

25
25

20
20
IA
15 IA
15

10
10

5
5

0
0

-5
-5

-10
-10
-10 -5 0 5 10 15
-10 -5 0 5 10 15

25
25

20
20

15
15

10
IA
5
IA
5

0
0
2da Práctica – Inteligencia Artificial I Verónica Chávez Ponce
-5
-5

-10
-10
-10 -5 0 5 10 15
-10 -5 0 5 10 15

25
25

20
20

15
15

10
10

5
5

0
IA
0
IA

-5
-5

-10
-10
-10 -5 0 5 10 15
-10 -5 0 5 10 15

También podría gustarte