Пример #1
0
int main(void)
{
	printf("==================== LIF 9: TP Graphes =======================\n\n");
	Graphe g;

	initGrapheVide(g);

	printf("-----Test pour rajouter un Noeud:------\n\n");
	if(ajoutGrapheNoeud(g,"Quito")==0){
		printf("On ajoute le noeud \"Quito\"\n\n");
	}
	if(ajoutGrapheNoeud(g,"Quito")==-1){
		printf("Deuxième ajout de \"Quito\" pas possible\n\n");
	}
	ajoutGrapheNoeud(g,"Guayaquil");
	ajoutGrapheNoeud(g,"Cuenca");
	ajoutGrapheNoeud(g,"Otavalo");
	ajoutGrapheNoeud(g,"Ibarra");

	printf("-----Test pour rajouter un Arc:------\n\n");
	if(ajoutGrapheArcParIndice(g,700,0,1)==0){
		printf("On ajoute de l'arc Quito-Guayaquil en utilisant des indices\n\n");
	}
	if(ajoutGrapheArcParNom(g,800,"Guayaquil","Quito")==1){
		printf("Mise à jour de la distance Quito-Guayaquil en utilisant les noms\n\n");
	}
	
	ajoutGrapheArcParIndice(g,900,0,2);
	ajoutGrapheArcParIndice(g,200,0,3);
	ajoutGrapheArcParIndice(g,300,3,1);

	printf("------Test de Dijkstra:-----------\n");
	Dijkstra(g,0);
	printf("\n");

	printf("------Test affichage du graphe-----------\n");
	afficheGraphe(g);

	printf("-----Test pour supprimer un Noeud:------\n\n");
	if(supressionGrapheNoeudParNom(g,"Quito")==0)
		printf("Supression du Noeud Quito en lui passant son nom\n\n");
	if(supressionGrapheNoeudParIndice(g,4)==0)
		printf("Supression du Noeud Ibarra en lui passant son indice\n\n");

	afficheGraphe(g);

	detruitGraphe(g);

	printf("==================== Fin TP Graphes =======================\n");

	return 0;
}
Пример #2
0
int main()
{
  Graphe g;
  char name[20];
  int i;


  srand(time(NULL));
  initGrapheVide(&g);
  
  printf("************* Construction du graphe *************\n");
  for(i=0; i<NB_SOMMETS; i++)
  {
    sprintf(name, "Ville-%d", i);
    if(!ajouteNoeud(&g, name))
      printf("%s deja present\n", name);
  }
  for(i=0; i<NB_ARCS; i++)
  {
    if(!ajouteArc(&g, (rand()%POID_MAX)+1, rand()%NB_SOMMETS, rand()%NB_SOMMETS))
      printf("Sommet de l'arc incorrect ou src=dest\n");
  }
  afficheGraphe(&g);
  printf("*********** Fin construction du graphe ***********\n\n");
  
  printf("******************** Dijkstra ********************\n");
  sprintf(name, "Ville-%d", rand()%NB_SOMMETS);
  dijkstra(&g, name);
  printf("****************** Fin Dijkstra ******************\n\n");
  
  printf("****************** Graphe finit ******************\n");
/*  for(i=0; i<g.nb_sommets; i++)
    if(g->tab_sommets[i].color == BLANC)
      supprimeNoeud(&g, i);*/
  afficheGraphe(&g);
  printf("****************** Graphe finit ******************\n");

  detruitGraphe(&g);

 return 0;
}
Пример #3
0
int acpm(idGraph *pGraphe)
{
    int s1, s2, c1, c2, indexArete, poids;
    int poidsArbre=0; // poids de l'arbre couvrant
    idGraph *pGrapheACPM; // graphe de l'arbre

    afficheBanniere("Algorithme de kruskal : arbre couvrant de poids minimum");

    // on récupère tous les arêtes du graphe via la matrice
    // et on met les infos sur ces aretes dans le tableau

    // ... a compléter

    // trions ce tableau dans l'ordre croissant de poids


    // ... a compléter



    // on créé le graphe vierge dans lequel on va insérer les
    // arêtes dans leur ordre croissant de poids

    pGrapheACPM = creerGraphe(pGraphe->nbSommets,
                              pGraphe->grapheOriente,
                              pGraphe->graphePondere);

    // on initialise le tableau des composantes connexes
    // de telle manière que chaque sommet est dans une composante
    // connexe différente, puisque pas encore d'arête



    // ... a compléter



    // on a notre arbre couvrant de poids minimum
    //
    // quelques printf à faire pour l'afficher
    // et c'est fini !!


    printf("Arbre couvrant de poids minimum, poids total = %d\n", poidsArbre);

    afficheGraphe(pGrapheACPM);

    detruireGraphe(pGrapheACPM);

    return(0);
}