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 :

intersection de deux ensembles d'intervalles


Sujet :

Algorithmes et structures de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 127
    Points : 49
    Points
    49
    Par défaut intersection de deux ensembles d'intervalles
    Bonjour à tous,


    Je dispose de deux listes triées d'intervalles entiers. Je désire obtenir la liste des intervalles résultant de l'intersection des intervalles des deux listes.

    Par exemple, soit les listes A et B:

    A = {[0..2], [3..7]}
    B = {[1..2], [4..5], [7..8]}

    Je cherche à obtenir l'intersection C de A et B dont le résultat serait:

    C = {[1..2], [4..5], [7..7]}.

    Le problème est que je ne voit pas comment effectuer cette intersection avec une complexité satisfaisante.

    J'ai effectué quelques recherches infructueuses sur internet, toute suggestion sera donc la bienvenue.

    Cordialement,
    Benoît.

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    A=[(0,2),(3,7)]
    B=[(1,2),(4,5),(7,8)]
     
    def intersection(I,J):
        """ intersection de deux intervalles"""
        a=max(I[0],J[0])
        b=min(I[1],J[1])
        if a<=b:
            return (a,b)
        else:
            return None
     
    def Possibles(I):
        """Intervalles de B pouvant éventuellement avoir une intersection non vide avec I (intervalle de A)"""
        return [J for J in B if (not (J[1]<I[0]))and not(J[0]>J[1])]
     
    def Trace(I):
        """Trace de I intervalle de A sur les intervalles de B"""
        return [intersection(I,J) for J in Possibles(I)]
     
    def AinterB():
        """La suite cherchée"""
        R=[]
        for I in A:
            R+=Trace(I)
        return [X for X in R if X!=None]
     
    if __name__ == "__main__":
        print AinterB()
     
    """résultat:[(1, 2), (4, 5), (7, 7)]"""

  3. #3
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    autre idée:

    - tu définis un ensemble de paires (x1,ab1)...(xn,abn) à partir de toutes les extrémités de tes segments de A & B, en posant ab=A ou B en fonction de la classe du segment.
    - tu tries par ordre croissant, et tu parcours alors ton ensemble séquentiellement. A partir de (x(i-1),ab(i-1)), (xi,abi),(x(i+1),ab(i+1)) tu sauras quoi faire.



    Ca t'évite ainsi de déterminer toutes les paires d'intersection de segments.

Discussions similaires

  1. Intersection de deux ensembles
    Par soucou dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 14/11/2012, 09h07
  2. [WD-2007] Création intersection de deux ensembles
    Par toushusss dans le forum Word
    Réponses: 1
    Dernier message: 04/03/2011, 15h56
  3. [debutant] intersection de deux plages horaires
    Par absolut75 dans le forum Collection et Stream
    Réponses: 10
    Dernier message: 24/05/2006, 13h03
  4. Intersection de deux courbes quelconques
    Par ShootDX dans le forum Algorithmes et structures de données
    Réponses: 32
    Dernier message: 31/03/2006, 10h32
  5. [prg jeux ]Définir l'intersection de deux rectangles
    Par mat.M dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 30/07/2003, 18h11

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