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 :

unicité periode d'heure


Sujet :

Algorithmes et structures de données

  1. #1
    Membre actif
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Points : 292
    Points
    292
    Par défaut unicité periode d'heure
    Bonjour,
    je suis a la recherche d'un algorithme pour verifier si une plage horaire est valide.

    je m'explique, j'ai pour un jour donnée une liste de plage horaire (heure de début + heure de fin)

    et il ne faut pas que les plages horaire ce chevauche.

    ex:
    10:00-12:00 & 14:00-16:00 = valide
    10:00-12:00 & 11:30-16:00 = erreur

    le truc c'est que le nombre de plage horaire peut varier, sinon ça aurait été trop simple.

    je cherche un algo tout fait si ça existe déja, sinon je chercherai

  2. #2
    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
    Bah... tu peux trier tes plages horaires par heure de début, et vérifier que chaque plage se termine avant le début de celle d'après.

  3. #3
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    Convertis tous tes temps en secondes, et tu es ramené à un simple problème de chevauchement d'intervalles.

  4. #4
    Membre actif
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Points : 292
    Points
    292
    Par défaut
    euh, tu aurais pas un example ? car la comme ça je bloque un peu

    maintenant j'ai un tableau avec n ligne, chacune a 2 colonnes ('start' et 'end' qui sont les temps en secondes)

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    réfléchis et prend un papier et un crayon

    Sachant que dans ton tableau, par exemple comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    start      end
    12350    14600
    13800    17000
    14700    21000

  6. #6
    Membre actif
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Points : 292
    Points
    292
    Par défaut
    Pour le moment j'ai ça, mais y n'y as pas moyen de faire descendre la complexité en dessous de n²
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $h_time = array_reverse($h_time);
    $index_error = array();
    $nb = count($h_time);
    for($i = 0; $i < $nb; $i++){
      for($j = 0; $j < $nb; $j++){
        if($i == $j) continue;
        // si le début ou la fin est compris entre les 2
        if(($h_time[$i]['start'] > $h_time[$j]['start'] && $h_time[$i]['start'] < $h_time[$j]['end'])
          ||($h_time[$i]['end'] > $h_time[$j]['start'] && $h_time[$i]['end'] < $h_time[$j]['end'])){
             $index_error[] = $nb - $i;
           }
         }
       }

  7. #7
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    Commence par les classer par ordre de début avec un quick-sort en nlog(n).
    Après tu regardes si le début du second est avant la fin du premier, et ainsi de suite, tu arrives à nlog(n)+n qui est un peu mieux que n².

  8. #8
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 861
    Points
    11 861
    Par défaut
    Citation Envoyé par Zavonen Voir le message
    Commence par les classer par ordre de début avec un quick-sort en nlog(n).
    Après tu regardes si le début du second est avant la fin du premier, et ainsi de suite, tu arrives à nlog(n)+n qui est un peu mieux que n².
    nlog(n)+n dans le pire des cas !
    Si dès le début tu en trouves qui se chevauchent, tu t'arrêtes et tu réponds que ce n'est pas valide.
    Du coup, en moyenne nlog(n)+n/2

    Je ne pense pas qu'il soit possible de faire beaucoup mieux. J'ai une idée un peu tordue mais pas sûr que ça marche. Je vais y réfléchir.

  9. #9
    Membre actif
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Points : 292
    Points
    292
    Par défaut
    ouais, mais le truc c que je doit renvoyer l'indice des elements qui ce chevauche, et puis finalement les perf ne sont plus importante, dans je vais laisser le code que j'ai mis

  10. #10
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 861
    Points
    11 861
    Par défaut
    D'accord. Mais à quoi te servent les indices ?

  11. #11
    Membre actif
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Points : 292
    Points
    292
    Par défaut
    pour le rendu

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

Discussions similaires

  1. [MCD] Contrainte d'unicite de periode
    Par S_ami dans le forum Schéma
    Réponses: 2
    Dernier message: 18/06/2009, 08h34
  2. [CR ?] Somme d'heure sous Crystal ?
    Par Peter PARKER dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 17/04/2003, 16h24
  3. [VBA-E] [Excel] Lancer une macro à une heure donnée
    Par Lysis dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/10/2002, 12h15
  4. [VB6] [Datareport] Heure d'impression ds pied de page
    Par oazar dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 03/10/2002, 10h11
  5. Réponses: 11
    Dernier message: 23/07/2002, 14h33

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