Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo utilizar MATLAB para resolver problemas de transferencia de estado (como el problema del empresario que cruza el río)

Cómo utilizar MATLAB para resolver problemas de transferencia de estado (como el problema del empresario que cruza el río)

función jueche=guohe

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%

Necesario para iniciar el programa Conocer el número de comerciantes y servidores

n; =input('Ingrese el número de comerciantes:','12');

nn=input('Ingrese el número de sirvientes:','12' );

nnn =input('Ingrese la capacidad máxima del barco:','20');

if nn>n

n=input(' Ingrese el número de comerciantes:', '23');

nn=input('Ingrese el número de servidores:','23');

nnn=input('Ingrese el tamaño máximo de la capacidad del barco :','34');

fin

%%%%%%%%%%%%%%%%%%%%% %%%% %%%%%%%%%%%%%%%%%%% Generación de decisiones

jc=1 %El vector de decisión se coloca en la matriz d, jc es para insertar nuevo El índice de fila de; el elemento es inicialmente 1;

for i=0:nnn

for j=0:nnn

if (i+j<=nnn) &( i+j>0) % satisface la condición D={(u,v)|1<=u+v<=nnn,u,v=0,1,2}

d(jc , 1:3)=; %Generar conjunto de matrices de estado D `

A(kx+1,1:3)=;

kx=kx+2;

fin

fin

j=nn;

end;

%%%%%%%%%%% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Generar vectores de estado abstractos Matrix

k=(1/2)*tamaño(A,1);

CX=ceros(2*k,2*k);

a=tamaño(d ,1);

para i=1:2*k

para j=1:a

c=A(i, :)+d( j,:) ;

x=buscar((A(:,1)==c(1))&(A(:,2)==c(2)) &(A(: ,3)==c(3))) ;

v(i,x)=1; %x estando vacío no cambiará el valor de v

end

fin

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%% algoritmo dijstra

x=1; y=size(A,1);

m=size(v,1);

T=ceros(m,1);

T=T.^-1;

lmd=T

P=T

S=ceros(m, 1);

S(x)=1

P(x)=0;

k=x;

mientras(1)

a=buscar(S==0);

aa=buscar(S==1);

si tamaño(aa,1)==m

descanso;

fin

para j=1: tamaño(a,1)

pp=a(j,1);

si v(k,pp)~=0

si T(pp)>(P(k)+v( k,pp))

T(pp)=(P(k)+v(k,pp));

lmd(pp)=k;

fin

fin

fin

mi=min(T(a));

si mi==inf p>

romper;

else

d=find(T==mi);

d=d(1);

P(d)=mi;

T(d)=inf;

k=d;

S(d)=1;

end

end

if lmd(y)==inf

jueche='no se puede alcanzar';

retorno;

fin

jueche(1)=y;

g=2;h=y;

while( 1)

if h==x

break;

end

jueche(g)=lmd(h);

p>

g=g+1;

h=lmd(h);

end

jueche=A(jueche, :);

jueche(:,3)=[];