olá pessoal, preciso de um algoritmo de caxeiro viajante para resolver a questão abaixo
Considere uma região com 8 cidades localizadas por:
- Cidade 1 – (7,4)
- Cidade 2 – (4,3)
- Cidade 3 – (4,4)
- Cidade 4 – (1,3)
- Cidade 5 – (2,4)
- Cidade 6 – (5,1)
- Cidade 7 – (2,3)
- Cidade 8 – (3,7)
a) Detemine a ordem de visitação que resulta no menor caminho considerando a volta pra casa
(caminho cíclico).
b) Determine a ordem de visitação que resulta no menor caminho considerando que o caminho
deve começar na cidade 1 e terminar na cidade 8.
Que use o mesmo randômico do que foi usado nessa questão que calcula (pi/4)
PROGRAM pi_calculator
IMPLICIT none
INTEGER :: i,n,clock,np,ns,nc
INTEGER,ALLOCATABLE:: seed(

REAL(KIND=8)::r,x,y,pi
! Initializing random number generation!
CALL RANDOM_SEED(size=n) !
ALLOCATE(seed(n)) !
CALL SYSTEM_CLOCK(count=clock) !
DO i=1,n !
seed(i)=clock+(i-1)*37 !
END DO !
CALL RANDOM_SEED(put=seed) !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
np=10000000
ns=np
nc=0
DO i=1,np
CALL RANDOM_NUMBER(x)
x=2.0D0*x-1.0D0
CALL RANDOM_NUMBER(y)
y=2.0D0*y-1.0D0
r=DSQRT(x*x+y*y)
IF(r.le.1.0D0) nc=nc+1
END DO
pi=DFLOAT(nc)/DFLOAT(ns)
WRITE(*,*) 'PI=',pi
END PROGRAM pi_calculator