begin process at 2012 05 29 00:06:52
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

cycle hamiltonien en c++


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

cycle hamiltonien en c++

lundi 26 avril 2010 à 16:44:26 | cycle hamiltonien en c++

crapette1

Bonjour,

Pour un prjet je dois réaliser un petit programme en c++ qui me renvoie un cycle hamiltonien à partir d'un graphe complet.
Le seul problème est qu'en cours on étudie le python et je n'ai donc aucune base en c++...
Je suis partie d'un programme réalisé par une amie, et j'ai rajouté le calcul de la matrice des distances des différents sommets du graphe.
Mais à partir de ça je n'arrive pas à construire un tour hamiltonien.
Si quelqu'un peut m'aider celà serait très sympa.

Code C/C++ :
/*
Algorithme glouton de résolution du TSP
-----------------------------------------------------------------------------------------------------
INPUT: un graphe complet G=(V, E)avec arêtes-valuées;
(les valeursd positives satisfont les inégalités triangulaires)

OUTPUT: cycle hamiltonien
-----------------------------------------------------------------------------------------------------
*/

#include <iostream>
#include <lemon/maps.h>
#include <fstream>
#include <sstream>
#include <vector>
#include <lemon/dimacs.h>
#include <lemon/list_graph.h>
#include <math.h>
#include <lemon/concepts/graph.h>
#include <lemon/euler.h>
#include <lemon/min_cost_arborescence.h>
#include <lemon/matching.h>

using namespace std;
using namespace lemon;

int main() {

//===================================================================================================
/* declaration et definition des variables et outils-LEMON de traitement des graphes*/

typedef ListGraph::Node Node;
typedef ListGraph::Edge Edge;
typedef ListGraph::NodeIt NodeIt;
typedef ListGraph::EdgeIt EdgeIt;
typedef ListGraph::EdgeMap<int> ECostMap;

ListGraph g, g_prime, g_second;
Node s[300],;
Edge e[4000];
int k=0;
int l=0;
double x;
double coordx[4000], coordy[4000];

//Definition de la "carte" du graphe G;
ECostMap edge_cost_map(g);


// le constructeur de ifstream permet d'ouvrir un fichier en lecture
std::ifstream is("berlin52.tsp");

//===================================================================================================
/* 1. construire le graphe d'après les donnees contenues dans le fichier */
if(is)
{
std::string ligne;
while ( std::getline( is, ligne, ' ' ) )
{
k++;
is >>coordx[k] >> coordy[k];
//std::cout<<ligne<<' '<<coordx[k]<<' '<<coordy[k]<<std::endl;
//s[k]=g.addNode();
}
}

//definir les sommets du graphe
for(int i=1; i<k; i++)
s[i]=g.addNode();

//definir les aretes et leur capacités
for(int i=1; i<k; i++)
for(int j=i+1; j<k; j++)
{
l++;
e[l] = g.addEdge(s[i], s[j]);
//std::cout<<i<<' '<<j<<std::endl;
edge_cost_map.set(e[l],sqrt(pow((coordx[i]-coordx[j]),2)+ pow((coordy[i]-coordy[j]),2)));
}

is.close();


std::cout << "Le graphe G a :"
<< countNodes(g) << " noeuds et "
<< countEdges(g) << " arcs." << std::endl;


//================================================================================================
/* 2. construire la matrice des distances */

const int dimension = k;
int matrice [k][k];

for( int i=1; i<k; i++)
for( int j=1; j<k; j++)
{
matrice[i][j] = sqrt((coordx[i]-coordx[j])^2 + (coordy[i]-coordy[j])^2);
}

Merci d'avance pour vos réponses


Cette discussion est classée dans : graphe, int, include, std, coordx


Répondre à ce message

Sujets en rapport avec ce message

Utilisation de std::map avec le type void * [ par toast3r ] Bonjour, J'utilise un tableau associatif, map et j'ai un problème au niveau de la récuperation des valeurs, voici le code que j'ai actuellement : # Problème pour un pendu [ par minet03 ] Bonjour tout le monde, je suis débutant et je tente de faire un pendu. Mais voilà, y a plin d'erreur que je ne comprend pas. Donc si qqu pouvais m'aid Prob avec les sockets [ par Sload ] Bonjour à tous ! Voila mon probleme , j'essaye de develloper un logiciel client/serveur. Je n'en suis qu'au tout début et j'ai déja un probleme lol ! Problème pour compiler du c [ par flox39 ] Salut à tous Je suis en galère avec du code qu'on m'a passé je n'arrive pas a le compilerl'erreur c error C2447: missing function header (old-style fo Erreur wininet [ par alicvb ] Voilà le début de mon code (sous DEV C++ 4.9.9.0) :#include #include #include #include "shellapi.h"#include "wininet.h"//#pragma comment(lib, "Wininet erreur incomprise ... [ par tontonjab ] bonjour ... j'ai un probleme avec mon code source, et j'aimerais bien que vous y jetié un coup d'oeil pour m'aider !////////////////////#include #incl Pb perte initialisation variable C++ [ par smagf ] Bonjour, alors voici mon pb :   pDecrypter = new Computer(duplicates) un nouvel objet de type Computer est créé Computer::Computer(bool dupes): Decryp classe fstream [ par romca ] SalutJ à tous, j'ai un petit souci sur un corrigé de cours qui ne fonctionne pas. Le but était de rentrer des nombres entiers dans un fichier binaire probleme de retour de valeur [ par darmoor ] Salut! Bon je veut faire un petit prog en mode console qui fait les statistique d'un lancement de dé. J'ai commencé le debut: #include #include # pb comprehension (int*) VC++ // TC++ [ par BarthOlivier ] Salut ,J'ai rencontré un truc marrant que je n'arrive pas a expliquer... voici le code :#include "stdafx.h"#include "stdio.h"#include "conio.h"#define


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,858 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales