Algorithme de concaténation

Fermé
megacoolx Messages postés 2 Date d'inscription vendredi 16 octobre 2009 Statut Membre Dernière intervention 11 juin 2015 - 11 juin 2015 à 16:24
 Utilisateur anonyme - 11 juin 2015 à 16:49
Bonjour,
Je bute actuellement sur un sujet assez délicat, je dois faire un algorithme de concaténation de tronçons.
Je vous explique :

- un tronçon physique est composé d'une longueur, de caractéristiques (matériau, diamètre etc...) et de deux extrémités.
- Grâce aux extrémités d'un tronçon physique on peut définir les relations entre les différents tronçons
- Sur le schéma assez grossier que j'ai fait, nous avons les différents tronçons physique (ceux en rouge sont appelés tronçons courts).

L'objectif est de créer des tronçons virtuels. Un tronçon virtuel est un regroupement de plusieurs tronçons physiques connectés entre eux et possédant les mêmes caractéristiques. La longueur d'un tronçon virtuel est égale à la somme des tronçons physiques qui le composent et ne doit pas dépasser une valeur précise.

Concernant les tronçons courts, ils sont pris en compte lors du parcours du graphe. Si lors du parcours, on tombe sur un tronçon court :
- si il se trouve entre deux tronçons longs et qui ont les mêmes caractéristiques entre eux, même si le tronçon court a des caractéristiques différentes, on les concaténe dans le tronçon virtuel
- si ce n'est pas le cas, on coupe et on recommence un nouveau tronçon virtuel



Voici grosso-modo l'explication sur l'algorithme que je dois faire, auriez-vous des idées pratiques sur la manière de l'implémenter ? Parcours total du graphe et concaténation selon les conditions...

Je dois l'implémenter en php car il est développé sur le site d'un intranet.

Merci d'avance :)
A voir également:

1 réponse

Pas beau de fragmenter :)

Je n'ai aucune experience sur ça, sinon ça me rapelle des listes chainées (structure de donnée) avec:

- un pointeur pour lié un element (autre liste chainées) sur la première
extemité et un autre pour la seconde extrémité.
- Une donnée que stock la structure lié logiquement par d'autres structures.


Ainsi tu dois parcourir ces listes via les pointeurs qui sont contenus dans ces structures appeler listes chainées.

Et je dirais que tes tronçons physiques sont ces listes présentes lors de la compilation et tes tronçons virtuels, de simple structures créent dynamiquement en mémoire pour lier des structures (par pointeurs) déjà existant.

Et que tes caractéristiques des tronçons, la donnée que contient ta structure (liste chainée).

Basic asm standard: reg(lowercase) instruction(lowercase) -> instruction dest, src
(\___/)
(='.'=)
(")_(")
This is Bunny. Copy and paste bunny into
your signature to help him gain world domination
-1