Codage des voisinages et parcours en largeur en temps O(n) des graphes d'intervalles et de...

36
Montpellier – 05/11/2009 – JGA'09 Codage des voisinages et parcours en largeur des graphes d'intervalles et de permutation Christophe Crespelle, Philippe Gambette

description

Présentation aux JGA 2009 (Journées Graphes et Algorithmes) à Montpellier

Transcript of Codage des voisinages et parcours en largeur en temps O(n) des graphes d'intervalles et de...

Page 1: Codage des voisinages et parcours en largeur en temps O(n) des graphes d'intervalles et de permutation

Montpellier – 05/11/2009 – JGA'09

Codage des voisinages et parcours en largeur des graphes d'intervalles et de permutation

Christophe Crespelle, Philippe Gambette

Page 2: Codage des voisinages et parcours en largeur en temps O(n) des graphes d'intervalles et de permutation

• Problème et définitions

• Encodage des voisinages dans les graphes d'intervalles et les graphes de permutation

• Recherche en largeur en O(n) dans les graphes d'intervalles et les graphes de permutation

Plan

Page 3: Codage des voisinages et parcours en largeur en temps O(n) des graphes d'intervalles et de permutation

• Problème et définitions

• Encodage des voisinages dans les graphes d'intervalles et les graphes de permutation

• Recherche en largeur en O(n) dans les graphes d'intervalles et les graphes de permutation

Plan

Page 4: Codage des voisinages et parcours en largeur en temps O(n) des graphes d'intervalles et de permutation

Contexte

Algorithmes sur les grands graphes

• Stockage du graphe en mémoire

• Requêtes sur le graphe

Encodage compact

Temps de réponse réduit

3 2 1 6 7 5 4

1 5 6 2 4 3 7

Page 5: Codage des voisinages et parcours en largeur en temps O(n) des graphes d'intervalles et de permutation

Contexte

Algorithmes sur les grands graphes

• Stockage du graphe en mémoire

• Requêtes sur le graphe

Encodage compact

Temps de réponse réduit

Bon encodage vis à vis des requêtes d'adjacence :Nombreuses classes de graphes d'intersection

Page 6: Codage des voisinages et parcours en largeur en temps O(n) des graphes d'intervalles et de permutation

Contexte

Algorithmes sur les grands graphes

• Stockage du graphe en mémoire

• Requêtes sur le graphe

Encodage compact

Temps de réponse réduit

Bon encodage vis à vis des requêtes d'adjacence :Nombreuses classes de graphes d'intersectionExemple : graphes d'intervalles :

= {[0,2],[1,3],[3,4]}

I1 I2

I3 v2

v3

v1 G Encodage en O(n)

Requêtes d'adjacence en O(1)

2 sommets adjacents ssiune borne de l'intervalle de l'un est incluse dans l'intervalle de l'autre.

= {[0,2],[1,3],[3,4]}

1 ∈ [0,2] :1 et 2 adjacents

Page 7: Codage des voisinages et parcours en largeur en temps O(n) des graphes d'intervalles et de permutation

Contexte

Algorithmes sur les grands graphes

• Stockage du graphe en mémoire

• Requêtes sur le graphe

Encodage compact

Temps de réponse réduit

Bon encodage vis à vis des requêtes d'adjacence :Nombreuses classes de graphes d'intersection

Bon encodage vis à vis des requêtes de voisinage ?

Page 8: Codage des voisinages et parcours en largeur en temps O(n) des graphes d'intervalles et de permutation

Contexte

Algorithmes sur les grands graphes

• Stockage du graphe en mémoire

• Requêtes sur le graphe

Encodage compact

Temps de réponse réduit

Bon encodage vis à vis des requêtes d'adjacence :Nombreuses classes de graphes d'intersection

= {[0,2],[1,3],[3,4]}

I1 I2

I3 v2

v3

v1 G Encodage en O(n)

Requêtes de voisinage en O(n)

O(d) ?

= {[0,2],[1,3],[3,4]}

Bon encodage vis à vis des requêtes de voisinage ?Exemple : graphes d'intervalles :

Page 9: Codage des voisinages et parcours en largeur en temps O(n) des graphes d'intervalles et de permutation

Contexte

Algorithmes sur les grands graphes

• Stockage du graphe en mémoire

• Requêtes sur le graphe

Encodage compact

Temps de réponse réduit

Bon encodage vis à vis des requêtes d'adjacence :Nombreuses classes de graphes d'intersection

Bon encodage vis à vis des requêtes de voisinage ?Encodage en O(n) avec requêtes de voisinage en O(d)pour graphes d'intervalles et graphes de permutation.→ extension aux graphes quelconques par complétion→ exploitation algorithmique de la structure des voisinages

Page 10: Codage des voisinages et parcours en largeur en temps O(n) des graphes d'intervalles et de permutation

• Problème et définitions

• Encodage des voisinages dans les graphes d'intervalles et les graphes de permutation

• Recherche en largeur en O(n) dans les graphes d'intervalles et les graphes de permutation

Plan

Page 11: Codage des voisinages et parcours en largeur en temps O(n) des graphes d'intervalles et de permutation

Une approche naturelle

• Graphes d'intervalles propres

• Graphes biconvexes

Généralisation, 2 paramètres :• autoriser plusieurs intervalles : contiguïté• autoriser plusieurs ordres : linéarité

Paramètres non bornés pour graphes d'intervalleset graphes de permutation :• contiguïté : Ω(log n)• linéarité : Ω(log n / log log n)

x

N[x]

x

N(x)

Page 12: Codage des voisinages et parcours en largeur en temps O(n) des graphes d'intervalles et de permutation

Voisinages dans les graphes de permutation

σ : x

f(x)

max f(x)?x∈I

I

a b

Max d'une fonction entière sur un intervalle :

ab

lca(a,b)?

Arbres cartésiens augmentés :

T

Page 13: Codage des voisinages et parcours en largeur en temps O(n) des graphes d'intervalles et de permutation

Voisinages dans les graphes de permutation

σ : x

f(x)

max f(x)?x∈I

I

a b

Max d'une fonction entière sur un intervalle :

ab

lca(a,b)?

Arbres cartésiens augmentés :

Précalcul de T en temps O(|T|)pour répondre aux requêtes lca en O(1)

Harel & Tarjan 1984, Vuillemin 1980

T

Page 14: Codage des voisinages et parcours en largeur en temps O(n) des graphes d'intervalles et de permutation

Voisinages dans les graphes de permutation

π1 : xmax π2(i)

I

j i

π2(i)

Si π2(j) > π2(x) alors j est un voisin de x

sinon x n'a pas de voisin dans I

x

Ig

j

Id

x∈I

récursion !

Page 15: Codage des voisinages et parcours en largeur en temps O(n) des graphes d'intervalles et de permutation

Voisinages dans les graphes de permutation

π1 : xmax π2(i)

I

j i

π2(i)

Si π2(j) > π2(x) alors j est un voisin de x

sinon x n'a pas de voisin dans I

x

Ig

j

Id

x∈I

récursion !

Au plus deux appels récursif par un appel réussiChaque appel non réussi lancé par un appel réussi

→ complexité en temps en O(d)

Page 16: Codage des voisinages et parcours en largeur en temps O(n) des graphes d'intervalles et de permutation

Voisinages dans les graphes d'intervalles

2 types de voisins :• recouvrement• inclusion

Page 17: Codage des voisinages et parcours en largeur en temps O(n) des graphes d'intervalles et de permutation

Voisinages dans les graphes d'intervalles

Bornes gauches

Recouvrements :

Inclusions : graphe de permutation

2 types de voisins :• recouvrement• inclusion

Bornes droites

Page 18: Codage des voisinages et parcours en largeur en temps O(n) des graphes d'intervalles et de permutation

• Problème et définitions

• Encodage des voisinages dans les graphes d'intervalles et les graphes de permutation

• Recherche en largeur en O(n) dans les graphes d'intervalles et les graphes de permutation

Plan

Page 19: Codage des voisinages et parcours en largeur en temps O(n) des graphes d'intervalles et de permutation

BFS dans les graphes d'intervalles

Entrée : ordre des bornes :

12 3

6 5

7

4

123 6 5 4

7

π : 2g 3g 1g 1d 6g 6d 5g 2d 4g 3d 7g 5d 4d 7d

ordre de priorité σ : 1 2 3 4 5 6 7

Sortie : arbre BFS respectant σ

12 3

6 5

7

4

Page 20: Codage des voisinages et parcours en largeur en temps O(n) des graphes d'intervalles et de permutation

BFS dans les graphes d'intervalles

12 3

123 6 5 4

7

π : 2g 3g 1g 1d 6g 6d 5g 2d 4g 3d 7g 5d 4d 7d

Page 21: Codage des voisinages et parcours en largeur en temps O(n) des graphes d'intervalles et de permutation

BFS dans les graphes d'intervalles

12 3

123 6 5 4

7

π : 2g 3g 1g 1d 6g 6d 5g 2d 4g 3d 7g 5d 4d 7d

père courant : 3borne droite : 3priorité' : 1

Page 22: Codage des voisinages et parcours en largeur en temps O(n) des graphes d'intervalles et de permutation

BFS dans les graphes d'intervalles

12 3

123 6 5 4

7

π : 2g 3g 1g 1d 6g 6d 5g 2d 4g 3d 7g 5d 4d 7d

père courant : 3borne droite : 44priorité' : 1 3

Page 23: Codage des voisinages et parcours en largeur en temps O(n) des graphes d'intervalles et de permutation

BFS dans les graphes d'intervalles

12 3

123 6 5 4

7

π : 2g 3g 1g 1d 6g 6d 5g 2d 4g 3d 7g 5d 4d 7d

père courant : 2borne droite : 44priorité' : 1 2 3

Page 24: Codage des voisinages et parcours en largeur en temps O(n) des graphes d'intervalles et de permutation

BFS dans les graphes d'intervalles

12 3

123 6 5 4

7

π : 2g 3g 1g 1d 6g 6d 5g 2d 4g 3d 7g 5d 4d 7d

père courant : 2borne droite : 445 priorité' : 1 2 3

Page 25: Codage des voisinages et parcours en largeur en temps O(n) des graphes d'intervalles et de permutation

BFS dans les graphes d'intervalles

12 3

123 6 5 4

7

π : 2g 3g 1g 1d 6g 6d 5g 2d 4g 3d 7g 5d 4d 7d

père courant : 2borne droite : 445 priorité' : 1 2 3

Page 26: Codage des voisinages et parcours en largeur en temps O(n) des graphes d'intervalles et de permutation

BFS dans les graphes d'intervalles

12 3

123 6 5 4

7

π : 2g 3g 1g 1d 6g 6d 5g 2d 4g 3d 7g 5d 4d 7d

père courant : 2borne droite : 4456priorité' : 1 2 3

Page 27: Codage des voisinages et parcours en largeur en temps O(n) des graphes d'intervalles et de permutation

BFS dans les graphes d'intervalles

12 3

123 6 5 4

7

π : 2g 3g 1g 1d 6g 6d 5g 2d 4g 3d 7g 5d 4d 7d

père courant : 4borne droite : 4456priorité' : 1 2 3 4

Page 28: Codage des voisinages et parcours en largeur en temps O(n) des graphes d'intervalles et de permutation

BFS dans les graphes d'intervalles

12 3

123 6 5 4

7

π : 2g 3g 1g 1d 6g 6d 5g 2d 4g 3d 7g 5d 4d 7d

père courant : 5borne droite : 4456priorité' : 1 2 3 5 4

Page 29: Codage des voisinages et parcours en largeur en temps O(n) des graphes d'intervalles et de permutation

BFS dans les graphes d'intervalles

12 3

123 6 5 4

7

π : 2g 3g 1g 1d 6g 6d 5g 2d 4g 3d 7g 5d 4d 7d

père courant : 5borne droite : 7456

7

priorité' : 1 2 3 5 4

Page 30: Codage des voisinages et parcours en largeur en temps O(n) des graphes d'intervalles et de permutation

BFS dans les graphes d'intervalles

12 3

123 6 5 4

7

π : 2g 3g 1g 1d 6g 6d 5g 2d 4g 3d 7g 5d 4d 7d

chaque borne visitée une seule fois : algorithme en O(n)456

7

Page 31: Codage des voisinages et parcours en largeur en temps O(n) des graphes d'intervalles et de permutation

BFS dans les graphes de permutation

Extension de l'algorithme :

• Exploration de π1 et π

2 vers la gauche et vers la droite

• Gestion plus complexe de la liste des parents visités

Page 32: Codage des voisinages et parcours en largeur en temps O(n) des graphes d'intervalles et de permutation

Des questions ?Merci pour votre attention !

Slides available at http://www.lirmm.fr/~gambette/RePresentations.php

Plus de détails dans :

• Christophe Crespelle et Philippe Gambette. Efficient Neighbourhood Encoding for Interval Graphs and Permutation Graphs and O(n) Breadth-First Search, Proceedings of the 20th International Workshop on Combinatorial Algorithms (IWOCA'09), LNCS 5874, p. 146-157.

• Christophe Crespelle et Philippe Gambette. O(n) Breadth First Search of Some Intersection Graph Classes. En préparation.

Page 33: Codage des voisinages et parcours en largeur en temps O(n) des graphes d'intervalles et de permutation

BFS dans les graphes d'intervalles

12 3

123 6 5 4

7

π : 2g 3g 1g 1d 6g 6d 5g 2d 4g 3d 7g 5d 4d 7d

père courant : 3borne droite : 3priorité' : 1

Page 34: Codage des voisinages et parcours en largeur en temps O(n) des graphes d'intervalles et de permutation

Une approche naturelle

• Graphes d'intervalles propres

• Graphes biconvexes

Généralisation, 2 paramètres :• autoriser plusieurs intervalles : contiguïté• autoriser plusieurs ordres : linéarité

Paramètres non bornés pour graphes d'intervalleset graphes de permutation :• contiguïté : Ω(log n)• linéarité : Ω(log n / log log n)

x

N[x]

x

N(x)

Page 35: Codage des voisinages et parcours en largeur en temps O(n) des graphes d'intervalles et de permutation

Des questions ?Merci pour votre attention !

Slides available at http://www.lirmm.fr/~gambette/RePresentations.php

Plus de détails dans :

• Christophe Crespelle et Philippe Gambette. Efficient Neighbourhood Encoding for Interval Graphs and Permutation Graphs and O(n) Breadth-First Search, Proceedings of the 20th International Workshop on Combinatorial Algorithms (IWOCA'09), LNCS 5874, p. 146-157.

• Christophe Crespelle et Philippe Gambette. O(n) Breadth First Search of Some Intersection Graph Classes. En préparation.

Page 36: Codage des voisinages et parcours en largeur en temps O(n) des graphes d'intervalles et de permutation

Contexte

Algorithmes sur les grands graphes

• Stockage du graphe en mémoire

• Requêtes sur le graphe

Encodage compact

Temps de réponse réduit

Bon encodage vis à vis des requêtes d'adjacence :Nombreuses classes de graphes d'intersection

Bon encodage vis à vis des requêtes de voisinage ?Encodage en O(n) avec requêtes de voisinage en O(d)pour graphes d'intervalles et graphes de permutation.→ extension aux graphes quelconques par complétion→ exploitation algorithmique de la structure des voisinages