Précédent   Forum des professionnels en informatique > Bases de données > Décisions SGBD
Décisions SGBD Forum de décisions sur le choix en bases de données. Le Comparatif
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/06/2005, 17h52   #1
Débutant
 
Inscription : avril 2002
Messages : 43
Détails du profil
Informations forums :
Inscription : avril 2002
Messages : 43
Points : 15
Points : 15
Par défaut Déplacement d'un élément dans un arbre intervallaire

je cherche un algo pour déplacer une branche de mon arbre intervallaire mais je ne trouve pas . Je crois que ce qu'il faut c'est une insertion au préhalable pour ensuite faire une suppression mais il y a quelques soucis qui sont dur à expliquer , si quelqu'un a déjà réalisé une telle fonction , peut il m'aider ???
MERCI parcque là mon cerveau ne tourne plus rond depuis le temps que je cherche...
Larson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2005, 19h17   #2
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 959
Points : 17 793
Points : 17 793
Salut,

je veut bien t'envoyer la procédure adéquate, mais en mail privé.

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2005, 15h09   #3
Invité de passage
 
Inscription : juillet 2005
Messages : 1
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1
Points : 1
Points : 1
Par défaut Re: Déplacement d'un élément dans un arbre intervallaire

Citation:
Envoyé par Larson
je cherche un algo pour déplacer une branche de mon arbre intervallaire mais je ne trouve pas . Je crois que ce qu'il faut c'est une insertion au préhalable pour ensuite faire une suppression mais il y a quelques soucis qui sont dur à expliquer , si quelqu'un a déjà réalisé une telle fonction , peut il m'aider ???
MERCI parcque là mon cerveau ne tourne plus rond depuis le temps que je cherche...
Personnellement, j'ai opté pour la technique suivante...

Dans mon interface j'ai des fleches de classement, permettant de tasser une branche de 1 position vers la gauche ou vers la droite sur le même niveau...
Evidemment, l'ordre des noeuds déjà a la toute gauche ou déjà à la toute droite ne peuvent pas être modifié vers ces cotés...

Donc l'idee c'est de prendre les deux intervalles de chaque élément de la branche de droite à tasser vers la gauche et a leur soustraire le nombre d'élément multiplié par 2, présent dans l'arbre de gauche

et de faire le contraire

de prendre les deux intervalles de chaque élément de la branche de gauche à tasser vers la droite et a leur additionner le nombre d'élément multiplié par 2, présent dans l'arbre de droite

Pour éviter le chevauchement de valeur, je commence de droite vers gauche... auquel j'enleve la valeur de 100000 (si vos intervalles dépassent le million, alors ajouter quelques "0" a ce chiffre) aux intervalles de facon a obtenir des valeurs négatives... puis je fais de gauche a droite et dans un troisieme temps j'ajoute un million au valeur negative pour les rappatrier dans le pool exact d'intervalles.

J'ai utilisé l'algo suivant pour ordonner de gauche vers la droite...

pour la colonne de droite
[Nbr_BG_F est le nombre d'élément présent dans la colonne de gauche, J'ai ajouté un -1000000 pour "sortir" temporairement les donnees du set de data modifiable]
"Update data Set NFM_BG = (NFM_BG-"&(Nbr_BG_F*2)&")-1000000, NFM_BD = (NFM_BD-"&(Nbr_BG_F*2)&")-1000000 where NFM_BG>="&NFM_BG&" and NFM_BD<="&NFM_BD

Pour la colonne de gauche
[Nbr_BD_F est le nombre d'élément présent dans la colonne de Droite,
NFM_BG_F et NFM_BD_F sont les intervalles utilisé par la racine de l'intervalle de gauche]
"Update data Set NFM_BG = (NFM_BG+"&(Nbr_BD_F*2)&"), NFM_BD = (NFM_BD+"&(Nbr_BD_F*2)&") where NFM_BG>="&NFM_BG_F&" and NFM_BD<="&NFM_BD_F

Et la transformation finale de la colonne de droite
"Update data Set NFM_BG = NFM_BG+1000000, NFM_BD = NFM_BD+1000000 where NFM_BG<0"


Ont peut trouver les intervalles utilisé par la racine de l'intervalle de l'arbre de gauche en cherchant la donnee dont l'intervalle de droite est egale a (l'intervalle de gauche - 1) de notre donnee cible (l'arbre de droite)



....
Je me relis présentement, et je ne me trouve pas tres clair, mais l'essentiel a retenir c'est qu'il faut modifier les intervalles de la branche de gauche en aditionnant a ses intervalles le (nbr d'élément dans l'arbre de droite*2) et vice-versa pour la branche de droite (en soustrayant bien sur le nbr d'élément présent dans l'arbre de gauche*2)
jesus137 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2008, 15h57   #4
Membre éclairé
 
Homme Hervé
Inscription : octobre 2003
Messages : 858
Détails du profil
Informations personnelles :
Nom : Homme Hervé
Localisation : France

Informations professionnelles :
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : octobre 2003
Messages : 858
Points : 323
Points : 323
tu parles d'une procédure qui te permet de déplacer un sous arbre dans un arbre intervallaire. je cherche à faire cette fontion mais je n'y arrive pas. Pourrais-tu m'aider ?

Merci d'avance.
rvzip64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h09.


 
 
 
 
Partenaires

Hébergement Web