专利汇可以提供Procédé de décompilation pour la réalisation de graphes au moyen d'un ordinateur专利检索,专利查询,专利分析的服务。并且L'invention concerne un procédé de décompilation incrémentale pour la réalisation de graphes au moyen d'un ordinateur relié à un écran de visualisation. Il comporte les étapes suivantes :
définir et enregistrer en mémoire une structure de donnée décrivant tout graphe à toutes les étapes de sa création sous la forme d'une structure arborescente ;
établir une table de correspondance entre la représentation interne arborescente dont les sommets sont des structures syntaxiques décrite dans la structure de donnée et sa représentation graphique externe sur l'écran dans laquelle chaque élément du graphe est repéré par rapport à des zones de l'écran résultant d'un découpage matriciel en lignes et colonnes ;
procéder à la réalisation effective du graphe en effectuant des opérations d'insertion et/ou de destruction successives d'éléments définis dans la structure de donnée, ces insertions et/ou destructions se faisant dans les zones, désirées de l'écran par des opérations successives de décalages des éléments du graphe situés au-delà des zones dans lesquelles se trouve l'élément à insérer ou à détruire, de telle sorte que les modifications ne concernent que la partie à redessiner.
afficher le graphe au fur et à mesure de sa construction et de ses modifications,
mettre à jour la description interne et la table de correspondance.
Application à la réalisation de graphes.,下面是Procédé de décompilation pour la réalisation de graphes au moyen d'un ordinateur专利的具体信息内容。
La présente description concerne un procédé de décompilation pour la réalisation de graphes au moyen d'un ordinateur notamment pour la représentation d'un graphe orienté structuré.
On utilise dans de nombreux domaines des langages dits "orientés". Ces langages sont des langages développés pour une application particulière. C'est le cas par exemple du langage de description et de spécification LDS, défini et normalisé par le CCITT. Ce langage est couramment employé dans le domaine des télécommunications et son utilisation tend à s'élargir à tout type d'application temps réel.
Dans de tels langages et tout particulièrement dans le langage LDS, on utilise des graphes orientés structurés. Un graphe structuré est un diagramme composé d'éléments en relation.
Lorsque des modifications du diagramme doivent être introduites, on fait appel à des procédés mis en oeuvre par l'ordinateur à partir duquel sont réalisés les graphes pour réorganiser le diagramme. Ces procédés sont des procédés d'édition structurelle qui connaissent la syntaxe de la représentation gardée en mémoire sous forme de représentation interne arborescente dont les sommets sont des structures syntaxiques.
Le procédé de décompilation mis en oeuvre par le décompilateur effectue la correspondance entre l'arbre de la représentation interne et la représentation graphique du diagramme à l'écran.
L'inconvénient des décompilateurs actuels est qu'ils effectuent le redessin complet du diagramme après chaque modification.
Une première conséquence est la gêne visuelle occasionnée. En effet, les procédés classiques consistent à effacer tout le dessin et à le faire réapparaître à l'écran avec la correction. Or cette opération provoque un effet "flash" qui dérange visuellement et qui ne se produirait pas si le diagramme était réalisé à la main (où dans ce cas, seule la partie utile serait redessinée).
Une seconde conséquence vient du fait que le temps du redessin augmente bien sûr avec la taille du diagramme. Cette conséquence interdit pratiquement l'édition de grands diagrammes et est très pénalisante du point de vue des performances.
La présente invention a pour but de remédier à ces inconvénients. L'invention, telle qu'elle est caractérisée dans les revendications, résout le problème consistant à proposer un procédé de décompilation qui est incrémental et qui permet la réalisation de graphes au moyen d'un ordinateur entraînant un minimum du redessin tout comme pourrait le faire un opérateur avec une gomme et un crayon.
Le procédé conforme à l'invention présente de ce fait le confort visuel recherché et une amélioration considérable du temps de réponse.
La présente invention a plus particulièrement pour objet un procédé de décompilation pour la réalisation de graphes au moyen d'un ordinateur, caractérisé en ce qu'il consiste à définir et enregistrer en mémoire des éléments utilisés pour la construction des graphes sous forme arborescente constitués de noeuds et de branches.
L'invention consiste en un procédé de décompilation pour la réalisation de graphes au moyen d'un ordinateur relié à un écran de visualisation caractérisé en ce qu'il comporte les étapes suivantes :
D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture de la description faite à titre illustratif et nullement limitatif en référence aux dessins annexés sur lesquels :
On définit tout d'abord ce que l'on entend par graphe orienté structuré. On peut se reporter au schéma de la figure l. Il s'agit d'un graphe composé de quatre types de noeuds nommés noeud simple, noeud terminateur, noeud convergent et noeud divergent.
Un noeud simple est un noeud ayant un unique arc sortant, ce noeud possédant un ou plusieurs arcs entrants (par exemple Bl, Dl, Gl).
Un noeud terminateur est un noeud sans arc sortant, ce noeud possédant un ou plusieurs arcs entrants (par exemple Hl, D3, B3).
Un noeud divergent est un noeud n'ayant que des arcs sortants et tel qu'il n'y ait aucun noeud commun entre les groupes de chemins engendrés (par exemple A). Un groupe de chemins est l'ensemble des chemins commençant par un arc sortant d'un noeud divergent. Par exemple, le groupe de chemins commençant par l'arc A→Bl est constitué de trois chemins :
(A, Bl, Cl, Dl, El, Fl, Gl, Hl)
(A, Bl, Cl, D2, E2, F2, Gl, Hl)
(A, Bl, Cl, D2, E3, F2, Gl, Hl)
Dans la suite, un groupe de chemins est appelé branche (notation A→Bl).
Un noeud convergent est un noeud ayant plusieurs arcs sortants et tel que les chemins engendrés :
Un point de convergence peut être un noeud simple (par exemple Gl), un noeud terminateur (par exemple D3) ou un noeud convergent.
Un graphe orienté structuré a les particularités suivantes :
La suppression d'un noeud convergent entraîne la destruction du sous-graphe de convergence. Seul subsiste le point de convergence qui se trouve raccordé aux prédécesseurs du noeud convergent détruit. En outre, les noeuds convergents possèdent la propriété suivante : Cl est un noeud convergent et Gl son point de convergence, si, comme c'est le cas sur la figure l, sur un chemin de Cl vers Gl, on a un noeud convergent D2 alors son point de convergence F2 se trouve avant Gl sur le chemin.
Les groupes de chemins sortant du noeud convergent sont également appelés branche (par exemple branche Cl→Dl, et branche Cl→D2).
3) Tous les chemins engendrés à partir de la racine finissent, soit par un noeud terminateur, soit par un noeud convergent sans point de convergence (dans ce cas, tous les chemins engendrés à partir du noeud convergent finissent par un terminateur).
Les différents noeuds introduits sont la base de structures qui s'imbriquent les unes dans les autres. On distingue les structures mères, les structures filles et les structures soeurs.
Une structure mère est une structure englobant une autre structure.
Une structure fille est une structure englobée par une autre structure.
Des structures soeurs sont des structures de même niveau.
Par exemple, une branche sortant du noeud divergent est :
Deux branches sortant d'un noeud convergent sont des structures soeurs.
Sur la figure l,
La figure 2 correspond à la représentation graphique à l'écran du graphe de la figure l conformément à l'invention.
Le graphe orienté structuré est représenté sous forme matricielle correspondant à un pavage de l'écran. Le pavage est obtenu par découpage de l'écran en zones rectangulaires régulières.
Les noeuds du graphe sont centrés dans un rectangle de base : les arcs sont représentés verticalement, horizontalement ou les deux à la fois.
On définit dans la suite quelques termes utilisés pour la construction d'un graphe orienté structuré. Cette construction met en oeuvre deux types de "composition graphique" à savoir : les arrangements horizontaux et les arrangements verticaux.
Les arrangements horizontaux correspondent aux branches sortant du noeud divergent ou d'un noeud convergent (rectangles placés côte à côte).
Les arrangements verticaux correspondent aux noeuds figurant sur une branche (rectangles placés les uns en-dessous des autres).
Un noeud est représenté dans une zone rectangulaire composée de pavés de base. Cette zone est définie par ses coordonnées dites ligne et colonne, par sa largeur dite x-noeud et sa hauteur dite y-noeud. Un noeud simple ou un noeud terminateur a toujours pour dimension x-noeud=l et y-noeud=l.
Le noeud divergent a pour dimension la taille du graphe.
Dans l'exemple de la figure 2, ligne (A)=l, colonne (A)=l, x-noeud (A)=7 et y-noeud(A)=8.
Un noeud convergent a pour dimension la taille du sous-graphe de convergence. Dans notre exemple, ligne (Cl)=3, colonne (Cl)=l, x-noeud(Cl)=3 et y-noeud(Cl)=4.
Une branche est également représentée dans une zone rectangulaire composée de pavés de base. Cette zone est définie par ses coordonnées dites ligne et colonne, par sa largeur dite x-branche et sa hauteur dite y-branche. Dans notre exemple, ligne (A→B2)=l, colonne (A→B2)=4, x-branche(A→B2)=3 et y-branche (A→B2)=3.
La représentation graphique définie précédemment engendre quatre formes d'arcs.
On appelle flèche horizontale un arc sortant du noeud divergent ou d'un noeud convergent. Ces arcs sont caractérisés par :
Leurs coordonnées :
colonne d'arrivée, "colonne"
ligne d'arrivée, "ligne"
Leur longueur, "x-taille"
Dans l'exemple précédent, la flèche horizontale A→Bl a pour coordonnées colonne=l ; ligne=2 ; et pour longueur x-taille=0. La flèche horizontale D2→E3 a pour coordonnées colonne=3 ; ligne=5 ; et pour longueur x-taille=l. La flèche horizontale A→B3 a pour coordonnées colonne=7, ligne=2 et x-taille=3.
On appelle flèche normale la .représentation graphique d'un arc sortant d'un noeud simple et entrant sur un noeud simple ou un noeud terminateur autre qu'un point de convergence. Ces arcs sont caractérisés par :
Leurs coordonnées :
colonne d'arrivée, "colonne"
ligne d'arrivée, "ligne"
Par exemple, la flèche normale El→Fl a pour coordonnées colonne=l ; ligne=6.
La représentation graphique des arcs entrant sur un point de convergence est morcelée selon les chemins aboutissant au point de convergence. Ainsi, sur l'exemple précédent, l'arc allant de E3 vers F2 ne sera représenté graphiquement que par le trait vertical-horizontal allant de E3 jusqu'à la flèche E2→F2 puisque la flêche figure déjà dans l'arc E2→F2 On est donc amené à définir deux notions :
Une petite flèche est caractérisée par :
ses coordonnées :
colonne d'arrivée, "colonne"
ligne d'arrivée, "ligne"
Un lien est caractérisé par :
ses coordonnées :
colonne de départ, "colonne"
ligne de départ, "ligne"
son étendue :
sa hauteur, "y-taille"
sa largeur, "x-taille"
On distingue deux types de liens : les liens horizontaux et les liens verticaux-horizontaux.
Un lien vertical-horizontal est associé aux chemins qui ne finissent pas par un noeud terminateur.
Dans l'exemple précédent, l'arc C2→D3 est composé d'un lien vertical-horizontal et d'une petite flèche. La petite flèche a pour coordonnées : colonne=4 ; ligne=4. Le lien a pour coordonnées : colonne=4 ; ligne=3 ; et pour étendue x-taille=0 ; et y-taille=0. Les caractéristiques du lien associé à C4 sont : colonne=6 ; ligne=3 ; x-taille=l ; et y-taille=0.
Un lien horizontal est associé à un chemin qui vérifie les trois conditions suivantes :
Dans l'exemple précédent, le lien horizontal C3→D3 a pour coordonnées: colonne=5 ; ligne=3 ; et pour étendue x-taille=l ; et y-taille=0.
Pour chaque noeud convergent, on remarque les points suivants :
Si tous les chemins finissent par un noeud terminateur, il n'y a pas de petite flèche.
Dans le cas contraire, il y a une, et seulement une, petite flèche, construite dès qu'un chemin ne se finit pas par un terminateur.
Conformément à l'invention, le procédé permet de minimiser le redessin en cas de modification. Le procédé décrit ci-après permet de calculer les parties du graphe touchées par une modification, c'est-à-dire conformément à l'invention les parties à déplacer ;
Comme cela sera détaillé dans la suite, le procédé permet, malgré la complexité des imbrications de structures et notamment des sous-graphes de convergence de ne modifier le graphe que localement.
On distingue deux types de modifications :
Toute modification a des répercussions sur la structure englobante, 'c'est-à-dire celle qui contient l'élément à détruire ou celle qui contient l'élément référence par rapport auquel on fait l'insertion. Ces modifications peuvent se répercuter au niveau supérieur. Le procédé de décompilation incrémentale réalise les modifications de proche en proche, c'est-à-dire de structure englobante en structure englobante, jusqu'à la non évolution de certains paramètres (détaillés dans la suite) et au plus jusqu'au noeud divergent.
Le procédé de décompilation va maintenant être décrit dans ses étapes principales puis de façon détaillée à partir d'exemples donnés.
Ce procédé est susceptible d'être mis en oeuvre par tout type d'ordinateur avec lequel on cherche à réaliser et à modifier un graphe orienté structuré utilisé notamment par le langage de description et de spécification LDS.
Le procédé consiste à définir une structure de donnée qui décrit tout graphe d'état sous la forme d'une structure arborescente (fig. l).
Cette structure est enregistrée en mémoire dans l'ordinateur ou microordinateur (non représenté). Il s'agit de la représentation interne du graphe. Le procédé consiste ensuite à établir une correspondance entre cette structure arborescente et une représentation externe. Cette représentation exerne est l'image de l'arbre obtenue à l'écran du microordinateur.
Une table de correspondance biunivoque est donc enregistrée. Dans le cas du langage LDS, cette table contient les différents noeuds (start., stop, state, task , decision) correspondant aux noeuds de l'arbre, les liens entre eux et leur emplacement défini par rapport à un découpage matriciel de l'écran.
Chaque état LDS (noeud divergent de l'arbre) est centré dans un pavé de l'écran. Le pavage résulte d'un découpage en zones régulières (zones rectangulaires par exemple).
Les arcs sont représentés verticalement et/ ou horizontalement et appartiennent à une ligne ou à une colonne de l'écran.
La table de correspondance comporte également l'identification complète des éléments. Cette identification se fait par une description sur la nature de l'élément, la colonne, la ligne, les tailles horizontale et verticale, le type et la taille des flèches, le lien s'il s'agit d'une branche de décision (noeud convergent). Un lien est décrit par ses coordonnées (ligne et colonne de départ) ainsi que par son étendue dans le sens vertical et horizontal (largeur et hauteur).
La réalisation effective d'un graphe est obtenue par des opération d'insertion et/ou de destruction successives des éléments choisis par l'utilisateur.
Ces opérations d'insertion ou de destruction sont effectuées en réalisant des décalages de position pour les éléments existants qui sont situés au-delà de l'élément à détruire ou à insérer.
Pour réaliser cette opération, l'opérateur dispose d'un périphérique d'entrée/sortie, par exemple "une souris" et réalise par pointage sur l'écran le choix de l'opération (destruction) et l'élément à détruire.
Le procédé se déroule alors de la manière suivante :
La détermination de la structure englobante consiste à déterminer la structure branche qui contient la branche ou le noeud à détruire et sa structure mère.
Les opérations de détermination de la structure englobante et de détermination des décalages sont itératives et s'arrêtent lorsque les déplacements à effectuer sont nuls et au plus tard lorsque l'on est remonté jusqu'à la racine de l'arbre (soit jusqu'au noeud divergent).
La destruction d'un élément du graphe consiste donc à effectuer des étapes de déplacements de la droite vers la gauche (appelés déplacements à gauche ou déplacements horizontaux) et des étapes de déplacements de bas en haut (appelés déplacements en haut ou déplacements verticaux).
Si l'on considère l'exemple donné à la figure 3, la destruction de la branche G3→H3 va conduire, dans une première étape, au déplacement à gauche de la branche G3→H4. Ces modifications entraînent, dans une deuxième étape, un déplacement en haut du noeud Jl car les deux branches restantes (G3→H2 et G3→H4 ont une longueur inférieure à celle de la branche détruite. Dans une troisième étape, on a un déplacement à gauche de la branche E3→F3, et un déplacement en haut du noeud Kl. Enfin, dans une dernière étape, on a un déplacement en haut du noeud Ll et pas de déplacement à gauche de la branche A→B3 (en raison de la largeur du noeud convergent C2). Le résultat final est donné à la figure 5. La figure 4 montre les différentes étapes du calcul qui seront détaillées dans la suite.
A chaque étape on considère les deux structures :
Au départ, la structure branche est :
A l'étape suivante, la structure branche est la branche sur laquelle se trouve la structure mère de l'étape précédente qui devient la structure fille. L'arrêt des modifications se produit lorsque les déplacements horizontaux et verticaux sont nuls, ou lorsque la structure mère est le noeud divergent.
Dans l'exemple de la figure 3, on a quatre étapes qui sont les suivantes :
La structure branche est la branche G3 →H3 et la structure mère est le noeud convergent G3.
La structure branche est la branche F2→G3 et la structure mère est le noeud convergent F2.
La structure branche est la branche E3→F2 et la structère mère est le noeud convergent E3.
La structure branche est la branche A→B2 et la structure mère est le noeud divergent A.
A chaque étape, les modifications sont faites en fonction des modifications à l'étape précédente. Pour chaque étape, on calcule la valeur des déplacements à effectuer (déplacement horizontal et déplacement vertical) et la valeur de deux régions rectangulaires à déplacer (une région à droite et une région en bas). Le déplacement horizontal agit sur la région à droite. Le déplacement vertical agit sur la région en bas.
Les régions à droite et en bas sont définies par leurs coordonnées (colonne et ligne du pavé en haut et à gauche de la région), leur hauteur et leur largeur.
Lorsque le déplacement horizontal est nul, la région à droite n'est pas calculée. Lorsque le déplacement vertical est nul, la région en bas n'est pas calculée.
Le déplacement horizontal est nommé x-depl. Le déplacement vertical est nommé y-depl.
La valeur des déplacements initiaux et de la région en bas initiale dépend du type de destruction :
ligne=ligne(structure branche)+y-branche (structure branche)
colonne=colonne (structure branche)
largeur=x-branche (structure branche)
hauteur=y-noeud (structure mère)- y-branche (structure branche)-l.
- x-branche (structure branche))
ligne=ligne (noeud)+y-noeud (noeud)
colonne=colonne (structure branche)
largeur=x-branche (structure branche)
hauteur=y-noeud (structure mère)- Σ (y-noeud, noeud ε structure branche, et à partir du noeud suivant le noeud modifié)-l.
Pour les étapes suivantes, quel que soit le type de destruction, et de plus, à l'initialisation en ce qui concerne la région à droite, on a :
- y-noeud (structure mère)+l)
- x-branche (structure branche)
ligne=ligne (structure mère)
colonne=colonne (structure branche)+x-branche (structure branche)
largeur=si il existe une branche à droite de la structure branche
alors colonne (structure mère)+x-noeud
(structure mère)-colonne (branche à droite).
sinon 0
hauteur=y-noeud (structure mère)
ligne=ligne(structure fille)+y-noeud(structure fille)- y-depl
colonne=colonne(structure branche)
largeur=x-branche(structure branche)
hauteur= (y-noeud, noeud (structure branche et noeud suivant la structure fille)
Le traitement des flèches consiste à modifier :
pour toute branche à droite bi
colonne (bi)=colonne (bi)+x-depl
En cas de destruction d'une branche, et uniquement à la première étape
x-taille (branche-à-droite)=x-taille (structure branche).
Dans tous les autres cas :
x-taille (branche-à-droite)=
x-taille (branche-à-droite)+x-depl
Le traitement de liens : Ce cas concerne les noeuds convergents. L'analyse du noeud se fait à travers toutes ses branches (bi) et de droite à gauche (bi, i=l à n, l représentant la branche la plus à droite). Les liens sont calculés à chaque étape.
Trois cas différents peuvent se présenter :
La branche bi n'a pas de lien :
Le dernier noeud de la branche bi est un terminateur et il n'y a pas de liens à droite (toutes les branches à droite de bi finissent par un noeud terminateur).
Dans ce cas, aucune information n'est calculée.
La branche bi a un lien horizontal :
Le dernier noeud de la branche bi est un terminateur et il y a au moins un lien à droite (au moins une des branches à droite de bi ne se finit pas par un terminateur ).
Dans ce cas, il faut calculer les coordonnées de départ du lien et son étendue.y-taille(bi) dans un lien horizontal est toujours=0.
colonne=colonne(bi)
ligne=ligne(structure mère)+y-noeud(structure mère)-l
x-taille = x-branche(branche à gauche(bi+l))
s'il y a une branche à gauche sinon 0
y-taille=0
La branche bi a un lien vertical-horizontal :
Le dernier noeud de la branche bi n'est pas un terminateur. Dans ce cas, il faut calculer les coordonnées de départ du lien et son étendue.
colonne=colonne(bi)
ligne=ligne(bi)+y-branche(bi)
x-taille = x-branche (branche à gauche (bi+l)) s'il y a une branche à gauche sinon 0
y-taille=y-noeud(structure mère)-y-branche(bi)-l
x-branche(structure branche)=x-branche(structure branche) + x -depl
y-branche(structure branche)=y-branche(structure branche)+ y-depl
y-depl=Min(0,Max (y-branche, branche ε structure mère)-y-noeud (structure mère)+l)
x-noeud(structure mère)=x-noeud(structure mère) + x-depl
y-noeud(structure mère)=y-noeud(structure mère) + y-depl
si les déplacements sont tous les deux nuls
alors arrêt
sinon
Deux exemples sont donnés dans la suite pour illustrer ce procédé, il s'agit d'un exemple concernant la destruction d'une branche et l'autre la destruction d'un noeud.
La figure 4 montre graphiquement les différents pas du procédé lors de la mise à jour du diagramme. Les régions I sont déplacées lors de la première étape, les régions II lors de la deuxième étape, les régions III lors de la troisième étape et les régions IV lors de la quatrième étape.
ligne=ligne (G3)=7
colonne=colonne (G3→H3) + x-branche (G3→H3)=5+l=6
largeur=colonne (G3) + x-noeud (G3)-colonne (G3→H4)=4+3-6=l
hauteur=y-noeud (G3)=3
ligne=ligne (G3→H3) + y-branche(G3→H3) =7+2=9
colonne=colonne (G3→H3)=5
largeur=x-branche(G3→H3)=l
hauteur=y-noeud (G3)-y-branche (G3→H3)-l =3-2-l=0
colonne (G3→H4)=6-l=5
x-taille(G3→H4)=x-taille (G3→H3)=l
(destruction d'une branche, lère étape)
x-branche(G3→H3)=l-l=0
y-branche (G3→H3)=2-2=0
y-depl= Min(0, max(l,0,l)-3+l)=-l
x-noeud(G3)=3-l=2
y-noeud(G3)=3-l=2
branche (G3→H4).(bl). Lien vertical horizontal
colonne=colonne(bl)=5
ligne=ligne(bl)+y-branche(bl)=7+l=8
x-taille=x-branche(G3→H2)=l
y-taille=y-noeud(G3)-y(branche (bl)-l=2-l-l=0
branche (G3→H2).(b2). Lien vertical horizontal
colonne=colonne(b2)=4
ligne=ligne(b2)+y-branche(b2)=7+l=8
x-taille=0 (pas de branche à gauche)
y-taille=y-noeud(G3)-y-branche (b2)-l=2-l-l=0
ligne=ligne(F2)=6
colonne=colonne
(F2→G3)+x-branche(F2→G3)=4+3=7
largeur=0 ; pas de branche à droite de F2→G3
hauteur=y-noeud (F2)=5
ligne=ligne (G3)+y-noeud (G3)+l=7+2+l=l0
colonne=colonne (F2→G3)=4
largeur=x-branche (F2→G3)=3
hauteur=y-noeud (Ji) = l
x-branche=3-l=2
y-branche=4-l=3
y-depl=Min(0, Max(l, 3)-5+l)=-l
x-noeud (F2)=4-l=3
y-noeud (F2)=5-l=4
branche (F2→G3).(bl). Lien vertical-horizontal
colonne=colonne (bl)=4
ligne=ligne(bl)+y-branche(bl)=6+3=9
x-taille=x-branche(F2→G2)=l
y-taille=y-noeud(F2)-y-branche(bl)-l=4-3-l=0
branche(F2)→G2). (b2). Lien vertical-horizontal
colonne=colonne(b2)=3
ligne=ligne(b2)+y-branche(b2)=6+l=7
x-taille=0 pas de branche à gauche de b2
y-taille=y-noeud(F2)-y-branche(b2)-l=4-l-l=2
x-depl= Min(0, Max(3, l)-4)=-l
ligne=ligne (E3)=5
colonne=colonne (E3→F2)+x-branche(E3→F2) = 3+4=7
largeur=colonne(E3)+x-noeud (E3)-colonne (E3→F3)=3+5-7=l
hauteur=y-noeud (E3)=7
ligne=ligne (F2)+ y-noeud (F2)-y-depl = 6+4+l=ll
colonne=colonne (E3→F2)=3
largeur=x-branche(E3→F2)=4
hauteur=y-noeud (Kl)=l
colonne (E3→F3)=7-l=6
x-taille(E3→F3)=4-l=3
x-branche=4-l=3
y-branche=6-l=5
y-depl=Min(0, Max(5, l)-7+l)=-l
x-noeud(E3)=5-l=4
y-noeud (E3)=7-l=6
branche (E3→F3).(bl). Lien vertical horizontal
colonne=colonne (bl)=6
ligne=ligne (bl)+y-branche (bl)=5+l=6
x-taille=x-branche(E3→F2)=3
y-taille=y-noeud(E3)-y-branche(E3→F3)-l=6-l-l=4
branche (E3→F2).(b2). Lien vertical horizontal
colonne=colonne(b2)=3
ligne=ligne(b2)+y-branche(b2)=5+5=l0
x-taille=0 (pas de branche à gauche)
y-taille=y-noeud(E3)-y-branche(E3→F2)-l =6-5-l=0
x-depl=Min(0, Max(l, 5, 4, l)-5=0
ne se calcule pas car x-depl=0
ligne=ligne (E3)+ y-noeud
(E3)+y-depl=5+6+l=l2
colonne=colonne (A→B2)=3
largeur = x-branche(A→B2)=5
hauteur=y-noeud(Ll) = l
x-branche=5+0=5
y-branche=ll-l=l0
x-noeud (A) = 9+0=9
y-noeud (A)= l2-l=ll
Néant : la structure mère est le noeud divergent
La figure 6 montre le noeud à détruire H3, la figure 7 donne les différents pas pour la mise à jour des diagrammes, la figure 8 donne le résultat obtenu. La région I est déplacée lors de la première étape, la région II lors de la deuxième étape, la région III lors de la troisième étape et la région IV lors de la quatrième étape.
Destruction du noeud H3 (figures 6, 7, 8).
x-depl= Min(0, Max(l-l)=0
y-depl=-I
on ne la calcule pas car x-depl=0
ligne=ligne (H3)+ Y-noeud(H3)=8+l=9
colonne=colonne (G3→H3)=5
largeur = x-branche (G3→H3)=l
hauteur = 3-(l)-l=l
x-branche=l+0=l
y-branche=2-l=l
y-depl= Min(0, Max(l, l, l)-3+l)=-l
x-noeud (G3)=3+0=3
y-noeud (G3)=3-l=2
branche (G3→H4).(bl). Lien vertical horizontal
colonne=colonne (bl)=6
ligne=ligne(bl)+ y-branche(bl)=7+l=8
x-taille=x-branche(G3→H3)=l
y-taille=y-noeud(G3)-y-branche(bl)-l=2-l-l=0
branche (G3→H3).(b2). Lien horizontal
colonne=colonne(b2)=5
ligne=ligne(G3)+y-noeud(G3)-l=7+2-l=8
x-taille=x-branche (G3→H2)=l
y-taille=0
branche (G3→H2).(b3). Lien vertical-horizontal
colonne=colonne(b3)=4
ligne=ligne(b3)+y-branche(b3)=7+l=8
x-taille=0 (pas de branche à gauche)
y-taille=y-noeud(G3)-y-branche(b3)-l = 2-l-l=0
x-depl= Min(0, Max(3,l)-3)=0
ne se calcule pas, car x-depl=0
ligne=ligne(G3)+y-noeud (G3)-y-depl=7+2 +l=l0
colonne=colonne (F2→G3)=4
largeur=x-branche (F2→G3)=3
hauteur=y-noeud(Jl)=l
x-branche=3+0=3
y-branche=4-l=3
y-depl= Min(0, Max(l, 3)-5+l)=-l
x-noeud=4+0=4
y-noeud=5-l=4
Traitement des liens
branche (F2→G3).(bl). Lien vertical-horizontal
colonne=colonne(bl)=4
ligne=ligne(bl)+y-branche(bl)=6+3=9
x-taille=x-branche (F2→G2)=l
y-taille=y-noeud(F2)-y-branche(bl)-l=4-3-l=0
branche(F2→G2).(b2). Lien vertical-horizontal
colonne=colonne(b2)=3
ligne=ligne(b2)+y-branche(b2)=6+l=7
x-taille=0 (pas de branche à gauche)
y-taille=y-noeud(F2)-y-branche(b2)-l=4 -l-l=2
x-depl= Min (0, Max (4,l)-4)=0
ne se calcule pas car x-depl=0
ligne=ligne (F2)+y-noeud(F2)-y-depl=6+4 +l=ll
colonne=colonne(E3→F2)=3
largeur=x-branche(E3→F2)=4
hauteur=y-noeud (Kl)=l
x-branche=4+0=4
y-branche=6-l=5
y-depl= Min(0, Max(5,l)-7+l)=-l
x-noeud (E3)=5+0=5
y-noeud (E3)=7-l=6
branche (E3→F3).(bl). Lien vertical-horizontal
colonne=colonne(bl)=7
ligne=ligne(bl)+y-branche(bl)=5+l=6
x-taille=x-branche(E3→F2)=4
y-taille=y-noeud (E3)-y-branche(bl)-l = 6-l-l=4
branche (E3→F2).(b2). Lien vertical-horizontal
colonne=colonne(b2)=3
ligne=ligne(b2)+y-branche (b2)= 5+5=l0
x-taille=0 (pas de branche à gauche)
y-taille=y-noeud (E3)+y-branche(b2)-l= 6-5-l=0
x-depl= Min(0, Max(l, 5, 5, l)-5)=0
ne se calcule pas car x-depl=0
ligne=ligne(E3+y-noeud(E3)-y-depl=5+6+l=l2
colonne=colonne (A→B2)=3
largeur=x-branche(A→B2)=5
hauteur=y-noeud(L)=l
x-branche=5+0=5
y-branche=ll-l=l0
y-depl= Min(0, Max (7, l0, 8)-l2+l)=-l
x-noeud (A) = 9+0=9
y-noeud (A) = l2-l=ll
Néant car la structure mère est le noeud divergent
L'insertion consiste à effectuer étapes par étapes des déplacements de la gauche vers la droite (appelés déplacements à droite ou déplacements horizontaux) et des déplacements de haut en bas (appelés déplacements en bas ou déplacements verticaux).
Dans le cas de la destruction, on a commencé par modifier la structure qui englobe l'élément à détruire, puis on a effectué les modifications et les déplacements de structure englobante en structure englobante, jusqu'à ce que les déplacements deviennent nuls ou au plus jusqu'à la racine.
Pour l'insertion, les déplacements vont en sens contraire. On réalise des déplacements de la structure englobante de plus haut niveau touchée par la modification, jusqu'à la structure qui contiendra l'élément à insérer.
L'opération d'insertion comporte donc deux phases distinctes :
La première phase consiste en un calcul des déplacements et des régions à déplacer et un calcul des modifications des structures branche et des structures mère.
Une fois la structure englobante de plus haut niveau déterminée, la deuxième phase consiste à redescendre dans les structures, à effectuer les déplacements puis à réaliser l'insertion.
La figure 9 montre un diagramme dans lequel on procède à l'insertion d'une branche E3→Z0.
On détermine, à chaque étape, deux structures :
Au départ, la structure branche est :
A l'étape suivante (ligne ≠0 et colonne ≠0), la structure branche est la branche sur laquelle se trouve la structure mère de l'étape précédente, qui devient alors la structure fille. On "redescend" lorsque les déplacements horizontal et vertical sont nuls ou lorsque le noeud divergent est atteint.
Dans l'exemple de la figure 9, on a deux étapes qui sont les suivantes :
La structure branche est la branche E3→Z0 et la structure mère est le noeud convergent E3.
La structure branche est la branche A→B2 et la structure mère est le noeud divergent A. La structure fille est le noeud convergent E3.
A l'aller, à chaque étape, on calcule la valeur des déplacements à effectuer (déplacement horizontal et déplacement vertical) et les régions à déplacer et on modifie les tailles des structures branche et mère. Au retour, à chaque étape, on effectue les déplacements, puis on réalise l'insertion.
La valeur des déplacements initiaux et de la région en bas initiale dépend du type d'insertion.
ligne=ligne(noeud à insérer)
colonne=colonne(structure branche)
largeur=x-branche(structure branche)
hauteur= Σ (y-noeud, noeud appartenant à la structure branche et suivant le noeud à insérer).
Dans les étapes suivantes, quel que soit le type d'insertion et de plus, à l'initialisation en ce qui concerne la région à droite, on a :
ligne=ligne(structure mère)
colonne=colonne(structure branche)+x-branche
(structure branche)
largeur=si il existe une branche à droite de la structure branche
alors colonne(structure mère)+x-noeud(structure mère)-colonne(branche à droite)
sinon 0
hauteur=y-noeud(structure mère).
ligne=ligne(structure fille)+y-noeud(structure fille)-y-depl
colonne=colonne(structure branche)
largeur=x-branche(structure branche)
hauteur= Σ (y-noeud, noeud ε structure branche et noeud suivant la structure fille).
Le traitement des flèches consiste à modifier :
En cas d'insertion d'une branche, et uniquement à la première étape :
x-taille(branche à droite)=x-taille(branche à insérer).
Dans tous les autres cas :
x-taille(branche à droite)=x-taille(branche à droite)+x-depl.
Le traitement de liens : Ce cas concerne les noeuds convergents. L'analyse du noeud se fait à travers toutes ses branches (bi) et de droite à gauche. Les liens sont calculés à chaque étape.
branches bi (bi,i=l à n, l représentant la branche la plus à droite).
Trois cas différents peuvent être rencontrés :
La branche bi n'a pas de lien :
Le dernier noeud de la branche bi est un terminateur et il n'y a pas de lien à droite (toutes les branches bi finissent par un noeud terminateur).
Dans ce cas, aucune information n'est calculée.
La branche bi a un lien horizontal :
Le dernier noeud de la branche bi est un terminateur et il y a au moins un lien à droite (au moins une des branches à droite de bi ne se finit pas par un terminateur). Dans ce cas, il faut calculer les coordonnées de départ du lien et son étendue. y-taille (bi) dans un lien horizontal est toujours = 0.
colonne=colonne(bi)
ligne=ligne (structure mère)+y-noeud(structure mère)-l)
x-taille=x-branche(branche à gauche (bi+l))
s'il y a une branche à gauche sinon 0
y-taille=0
La branche bi a un lien vertical-horizontal :
Le dernier noeud de la branche bi n'est pas un terminateur. Dans ce cas, il faut calculer les coordonnées de départ du lien et son étendue.
colonne=colonne(bi)
ligne=ligne(bi)+y-branche(bi)
x-taille=x-branche(branche à gauche (bi+l))
s'il y a une branche à gauche sinon 0.
y-taille=y-noeud(structure mère)-y-branche (bi)-l
x-branche(structure branche)=x-branche(structure branche+x-depl
y-branche(structure branche)=y-branche(structure branche)+y-depl
y-depl=Max(0, y-branche(structure branche)
-y-noeud(structure mère)+l)
x-noeud(structure mère)=x-noeud(structure mère)+x-depl
y-noeud(structure mère)=y-noeud(structure mère)+y-depl
si les déplacements sont tous les deux nuls
alors déplacement horizontal des régions à droite et déplacement vertical des régions en bas de la dernière structure mère à la première (c'est-à-dire celle qui contient la structure à insérer) puis insertion de la structure
sinon
x-depl=Max(0,x-noeud(structure fille)-x-branche(structure branche))
ligne=ligne (E3)=5
colonne=colonne(structure branche)=7
largeur=colonne (E3)+x-noeud(E3)-colonne(E3l F3) = 3+5-7=l
hauteur=y-noeud (E3)=7
colonne (E3→F3)=7+l=8
x-taille (E3→F3)=l
x-branche=0+l=l
y-branche=0+l=l
y-depl=Max(0,y-branche(E3→ZO)-y-noeud(E3)+l = Max(0,l-7+l)=0
x-noeud (E3)=5+l=6
y-noeud (E3)=7+0=7
colonne=colonne (E3→F3)=8
ligne=ligne (bl)+y-branche(bl)=5+l=6
x-taille=x-branche(E3→ZO)=l
y-taille=y-noeud(E3)-y-branche(E3→F3)-l=7-l-l=5
colonne=colonne (E3→ZO)=7
ligne=ligne (b2)+y-branche (b2)=5+l=6
x-taille=x-branche (E3→F2)=4
y-taille=y-noeud (E3)-y-branche(E3→ZO)-l =7-l-l=5
colonne=colonne (E3→F2)=3
ligne=ligne (b3)+ y-branche (b3)=5+6=ll
x-taille=0
y-taille=y-noeud (E3)-y-branche(b3)-l=7-6-l=0
x-depl=Max(0,x-noeud(E3)-x-branche(A→B2))= Max(0,6-5)=l
ligne=ligne (A)
colonne=colonne (A→B2)+x-branche (A→B2) = 3+5=8
largeur=colonne (A) + x-noeud(A)-colonne (A→B3)=l+9-8=2
hauteur=y-noeud(A)=l2
colonne (A→B3)=colonne (A→B3)+l = 8+l=9
x-taille(A→B3)=x-taille (A→B3)+l=5+l=6
x-branche(A→B2)=5+l=6
y-branche(A→B2)=ll+0=ll
y-depl=Max(0,y-branche(A→B2)-y-noeud(A) +l)=0
x-branche(A)=9+l=l0
y-branche(A)=l2+0=l2
x-depl= Max(0,x-noeud (ZO)-x-branche(G3→H3)) = Max(0,2-l)=l
ligne=ligne(G3)=7
colonne=colonne(G3→H3)+x-branche(G3→H3) = 5+l=6
largeur=colonne(G3)+x-noeud(G3)-colonne(G3→H4) = 4+3-6=l
hauteur=y-noeud(G3)=3
ligne=ligne(Z0)=9
colonne=colonne(G3→H3)=5
largeur=x-branche(G3→H3)=l
hauteur=y-noeud(Il)=l
colonne(G3→H4)=6+l=7
x-taille(G3→H4)=x-taille(G3→H4)+x-depl =l+l=2
x-branche(G3→H3)=l+l=2
y-branche(G3→H3)=2+2=4
y-depl=Max(0,y-branche(G3→H3)-y-noeud(G3) +l) = Max(0,4-3+l)=2
x-noeud(G3)=3+l=4
y-noeud(G3)=3+2=5
colonne=colonne(bl)=7
ligne=ligne(bl)+y-branche(bl)=7+l=8
x-taille(G3→H4)=x-branche(G3→H3)=2
y-taille(G3→H4)=y-noeud(G3)-y-branche (bl)-l=5-l-l=3
colonne=colonne(b2)=5
ligne=ligne(b2)+y-branche(b2)=7+4=ll
x-taille(G3→H3)=x-branche(G3→H2)=l
y-taille(G3→H3)=y-noeud(G3)-y-branche(b2):l =5-4-l=0
colonne=colonne (b3)=4
ligne=ligne(b3)+y-branche(b3)=7+l=8
x-taille(G3→H2)=0 (pas de branche à gauche)
y-taille (G3→H3)=y-noeud(G3)-y-branche (b3)-l=5-l-l=3
x-depl=Max(0,x-noeud(G3)-x-branche(F2→G3)) = Max(0, 4-3)=l
ligne=ligne(F2)=6
colonne=colonne (F2→G3)+x-branche(F2→G3) =4+3=7
largeur=0 (pas de branche à droite)
hauteur=y-noeud(F2)=5
ligne=ligne(G3)+y-noeud(G3)-2=7+5-2=l0
colonne=colonne(F2→G3)=4
largeur=x-branche(F2→G3)=3
hauteur=y-noeud(Jl)=l
pas de branche à droite
x-branche(F2→G3)=3+l=4
y-branche(F2→G3)=4+2=6
y-depl=Max(0,y-branche(F2→G3)-y-noeud
(F2)+l)
=Max(0,6-5+l)=2
x-noeud(F2)=4+l=5
y-noeud(F2)=5+2=7
colonne=colonne(bl)=4
ligne=ligne(bl)+y-branche(bl)=6+6=l2
x-taille(F2→G3)=x-branche(F2→G2)=l
y-taille(F2→G3)=y-noeud(F2)-y-branche(bl)-l = 7-6-l=0
colonne=colonne(b2)=3
ligne=ligne(b2)+y-branche(b2)=6+l=7
x-taille(F2→G2)=0 (pas de branche à gauche)
y-taille (F2→G2)=y-noeud(F2)-y-branche (b2)-l=7-l-l=5
x-depl= Max(0,x-noeud(F2)-x-branche(E3→F2)) = Max(0,5-4)=l
ligne=ligne(E3)=5
colonne=colonne (E3→F2)+x-branche(E3→F2)=3+4=7
largeur=colonne(E3)+x-noeud(E3)-colonne
(E3→F3) = 3+5-7=l
hauteur=y-noeud(E3)=7
ligne=ligne (F2)+y-noeud(F2)-2 = 6+7-2=ll
colonne=colonne(E3→F2)=3
largeur=x-branche(E3→F2)=4
hauteur=y-noeud(Kl)=l
colonne (E3→F3)=colonne (E3→F3)+l=7+l=8
x-taille(E3→F3)=x-taille(E3→F3)+x-depl = 4+l=5
x-branche(E3→F2)=4+l=5
y-branche(E3→F2)=6+2=8
y-depl=Max(O,y-branche(E3→F2)-y-noeud(E3) +l)=Max(0,8-7+l)=2
x-noeud(E3)=5+l=6
y-noeud(E3)=7+2=9
colonne=colonne(bl)=8
ligne=ligne(bl)+y-branche(bl)=5+l=6
x-taille(E3→F3)=x-branche(E3→F2)=5
y-taille(E3→F3)=y-noeud(E3)-y-branche (bl)-l=9-l-l=7
colonne=colonne(b2)=3
ligne=ligne(b2)+y-branche(b2)=5+8=l3
x-taille(E3→F2)=0 (pas de branche à gauche)
y-taille(E3→F2)-y-noeud(E3)-y-branche(b2)-l = 9-8-l=0
x-depl=Max(0,x-noeud(E3)-x-branche(A→B2)) =Max(0,6-5)=l
ligne=ligne(A)=l
colonne=colonne(A→B2)+x-branche(A→ B2)
=3+5=8
largeur=colonne(A)+x-noeud(A)-colonne(A→B3)
=l+9-8=2
hauteur=y-noeud(A)=l2
ligne=ligne(E3)+y-noeud(E3)-2=5+9-2=l2
colonne=colonne(A→B2)=3
largeur=x-branche(A→B2)=5
hauteur=y-noeud(Ll)=l
colonne(A→B3)=colonne(A→B3)+l=8+l=9
x-taille(A→B3)=x-taille(A→B3)+x-depl= 5+l=6
x-branche(A→B2)=5+l=6
y-branche(A→B2)=ll+2=l3
y-depl=Max(0,y-branche(A→B2)-y-noeud(A)+l) =Max(0,l3-l2+l)=2
x-noeud(A)=9+l=l0
y-noeud(A)=l2+2=l4
标题 | 发布/更新时间 | 阅读量 |
---|---|---|
基于区块链的物联网异构标识解析系统及方法 | 2020-05-11 | 129 |
动态ICD配置的总线模拟器系统 | 2020-05-12 | 1046 |
一种固定扎线装置及线束扎制的方法 | 2020-05-12 | 118 |
一种直流电源蓄电池组的管理控制方法及装置 | 2020-05-11 | 602 |
基于仙人掌树的数据可视化方法、装置、设备及存储介质 | 2020-05-11 | 979 |
一种地图底图集成方法 | 2020-05-08 | 178 |
基于树形拦截器的请求校验方法、装置、介质及电子设备 | 2020-05-11 | 524 |
基于增量技术智能站数据类型模板展示方法及系统 | 2020-05-12 | 944 |
一种基于浮动中心布局的网络拓扑图生成方法 | 2020-05-12 | 626 |
一种地铁线网图的自动生成方法及系统 | 2020-05-08 | 472 |
高效检索全球专利专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。
我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。
专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。