Bonjour,

L'algorithme suivant permet d'ordonnancer un ensemble des taches j{ j1, j2, j3,.., jn} sur m machines{m1, m2} de façon à minimiser le temps la date de fin de la dernière tache. On donne la date début de chaque tache rj avec j varie de 1 à n, qj :dae de fin souhaitée avec j varie de 1 à n et pj : période d'éxécution de tache j avec j varie de 1 à n. J est l'ensemble des taches ordonnacées qui seront exécutées dans leur date. jR : l'ensemble de taches qui débutent l'ordonnancement. jQ: les taches qui seront placées en dernier. ù0 : la date sur la machine, j0 : la tache qui sera placé dans jR ou jQ selon la condition et σ: l'ordonnancement final optimal
Voici le pseudo-code de la première partie puis la deuxième partie en anglais




Je l'ai ré-écris ci-dessous en se basant sur son pseudo-code pour pouvoir l'implémenter en langage c.
Je suis débutant en matière d'algorithme.
J'aurais aimé savoir si mon algorithme est correcte? Y a t-il d'erreurs de forme ou autre?
Par avance, merci
Code : 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
Entrées : pj,rj,qj, j0 appartient à {j1, .., jm}, u0
Sorties : s
 
début
  J = 0, jR= 0 et jQ=0
  Tant que | J | => m faire  
    Si rj0+ pj0  <= rj(n+1)   alors   J  =  J \{ j0} &&  jR= jR U j0
    Sinon  
      Si qj0+ pj0  <= qj(n+1)   alors   J  =  J \{j0} } && jQ= jQU j0
      Fin si
    Fin si
  Fin tant que
  u0 = min ui (  s  )
  Si  jQ #0
    Si pj0 + qj0 =max(pj + qj) alors
      jQ=j0
      u0 =max(u0,rj0)+pj0
      s=s-1
    Fin si
  Fin si
  u0 = min ui(    s   )
  Si jR#0
    Si pj0+rj0=max(pj +rj) alors
      jR=j0
      u0 =max(u0,qj0)+pj0
      s=s-1
    Fin si
  Fin si