IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Chevauchement de date simultanés


Sujet :

Algorithmes et structures de données

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 12
    Points : 9
    Points
    9
    Par défaut Chevauchement de date simultanés
    Bonjour à tous,

    J'ai 2 séries (DateTime_Start) (DateTime_End). Je dois trouvé le nombre maximum chevauchements simultanés. Autrement dit, c'est quoi maximum d'évènements qui ont eu lieu en même temps... Quelqu'un a une idée comment s'y prendre?

    Merci

  2. #2
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Autrement dit, c'est quoi maximum d'évènements qui ont eu lieu en même temps...
    Je n'ai rien compris

  3. #3
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Je n'ai rien compris
    Je suppose que l'on doit composer les intervalles en "piochant" la date de début dans la série 1 et la date de fin dans la série 2 ???
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  4. #4
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par Graffito Voir le message
    Je suppose que l'on doit composer les intervalles en "piochant" la date de début dans la série 1 et la date de fin dans la série 2 ???
    Effectivement les intervalles sont composés des date de début dans la série 1 et de date de fin dans la série 2 (trié par date de début)... Ce que je dois trouver, c'est le maximum d'évènements qui ont eu lieu simultanément...

    Ex:
    1- 12:00 à 12:02
    2- 12:01 à 12:20
    3- 12:05 à 12:07
    4- 12:10 à 12:59
    5- 12:12 à 12:13
    6- 12:15 à 12:25
    7- 12:16 à 12:20
    8- 12:21 à 12:30

    Dans ce cas la réponse est 4. Les évènements 2,4,6,7.

  5. #5
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Tu peut le faire en 2 passes:

    1er passe: algo 'sweep' pour trouver le max de chevauchement (4) et l'heure au moment du max (12:16)

    2nde passe: trouver les evenements qui ont lieu a l'heure du max
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  6. #6
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Tu peut le faire en 2 passes:

    1er passe: algo 'sweep'
    Désolé pour mon ignorance mais, ca ressemble à quoi un algo sweep . Et comment je peux l'appliquer pour mon problème.

  7. #7
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par Pothot Voir le message
    Désolé pour mon ignorance mais, ca ressemble à quoi un algo sweep . Et comment je peux l'appliquer pour mon problème.
    y'a pas de mal...

    Le sweep consiste a mettre a jour un compteur en parcourant dans l'ordre chronologique toutes des dates. A chaque fois que tu tombes sur une date de "start" tu augmentes ton compteur de 1, et a chaque fois que tu tombes sur une date de "end" tu le décrementes de 1.

    Exemple pour ton cas:

    1. On met toutes les dates dans une seule liste et on la trie par ordre chronologique
    12:00 (s)
    12:01 (s)
    12:02 (e)
    12:05 (s)
    12:07 (e)
    12:10 (s)
    12:12 (s)
    12:13 (e)
    12:15 (s)
    12:16 (s)
    12:20 (e)
    12:20 (e)
    12:21 (s)
    12:25 (e)
    12:30 (e)
    12:59 (e)
    2. on parcours la liste et on incremente/decremente le compteur suivant le type de date: (s) => +1 et (e) => -1
    INIT ---> 0
    12:00 (s) 1
    12:01 (s) 2
    12:02 (e) 1
    12:05 (s) 2
    12:07 (e) 1
    12:10 (s) 2
    12:12 (s) 3
    12:13 (e) 2
    12:15 (s) 3
    12:16 (s) 4
    12:20 (e) 3
    12:20 (e) 2
    12:21 (s) 3
    12:25 (e) 2
    12:30 (e) 1
    12:59 (e) 0
    3. On releve la position du compteur max:
    valeur max = 4
    position = 12:16 (s)
    4. On cherche les 4 rendez-vous qui se déroulent a 12:16
    2- 12:01 à 12:20
    4- 12:10 à 12:59
    6- 12:15 à 12:25
    7- 12:16 à 12:20
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 15
    Points : 14
    Points
    14
    Par défaut
    Bonjour,

    Je suis actuellement sur un problème du même type. Ce que je ne comprends pas dans ton explication sur l'algorithme de sweep, c'est comment, après avoir trié toutes les données dans une seule liste, tu détermines si c'est un "start" ou un "end". Dans mon exercice, j'ai ces données non triées :

    1 3
    7 15
    20 22
    2 5
    9 11
    12 18

    Si je fais comme dans ton explication, je me retrouve avec un tableau ayant cette forme là :


    1 2 3 5 7 9 11 12 15 18 20 22


    Comment déterminer alors qui est un début et qui est une fin ? Je n'ai pas tout saisi :-/


    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Chevauchement de dates
    Par jlempis dans le forum Doctrine2
    Réponses: 0
    Dernier message: 05/02/2013, 20h49
  2. [XPATH 1.0] Chevauchement de dates
    Par wilfrid.roux dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 25/11/2011, 16h14
  3. Chevauchement de dates
    Par eddy37fr dans le forum VBA Access
    Réponses: 2
    Dernier message: 11/04/2008, 20h00
  4. [VBA-E]Calculer nbre de Jrs avec chevauchement de dates
    Par YoungBlood dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/06/2006, 20h55
  5. [Strategie] Nombre de jours se chevauchant entre 2 fois 2 dates
    Par vallica dans le forum Général Java
    Réponses: 4
    Dernier message: 16/05/2006, 16h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo