Flux rss
Collection CommentCaMarche.net
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

Algorithmique sur les graphes

hamid_touroug, le mercredi 25 juillet 2007 à 18:01:38
Bonjour,
J'ai besoin d'aide à propos du problème sur les graphes suivant (je ne sais pas d'où commencer):
On considère une ville formé d'un certain nombre de carrefours relié entre eux par des
rues (aucune supposition n'est faite sur la possibilité ou non de représenter sur un plan
de manière à ce que les rues ne se croisent pas; il est possible que certaines "rues"
empruntent des souterrains ou des ponts suspendus). On suppose qu'il est normalement
possible de se déplacer de n'importe quel carrefour a n'importe quel autre en empruntant
une succession de rues.
On considère q'une rue est critique si, lorsqu'elle est soudainement barrée (alors
qu'aucune autre rue n'est barrée), il devint impossible de se déplacer de certains
carrefours à certains autres.
Un édile fou décide d'instaurer un sens unique sur chacune des rues.A un de ses opposants
qui s'inquiète des possibilités futures de circulation, il rétorque:"Notre ville ne
comporte actuellement aucune rue critique; par conséquent il est possible d'attribuer à
chacune des rues un sens unique de circulation, de telle manière qu'il reste possible de
passer de n'importe quel endroit à n'importe quel autre.Votre objection est donc rejeté".

Travail demandé:
On demande de modéliser la situation décrite ci-dessus en termes de graphes et de prouver
que l'affirmation du maire est effectivement correcte: pour toute ville imaginable, les
assertions "il n'existe aucune rue critique" et " il est possible de mettre toutes les
rues au sens unique sans rendre la circulation impossible" sont équivalentes. Décrire un algorithme, qui étant donné une ville, exhibe soit une rue critique, soit une solution au problème des sens uniques ; et étudier sa complexité.
Réaliser un programme C offrant au moins les fonctionnalités suivantes :
• Lire, dans un fichier ou clavier, une description d’une « ville ».
• Ecrire dans un fichier une description d’une « ville ».
• Etant donné une « ville », décide si le problème des sens uniques admet une solution et, dans le cas positif, exhibe une telle solution.
• Etant donné une « ville », décide si elle possède une rue critique et, c’est le cas, en exhibe une.


J'aimerais que vous me disiez si ceci est juste ou pas:
Se déplacer de n'importe quel carrefour à n'importe quel autre-->Graphe connexe.
Lorsqu'une rue devient critique, le graphe perd sa connexité.
Rue en double sens-->utilisation des arêtes.
Rue en sens unique-->Utilisation des arcs. (On a donc besoin d'un algorithme qui convertit un graphs non-orienté en un graphe orienté)

Pour l'implémentation du graphe,quelle représentation doit-on utiliser?représentation par liste ou par matrice?est ce que ce choix dépend de l'algorithme qui résoud ce probème?
Merci
Configuration: Windows XP
Internet Explorer 6.0
Répondre à hamid_touroug  Signaler ce message aux modérateurs Aller au dernier message

1


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
mamiemando, le mercredi 25 juillet 2007 à 18:18:24
Réponses

Se déplacer de n'importe quel carrefour à n'importe quel autre-->Graphe connexe.

1) Dans un graphe non orienté oui. Vu que le graphe est orienté on parlerait de graphe fortement connexe (pour tout u,v il existe un chemin orienté de u à v et de v à u). Tu peux aussi voir ça en terme de fermeture transitive (la fermeture transitive est une clique)
http://www.boost.org/...

Lorsqu'une rue devient critique, le graphe perd sa connexité.

2) sa forte connexité.

Rue en double sens-->utilisation des arêtes.
Rue en sens unique-->Utilisation des arcs. (On a donc besoin d'un algorithme qui convertit un graphs non-orienté en un graphe orienté)


3) En terme d'implémentation il est beaucoup plus simple de travailler tout le temps avec des arcs orientés quitte à a voir un arc (u,v) et un arc (v,u).

Pour l'implémentation du graphe,quelle représentation doit-on utiliser? représentation par liste ou par matrice?est ce que ce choix dépend de l'algorithme qui résoud ce probème?

4) Ca dépend. Des vecteurs (O(1)) te permettront d'avoir un algorithme beaucoup plus rapide que des listes (O(n)) ou des arbres O(log(n)). Il faut donc si le graphe n'est pas trop gros plutôt s'orienter vers des vecteurs.

Sous linux (ou cygwin)

Boost permet très facilement de changer la structure de ton graphe, mais ça suppose que tu codes en C++ et que tu installes la librairie boost (gratuite), du moins la boost graph library (BGL). Pour cela installe le paquet libboost-graph-dev (pour les debian et les ubuntu). En root (ou précédé d'un sudo) :
(root@aldur) (~) # aptitude install libboost-graph-dev

A noter que l'algorithme de strong components, comme tu as pu le voir dans le lien précédent est déjà codé dans la BGL. Récupère ces deux fichiers :
http://www.boost.org/libs/graph/example/strong_components.cpp
http://www.boost.org/libs/graph/example/scc.dot

Pour visualiser le graphe scc.dot, installe graphviz. En root (ou précédé d'un sudo) :
(root@aldur) (~) # aptitude install graphviz

Ensuite il ne reste plus qu'à convertir le fichier .dot en image, par exemple avec dot, neato, fdp...
(mando@aldur) (~) $ dot scc.dot -Tgif -o scc.gif

Pour compiler et exécuter l'exemple sous linux :
(mando@aldur) (~) $ g++ -I/usr/include/boost/ -lbgl-viz strong_components.cpp
(mando@aldur) (~) $ ./a.out
A directed graph:
a --> b f h
b --> c a
c --> d b
d --> e
e --> d
f --> g
g --> f d
h --> i
i --> h j e c
j -->

Total number of components: 4
Vertex a is in component 3
Vertex b is in component 3
Vertex c is in component 3
Vertex d is in component 0
Vertex e is in component 0
Vertex f is in component 1
Vertex g is in component 1
Vertex h is in component 3
Vertex i is in component 3
Vertex j is in component 2

Bonne chance
Répondre à mamiemando

2


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
hamid_touroug, le samedi 28 juillet 2007 à 14:34:33
Merci beaucoup mamiemando
bonne vacances
Répondre à hamid_touroug

3


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
mamiemando, le dimanche 29 juillet 2007 à 19:25:38
De même, bon courage ;)
Répondre à mamiemando

4


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
hamid_touroug, le mardi 31 juillet 2007 à 01:24:15
bonjour
dans votre premier message vous avez dis que le graphe est orienté mais je crois que ce n'est pas le cas car dans l'enoncé on précise que les rues sont à double sens donc il n'est pas orienté...c'est àça non??
Répondre à hamid_touroug

5


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
mamiemando, le mardi 31 juillet 2007 à 10:03:01
Non. Une rue en sens unique du carrefour u au carrefour v : un arc u->v, pas d'arc v->u.
Une rue dans les deux sens de u à v et de v à u : un arc u->v et un arc v->u.
Donc il est bien orienté ;)
Répondre à mamiemando

6


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
hamid_touroug, le dimanche 5 août 2007 à 11:44:36
Ah ok dacor j'ai compris et merci pour tout.
Répondre à hamid_touroug

7


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
hamid_touroug, le mercredi 8 août 2007 à 02:26:21
je cherche des exercices corrigés sur le cour "d'algorithmique des graphes" svp c'est trés urgent.
cordialement
Répondre à hamid_touroug

8


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
mamiemando, le mercredi 8 août 2007 à 09:43:18
http://www.apprendre-en-ligne.net/graphes/
Si ça ne te convient pas fais une recherche sur google.

Bonne chance
Répondre à mamiemando

9


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
hamid_touroug, le vendredi 10 août 2007 à 01:09:53
D'accord,
sinon vous auriez quelque chose à me proposer sur la k-coloriablité des graphes (j'ai deja cherché sur l net)
Merci
Répondre à hamid_touroug

10


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
 mamiemando, le vendredi 10 août 2007 à 02:37:49
Pourtant tu as l'embarras du choix
http://www.google.com/...

De toute façon qu'attends-tu de moi, à part faire une recherche google à ta place je ne vais pas t'apporter grand chose :s

Bonne chance
Répondre à mamiemando
Algo arbre/graph (Résolu) salut, L'algo c'est pas trop mon truc et j'aurais aimé savoir où je pouvais trouver un bon cours sur les arbres et les graphs sur le net ? tte aide sera grandement appréciées :] www.commentcamarche.net/forum/affich-194211-algo-arbre-graph
Algorithmes des graphes (Résolu) Bonjour, je cherhe des documents qui m'aide à implanter les algorithmes des graphes avec langage c. Merci d'avance pour ceux qui veulent m'aider. www.commentcamarche.net/forum/affich-4742390-algorithmes-des-graphes
[Algorithme de Kruskal] implémentation matlab (Résolu) Bonjour Je voudrais avoir votre aide svp pour implémenter en graphes et combinatoire l'algorithme de kruskal sous matlab. Merci d'avance. www.commentcamarche.net/forum/affich-2616863-algorithme-de-kruskal-implementation-matlab
Changer de carte graphiqueLa méthode décrite ci-dessous est valable pour une carte au format AGP ou PCIexpress, ainsi que sous les OS Windows XP et Vista. Le marché des processeurs graphiques (GPU) est dominés par deux constructeurs: Nvidia et ATI. Ceux-ci vendent leur... www.commentcamarche.net/faq/sujet-4458-changer-de-carte-graphique
Mise à jour des pilotes de la carte graphiqueMise à jour des pilotes graphiques Quelle carte Graphique je possède ? Sous Windows Xp Sous Windows Vista Mise à jour Mise à jour des pilotes graphiques Pour mettre à jour les pilotes de la carte graphique, il vous faut connaître la... www.commentcamarche.net/faq/sujet-8034-mise-a-jour-des-pilotes-de-la-carte-graphique
Problème carte graphique NvidiaSi votre carte graphique de marque Nvidia vous pose des problèmes, il est conseillé de se rendre sur le site du constructeur et de télécharger la dernière version du pilote correspondant au modèle de votre carte vidéo... www.commentcamarche.net/faq/sujet-2904-probleme-carte-graphique-nvidia
Java arbres (Résolu)bonjour je dois creer une calculatrice graphique en java en utilisant une classe arbre j'aimerai savoir s'il existe un algorithme pour construire l'arbre en tenant compte des operations prioritaires par ex si on a 2+3*4 comment faire... www.commentcamarche.net/forum/affich-1487586-java-arbres
Solution (Résolu)svp qui peut m'aider a resoudre ces problemes : un algorithme 1-qui determine le type et la taille du disk dur 2-qui determine le type de la carte graphique 3-qui determine le type du micro processeur et la vitesse svp veillez me contacté sur mon... www.commentcamarche.net/forum/affich-4964934-solution
Java arbres (Résolu)bonjour je dois creer une calculatrice graphique en java en utilisant une classe arbre j'aimerai savoir s'il existe un algorithme pour construire l'arbre en tenant compte des operations prioritaires par ex si on a 2+3*4 comment faire... www.commentcamarche.net/forum/affich-1487520-java-arbres
Télécharger Pilote Intel Graphics Media Accelerator pour VistaLe pilote Intel Graphics Media Accelerator pour Windows Vista est prévu pour les cartes-mères équipées des puces graphiques suivantes : Intel G965 Express desktop chipset, Intel Q965 Express desktop chipset, Intel Q963 Express desktop... www.commentcamarche.net/telecharger/telecharger-34056587-pilote-intel-graphics-media-accelerator-pour-vista
Télécharger Pilote Intel Graphics Media Accelerator pour XPLe pilote Pilote Intel Graphics Media Accelerator pour Windows XP est prévu pour fonctionner exclusivement avec les puces graphiques à base de chipset Intel® 845G. www.commentcamarche.net/telecharger/telecharger-34056588-pilote-intel-graphics-media-accelerator-pour-xp
Télécharger SiS UniVGA2 Graphic DriverLe pilote SiS UniVGA2 Graphic Driver supporte les puces graphiques suivantes : SiS650, SiS651, SiSM650, SiS650GX, SiS740, SiS650GL, SiSM741, SiS741GX, SiS741 www.commentcamarche.net/telecharger/telecharger-34056590-sis-univga2-graphic-driver
Alcatel Temporis 500 Pro GraphitePrésentation du numéro appelant, Présentation du numéro appelant, Répertoire, Couleur:Graphite, Fonction haut-parleur, Présentation du numéro de l'appelant, Nombre de sonneries:8, Nombre de places dans le répertoire:60, Nombre de combinés inclus:1, Prise. www.commentcamarche.net/guide-achat/alcatel-temporis-500-pro-graphite-651822-fiche-technique
Alcatel Temporis 150 Pro GraphiteNombre de combinés inclus:1, Type:Classique, Nombre de sonneries:2, Touche secret, Couleur:Graphite, Nombre de combinés inclus:1, Nombre de sonneries:2, Touche secret, Couleur:Graphite, Nombre de combinés inclus:1, Nombre de... www.commentcamarche.net/guide-achat/alcatel-temporis-150-pro-graphite-651832-fiche-technique
Carte graphique - carte vidéoLes cartes graphiques accélératrices 2D La carte graphique (en anglais graphic adapter), parfois appelée carte vidéo ou accélérateur graphique, est l'élément de l'ordinateur chargé de convertir les données numériques à afficher en données... www.commentcamarche.net/contents/pc/carte-graphique.php3
Introduction à l'algorithmiqueNotion d'algorithme La mise au point d'un programme informatique se fait en plusieurs étapes. Il s'agit de fournir la solution à un problème, la première étape consiste donc à analyser le problème, c'est-à-dire en cerner les limites et le mettre... www.commentcamarche.net/contents/algo/algointro.php3