Comment construire un graphe PERT minimal/How to construct a minimal PERT graph  

F. Sterboul
D. Wertheimer  

Published: February 1980
Translated: April 30, 2019

Reçu février 1979./Received February 1979.
Lien vers l’article original/Link to original paper
Université de Lille-I, Villeneuve-d’Ascq, France./Université de Lille-I, Villeneuve-d’Ascq, France.

Abstract

Nous donnons un algorithme permettant, pour un problème d’ordonnancement donné, de construire le graphe PERT ayant un nombre minimal de sommets. Cet article contient la preuve de la validité de l’algorithme, un example et des résultats numériques.

Mote clés: ordonnancement, graphe PERT minimal, algorithme de construction de graphes.

We give an algorithm for constructing, for a given project scheduling problem, the PERT graph having the smallest number of vertices. This paper contains a proof of the validity of the algorithm, an example and numerical results.

Keywords: scheduling, minimal PERT graph, graph construction algorithm.

Introduction/Introduction

Le problèmes d’ordonnancement sont définis par la donnée d’un certain nombre d’opérations (les tâches) et des contraintes de succession entre ces tâches (la tâche b ne peut commencer qu’après que la tâche a soit terminée), ainsi que les durées de chacune de ces tâches.

Scheduling problems are defined by data consisting of a certain number of operations (tasks) and constraints on the ordering of these tasks (task b can not start until task a has finished) as well as the duration of each of these tasks.

Définir un ordonnancement consiste à attribuer à chacune des tâches une date d’exécution de manière à ce que l’ensemble des tâches soit terminé au plus tôt. Une des méthodes pour résoudre ce problème est la méthode PERT [1, 2]. Le premier pas de cette méthode consiste à construire un graphe (graphe PERT ou américain) dont les arcs représentent les tâches et où les relations de succession entre les tâches sont traduites ainsi : b est successeur de a si et seulement si il existe dans le graphe un chemin dont le premier arc est a et le dernier b. La construction n’est en général possible que si l’on introduit de nouvelles tâches, dites virtuelles, de durée nulle.

Creating a schedule consists of assigning each task a date of execution so that all tasks are completed as early as possible. One of the methods for solving this problem is the PERT method [1, 2]. The first step of this method is to construction a graph (PERT or American graph) whose arcs represent the tasks and where the succession relations between tasks is translated as follows: b is the successor of a if and only if there exists a path in the graph whose first arc is a and last one is b. The construction is usually possible only if we introduce new tasks, called virtuals, that are of zero duration.

Kelley [3] note qu’il est avantageux pour réduire la longueur des calculs suivants de construire un graphe PERT ayant le nombre minimal possible de sommets.

Le problème ainsi posé par Kelley a été abordé avec plus ou moins de succès par un certain nombre d’auteurs:

Hayes [4] donne un ensemble de recettes pour construire un graphe PERT. Sa méthode ne produit pas, en général, le graphe minimal.

Dimsdale [5] propose un algorithme de construction du graphe PERT minimal.

Fisher, Liebman, Nemhauser [6] montrent que l’algorithme de Dimsdale est faux; ils en donnent un nouveau qui est exact; leur article ne contient pas de preuve mathématique conformément au style du journal (C.A.C.M.).

Cantor et Dimsdale [7] donnent, avec démonstration, un algorithme exact. Leur méthode qui s’applique à un problème qui englobe les problèmes d’ordonnancement, gagne en généralité mais donne lieu, pour notre cas particulier, à des calculs inutilement longs.

Syslo [8] cherche à minimiser le nombre des arcs virtuels ce qui est un autre problème.

Dans le présent article notre contribution est la suivante : comme dans [6] nous ne considérons que le problème d’ordonnancement (ceci implique en particulier que les relations de succession entre tâches réelles ne peuvent pas former de circuit). Nous reprenons certaines notions des articles ci-dessus ou nous en définissons d’autres qui sont voisines. Nous démontrons certaines propriétés (notamment le théorème 1) qui ont échappé aux auteurs précédents et qui permettent finalement de donner un algorithme de construction du graphe PERT minimal réduisant le nombre des calculs.

Kelley [3] notes that it is advantageous to reduce the length of the following calculations by constructing a PERT graph that has the minimal possible number of vertices.

The problem thus posed by Kelley has been addressed with varying degrees of success by a certain number of authors:

Hayes [4] gives a set of recipes for constructing a PERT graph. His method does not produce, in general, the minimal graph.

Dimsdale [5] proposes an algorithm for the construction of the minimal PERT graph.

Fisher, Liebman, Nemhauser [6] show that Dimsdale’s algorithm is false; they give a new one that is exact; their article does not contain a mathematical proof that complies with the journal style (C.A.C.M).

Cantor and Dimsdale [7] give, with demonstration, an exact algorithm. Their method, which applies to a problem that includes scheduling problems, works in general, but gives rise to unnecessarily long calculations for our particular case.

Syslo [8] tries to minimise the number of virtual arcs which is another problem.

In this article our contribution is as follows: as in [6] we only consider the scheduling problem (this implies in particular that the successive relations between real tasks can not form a circuit). We take up some notions from the above articles or we define other related ones. We demonstrate certain properties (in particular Theorem 1) that have escaped the previous authors and finally allow us to give an algorithm for the construction of the minimal PERT graph that reduces the number of calculations.

1 Notations et définitions/Notation and definitions

G = (X,U) graphe orienté dont X est l’ensemble des sommets et U l’ensemble des arcs.

(i,j) arc reliant le sommet i au sommet j.

u v indique qu’il existe un chemin dont le premier arc est u et dont le dernier arc est v.

i X on note :

𝒫 (i) = {j X : (j,i) U} 𝒬(i) = {j X : (i,j) U}, 𝒫 ̃(i) = {j X :  un chemin de j vers i}

Arc redondant : l’arc (i,j) est dit redondant s’il existe un chemin de longueur supérieure à un de i vers j.

Graphe arc-dual d’un graphe donné Soit G = (X,U) un graphe donné, sans circuit et sans arc redondant et soit H = (Y,V ) un graphe.

S’il existe une application f injective  : X V telle que j,i Xi 𝒫 ̃(j) ssi f(i) f(j), H sera dit graphe arc-dual de G par l’application f.

Remarque 1.1
(1)
H peut être un multigraphe.
(2)
H ne contient aucun circuit contenant au moins un arc de la forme f(i) car sinon la tâche i se succèderait à elle-même.
Graphe français. [9] Graphe américain Les données du problème d ’ordonnancement sont représentées par le graphe « français » G = (X,U), où les sommets représentent les tâches et où l’arc (i,j) appartient à U si et seulement si la tâche i précède immédiatement la tâche j. Le but du problème est donc de construire un graphe H arc-dual de G (H est le graphe PERT ou « américain »); on doit minimiser le nombre des sommets de H.

G = (X,U) is a directed graph where X is the set of vertices and U is the set of arcs.

(i,j): arc connecting the vertex i to vertex j.

u v indicates that there exists a path whose first arc is u and whose last arc v.

i X we note:

𝒫 (i) = {j X : (j,i) U} 𝒬(i) = {j X : (i,j) U}, 𝒫 ̃(i) = {j X :  a path from j to i}

Redundant arc: the arc (i,j) is said to be redundant if there exists a path of greater length than the one from i to j.

Dual-arc Graph of a given graph There exists a given graph G = (X,U) without circuits and without redundant arcs and there exists a graph H = (Y,V ).

If it exists, a injective map f : X V where j,i Xi 𝒫 ̃(j) iff f(i) f(j),, H is the dual-arc graph G on the mapping of f.

Remark 1.1
(1)
H is possible a multigraph.
(2)
H does not contain any circuit containing at least an arc of form f(i) because otherwise the task i would follow itself.
French graph. [9] American graph The data of the scheduling problem is represented by the "French" graph G = (X,U), where the vertices represent the tasks and where the arc (i,j) belongs to U if and only if task i immediately precedes task j. The aim of the problem is therefore to construct a dual-arc graph H of G (H is the PERT graph or "American"); we must minimise the number of vertices of H.

2 Construction/Construction

2.1 Graphe H0: construction et propriétés/H0 graph: construction and properties

A partir du graphe français G = (X,U), sans circuit et ne contenant aucun arc redondant on construit un graphe H0 = (Y 0,V 0) de la manière suivante:

  • pour chaque sommet i X, on définit deux sommets ai et bi,
  • on pose donc Y 0 = iX{ai}{bi};
  • V 0 est constitué des arcs (ai,bi) pour tout i X, ainsi que des arcs (bi,aj) si i 𝒫 (j) dans G.

Les arcs de la forme (ai,bi) seront dits réels et ceux de la forme (bi,aj) seront dits virtuels.

Posons f(i) = (ai,bi).

Proposition 1 H0 est graphe arc-dual du graphe G par l’application f.

Il est immédiat que f(i) f(j) ssi i 𝒫 ̃(j) et que f est une application injective.

Remarque 2.1.1
(a)
H0 ne contient aucun circuit.
(b)
H0 ne contient aucun arc redondant.
(c)
les différents chemins de H0 sont formés d’arcs alternativement réels et virtuels.
(d)
H0 contient 2 X sommets.

From the French graph G = (X,U) without circuits and not containing redundant arcs, we construct a graph H0 = (Y 0,V 0) in the following manner:

  • for each vertex i X, we define two vertices ai and bi,
  • we let Y 0 = iX{ai}{bi};
  • V 0 is made of arcs (ai,bi) for all i X, as well as arcs (bi,aj) if i 𝒫 (j) in G.

The arcs of the form (ai,bi) will be called real and those of form (bi,aj) will be called virtual.

Let f(i) = (ai,bi).

Proposition 1 H0 is the dual-arc graph of graph G with the mapping of f.

It follows that f(i) f(j)i 𝒫 ̃(j) and that f is an injective map.

Remark 2.1.1
(a)
H0 does not contain any circuits.
(b)
H0 does not contain any redundant arcs.
(c)
the different paths of H0 are made up of either real or virtual arcs.
(d)
H0 contains 2 X vertices.

2.2 Graphe H1: construction et propriétés/H1 graph: construction and properties

Dans le graphe H 0 on pose:

A = {ai},B = {bi}

et

ai R aj ssi 𝒫 (i) = 𝒫 (j), bi S bj ssi 𝒬(i) = 𝒬(j).

On vérifie aisément que les deux relations R et S sont des relations d’équivalence; soient ā0,,āL,b̄0,,b̄M les classes correspondantes sur A et B.

On appelle contraction de type 1 l’opération qui consiste dans H0 à contracter, en un sommet unique, tous les sommets d’une même classe.

In the graph H 0, we let

A = {ai},B = {bi}

and

ai R aj ssi 𝒫 (i) = 𝒫 (j), bi S bj ssi 𝒬(i) = 𝒬(j).

It is easy to verify that the two relations R and S are equivalence relations; ā0,,āL,b̄0,,b̄M are the corresponding classes on A and B.

We call type 1 contraction the operation that contracts all vertices of H0 of the same class to a single vertex.

Construction du graphe H1 = (Y 1,V 1) / Construction of H1 = (Y 1,V 1) graph

Dans le graphe H 0 on effectue toutes les contractions possibles de type 1 et l’on note H1 = (Y 1,V 1) le graphe obtenu.

L’application f induit une application de X V 1 que l’on continue à noter f, pour simplifier les notations. Les sommets de H1 seront notés ā1,,āL,b̄1,,b̄M.

Proposition 2 H1 est graphe arc-dual du graphe G par l’application f.

On vérifie aisément que les contractions de type 1 n’ont pas altéré les relations de succession et de non-succession du graphe H0. D’autre part f reste une application injective car si, par exemple, f(i) et f(j) ont, après contraction, même origine et même extrêmité, on les considère comme deux arcs différents. Au contraire si des arcs virtuels se trouvent doublés on ne les prend en compte qu’une seule fois.

Remarque 2.2.1.
(a)
H1 ne contient ni circuit ni arc redondant.
(b)
Comme dans H0, les chemins de H1 sont constitués alternativement d’arcs réels et virtuels.

In the graph H0, we perform all possible type 1 contractions and H1 = (Y 1,V 1) is recorded as the obtained graph.

The mapping f induces a mapping of X V 1 that we continue to note as f, to simplify the notation. The vertices of H1 will be noted as ā1,,āL,b̄1,,b̄M.

Proposition 2 H1 is an dual-arc graph of graph G with the mapping f.

It is easy to verify that the type 1 contractions do not alter the succession and non-succession relations of graph H0. On the other hand, f remains an injective map if, for example, f(i) and f(j) are, after contraction, same origin and same destination, they are considered two different arcs. Contrarily, if the virtual arcs are duplicated, they are only taken into account once.

Remark 2.2.1.
(a)
H1 does not contain any circuits or redundant arcs.
(b)
Like in H0, the paths of H1 are either real arcs or virtual arcs.

Définition d’un bon arc de H1/Definition of a good arc of H1

Un arc (b̄i,āj) est un bon arc de H1 ssi :

k,l X, k 𝒫 (j) l 𝒬(i) k 𝒫 ̃(l).

On appelle contraction de type 2 l’opération qui, dans H1, consiste à contracter, en un sommet unique, le sommet origine et le sommet extrêmité d’un bon arc.

Remarque 2.2.2 On vérifie aisément qu’une contraction de type 2 ne supprime aucune relation de succession entre arcs réels qui existait initialement. Remarque 2.2.3 On vérifie aisément que la définition d’un bon arc b̄i,āj est équivalente à la suivante:
k,l X, k 𝒫 ̃(j) l 𝒬(i) k 𝒫 ̃(l).

Théorème 1 Les bons arcs de H1 n’ont deux à deux aucun sommet commun.
(a)
Montrons que b̄i,āj et b̄i,āl ne peuvent pas être simultanément deux bons arcs de H1: (fig. 1).

Comme āj et āl sont deux sommets distincts de H1, on a 𝒫 (j)𝒫 (l), donc il existe un sommet h de G tel que, par exemple, h 𝒫 (l) et h𝒫 (j). Ceci se traduit dans H1 par l’existence de l’arc (b̄h,āl), alors qu’il n’existe pas d’arc (b̄h,āj).

Supposons que (b̄i,āl) soit un bon arc de H1. Alors h P(l) et j Q(i) implique h P̃(j). Compte tenu du fait que hP(j), il existe alors dans H1 un chemin dont le premier arc est f(h) et le dernier est f(j) et contenant au moins un autre arc réel. Soit f(e) l’arc de ce chemin tel que e P(j) dans G.

Supposons que l’arc (b̄i,āj) soit aussi un bon arc de H1. Alors, e P(j) et l Q(i) implique e P̃(l). D’où, dans H1 : f(e) f(l). Comme f(h) f(e), on a: f(h) f(l). Ceci implique que l’arc (h,l) est redondant dans G, contrairement à l’hypothèse.

(b)
On démontre de même que deux arcs (b̄i,āj) et (b̄h,āj) ne peuvent pas être simultanément deux bons arcs de H1.

An arc (b̄i,āj) is an good arc of H1:

k,l X, k 𝒫 (j) l 𝒬(i) k 𝒫 ̃(l).

We call contraction de type 2 an operation where, in H1, consists of contraction, in one unique vertex, the origin vertex and destination vertex of a good arc.

Remark 2.2.2 It can be easily verfied that a type 2 contraction does not remove any succession relation between real arcs that initially exist. Remark 2.2.3 It can be easily verified that the defiintion of a good arc b̄i,āj is equivalent to the following:
k,l X, k 𝒫 ̃(j) l 𝒬(i) k 𝒫 ̃(l).

Theorem 1 The good arcs of H1 do not have two common pairs of vertices.
(a)
Let us show that b̄i,āj and b̄i,āl can not simultaneously be two good arcs of H1: (fig. 1)

Since āj and āl are two distinct vertcies of H1, we have 𝒫 (j)𝒫 (l), so there exists a vertex h of G such that, for example, h 𝒫 (l) and h𝒫 (j). This is expressed in H1 by the existence of the arc (b̄h,āl), then the arc (b̄h,āj) does not exist.

Suppose that (b̄i,āl) is a good arc of H1. Then h P(l) and j Q(i) implies h P̃(j). Given the fact that hP(j), there then exists an path in H1 whose first arc is f(h) and last is f(j) and containing at least one other real arc. Let f(e) be the arc of this path such that e P(j) in G.

Suppose that the arc (b̄i,āj) is also a good arc of H1. Then, e P(j) and l Q(i) implies e P̃(l). Hence, in H1 : f(e) f(l). Since f(h) f(e), we have f(h) f(l). This implies that the arc (h,l) is redundant in G, contrary to the hypothesis.

(b)
We also show that two arcs (b̄i,āj) and (b̄h,āj) can not simultaneously be two good arcs of H1.


pict

Figure 1:

2.3 Graphe H2 : construction et propriétés/H2 graph : construction and properties

Construction du graphe H2 = (Y 2,V 2)/Construction of H2 = (Y 2,V 2) graph

Dans le graphe H1 = (Y 1,V 1) on effectue toutes les contractions possibles de type 2.

Soit H2 = (Y 2,V 2) le graphe obtenu.

Dans le but de simplifier les notations:

  • on continue à noter les sommets de H2 comme ceux de H1 ;
  • on continue à noter f l’application de X V 2 induite par f : X V 1.
PROPOSITION 3 : H2 est graphe arc-dual de G par l’application f.
(a)
Il est immédiat que f : X V 2 reste une application injective.
(b)
Montrons qu’il existe un chemin de f(e) vers f(k) si et seulement si e 𝒫 ̃(k):
(α)
e 𝒫 ̃(k) implique f(e) f(k): ceci résulte de la remarque 2.2.2;
(β)
f(e) f(k) implique e 𝒫 ̃(k): en effet, f(e) f(k) implique qu’il existe dans H2 un chemin dont le premier arc est f(e) et le dernier arc est f(k). A cause de la transitivité de la relation de succession, on peut supposer que les arcs de ce chemin entre f(e) et f(k) sont tous virtuels (fig. 2).

In the graph H1 = (Y 1,V 1) we perform all the possible type 2 contractions.

H2 = (Y 2,V 2) is the obtained graph.

In order to simplify the notation:

  • we continue to note the vertices of H2 as those of H1 ;
  • we continue to note the mapping f of X V 2 induced by f : X V 1.
PROPOSITION 3 : H2 is the dual-arc graph of G on the mapping of f.
(a)
It follows that that f : X V 2 remains an injective map.
(b)
We show that there exists a path from f(e) to f(k) if and only if e 𝒫 ̃(k):
(α)
e 𝒫 ̃(k) implies f(e) f(k): this follows from remark 2.2.2;
(β)
f(e) f(k) implies e 𝒫 ̃(k): indeed, f(e) f(k) implies that there exists in H2 a path whose first arc is f(e) and last arc is f(k). Because of the transitivity of the succession relation, we can suppose that the arc of this path between f(e) and f(k) are all virtual (fig. 2).


pict

Figure 2:

Les sommets intermédiaires c1,,cn proviennent de la contraction des bons arcs (b̄i1,āj1),, (b̄im,ājm),, (b̄in,ājn) de H1 (fig. 3).

The intermediate vertices c1,,cn from the contraction of the good arcs (b̄i1,āj1),, (b̄im,ājm),, (b̄in,ājn) of H1 (fig. 3).


pict

Figure 3:

Comme (b̄i1,āj1) est un bon arc, e 𝒫 (j1) et j2 𝒬(i1) implique e 𝒫 ̃(j2). Comme (bi2,aj2) est un bon arc, et d’après la remarque 2.2.3, e 𝒫 ̃(j2) et j3 𝒬(i2) implique e 𝒫 ̃(j3). On démontre ainsi de proche en proche que e 𝒫 ̃(jm) jusqu’à m = n, et finalement e 𝒫 ̃(k).

Montrons que, parmi les graphes arcs-duaux du graphe G,H2 a le nombre minimal de sommets. Ce sera une conséquence du théorème suivant.

Théorème 2 Soit H2 = (Y 2,V 2) le graphe arc-dual de G = (X,U) par l’application f construit précédemment et soit H = (Y,V ) un autre graphe arc-dual de G par l’application g. Alors il existe Y Y et une application surjective h de Y sur Y 2 telle que :
i X avec g(i) = (α,β) alors f(i) = [h(α),h(β)] avec α,β Y .

Démonstration : 1 Construction de h.

Soit i X, avec g(i) = (αi,βi) et f(i) = (āi,b̄i) on pose h(αi) = āi et h(βi) = b̄i.

2 Montrons que h est bien définie.

Soit j X,ji, avec g(j) = (αj,βj) et f(j) = (āj,b̄j); posons h(αj) = āj et h(βj) = b̄j

(a) Montrons que si αj = αi dans H alors āj = āi dans H2. Il faut donc montrer que 𝒫 (i) = 𝒫 (j) dans G. Soit k 𝒫 (i). Comme H est arc-dual de G, on a g(k) g(i). Comme g(i) et g(j) ont la même origine, on a g(k) g(j), d’où k 𝒫 ̃(j) dans G. Si on avait k𝒫 (j), il existerait un sommet l de G tel que l 𝒫 (j) et k 𝒫 ̃(l) (fig. 4).

Since (b̄i1,āj1) is a good arc, e 𝒫 (j1) and j2 𝒬(i1) implies e 𝒫 ̃(j2). Since (bi2,aj2) is a good arc, and according to remark 2.2.3, e 𝒫 ̃(j2) and j3 𝒬(i2) implies e 𝒫 ̃(j3). We thus prove step by step that e 𝒫 ̃(jm) up to m = n, and finally e 𝒫 ̃(k).

We show that, among the dual-arc graphs of G, H2 has the minimal number of vertices. This will be a consequence of the following theorem.

Theorem 2 Let H2 = (Y 2,V 2) be the dual-arc graph of G = (X,U) by the mapping f previously constructed and let H = (Y,V ) be another dual-arc graph of G by mapping g. Then there exists Y Y and and a surjective map h of Y on Y 2 such that:
i X with g(i) = (α,β) then f(i) = [h(α),h(β)] with α,β Y .

Demonstration : 1 Construction of h.

Let i X, with g(i) = (αi,βi) and f(i) = (āi,b̄i) we pose h(αi) = āi and h(βi) = b̄i.

2 Let us show that h is well-defined.

Let j X,ji, with g(j) = (αj,βj) and f(j) = (āj,b̄j); let us pose h(αj) = āj and h(βj) = b̄j

(a) Let us show that if αj = αi in H then āj = āi in H2. We must therefore show that 𝒫 (i) = 𝒫 (j) in G. Let k 𝒫 (i). Since H is a dual-arc of G, we have g(k) g(i). Since g(i) and g(j) have the same origin, we have g(k) g(j), hence k 𝒫 ̃(j) in G. If we had k𝒫 (j), there would exist a vertex l of G such that l 𝒫 (j) and k 𝒫 ̃(l) (fig. 4).


pict

Figure 4:

Comme ci-dessus, du fait que l 𝒫 (j) et que g(i) et g(j) ont la même origine, on a g(l) g(i), et l 𝒫 (i). L’arc (k,i) serait alors redondant dans G, contrairement à l’hypothèse. Donc k 𝒫 (j), et 𝒫 (i) = 𝒫 (j).

(b) On démontre de même que si βj = βi, alors b̄j = b̄i.

(c) Montrons que si βi = αj dans H alors b̄i = āj dans H2. Montrons d’abord que βi = αj dans H implique que i 𝒫 (j) dans G. En effet, on a g(i) g(j), d’où i 𝒫 ̃(j). Si on avait i𝒫 (j), il existerait e tel que e 𝒫 (j) et i 𝒫 ̃(e) dans G (fig. 5).

As above, since l 𝒫 (j) and since g(i) and g(j) have the same origin, we have g(l) g(i), and l 𝒫 (i). The arc (k,i) would then be redundant in G, contrary to the hypothesis. So k 𝒫 (j), and 𝒫 (i) = 𝒫 (j).

(b) We prove in the same way that if βj = βi, then b̄j = b̄i.

(c) Let us show that if βi = αj in H then b̄i = āj in H2. Let us first show that βi = αj in H implies that i 𝒫 (j) in G. Indeed, we have g(i) g(j), hence i 𝒫 ̃(j). If we had i𝒫 (j), there would exist e such that e 𝒫 (j) and i 𝒫 ̃(e) in G (fig. 5).


pict

Figure 5:

D’où, dans H, g(i) g(e) et g(e) g(j), ce que entraînerait l’existence dans H d’un circuit contenant l’arc réel g(e), contrairement à la remarque 1.1. On a donc i 𝒫 (j), donc (b̄i,āj) est un arc virtuel de H1.

Pour montrer que b̄i = āj dans H2, il reste donc à montrer que (b̄i,āj) est un bon arc de H1. Soit donc k 𝒫 (j) et l 𝒬(i). Alors, g(k) g(j) et g(i) g(l). Comme l’origine de g(j) est aussi l’extrémité de g(i), on a g(k) g(l), d’où k 𝒫 ̃(l).

Corollaire Le graphe H2 = (Y 2,V 2) a le nombre minimal de sommets parmi tous le graphes arcs-duaux de G. En effet d’après le théorème précédent :
Y 2 Y Y .

Hence, in H, g(i) g(e) and g(e) g(j) would entail the existence in H of a circuit containing the real arc g(e), contradicting remark 1.1. So we have i 𝒫 (j), so (b̄i,āj) is a virtual arc of H1.

To show that b̄i = āj in H2, it remains to show that (b̄i,āj) is a good arc of H1. So let k 𝒫 (j) and l 𝒬(i). Then, g(k) g(j) and g(i) g(l). Since the origin of g(j) is also the destination of g(i), we have g(k) g(l), hence k 𝒫 ̃(l).

Corollary The graph H2 = (Y 2,V 2) has the minimal number of vertices among all the dual-arc graphs of G. Indeed, according to the previous theorem:
Y 2 Y Y .

3 Algorithme/Algorithm

On décrit maintenant les constructions précédentes sous form algorithmique. Les sections 1, 2, et 3 correspondent à la construction de H0 et H1. La section 4 correspond à la détermination des bons arcs. La section 4.2 est facultative, mais permet une économie d’opérations quand elle vient à être utilisée. L’utilisation de la liste T dans 4.2 et 4.3 permet d’exploiter la propriété démontrée dans le théorème 1. La section 4.5 donne la description finale du graphe H2 cherché.

On suppose donné le graphe français G, done les arcs redondants ont été supprimés (par exemple en utilisant les parties I et II de l’algorithme donné dans [6]). Les sommets de G (les tâches) sont représentés par les entiers i = 1,,N. Pour tout i, on connait les listes 𝒫 (i), 𝒬(i), et 𝒫 ̃(i).

Algorithme : 1. On détermine la partition de {1,,N} en classe C1,,CL : i et j appartiennent à la même classe si seulement si 𝒫 (i) = 𝒫 (j). On dresse une liste i1,,iL constituée d’un représentant dans chaque classe.

2. On détermine la partition {1,,N} en classes D1,,DM i et j appartiennent à la même classe si et seulement si 𝒬(i) = 𝒬(j). On dresse une liste j1,,jM constituée d’un représentant dans chaque classe.

3. Pour tout l, 1 l L, on consitue la liste:

V (il) = {jm|jm 𝒫 (il), 1 m M}

et la liste:

V ̃(il) = {jm|jm 𝒫 (il), 1 m M}.

Pour tout m,1 m M, on constitue la liste:

W(jm) = {il|il 𝒬(jm), 1 l L}.

4. On pose m = 0. On utilise une liste T, indexée de 1 à M, vide au départ.

4.1 Augmenter m d’une unité; si m > M aller en 4.5.

Si W(jm) = aller en 4.1.

Si W(jm) = 1, soit {il} = W(jm), aller en 4.4.

4.2 Soit E = (V (s))sW(jm). S’il existe il W(jm) tel que V (il) = E et il ne figure pas dans T, alors aller en 4.4.

4.3 Soit F = (V ̃(s))sW(jm). S’il existe il W(jm) tel que V (il) F et il ne figure pas dans T, alors aller en 4.4, sinon aller en 4.1.

4.4 On pose T(m) = il.

Aller en 4.1.

4.5 L’ensemble des sommets du graphe cherché H2 est l’ensemble des entiers: {2j1,, 2jM}{2il+1|il ne figure pas dans T, 1 l L}.

L’ensemble des arcs des H2 est:

Arcs réels : Pour tout i {1,,N}, soient l et m tels que i Cl et i Dm:

  • arc(2il + 1, 2jm) si il ne figure pas dans T;
  • arc(2jk, 2jm) si il = T(k).

Arc virtuels : Pour tout m {1,,M} et tout il W(jm) :

  • Arc(2jm, 2il + 1) si il ne figure pas dans T;
  • arc(2jm, 2jk) si il = T(k),km.
Remarque 3.1 : On peut encore diminuer de façon appréciable les calculs, en réduisant, en cours d’algorithme, le nombre des éléments des ensembles W(jm),m = 1,,M, et V (il),l = 1,,L.

Pour cela il suffit de remarquer que, lorsque la section 4.2 est utilisée et qu’il existe il W(jm) tel que V (il) = E, il ne figurant pas dans T, alors les arcs (jk,is), jk V (il) {jm},is W(jm) {il}, deviennent redondants dans la contraction de type 2 relative au bon arc (jm,il). Il est alors possible de retirer:

is de W(jk) et jk de V (is), jk V (il) {jm} et is W(jm) {il}.

Une légère modification de la section 4.2 de l’algorithme permet de tenir compte de ces résultats.

We now describe the preceding constructions in algorithmic form. Sections 1, 2, and 3 correspond to the construction of H0 and H1. Section 4 corresponds to the determination of good arcs. Section 4.2 is optional, but allows an economy of operations when used. The use of the list T in 4.2 and 4.3 makes it possible to exploit the property demonstrated in Theorem 1. Section 4.5 shows the final description of the sought graph H2.

Suppose the given French graph G, such that the redundant arcs have been removed (for example using parts I and II of the algorithm given in [6]). The vertices of G (the tasks) are represented by the integers i = 1,,N. For all i, we know the lists 𝒫 (i), 𝒬(i), and 𝒫 ̃(i).

Algorithm : 1. We determine the partition of {1,,N} in class C1,,CL : i and j belong to the same class if and only if 𝒫 (i) = 𝒫 (j). We draw up a list i1,,iL consisting of one representative in each class.

2. We determine the partition {1,,N} in classes D1,,DM i and j belong to the same class if and only if 𝒬(i) = 𝒬(j). We draw up a list j1,,jM consisting of one representative in each class.

3. For all l, 1 l L, we build the list:

V (il) = {jm|jm 𝒫 (il), 1 m M}

and the list:

V ̃(il) = {jm|jm 𝒫 (il), 1 m M}.

For all m,1 m M, we build the list:

W(jm) = {il|il 𝒬(jm), 1 l L}.

4. We set m = 0. We use a list T, indexed from 1 to M, initially empty.

4.1 Increase m by one; if m > M go to 4.5.

If W(jm) = go to 4.1.

If W(jm) = 1, let {il} = W(jm), go to 4.4.

4.2 Let E = (V (s))sW(jm). If there exists il W(jm) such that V (il) = E and il does not appear in T, then go to 4.4.

4.3 Let F = (V ̃(s))sW(jm). If there exists il W(jm) such that V (il) F et il does not appear in T, then go to 4.4, otherwise go to 4.1.

4.4 We set T(m) = il.

Go to 4.1.

4.5 The set of vertices of the sought graph H2 is the set of integers: {2j1,, 2jM}{2il+1|il does not appear in T, 1 l L}.

The set of arcs of H2 is:

Real arcs : For all i {1,,N}, let l and m such that i Cl and i Dm:

  • arc(2il + 1, 2jm) if il does not appear in T;
  • arc(2jk, 2jm) if il = T(k).

Virtual arcs : For all m {1,,M} and all il W(jm) :

  • Arc(2jm, 2il + 1) if il does not appear in T;
  • arc(2jm, 2jk) if il = T(k),km.
Remark 3.1 : We can still appreciably reduce the computations, by reducing, during the course of the algorithm, the number of elements of sets W(jm),m = 1,,M, et V (il),l = 1,,L.

For this it suffices to remark that, when the section 4.2 is used and that there exist il W(jm) such that V (il) = E, il does not appear in T, then the arcs (jk,is), jk V (il) {jm},is W(jm) {il}, become redundant in the type 2 contraction relative to the good arc (jm,il). It is then possible to remove:

is of W(jk) and jk of V (is), jk V (il) {jm} and is W(jm) {il}.

A slight modification of section 4.2 of the algorithm allows for these results to be taken into account.

4 Exemple/Example

Soit le graphe G (fig. 6) dont les sommets, au nombre de neuf, sont numérotés de 1 à 9.

Let G be the graph (fig. 6) whose 9 vertices are numbered from 1 to 9.



1
2
3
4 1, 2, 3
5 1, 3
6 2, 3
7 4, 5
8 4, 5
9 6


iP(i)




1 4, 5
2 4, 6
3 4, 5, 6
4 7, 8
5 7, 8
6 9
7
8
9


iQ(i)



pict

Figure 6:

Déroulement de l’algorithme 1. Détermination des classes Ci.

Il y a six classes dont les représentants respectifs constituent la liste il,l = 1, 2,, 6.

Sequence of the algorithm 1. Determination of the classes Ci.

There are six classes that are respectively represented by the list il,l = 1, 2,, 6.








il 1 4 5 6 7 9
l 1 2 3 4 5 6







2. Détermination des classes Di.

Il y a six classes dont les représentants respectifs constituent la liste jm,m = 1, 2,, 6.

2. Determination of the classes Di.

There are six classes that are respectively represented by the list jm,m = 1, 2,, 6.








jm 1 2 3 4 6 7
m 1 2 3 4 5 6







3. Constitution des tableaux V,W,V ̃.

3. Establishment of tables V,W,V ̃.





i V (i) W(i) V ̃(i)




1 4, 5
2 1, 2, 3 4, 6 1, 2, 3
3 1, 3 4, 5, 6 1, 3
4 2, 3 7 2, 3
5 4 9 4, 1, 2, 3
6 6 6, 2, 3




4. Détermination des bons arcs:

  • m = 1,W(1) = {4, 5},E = {1, 3} = V (3) et i3 = 5. (b̄1,ā5) est un bon arc et l’on pose T(1) = 5.
  • m = 2W(2) = {4, 6},E = {2, 3} = V (4) et i4 = 6. (b̄2,ā6) est un bon arc et l’on pose T(2) = 6.
  • m = 3W(3) = {4, 5, 6}. Un seul bon arc est possible (b̄3,ā4) puisque 5 et 6 figurent dans le tableu T, mais 4 = i2 et E = {3}V (2), donc cet arc n’est pas un bon arc.
  • m = 4W(4) = {7} donc W(4) = 1. (b̄4,ā7) est un bon arc et l’on pose T(4) = 7.
  • m = 5W(5) = {9} donc W(5) = 1. (b̄5,ā9) est un bon arc et l’on pose T(5) = 9.
  • m = 6W(6) = {}.

4. Determining the good arcs:

  • m = 1,W(1) = {4, 5},E = {1, 3} = V (3) and i3 = 5. (b̄1,ā5) is a good arc and we set T(1) = 5.
  • m = 2W(2) = {4, 6},E = {2, 3} = V (4) and i4 = 6. (b̄2,ā6) is a good arc and we set T(2) = 6.
  • m = 3W(3) = {4, 5, 6}. Only one good arc is possible (b̄3,ā4) since 5 and 6 appear in table T, but 4 = i2 and E = {3}V (2), so this arc is not a good arc.
  • m = 4W(4) = {7} so W(4) = 1. (b̄4,ā7) is a good arc and we set T(4) = 7.
  • m = 5W(5) = {9} so W(5) = 1. (b̄5,ā9) is a good arc and we set T(5) = 9.
  • m = 6W(6) = {}.