Inscription / Connexion Nouveau Sujet
Niveau autre
Partager :

Graphes et connexion

Posté par
enzo
20-07-06 à 14:54

Bonjour à tous,

J'ai été amené récemment à m'intéresser à un pb assez particulier lié plus ou moins à la théorie des graphes. Voici le pb:

On considère un ensemble de points dans R². Chacun de ces points peut être représenté sur un plan. On établit une connexion entre deux points i et j ssi le cercle de diamètre [ij] et de centre O t.q O est le milieu de [ij] ne contient aucun autre point.

Dès que l'on a construit le graphe, il existe un pb assez fort. En effet, si l'on souhaite insérer un nouveau point dans ce graphe, nous sommes dans l'obligation de reconstruire tout le graphe, ce qui peut être très long algorithmiquement (vraiment très long...). En effet, le nouveau point pourra "casser" des connexions existantes (en se trouvant dans le cercle précédemment relaté) et surtout créera des connexions entre lui-même et au moins un autre point.

Ma question est la suivante : peut-on déterminer à coup sûr un sous-ensemble de points t.q l'on soit sûr que ce sous-ensemble contiennent tous les points à mettre à jour (ajout + suppression de connexion) ?

J'ai déjà une solution, mais elle n'est pas exacte (c'est une heuristique).

Voilà, si vous avez des suggestions...

Posté par
Mahow
re : Graphes et connexion 20-07-06 à 15:10

Bonjour enzo,

Soit une suite de point (Ai)i appartenant à R²

On utilise les connexions de la question :

A tout point Ai on associe le disque FERMé de centre Ai et de rayon egal à la longueur minimal de la conexion (si la connexion avec un autre point et un segment !) notons cela ri...

Notons H l'union de tous ces disques, alors si un point B apparait dans R²\H le graph ne subira au maximum n nouvelle connexions, toutes liées à B, n étant le maximum que la variable i puisse prendre...


Je dis peut etre une betise !

Posté par bret (invité)re : Graphes et connexion 20-07-06 à 15:59

salut,

c'est sans certitude, il y a peut-être des erreurs, mais la premiere idée qui me vient est la suivante.

On teste d'abord quelles sont les connexions cassées, pour cela, à chaque connexion, on procède ainsi,
soit c la longueur de la connexion (la distance entre les deux points) et a et b les distances du nouveau point à ses deux sommets

alors le nouveau point casse la connexion si a²+b²<c² (car l'angle formé par les trois points est obtus)

cette algorithme est linéaire en le nombre de sommets car dans un graphe planaire le nombre d'aretes est inférieur ou égal à 3S-6 où S est le nombre de sommets, et chaque opération effectuée par aretes se fait en temps constant.

Apres pour chercher les nouvelles connexions, je n'ai que trouvé une solution en n.ln n, mais assez tordue, alors je vais encore chercher

Sauf erreurs,

bret

Posté par
Mahow
re : Graphes et connexion 20-07-06 à 17:55

C'est ce que je lui ai expliqué par msn, on doit oublier le sujet ^^

Posté par
enzo
re : Graphes et connexion 21-07-06 à 11:18

Merci pour vos réponses

Cependant, pour contredire Mahow, ce sujet n'est pas à oublier!!

J'ai exploré deux solutions que j'ai programmées hier :

- la recherche d'un fermé autour du point requête (celui qu'on veut insérer) à partir d'angles orientés.
- une solution se basant sur les digrammes de Voronoï (je ne détaille pas, si vs voulez l'article référence, je vs le passe).

La deuxième donne des résultats tout à fait satisfaisants (justes quoi), et la première pose le problème des points en bordure du plan (= il n'existe pas toujours un fermé autour du point requête).

Je voudrais rajouter pour préciser un peu plus :
- un point peut avoir plusieurs voisins
- il est évident qu'un point et son plus proche voisin ont une connexion.


Le problème étant résolu dans R², je m'attaque maintenant au problème dans Rp p>2.

L'idée est toujours la même. Deux points i et j sont voisins ssi l'hypershpère de centre O (O milieu de [ij]) et de diamètre [ij] ne contient aucun autre point.
Les diagrammes de Voronoï ne marchent qu'en 2D et les angles orientés n'existant que dans un plan, les deux solutions précédentes sont compromises.

Alors si vous avez des idées...
Merci


P.S: L'heuristique que j'utilise est la suivante:
- on cherche le plus proche voisin du point à insérer (M) (admettons ) la distance entre M et vaut d1
- on cherche le voisin le plus éloigné de (i.e, un point ayant une connexion avec et dont la connexion est la plus "grande")  (admettons ). La distance entre et vaut d2.

Tous les points à explorer sont dans l'hypersphère de rayon (d1+d2) * (1+e) avec 0 < e < 1.
En fixant un e >0, j'obtiens toujours les mêmes résultats qu'en reconstruisant entièrement le graphe. j'ai testé ceci sur 15 jeux de données différents.

Posté par
Mahow
re : Graphes et connexion 21-07-06 à 11:26

Si considère un point de Rp, on donne l'hypersphère quand r croit, ce qui fait que le premier point rencontré sur la sphère aura une connection, soit un l'ypersphère de ce point de rayon non nul, on a l'intersection de ces deux hypersphère qui est un cercle, selon r et le second rayon (ainsi que le rayon du cercle engendré) on aura les coordonnée du poit lié...

Posté par
enzo
re : Graphes et connexion 21-07-06 à 11:29

Mahow,

Dans ta proposition, comment fixes-tu r ?

Posté par
Mahow
re : Graphes et connexion 21-07-06 à 11:35

Je ne le fixe pas, je le considère comme quand il evolue... Un agrandissement de la super sphère en continu (homotétie de centre de la hypersphère et de rapport r pour les calculs analytiques)

Posté par
enzo
re : Graphes et connexion 21-07-06 à 11:44

Ok, mais le problème est alors l'incrémentation de l'agrandissement. Pour chaque agrandissement, il faut chercher parmi tous les points (au nombre de n) ceux qui sont contenus dans l'hypersphère. A chaque pas de l'algorithme, tu ajoutes une complexité de n. Et au final, tu obtiens une complexité du genre O(xn) où x est le nombre d'itérations..

Au final, je risque même de me retrouver avec une complexité supérieure à celle de l'algo de construction global.

Je rappelle que mon problème n'est pas uniquement de contruire le graphe, mais de chercher la méthode la plus rapide possible et exacte (qui n'existe peut-être pas).



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1675 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !