Форум программистов, компьютерный форум CyberForum.ru

Муравьиный алгоритм - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
kristi1
10 / 10 / 1
Регистрация: 07.03.2010
Сообщений: 465
21.11.2013, 09:25     Муравьиный алгоритм #1
Здравствуйте!
Имеется задание:
Решить задачу коммивояджера методом Марко Дориго (3 способ муравьиного алгоритма). Теоретическая часть тут:
http://vuz.exponenta.ru/PDF/MPEI/c1202/8690.pdf
Был написан подобный набросок программы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
using namespace std;
const int inf=1E9,NMAX=16;
int n,i,j,k,m,temp,ans,d[NMAX][NMAX],t[1<<NMAX][NMAX];
bool get(int nmb,int x)
{ return (x&(1<<nmb))!=0; }
int main()
{
 cin >>n;
 for (i=0;i<n;++i)
  for (j=0;j<n;++j) cin>>d[i][j];
 t[1][0]=0; m=1<<n;
 for (i=1;i<m;i+=2)
  for (j=(i==1)?1:0;j<n;++j)
  {
   t[i][j]=inf;
   if (j>0 && get(j,i))
   {
    temp=i^(1<<j);
    for (k=0;k<n;++k) 
     if (get(k,i) && d[k][j]>0) t[i][j]=min(t[i][j],t[temp][k]+d[k][j]);
   }
  }
 for (j=1,ans=inf;j<n;++j)
  if (d[j][0]>0) ans=min(ans,t[m-1][j]+d[j][0]);
 if (ans==inf) cout<<-1; else cout<<ans;
}
Верно ли сделано?
Есть подозрение, что что-то не так(
Ну либо покажите другие варианты решения. Спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2013, 09:25     Муравьиный алгоритм
Посмотрите здесь:

C++ Алгоритм
с++ алгоритм C++
алгоритм C++
алгоритм C++
C++ Алгоритм
Алгоритм C++
C++ QR алгоритм
C++ Алгоритм

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 17:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru