Vous êtes sur la page 1sur 59

Page |i

Epigraphe

Un problème sans solution est un problème mal posé.

"Albert Einstein"
P a g e | ii

Dédicace

A mes très chers parents Maurice MUKUANGALA DIAFUKA et


Gertrude LUMOKISA qui, inépuisablement, m'ont toujours soutenu. Vous qui
m'avez enseigné le sens de responsabilité, patience et persévérance dans le
travail. Que vous puissiez trouver dans ce travail de mémoire l'accomplissement
de votre idéal et de vos actions.
A mes frères et sœurs, Judson MUKUANGALA, Glorie DIAFUKA,
Euloge MUKUANGALA, Louange KUZOLANA et Grignon
MUKUANGALA, pour votre chaleureux amour, soutien et réconfort dans toutes
les circonstances.
A tous les miens.

Prince-Jobinick MUKUANGALA
P a g e | iii

Remerciements
Le présent travail n’aurait pas été possible sans l’aide, le soutien matériel
et
Spirituel ainsi que l’apport d’innombrables personnes envers qui, nous
manifestons notre gratitude et nos sincères remerciements.
A ce sujet, nous adressons à priori, notre action de grâce et louange à
Dieu Tout Puissant qui, par sa grâce, sa protection et son amour, nous a conduits
au terme de cette étape.
Ainsi, à la fin de la rédaction de notre Travail de mémoire, nous tenons à
remercier profondément le Professeur Ruffin-Benoit NGOIE MPOY et
l’Assistant Fabrice BONKILE qui l’ont dirigé, qui se sont dépensé corps et âme
pour la réalisation de ce dernier.
Nos remerciements vont aussi à tous les Professeurs, Chefs de Travaux
et Assistants de l’Institut Supérieur Pédagogique de Mbanza-Ngungu, en
général, et particulièrement ceux du Département de mathématique pour leur
encadrement : les Professeurs : OKITONYUMBE, OKITOWAMBA et Jean-
Charles MBUYI ; Les Chefs de Travaux : Jean-Pierre BAKODILA, Lesa NICE
et Les Assistants : Jean-Aimé SAKULU, Fabrice BONKILE, Jean NGUNDA,
Pamela MUKOKO et la sœur Pascaline.
Nous remercions également aux membres de notre famille, nos sœurs et
frères, cousines et cousins : Charmant MUKUANGALA, Trinite
MUKUANGALA, Divin MUKUANGALA, Magnificat MUKUANGALA,
Hyppo LUMOKISA, Nene, Nercy, Vij BAKUVUIDI, Lita LUMOKISA, Daniel
NTEKITA, Pysmol LUMOKISA, Damase BAKUVUIDI, Roland KAYI,
Laurentine KIANGEBENI, Ines NKITA, Glorieuse MAKANDA, Remy
LUMOKISA, Herline LUBOKILA, Verdon MUKUANGALA, Braham
MUKUANGALA, Remerdie, Ernest, Crijedie BAKUVUIDI, Tichick KAYI.
Nous tenons à remercier aussi toutes les personnes de l’Aumônerie
Catholique des Milieux Universitaires et Intellectuels de Mbanza-Ngungu,
notamment de l’Abbé aumônier Jean-Bruno NDIADIA, Père Victor
MAMPUYA, Père Blaise, Maitre Jacquarie PHAMBU, Assistante Blandine
NDOMBE, Junior PHAMBU, Gloire TUSAVUVU, Vylia BUABU, Benny
KILESA, Christine NSIMBA, Caroline LUKALU etc.

Nous remercions vivement nos condisciples de promotion qui ont aussi


contribués à la réalisation de ce travail, il s’agit de : Leaticia BAYUNDDILA,
Mercia MAKANZU, Glody MATEKA, Noellie MATONDO, Ronaldy
KUKOLELA.
Nous exprimons aussi notre reconnaissance à nos amis et connaissances avec
qui nous avons partagé des moments mémorables :Laurens SIWA, Nathan
P a g e | iv

DUKI, Jonathan MINSIENSI, Christ MBAKI, Vincent BULA, Jeancy


MALAMBU, Axel MAHONDA, Ruffin BAFINANGANA, Aristote YALA,
Joseph MAKUTA, Yansmie, Jubile LABILA, Pacifique LONDA, Glody SALU,
Ruben TUTONDELE, Tresor N’LEMVO, Espoir KANZA, Gabriel
MAVINGA, Djuly MAVAMBU, Didier NZAZI, Van MATOKO, Mercin
NSONI, Arristote YALA, Shodé, Pist PHAKU, Arristote NDANDI, Onesime et
Phine MBELA, Princellevie NDONGALA, Joyce NAVARO, Glodel
NDONGALA, Joyce LUSAKUENO, Dave KAZADI, Guydel MANSONI,
Melchi MADIMBULA, Hugor BAFUIDINSONI, Précieuse BANUINA,
Juvency NGUIZANI, Mardoché NGOMA, Patrick KADIAMBIKO, Glosel
MAKUIZA, Placide MBUANGA, Snec GIYOMA, Jessica
KALUMONIMOKO, Kelvie MATONDO, Emeraude BEKA, Nicolas MVEVO,
Jyspie MPOLO, Job ADALU, Plamedi NSAU, Riva NDANDI, Nivel DAGBIA,
Mavins MAVAMBU, Dornich MAWILA, Chrispin MUSENGA, Emeraude
BEKA, Euphresion BITOBO, Moise MPANZU, Belvie MOSENGO, Benjamin
TONDASE, Glory MASUNSA, Steve NZONZI, Regidi NGONGO, Nickel
BANDOMA, Percy MALONDA, Celcuis N’KANGA, NSIMBA.

Enfin que ce travail soit un modèle d’encouragement pour nos frères et


sœurs en général et en particulier l’I.S.P Dynastie.
Page |v

Liste des tableaux


 Tableau d’affectation hommes
 Tableau d’affectation femmes
 Tableau de matrice de classement
 Tableau des couples instables
 Tableau situation personnels
 Tableau etablissment horaire
 Tableau des agents
 Tableau de Groupe de vacation
 Tableau de Groupe de vacation traité
 Tableau de préférence des Agents
 Tableau de préférences des Groupes













P a g e | vi






 Liste des figures



 Figure 1 : Organigramme de Cerphytoco
 Figure 2 : Accueil de l’application
 Figure 3 : Menu planification
 Figure 4 : Menu Agent
 Figure 5 : Menu Planning
 Figure 6 : Impression planning


Page |1

 INTRODUCTION

1. Problématique

 La recherche opérationnelle fournit des techniques et des outils


mathématiques pour résoudre des problèmes de décision complexes. Elle permet
d'optimiser l'allocation des ressources limitées afin de maximiser les résultats. La
recherche opérationnelle permet de modéliser, analyser et améliorer les processus
d'affaires. Elle aide à identifier les goulots d'étranglement, à éliminer les inefficacités
et à optimiser les flux de travail.
 L'algorithme de mariage stable permet de faire des appariements justes et
équitables entre deux groupes d'individus. Il garantit que chaque personne est appariée
avec une autre personne de manière stable, c'est-à-dire qu'il n'y a pas de pair qui
souhaiterait se séparer pour être avec quelqu'un d'autre. L'algorithme de mariage stable
aide à réduire les conflits et les désaccords dans les situations d'appariement. En
trouvant une solution stable et compatible pour tous, il évite les scénarios où une ou
plusieurs personnes se sentent lésées ou insatisfaites de l'appariement. Cela peut avoir
un impact significatif sur la satisfaction des personnes impliquées et la réduction des
tensions.
 L'algorithme de mariage stable permet aussi de maximiser la
compatibilité entre les personnes appariées. En tenant compte des préférences
individuelles et en trouvant un appariement stable, il contribue à créer des relations
plus harmonieuses et à long terme. Cela peut s'appliquer non seulement aux relations
personnelles, mais aussi aux relations professionnelles, comme la formation de bonnes
équipes de travail ou la collaboration entre collègues.
 Le centre de santé Cerphytoco, est un centre qui exige la permanence des
agents pour la bonne prise en charge des patients. Sur ce, il organise trois vacations
d’horaire de permanence des agents. Mais le problème se pose lors de la mise en place
de cet horaire, ils ne savent pas précisément qui doit être à une vacation et qui doit être
à une autre vacation.
 Leur inquiétude se résume par les questions suivantes :
 Comment affecter un agent à une vacation de manière stable ?
 Est-ce possible d’automatiser ces affectations ?

2. Hypothèse

 Pour apporter une solution au problème que pose ce centre de santé, nous
supposons que les problèmes de mariage stable et l’algorithme de Gale-Shapley
régleront les problèmes évoqués ci-dessus.
Page |2

3. Objectif du travail

 L’objectif de ce travail est de permettre aux décideurs du centre de santé


Cerphytoco de trouver un appariement optimal des agents aux différents horaires de
permanence.

4. Méthodes et techniques

 La technique de documentation nous a permis l’accès aux notions


informatiques indispensables ; ces dernières ont été tirées dans les manuels mis à notre
disposition à partir des bibliothèques et aussi nous avons consulté d’autres documents
via internet.
 La technique d’interview nous a permis d’échanger des
informations et des points de vue avec les responsables du centre de santé, là où nous
avons choisi de faire notre recherche.

5. Subdivision du travail

 Hormis l’introduction et la conclusion générale, notre travail est


subdivisé en trois chapitres qui sont les suivants :
 Le premier chapitre est intitulé le problème de mariage stable ;
 Le deuxième chapitre est consacré sur le milieu d’étude ;
 Le troisième chapitre est consacré sur les bases de Java ;
 Le quatrième chapitre est intitulé Etablissement des horaires de permanence
des agents par l’algorithme de mariage stage, implémentation en Java : cas
du centre de santé Cerphytoco de Kisantu.












Page |3










 Chapitre premier
 PROBLEME DE MARIAGE
 I.0 Introduction
L'introduction du mariage stable se réfère à l'article de David Gale et
Lloyd Shapley publié en 1962, intitulé "College Admissions and the Stability of
Marriage" (Admissions universitaires et stabilité du mariage). Cet article a
introduit l'algorithme de Gale et Shapley, qui est utilisé pour résoudre des
problèmes d'appariement dans divers domaines, tels que les admissions
universitaires, le marché du travail, etc.
L’objectif principal de ce chapitre est de présenter le problème de mariage
stable, tel que décrit par Gale et Shapley, son histoire, sa problématique, ses
propriétés, ses premières solutions, … .
 I.1. Historique
David Gale est un mathématicien et économiste américain né le 13
décembre 1921 à New York et décédé le 07 mars 2008 à Berkeley.

Lloyd Shapley né le 02 juin 1923 à Cambridge, au Massachussetts et
décédé le 12 mars 2016, il est considéré par de nombreux experts comme le plus
grand théoricien des jeux depuis les travaux de Van Neumann et Morgenstern.

En 2012, il a reçu le « Prix Nobel d’économie », conjointement avec son
compatriote Alvin Roth. Ce qui récompense ses recherches sur la théorie des
jeux collaboratifs, qu’il avait notamment appliqué au problème de mariages
stables.

 David Gale avait formulé la conjecture selon laquelle il existe toujours un
appariement stable dans le problème du mariage et l’avait soumise à plusieurs
collègues. Lloyd Shapley fournit immédiatement une réponse constructive, sous
Page |4

la forme de l’algorithme d’acceptation différée, Gale et Shapley publièrent


ensemble le résultat dans American Mathematicale Monthly qui est une revue
des mathématiques.

 I.2. Problème classique
 Le problème des mariages stables consiste en la formulation des
couples entre n hommes et n femmes. Le couplage obtenu doit être
alors considéré satisfait aux termes du problème, c’est-à-dire stable
[Dumont, 1989].
 A l’origine, tel qu’élaboré par Gale et Shapley, ce problème
concerne de mariage générale une situation typique suivante :
 Un collège envisage de créer un ensemble de n demandeurs dont il
peut accepter qu’un quota de seulement q .

 Après évaluation des qualifications des demandeurs, le bureau des
admissions doit décider lesquels admettre. Mais le constat était que la
procédure qui offre l’admission aux q candidats les mieux qualifiés ne
sera pas généralement satisfaisant, car il n’y a pas moyen de savoir
avec exactitude si tous ceux à qui on a offert l’admission accepteront.
La raison est bien sûr que beaucoup de candidats postuleront et seront
admis parce qu’ils n’auront à accepter que leur premier choix. En
conséquent, pour qu’un collège reçoive q acceptations, il devra
généralement proposer d’admettre plus de q candidats. Le problème
est de déterminer combien et lesquels admettre afin d’éviter tout
changement de choix en cas d’une éventuelle offre intéressante. La
première exigence sur une affectation est qu’elle n’ait pas d’instabilité
[Gale & Shapley, 1962].

 I.3. Mariages stables
 Définition 1.1. (Affectation)
 Une affectation (des candidats aux lycées par exemples) sera appelée
instable s’il existe deux demandeurs α et β qui sont respectivement affectés aux
lycées A et B, bien que β préfère A à B et A préfère β à α [Gale & Shapley,
1962].
 Une affectation dans le contexte de l'algorithme de Gale et Shapley
fait référence à l'appariement entre les individus d'un groupe d'hommes et d'un
groupe de femmes. Chaque homme est affecté à une femme et vice versa.
Page |5

 Définition 1.2. (Affectation stable)


Une affectation stable est une affectation dont tous les demandeurs sont
satisfaits que toute autre affectation ; c’est-à-dire personne après un couplage
n’a intérêt de quitter son couple.
Une affection stable est un appariement final qui satisfait les deux
conditions énoncées précédemment : aucun individu ne préfère un autre membre
à son partenaire actuel, et il n'existe pas de pair d'individus qui préfèrent
mutuellement s'apparier plutôt que de rester avec leur partenaire actuel.
 Ceci soulève immédiatement la question mathématique suivante :
Sera-t-il possible de trouver une telle affectation ?

 En essayant de régler la question de l’existence des affectations
stables, Gale et Shapley ont été amenés à regarder d’abord un cas
particulier, dans lequel il y a le même nombre de candidats, que de
collèges et tous les quotas sont l’unité. Cette situation est bien sûr
hautement contre nature dans le contexte des admissions au collège
mais il y a une autre ‘histoire’ dans laquelle le problème ci-dessus
s’applique assez facilement. C’est l’histoire du mariage. [Gale &
Shapley, 1962]

 Dans les années 1887 existait un village qui prônait la conservation
de sa population en procédant par des méthodes spécifiques telles que
les filles et les garçons ne peuvent pas rester ensemble, dès qu’un
couple mettait au monde, on prenait l’enfant dès l’âge d’un an et on le
mettait ensemble avec d’autres enfants de même sexe que lui.
 Les notables du village suivaient l’évolution de ses enfants de telle
sorte que dès qu’il avait un des enfants (filles ou garçons) qui atteint
l’âge de procréer on lui trouvait un conjoint ou (conjointe) pour la
procréation le passant par une cérémonie appelée le mariage. Sauf que
mathématiquement le mariage se définit comme suit :
 Définition 1.3. (Couplage)
 Soient H et F deux ensembles finis de n éléments où
 H=¿1, h2, … . , hn¿est l’ensemble des hommes à marier et F= (f 1 , f2,
….,fn) l’ensemble des femmes à marier. Un couplage est une bijection
de H et F représentant un ensemble de n couples formés entre les
hommes et les femmes d’une communauté donnée [Knuth, 1976].

Page |6

 Le problème est de chercher une leçon satisfaisante de marier tous


les membres de la communauté en se référant de la définition
précédente, on appelle un ensemble de mariages instables ceux où il y
a un homme et une femme qui ne sont pas mariés l’un à l’autre mais
préfèrent le partenaire de l’autre à leurs partenaires actuels.

Exemple 1.1. Soit quatre hommes (h1, h2, h3, h4) et quatre femmes (f1, f2, f3,
f4) les préférences de chacun sont listées dans le tableau suivant :

  Ordre de   Ordre de 
H préférence F préférence

  f1, f2, f3, f4   h1, h2, h3, h4


h1  f2, f1, f4, f3 f1  h2, h3, h1, h4
  f4, f1, f2, f3   h2, h1, h4, h3
h2  f3, f4, f1, f2 f2  h4, h3, h1, h2
 
h3 f3
 
h4 f4 

Tableau 1: tableau d'affectation homme Tableau 2:


tableau d'affectation femme
 Ces préférences ne changent pas avec le temps.
Le premier couplage stable que nous pouvons trouver est de marier
chaque homme à son premier choix.
 Soit : {(h1, f1) ; (h2, f2) ; (h3, f4) ; (h4, f3)}
 Le deuxième couplage serait de marier chaque femme à son premier
choix.
 Soit : {(f1, h1) ; (f2, h2) ; (f3, h2) ; (f4, h4)}
 On constate qu’il n’y pas de problème dans le premier couplage tandis
que dans le deuxième couplage, l’homme h2 est marié à f2 et f3 au même
moment.
 Pour régler ce problème, nous devons établir pour chaque homme et
femme la liste des partenaires qu’il, ou qu’elle aurait préféré épouser.

Page |7




 Hommes Femmes

 H1 préférait f1 F1 préférait h1

 H2 préférait f2 F2 préférait h2

 H3 préférait f4 F3 préférait h4

 H4 préférait f3 F4 préférait h3

 Nous venons de stabiliser le couple, donc la stabilité est vérifiée.

 Exemple 1.2. Nous avons une matrice de classement de trois hommes
(α, β et θ) et trois femmes (A, B et C)

   
A B C
   
α 1 2 3

   
β 3 1 2

   
θ 2 3 1

 Tableau 3: matrice de classement


 Le premier nombre de chaque paire dans la matrice donne le
classement des femmes par les hommes, le deuxième chiffre est le classement
des hommes par les femmes.
 Ainsi α classe A en premier, B en deuxième et C en troisième
tandis qu’A classeβ en premier, θ en second et α en troisième, etc. Il y
a six types de mariages possibles, trois sont stables. L’un d’eux est
Page |8

réalisé en donnant à chaque homme son premier choix. Donc α épouse


A, β épouse B et θ épouse C.
 1.3.1. Listes incomplètes

 Si nous voulons vraiment être plus réalistes que ça, il faudra aussi
qu’on considère les couplages stables dans lesquels les hommes ne
classent pas toutes les femmes dans leur liste de préférence et les
femmes ne classent pas non plus tous les hommes dans leur liste de
préférence.

 On cherche des solutions stables avec les conditions
supplémentaires que chaque personne soit mariée avec une personne
figurant sur sa liste de préférence (on peut imaginer qu’une personne
va préférer mourir plutôt que d’épouser quelqu’un qui n’est pas sur sa
liste). [Knuth, 1976]





 Considérons par exemple les listes incomplètes suivantes :
  Ordre de   Ordre de 
H préférence F préférenc 
e 
  f1   h3, h1, h2 
h1  f3, f1, f2 f1  h2, h1, h3 
  f3, f1   h1, h2, h3 
h2 f2 
  
h3 f3 

 Tableau 4: Couple instable Homme et Femme


Le seul couplage possible est {(h1, f1) ; (h2, f2) ; (h3, f3)} mais il est instable
à cause de h2 et f3. Le théorème d’existence des couplages stables ne se
généralise donc pas au cas des listes incomplètes.

Page |9

 1.3.2. Conversion de listes incomplètes en listes complètes



 On peut fabriquer une liste complète à partir d’une liste incomplète
en ajoutant un nouvel homme V, le veuf et une nouvelle femme v, la
veuve. Le veuf sera la dernière préférence de v et v la dernière
préférence de V. La femme fk classera v le dernier de sa liste de
préférence (peut être incomplète) puis classera après V dans un ordre
indifférent, tous les hommes qui n’étaient pas sur sa liste.

 L’homme hk classera v la dernière de sa liste de préférence (peut
être incomplète) puis classera après v, dans un ordre indifférent, toutes
les femmes qui n’étaient pas sur sa liste [Knuth, 1976].
 Une application de la remarque précédente donne le résultat
suivant :
 Théorème 1.1.
 S’il existe un couplage stable avec V marié à v pour le système complet,
alors pour tous les couplages stables de ce système, V est marié avec v .
 Par conséquent, il suffit pour décider de l’existence d’un couplage
stable dans le système incomplet pour obtenir une seule solution stable au
système complet. Si V n’est pas marié à v alors il n’existe pas de solution stable
au système incomplet : si V est marié à v alors la solution stable sans Vv est une
solution stable du système incomplet. La question de l’existence se pose alors.
 Existe-t-il un couplage stable pour toute disposition de
préférences ? Gale et Shapley répondent positivement à cette question et
soumettent à un algorithme permettant de toujours trouver un ensemble stable de
mariage à un problème donné.
 1.4. Algorithme de Gale et Shapley
 L'algorithme de Gale et Shapley, également connu sous le nom
d'algorithme de l'appariement stable, est un algorithme utilisé pour résoudre le
problème de l'appariement stable dans la théorie des jeux et l'économie. Il a été
proposé par les mathématiciens David Gale et Lloyd Shapley en 1962.
 Le problème de l'appariement stable consiste à trouver un
appariement optimal entre deux ensembles d'individus, où chaque individu a une
préférence sur les membres de l'autre ensemble. L'objectif est de trouver un
appariement dans lequel aucun individu ne préfère un autre membre à son
partenaire actuel et où il n'existe pas de pair d'individus qui préfèrent
mutuellement s'apparier plutôt que de rester avec leur partenaire actuel.
P a g e | 10


 L'algorithme de Gale et Shapley fonctionne de la manière suivante :
1. Chaque homme propose initialement à la femme qu'il préfère le plus.
2. Chaque femme examine toutes les propositions qu'elle a reçues et rejette
toutes sauf celle de l'homme qu'elle préfère le plus.
3. Les hommes non retenus proposent à leur deuxième femme préférée.
4. Les femmes examinent à nouveau toutes les propositions et gardent la
meilleure.
5. Le processus se répète jusqu'à ce que chaque femme ait reçu une seule
proposition.
6. L'appariement final est obtenu lorsque chaque homme et chaque femme
ont une seule proposition acceptée.
 Cet algorithme garantit qu'un appariement stable sera trouvé, c'est-
à-dire qu'il n'existe pas d'autres appariements possibles dans lesquels certains
individus préfèrent mutuellement s'apparier plutôt que de rester avec leur
partenaire actuel.

 L'algorithme de Gale et Shapley a de nombreuses applications
pratiques, notamment dans les domaines de l'appariement des résidents et des
hôpitaux, des étudiants et des universités, des employés et des employeurs, etc.
[Gale & Shapley, 1962].
 1.4.1. Stabilité

 L’un des objectifs annoncés par Gale et Shapley est d’étudier la
« stabilité » des mariages qui résultent de leur algorithme. Leur
concept de stabilité repose sur deux conditions minimales.

1. Aucun individu ne préfère un autre membre à son partenaire actuel : cela
signifie qu'aucun homme ne préfère une autre femme à sa partenaire
actuelle, et qu'aucune femme ne préfère un autre homme à son partenaire
actuel.
2. Il n'existe pas de pair d'individus qui préfèrent mutuellement s'apparier
plutôt que de rester avec leur partenaire actuel.
 Lorsque ces deux conditions sont satisfaites, on dit que l'appariement
est stable car il n'y a pas de possibilité d'amélioration pour les
individus impliqués.
P a g e | 11

 Un couple (w, m) bloque l’appariement μ si m et w préfèrent tous deux


se marier ensemble qu’à rester chacun avec leur partenaire dans
l’appariement μ .
 Un appariement μ est stable s’il est individuellement rationnel et s’il
n’existe pas de couple qui le bloque (Forges, 2013)

 Gale et Shapley démontrent un premier résultat fondamental :
 Théorème 1.2 :
Gale et Shapley (1962). Dans tout modèle de mariage, quelles que soient
les préférences des individus, il existe un appariement stable. Plus précisément,
l’appariement résultant de l’algorithme d’acceptation différée. En faveur des
hommes est stable (et de même pour l’algorithme en faveur des femmes).

 Premièrement, la preuve du résultat suit immédiatement deux
propriétés de l’algorithme qui produit un appariement et n’associe
jamais un homme et une femme qui ne soient pas mutuellement
acceptables, de sorte que l’appariement final est individuellement
rationnel.

 Deuxièmement, si un homme n’est pas apparié à une femme qu’il
préfère à son partenaire dans l’appariement, il a nécessairement fait
une proposition à cette femme à une certaine étape de l’algorithme et a
été rejeté ensuite par la femme, qui a accepté l’offre d’un partenaire
qu’elle classait mieux. Ce couple ne peut donc pas bloquer
l’appariement. Les solutions des premiers exemples ont été trouvées
par une séquence des divorces au hasard mais ça n’aboutissait pas
toujours à une solution stable.
 Dans cet algorithme, les divorces sont remplacés par des
nombreuses fiançailles. Les hommes jouent tour à tour le rôle du
prétendant, font des avances aux femmes qui acceptent ou refusent
selon leur préférence. A la fin, on obtient toujours une solution stable.

 1.4.2. Description de l’algorithme
 L’algorithme d’acceptation différée de Gale et Shapley se déroule
de la manière suivante :
 Lors de la première étape, chaque homme demande en mariage la
femme qu’il préfère, chaque femme ayant reçu plus d’une demande
P a g e | 12

rejette toutes les demandes sauf celle de l’homme qu’elle préfère


parmi ses prétendants. Elle garde donc ce dernier « en réserve » mais
n’accepte pas directement son offre au cas où une meilleure offre se
présentait.
Ensuite, les hommes ayant été rejetés font leur demande à leur deuxième
choix. De nouveau, chaque femme concernée choisit l’homme qu’elle préfère
parmi les nouveaux prétendants et celui qu’elle avait gardé en réserve, s’il
existe, et rejettent tous les autres. Aucune offre n’est acceptée encore. Ce
processus continuera en descendant dans l’ordre de préférence des hommes et
cela jusqu’à ce que chaque femme ait reçu une demande.

Maintenant, si nous continuons dans cette voie, finalement [en fait au plus
n −2n+ 2 étapes] chaque femme aura reçu une proposition, aussi longtemps
2

qu’aucune femme n’a été proposée il y aura des rejets tant qu’il y aura de
nouvelles propositions, mais comme aucun homme ne peut proposer à la même
femme plus d’une fois, chaque femme est sure de recevoir une proposition le
moment venu. Dès que la dernière femme reçoit sa proposition, la cour est
terminée, et chaque femme est maintenant obligée d’accepter l’homme sur sa
ficelle.
En prétendant que cet ensemble de mariage est stable. Supposons que
John et Mary ne sont pas mariés mais John préfère Mary à son épouse Jane ;
John doit alors avoir proposé à Mary à un certain stade et a ensuite été rejeté en
faveur de quelqu’un que Marie a aimé. Il n’y a pas d’instabilité. Visiblement
l’algorithme renvoie bien un couplage stable dans tous les cas. Puisqu’on
remarque qu’après la réception de sa première proposition, une femme ne
redevient jamais libre. En effet, elle peut changer de fiancé si une meilleure
offre apparait mais ne peut pas perdre son fiancé actuel. En revanche, un homme
peut être fiancé à un certain point et redevenir libre au cours de l’algorithme.

 1.4.3. Conditions
 Pour que l’algorithme de Gale et Shapley produise une meilleure
solution, les hommes tout comme les femmes sont obligés d’être
sincères dans l’élaboration de leur liste de préférence et ne pas la
manipuler ni la communiquer à l’autre groupe (de femmes ou
d’hommes) au cours de l’exécution.
P a g e | 13

 Gale et Shapley ont montré que la procédure d’acceptation différée


ou l’algorithme de Gale-Shapley décrite ci-haut donne non seulement
une stabilité, mais une affectation optimale des candidats.
 1.4.4. Ensembles de tailles différentes
 En se référant à l’origine du problème de mariage stable, celui
d’affectation des candidats à un collège, on se rend compte que la taille
de deux ensembles ne sera pas la même, donc, si le problème autorise
une différence de taille entre les deux ensembles, il existe toujours une
solution stable : car s’il y a n hommes et m femmes ont reçu n < m, la
procédure se termine dès que m femmes ont reçu chacune une
proposition. Et si n>m, la procédure se termine à chaque fois que
l’homme est soit sur la chaine d’une femme ou a été rejeté par toutes
les femmes. Dans les deux cas, l’ensemble des mariages qui en résulte
est stable, il est clair qu’il existe un système totalement symétrique,
une procédure avec les femmes proposant aux hommes, qui doit
également mener un ensemble stable de mariages [Gale et Shapley
1962].
 1.4.5. Version d’algorithme
L’algorithme de Gale et Shapley s’exécute en deux versions : la version
man-optimale et la version woman-optimale, mais la version la plus privilégié
est celle où les hommes proposent.
En effet, lorsque les hommes proposent, le résultat est optimal pour les
hommes, c’est la version man-optimale et quand les femmes proposent, c’est
l’optimale pour les femmes, c’est la version woman-optimal.
Par ailleurs, nous savons qu’en informatique plus précisément en
recherche opérationnelle et optimisation combinatoire, le problème d’affectation
consiste à attribuer au mieux des taches (femmes) à des agents (hommes).
Chaque agent peut réaliser une unique tache pour un coût donné et chaque tache
doit être réalisée par un unique agent. Les affectations (le couplage agents-
taches) ont toutes un coût défini. Le but est de minimiser le cout-total des
affectations afin de réaliser toutes les taches.
Admettons que les taches aient chacune une liste de préférence sur les
agents de même aussi les agents aient une liste de préférence sur les tache. En
faisant tourner l’algorithme de Gale et Shapley dans cette situation tout en
privilégiant les taches (hommes), on aura un couplage stable qui sera produit.
Mais pour un décideur qui veut voir toutes les possibilités qui se présentent à lui
P a g e | 14

avant de décider, il sera curieux de savoir que serait le couplage stable si on


privilège cette fois-ci les agents (femmes) au lieu des taches.
 Signalons que les deux solutions produites par deux versions ne
sont généralement pas identiques. Ainsi, les solutions des deux
procédures seront les mêmes quand il y a un ensemble unique et stable
de mariages.
 Le pseudocode de cet algorithme est la suivante :
 Algorithme de Gale-Shapley
 Entrée : Deux ensembles finis M (d’hommes) et W (de femmes de
cardinal n : une famille L de relation de préférences :
 Sortie : Un ensemble S de couples engagés (homme, femme).
 1.5. Quelques applications
Il existe de nombreux problèmes dont le principe est proche de celui d’un
problème de mariage stable. Nous ne nous intéresserons pas ici aux algorithmes
nous permettant de résoudre ces différents problèmes, mais de par la nature
semblable de ces problèmes, ces algorithmes sont très proches de ceux pouvant
résoudre les problèmes mariage stable, car un des aspects les plus intéressants de
la théorie de l’appariement est la très grande simplicité du modèle de Gale et
Shapley.



 1.5.1. Le problème des colocataires

Le problème des colocataires est pour sa part une variante du problème de
mariage stable dans laquelle on ne disposerait que d’une seule communauté.
Chaque membre de la communauté cherche un partenaire afin de devenir son
colocataire, et dispose pour cela d’une liste de préférences dans laquelle chaque
membre de sa communauté excepté lui-même est trié par préférence. La solution
que l’on cherche à obtenir est un appariement qui associerait chaque individu de
cette communauté avec un unique partenaire. On notera alors que même si le
problème est semblable à un problème de mariage stable, une approche tel que
l’algorithme de Gale et Shapley est impossible puisque nous ne pouvons séparer
cette unique communauté en deux sous-communauté, une de proposants et une
autre de disposants entre membres de même sous-communautés [Cerqueira-
Martins, 2012].

P a g e | 15

Mais cette communauté contient deux sous-groupe des colocataires alros


c’est le problème des colocataires de mariage stable où un groupe d'hommes et
un groupe de femmes doivent être appariés pour former des couples stables.
Chaque homme et chaque femme ont des préférences ordonnées sur les
membres de l’autre sous-groupe. L'objectif est de trouver un appariement stable,
c'est-à-dire un appariement où aucune paire d'individus ne préfère mutuellement
s'apparier plutôt que de rester avec leur partenaire actuel. L'algorithme de Gale
et Shapley peut être utilisé pour résoudre ce problème et trouver un appariement
stable.
 1.5.2. La carte scolaire

La théorie de l’appariement a pris une importance encore plus grande
lorsqu’on a montré que le modèle d’appariement de Gale et Shapley pouvait
apporter une solution au problème de la répartition des enfants dans les écoles
primaires et secondaires lorsque l’on donne aux parents la possibilité d’exprimer
des vœux sur la future école de leur enfant.









 Chapitre deuxième
 BREVE DESCRIPTION DU MILIEU D’ETUDE
 II.1. Localisation du milieu d’étude
 Nos recherches ont été réalisées au centre de santé Cerphytoco, un
centre de Kisantu/Inkisi, qui est une institution sanitaire de l’Etat, situé dans la
province du Kongo central, district de Lukaya, territoire de Madimba au chef-
lieu qui porte le même nom.

 II.2. Situation géographie
Le Centre de santé cerphytoco est situé dans le kongo central, dans la cité
de Kintanu, Kisantu/Inkisi, il est entre les avenues Mobutu et Basuki, dans la
paroisse Saint Joseph. Comme limite géographique:

P a g e | 16

 À l'est: par l'avenue Basuki et le chemin de fer Kinshasa-


Matadi, non loin de la route nationale N°1 ;
 À l'ouest: par l'école primaire Mfuki ;
 Au nord : par le centre de promotion sociale Kintanu ;
 Au sud: par le lycée Mfuki/Goretti, à 3Km de l’église
Kimbanguiste.


 II.3. Aperçu historique
Le Centre de santé cerphytoco a commencé par un centre de recherche en
phytothérapie au Congo, Cerphytoco en sigle, par les sœurs de sainte Marie de
Kisantu. Ce centre était basé sur la médecine traditionnelle, puis par la médecine
moderne depuis 1981, initiée par la sœur NSENGA SCOLARISTIQUE.

 II.4. Structure administrative
a. Le comité directeur :

 Une sœur religieuse responsable du Centre ;
 Un infirmier titulaire ;
 Une caissière (pharmacienne) ;
 Le médecin ;
 La responsable de la maternité ;
 Les conseillers ;
 Responsable des infirmiers ;
 Une sœur représentante de la congrégation.

b. Comité de gestion:
 La sœur responsable du Centre ;
 La caissière ;
 L'infirmier titulaire ;
 Responsable de la maternité ;
 Médecin.
 II.5. Situation du personnel du centre

  NOM, POSTNOM &    FONC 
PRENOMS S TI O
TION

  Sr BASILUA MARIE    GESTI 


BOSCO F A1 ONNA
IRE
  Sr MBELA PALMYRE    CAISS 
F A1 IERE
P a g e | 17

  KIALULENDO MPOVA    INF. 


CLARISSE F A1 TITUL
AIRE
  LUKOWA FLORA    MEDE 
F DO CIN

  DIANTAMA NATHAN    MEDE 


F DO CIN

  KIVATIKA MICHEL    INFIR 


DADY M A1 MIER
  NZIMBU MUKOLA    INFIR 
ANNUARITE F A1 MIER
  BUYA BUANGA    INFIR 
JANICE F A1 MIER
  NSOLANI    TECH 
MAKIKADILA F A1 N.
REBECCA LABO
  NSIMBA BAZELA    TECH 
LAMAMA F A1 N.
LABO
  DIZOLA MAMBUNDU    SAGE 
DEESSE F A1 FEMM
E
  MANSANGA SONGO    INFIR 
OLGA F A2 MIERE
  NGOMBO MEYA    INFIR 
CHANCE F A2 MIERE
  LUVUNGA NDOMBASI    TECH 
FEROS M A3 N.
LABO
  NDUNDU NZINGA    ACCO 
VICTORINE F A3 UCHE
USE
  BASEYA KIYA JOSE    ACCO 
F A3 UCHE
USE
  DIVUNINA SINSU    PREPO 
MATONDO MATHY F A3 SEE A
LA
PHAR
MACI
E
  TONSI MAKIADI    ACCO 
CHRETIENNE F A3 UCHE
USE
  MPUKUTA KIOKA    Garçon 
MOISE M de
P a g e | 18

Surface
  NLANDU VAKANDA    SENTI 
DE POSTE M NELL
E
  WETUSA MARIE    Fille de 
F Surface
  NLANDU URCILE    SAGE 
F A1 FEMM
E
  BILEPO DORCAS    INFIR 
F A1 MIERE
  LUKENI VALVINE    SAGE 
F A1 FEMM
E












 II.6. Organigramme du Centre de Santé Cerphytoco


SŒUR

GESTIONNAIRE


INFIRMIER TITULAIRE MEDECIN

PHARMACIE
P a g e | 19




P a g e | 20

 II.7. Services organisées


Le Centre de Santé Cerphytoco organise six (6) services qui sont :
 Gynécologie ;
 Pédiatrie ;
 Curatifs ;
 Laboratoire ;
 Pharmacie et
 Petit Chirurgie.
 II.8. Les différents rôles de chaque services

a) Gynécologie :
La gynécologie est une branche de la médecine qui se concentre sur la
santé reproductive des femmes. Son rôle est de diagnostiquer, traiter et prévenir
les problèmes de santé spécifiques aux femmes, tels que les troubles menstruels,
les infections génitales, les troubles de la fertilité, les maladies gynécologiques
et les cancers. Elle comprend également le suivi de la grossesse et de
l'accouchement. La gynécologie joue donc un rôle crucial dans la santé et le
bien-être des femmes, en l’aidant à maintenir leur santé reproductive et à traiter
les problèmes spécifiques à leur sexe.

 b) Pédiatrie :
La pédiatrie est une spécialité médicale qui se concentre sur la santé des
enfants, depuis la naissance jusqu'à l'adolescence. Les pédiatres sont
responsables de l'évaluation, du diagnostic et du traitement des maladies et des
troubles qui affectent les enfants. Ils jouent un rôle essentiel dans la surveillance
de la croissance et du développement de l'enfant, dans la prévention des
maladies infantiles grâce aux vaccinations, dans le suivi médical régulier et dans
l'éducation des parents sur les soins et la santé des enfants. La pédiatrie est donc
cruciale pour assurer la santé et le bien-être des enfants.

 c) Curatifs :
Le terme "curatif" fait référence aux traitements médicaux qui visent à
guérir une maladie ou une affection existante. Les soins curatifs consistent
généralement à traiter les symptômes, à éliminer ou à réduire la cause sous-
jacente de la maladie et à rétablir la santé du patient. Ces traitements sont
importants car ils visent à soulager les symptômes et à éliminer la source du
P a g e | 21

problème de santé, afin de permettre au patient de retrouver son état de santé


normal.

 d) Laboratoire :
Le laboratoire médical joue un rôle crucial dans le domaine de la
médecine en fournissant des résultats de tests et des analyses cliniques. Les
laboratoires médicaux effectuent une variété de tests, tels que des analyses
sanguines, des tests d'imagerie médicale, des tests de dépistage, des analyses
d'urine, des cultures de tissus, etc. Ces tests aident les médecins à diagnostiquer
les maladies, à surveiller l'efficacité des traitements, à évaluer la fonction des
organes et à détecter les facteurs de risque. Les résultats du laboratoire sont un
outil précieux pour prendre des décisions médicales éclairées et pour assurer des
soins de santé appropriés.

 e) Pharmacie :
La pharmacie joue un rôle crucial dans la médecine en tant que domaine
spécialisé dans la préparation, la distribution et la gestion des médicaments. Les
pharmaciens sont responsables de la dispensation précise des médicaments, de
l'information sur leur bon usage, de la gestion des interactions médicamenteuses,
des conseils sur les effets secondaires, des conseils de santé générale et de
l'éducation des patients sur les médicaments prescrits. La pharmacie contribue
donc à assurer la sécurité, l'efficacité et l'accessibilité des médicaments, et joue
un rôle important dans l'amélioration des soins de santé et le traitement des
maladies.

 f) Petit Chirurgie :
 Traitement des maladies : La chirurgie est souvent utilisée pour traiter des
maladies ou des affections qui ne peuvent pas être guéries par d'autres
moyens. Par exemple, la chirurgie cardiaque peut être utilisée pour traiter
les maladies cardiaques, la chirurgie orthopédique pour traiter les troubles
musculo-squelettiques, et la chirurgie oncologique pour retirer les tumeurs
cancéreuses.
 Réparation des blessures : La chirurgie est utilisée pour réparer les
blessures, qu'elles soient traumatiques ou non. Elle peut impliquer la
réparation de fractures osseuses, la saturation de plaies, la reconstruction
des tissus endommagés ou la réparation d'organes internes.
 Amélioration de la fonction : La chirurgie peut être utilisée pour améliorer
la fonction d'un organe ou d'un système corporel. Par exemple, la
P a g e | 22

chirurgie de remplacement articulaire peut améliorer la mobilité et la


qualité de vie des patients atteints d'arthrose sévère.
 Prévention : La chirurgie peut également être utilisée à des fins
préventives, pour prévenir le développement de complications ou de
maladies futures. Par exemple, la chirurgie bariatrique peut être utilisée
pour aider les personnes obèses à perdre du poids et à prévenir les
complications de santé associées à l'obésité.
 II.9. Vacations par services
 Pour la vacation de service, le centre dispose trois groupes des
personnels pour la rotation de ses agents
 II.10. Etablissement des horaires des agents
 Les heures de travail se résume de la manière suivante :
  Jours de  Heures de
repos travail
 G  Dimanche  7h30-15h00
ro
u
p
e
1
 G  Pas de repos  10h-17h30
ro
u
p
e
2
 G  Deux jours  17h30-7h30
ro
u
p
e
3
 Tableau 5 : Etablissement des horaires

Le groupe2 et groupe3 sont les deux groupes qui font les rotations
moyennant une durée de trois jours. Si les agents du groupe2 travaillent de 10h-
17h30 durant trois jours successifs et que ceux du groupe3 de 17h30-7h30, alors
le groupe3 prendra le repos de deux jours pour revenir dans la vacation de 10h-
17h30. Pour le groupe1, eux n’ont pas de rotation à faire c’est-à-dire ils ne
travaillent que de 7h30 à 15h et ils ont le jour de repos le dimanche.
P a g e | 23

Ce système de rotation entre groupe1 et groupe2 ont de problème en cas


de congé, maladie ou mutation, en ce moment-là l’horaire subit une grande
difficulté moyennant les nombres des agents et aussi l’horaire aura une
modification.

P a g e | 24

 Chapitre Troisième
 GENERALITE SUR LE LANGAGE JAVA
 III.1. Le concept de base
 Une classe est le support de l’encapsulation : c'est un ensemble de
données et de fonctions regroupées dans une même entité.
 Une classe est une description abstraite d'un objet. Les fonctions qui
opèrent sur les données sont appelées des méthodes. Instancier une classe
consiste à créer un objet sur son modèle. Entre classe et objet, il y a en
quelque sorte, le même rapport qu'entre type et variable.
Java est un langage orienté objet : tout appartient à une classe sauf les
variables de type primitives. Pour accéder à une classe il faut en déclarer une
instance ou objet. Une classe comporte sa déclaration, des variables et la
définition de ses méthodes.
Une classe se compose en deux parties : un en−tête et un corps. Le corps
peut être divisé en 2 sections : la déclaration des données ou des constantes et la
définition des méthodes. Les méthodes et les données sont pourvues d'attributs
de visibilité qui gère leur accessibilité par les composants hors de la classe.
 III.2. Syntaxe de base du Langage
Le langage Java inclut 99% de la syntaxe du langage C (les pointeurs
n'apparaissent pas clairement mais à l'exception des types primitifs tout n'est que
pointeur.)
La première application Java, l'application « Hello.java »
 III.2.1. Quelques remarques.
 Les conventions de codage du langage Java peuvent être consultées à
l'adresse suivante :
ftp://ftp-developpez.com/cyberzoide/java/JavaStyle.pdf
A retenir les classes doivent avoir leur première lettre en majuscule, à
l'exception des constantes qui elles seront toutes écrites en majuscules, toutes les
autres entités (variables, variables de classes, variables d'instances, services de
classes, services d'instances) commenceront par une minuscule.
Il ne peut y avoir en Java, qu'une seule classe public par « fichier.java », si
il y a une classe public dans un « fichier.java » le nom de la classe doit être le
nom du fichier.
 Par exemple,
 public class Test
 {
 static int somme(int i, int j)
P a g e | 25

 {
 return i+j;
 }
 }
 Il y a dans ce fichier une classe public qui s'appelle Test, elle doit
donc être dans le fichier « Test.java ».
 III.2.1. Les mot clef « private » et « public »

Tant que les différents concepts objets ne sont pas présentés, il est difficile
de présenter la notion de contexte de classe. Dans un premier nous allons
considérer que le contexte de classe correspond au contexte d’un module écrit en
C. Nous détaillerons la signification de cette notion après avoir brièvement
présentés les deux autres mots clefs qui sont « public » et « private ». Les mots
clefs « private » et « public » sont des mots clefs qui permettent le contrôle de
l'accès à l'information.

 L'accès à l'information en Java est contrôlé par l'utilisation de 4 mots
clefs:
 Public toute entité qui contient la classe peut accéder (lecture/écriture)
à l'information publique.
 Protected seules les classes définies dans le même package ou qui
héritent de la classe peuvent avoir accès à cette information.
 Rien : dans ce cas seules les classes définies dans le même package
peuvent accéder à cette information.
 Private seules les entités définis à l'intérieur de la paire d'accolades
qui définit la classe peut avoir accès à une information privée.
Pour l'instant nous ne pouvons aborder que les deux mots clefs private et
public. Pour cela on peut les rapprocher des notions abordées en C.
 III.2.2. Entité de classe et Entité d'instance en Java.
Les mots clefs « public » et « private » servent donc à contrôler l'accès
aux entités des programmes que ce soit des variables ou bien des éléments
équivalent à des fonctions.
Il existe deux types différents d'entités:
• Entité de classes: Elles correspondent aux entités d'un module C. En
Java, ces entités sont précédées du mot clef « static » mais il faut
distinguer celles qui sont précédés de :

 − « public static », elles ressemblent d'une certaine façon aux


entités déclarées présentent dans le « fichier.h ». Elles sont à
P a g e | 26

rapprocher des fonctions globales ou des variables globales


déclarées en C.
 − « private static », elles ressemblent d'une certaine façon aux
entités déclarées présentent dans le « fichier. C ». Elles sont à
rapprocher des fonctions ou variables locales d'un module
Les variables ou services précédés pas « private static » peuvent être
rapprochées des variables ou des fonctions locales à un module C. Dans ce cas,
elles sont précédées du mot clef « static » et elles sont déclarés dans le «
fichier.c » du module.

• Entités d’instances : Ces entités ne sont pas précédées du mot clefs


static, elles correspondent aux champs d’une structure C. On distinguera
les champs qui ne sont pas des pointeurs de fonctions et qui représentent
les champs structuraux, des champs qui sont des pointeurs de fonctions
qui représentent des champs comportementaux. Ces entités sont
assimilables aux structures qui sont présentes dans le point C. Nous
développerons ces points dans les prochains cours.

 modificateurs nom_de_classe [extends classe_mere] [implements


interface]
 {
 ...
 }
 ClassModifiers class ClassName [extends SuperClass]
[implemenents Interfaces]
 {
 // insérer ici les champs et les méthodes
 }

 NB :
 Le mot clé extends permet de spécifier une superclasse éventuelle : ce mot
clé permet de préciser la classe mère dans une relation d'héritage.
 Le mot clé implements permet de spécifier une ou des interfaces que la classe
implémente. Cela permet de récupérer quelques avantages de l'héritage
multiple.
 L'ordre des méthodes dans une classe n'a pas d'importance. Si dans une
classe, on rencontre d'abord la méthode A puis la méthode B, B peut être
appelée sans problème dans A.
P a g e | 27

 III.3. Les objets



Les objets contiennent des attributs et des méthodes. Les attributs sont des
variables ou des objets nécessaires au fonctionnement de l'objet. En Java, une
application est un objet. La classe est la description d'un objet. Un objet est une
instance d'une classe. Pour chaque instance d'une classe, le code est le même,
seules les données sont différentes à chaque objet.
 III.3.1. La création d'un objet : instancié une classe
Il est nécessaire de définir la déclaration d'une variable ayant le type de
l'objet désiré. La déclaration est de la forme nom_de_classe nom_de_variable


 Exemple :
 MaClasse m;
 String chaine;
 L'opérateur new : se charge de créer une instance de la classe et de
l'associer à la variable
 Exemple :
MaClasse m = new MaClasse();
 III.3.2. La durée de vie d'un objet
Les objets ne sont pas des éléments statiques et leur durée de vie ne
correspond pas forcément à la durée d'exécution du programme.
 La durée de vie d'un objet passe par trois étapes :
 la déclaration de l'objet et l'instanciation grâce à l'opérateur new
 Exemple :
 nom_de_classe nom_d_objet = new nom_de_classe( ... );
 l'utilisation de l'objet en appelant ces méthodes
 la suppression de l'objet : elle est automatique en Java grâce à la machine
virtuelle. La restitution de la mémoire inutilisée est prise en charge par le
récupérateur de mémoire (garbage collector).
 III.3.3. La création d'objets identiques
 Exemple 1 :
 Maclasse m1 = new Maclasse ();
 Maclasse m2 = m1;
P a g e | 28

 m1 et m2 contiennent la même référence et pointent donc tous les deux


sur le même objet : les modifications faites à partir d'une des variables modifient
l'objet.
Pour créer une copie d'un objet, il faut utiliser la méthode clone () : cette
méthode permet de créer un deuxième objet indépendant mais identique à
l'original. Cette méthode est héritée de la classe Object qui est la classe mère de
toutes les classes en Java.
 Exemple 2 :
Maclasse m1 = new Maclasse ();
Maclasse m2 = m1.clone ();
 m1 et m2 ne contiennent plus la même référence et pointent donc sur des
objets différents.


 III.3.4. Les références et la comparaison d'objets.
Les variables de type objet que l'on déclare ne contiennent pas un objet
mais une référence vers cet objet. Lorsque l'on écrit c1 = c2 (c1 et c2 sont des
objets), on copie la référence de l'objet c2 dans c1 : c1 et c2 réfèrent au même
objet (ils pointent sur le même objet). L'opérateur == compare ces références.
Deux objets avec des propriétés identiques sont deux objets distincts :
 Exemple 1 :
Rectangle r1 = new Rectangle(100,50);
Rectangle r2 = new Rectangle(100,50);
if (r1 == r1) { ... } // vrai
if (r1 == r2) { ... } // faux

Pour comparer l'égalité des variables de deux instances, il faut munir la
classe d'une méthode à cet effet : la méthode equals héritée d’Object. Pour
s'assurer que deux objets sont de la même classe, il faut utiliser la méthode
getClass () de la classe Object dont toutes les classes héritent.
 Exemple 2 :
(obj1.getClass ().equals (obj2.getClass())
 III.3.5. L'objet nul
L'objet nul est utilisable partout. Il n'appartient pas à une classe mais il
peut être utilisé à la place d'un objet de n'importe quelle classe ou comme
P a g e | 29

paramètre nul ne peut pas être utilisé comme un objet normal : il n'y a pas
d'appel de méthodes et aucunes classes ne peut en hériter. Le fait d'initialiser
une variable référent un objet à nul permet au ramasse miette de libérer la
mémoire allouée à l'objet.
 III.3.6. Les variables de classes
Elles ne sont définies qu'une seule fois quel que soit le nombre d'objets
instanciés de la classe. Leur déclaration est accompagnée du mot clé static
 Exemple 1 :
public class MaClasse()
{
static int compteur = 0;
}
L'appartenance des variables de classe à une classe entière et non à un
objet spécifique permet de remplacer le nom de la variable par le nom de la
classe.

 Exemple 2 :
• Maclasse m = new MaClasse ();
• Int c1 = m. compteur;
• Int c2 = MaClasse. Compteur;
 NB :
• c1 et c2 possèdent la même valeur.
• Ce type de variable est utile pour par exemple compter le nombre
d'instanciation de la classe qui est faite.

 III.3.7. La variable This


 Cette variable sert à référencer dans une méthode l'instance de l'objet en
cours d'utiliation This est un objet qui est égale à l'instance de l'objet dans lequel
il est utilisé.
 Exemple 1 :
 private int nombre; public maclasse(int nombre) { nombre = nombre; //
variable de classe = variable en paramètre du constructeur
 }
 Il est préférable de préfixer la variable d'instance par le mot clé this.
P a g e | 30

 Exemple 2 :
 class MaClasse() {
 String chaine = " test " ;
 Public String getChaine() { return chaine} ;
 // est équivalent à public String getChaine (this.chaine);
 }
This est aussi utilisé quand l'objet doit appeler une méthode en se passant
lui-même en paramètre de l'appel.
 III.3.7. L'opérateur INSTANCEOF.
L'opérateur instanceof permet de déterminer la classe de l'objet qui lui est
passé en paramètre. La syntaxe est objet instanceof classe
 Exemple 1 :
void testClasse(Object ob) { if (ob instanceof MaClasse )
System.out.println(" ob est une instance de la classe MaClasse "); else
System.out.println(" ob n'est pas un objet de la classe MaClasse "); }
Il n'est toutefois pas possible d'appeler une méthode de l'objet car il est
passé en paramètre avec un type Object
 Exemple 2 :
 void
afficheChaine(Object ob) { if
(ob instanceof MaClasse)
 System.out.println(ob.getChaine());
 // erreur à la compilation car la méthode
getChaine() //n'est pas définie dans la classe Object
 }
Pour résoudre le problème, il faut utiliser la technique du casting
(conversion).
 Exemple 3 :
 void
afficheChaine(Object ob) { if
(ob instanceof MaClasse)
 {
P a g e | 31

 MaClasse m = (MaClasse) ob;


 System.out.println(m.getChaine());
 // OU System.out.println( ((MaClasse) ob).getChaine() );
 }
 }
Un programme doit satisfaire plusieurs critères de qualités comme :
 Lisibilité, Modularité, Efficacité, Robustesse, Extensibilité, Sécurité.
Cependant certains de ces critères sont antagonistes comme par exemple,
extensibilité et sécurité. De fait, la programmation s'apparente plus à un « art »
qu'à une véritable science. Il n'existe pas un meilleur programme dans l'absolu,
simplement il existe des programmes qui maximisent certains objectifs.

 III.4. Exécution d’un programme en Java
L’exécution d’un programme Java se fait en deux phases :
 Une phase de compilation qui à partir d'un code source (« fichier.java
») produit un fichier un « fichier.class ». Une phase d'interprétation qui
consiste à charger le code compilé représenté par (« fichier.class ») dans la
machine virtuelle Java (JVM pour Java Virtuelle Machine) puis à
l'interpréter dans la machine virtuelle.

 III.5. Caractéristiques du langage Java.


 Portabilité
 Langage indépendant de la machine cible.
 Sûreté
 Interprétation dans la machine virtuelle
 Perte d'efficacité du fait que le langage est interprété 
 Véritable langage objet.
Un mariage entre smalltalk et C++, « plus pur » en quelque sorte que C+
+, intégration de concept présent dans UML comme la notion d'interface.
 Héritage multiple de code est abandonné, ni un plus ni un moins par
contre l'héritage privé n'est pas implémenté ce qui est dommage.
 Multi threaded
 Présence d'un « Ramasse Miettes » (garbage collector). 
 Environnement de programmation JDK
 Complet de l'image au son en passant par le réseau.
 AWT
 Son
P a g e | 32

 Mécanisme de réflexion (les objets, les types, les services sont considérés
comme des objets de première classe).
 III.6. Interface et implémentation

Nous retrouvons en Java les mêmes notions que pour un module C:
 Interface : L'ensemble des informations qui peuvent être à l'extérieur
d'un module. En principe, les informations contenues dans l'interface
ce résume à un ensemble de services, on parle dans ce cas, d'interface
fonctionnelle public. La propriété importante liée à cette notion est
celle de compatibilité ascendante de l'interface. Cette propriété
demande à ce que les ensembles qui étaient valables à un instant T0
continue à un instant T1 postérieur à T0.
 Cette propriété concerne aussi bien les services que les variables.

 Implémentation : L'ensemble des informations (y compris le code)


qui sont nécessaires à l'implémentation des services présentés dans
l'interface fonctionnelle public. L'implémentation n'est qu'un choix
informatique temporaire qui doit évoluer et qui est en partie lié aux
degrés de maturité du module.

Comme l'implémentation d'une classe est amenée à évoluer et que
l'interface fonctionnelle public ne peut croître qu'en respectant la compatibilité
ascendante, il est nécessaire de séparer clairement l'interface fonctionnelle de
l'implémentation d'un module. Car si une partie de l'implémentation est présente
à l'intérieur de l'interface fonctionnelle, cette partie de l'implémentation est
définitivement fixée car la propriété de compatibilité ascendante bloquera
l'évolution du module.



 Exemple « Hello World ».
 Le premier exemple de classe Java, le fameux Hello
 public class Hello
 {
 public static void main(String []argv)
 {
 String s = "Hello";
 System.out.printl(s);
P a g e | 33

 }
 }
 Les différents éléments syntaxiques du programme sont:
1. La classe Hello est une classe publique elle doit donc être définie dans le
fichier « Hello.java ».
2. Si on veut exécuter cette application Java il faut exécuter la suite de
commande
 Java Hello.java
 Java Hello
 En java, la notion de programme principal est différente de celle du
langage C. Il peut y avoir plusieurs occurrences
 III.7. Types primitifs en Java

On appellera type primitif tous les types qui ne sont pas liés à une classe
et qui représentent en quelque sorte les briques de bases nécessaires à la
construction des classes. Afin de pouvoir participer à la portabilité du langage
java il est nécessaire que la taille des types soit fixés dans la norme de Java.
 Les types primitifs sont les suivant: byte (8 bits), short (16 bits), Int (32
bits), long (64 bits), float (32 bits), double (64 bits), char (16 bits), booléen (1
bit).

Pour les types primitifs les bits constituants la variable représente un


codage de la valeur de ces types primitifs.
 Par exemple, la déclaration short i = 3; écrit dans la variable i le
codage 0x03

 III.8. Type non primitifs en Java.
Tous les types qui ne sont des types primitifs seront associés à une classe
ou à une interface. Nous dirons alors que les types non primitifs servent à
référencer ou à adresser des « objets »

Contrairement aux types primitifs les variables associées à ces types
contiendront seulement une adresse qui référencera le véritable objet physique.
Si en Java, il n'existe pas de pointeurs visibles, toutes les variables déclarées
avec un type non primitifs sont en réalités associées à des pointeurs.
 Par exemple, la déclaration :
 String s = « Une chaine » s'interprète de la manière suivante,

1. création d'un objet de type String en utilisant la constante littérale « Une


chaîne », A une adresse mémoire par exemple 0XAAFF.
P a g e | 34

2. La variable s est une variable qui référence un objet de type String (plus
exactement de type compatible). La valeur de la variable s est celle de
l'adresse de l'objet référencé c'est à dire
 0XAAFF.
A l’exception des types primitifs, les variables ne représentent que des
références à des entités (objets), nous allons voir que dans la section suivante,
l’affectation s’exprime comme un changement de référence et non un
changement de contenu de l’objet. Il s’agit s’une simple réaffectation de
pointeur.

 III.9. Interprétation des opérateurs =, ==

L'opérateur d'affectation x =y consiste à mettre dans la variable x les bits
de la variable y. Il s'agit d'une affectation bit à bit. Suivant le type des variable x
et y, il existe deux interprétations :
1. Si x et y sont des types primitifs, la variable x prend alors la même valeur
que la valeur y.
2. Si x et y ne sont pas des types primitifs, alors la variable x référence la
même entité (objet) que la variable y. Les variables x et y sont des
variables qui adressent le même objet. Ceux sont deux noms qui
permettent de manipuler une même chose.

 L'opérateur de comparaison x==y consiste à comparer les bits de la


variable et de la variable y. Il s'agit d'une comparaison bit à bit. . Suivant le type
des variable x et y, il existe deux interprétations :
3. Si x et y sont des types primitifs, la comparaison est vraie si la valeur de
la variable est égale à la valeur de la variable y.
4. Si x et y ne sont pas des types primitifs, alors la réponse est vraie si la
variable x référence la même entité (objet) que la variable y.

 III.10. Les tableaux en Java.

La déclaration d'un tableau en Java est la suivante:

 Type [] nom; déclare une variable nom qui est une référence sur un
tableau de type T. En Java, T [] représente véritablement un type. Un
exemple de déclaration peut-être.
 Int [] tableau: La variable tableau est une référence à un objet de type
tableau de int (int []). Dans ce cas, la déclaration en langage C la plus
voisine est int *tableau;
P a g e | 35

 String [] argv: La variable argv est une référence à un objet de type


tableau d'objets de type String
 (String []). Dans ce cas, la déclaration en langage C la plus voisine est
String *argv;

Il n'y pas la possibilité en Java de déclarer la taille d'un tableau en même
temps que la déclaration. L'instruction int t[10] n'est pas correcte en Java.

 Pour les tableaux, la syntaxe pour créer un un objet de type tableau est:
 New int[10] crée un tableau qui contient 10 entiers
 New String [10] crée un tableau de 10 référence à des objets de type
String, par contre aucun objet de type string n'est créé avec cette
instruction.
L'instruction new T[N], équivalente à malloc(sizeof(T)*N), à deux
interprétations en fonction de la nature de T :
 Si T est un type primitif alors la place mémoire allouée par cet appel
est N fois la taille d'un T. Les N cellules crées sont consécutives.
 Si T n'est pas un type primitif alors la place mémoire alloué par cet
appel est N fois la taille d'une variable référence à un objet de type T.
Il n'y a pas de création d'objet.
Pour une variable qui référence n'importe quel tableau t de n'importe quel
type, on peut connaître la taille d'un tableau en utilisant l'instruction :
 t.length
Un premier exemple qui permet de remplir un tableau d'entier avec les 10
premiers nombre pair public class ExempleVecteurPair
 {
 public static void main (String []argv)
 {
 int [] tab; tab
= new int[10];
for(int i=0; i<
tab.length; i++)
tab[i] = 2*i;
 }
 }
P a g e | 36

Les tableaux bidimensionnels T [][] sont équivalents T ** c'est à dire à


des tableaux de tableaux. Comme pour les tableaux mono-dimensionnels là
aussi il y a deux interprétations en fonction de la nature réelle du type T.
1. Dans le cas où T est un type primitif, les éléments T[ï] pointent sur un
tableau d'entiers
2. Dans le cas où T est un type non primitif, les éléments T[i] pointent sur
un tableau de référence à des objets de type T. Dans ce cas, on peut
considérer que l'on a une troisième indirection pour accèder à
l'information.

 Un exemple de code, pour illustrer une utilisation d'une matrice


triangulaire inférieure.
 Exemple de Code :
 public class Vecteur1 { public
static void main (String []argv)

 {

 int []
[] tab; tab =
new int[3]
[];

 for(int i=0; i< tab.length; i++)

 {

 tab[i] = new int[i+1];

 }

 for(int i=0; i< tab.length;


i++) for(int j= 0; j <
tab[i].length;j++)

 { tab[i]
[j]=
i+j+1 ;

 }

 for(int i=0; i< tab.length; i++)

 {

 System.out.println( " ");


P a g e | 37

 for(int j= 0; j < tab[i].length;j++)

 {

 System.out.print(" " + tab[i] [j]);

 }

 }

 }

 }

 III.10. Détail syntaxique sur les tableaux



On peut directement affecter un tableau en utilisant l'initialisation au
moment de la déclaration. Syntaxiquement c'est la même que pour le langage C.
L'exemple suivant, illustre diverse utilisation de cette possibilité.
 public class ExempleTableauInitialisation
 {
 public static void main (String []argv)
 {
 // initialisation
d'un tableau d'entiers int
[] tab = {1 ,2,3,4};
 // initialisation d'un
tableau bi dimensionel int
[][] tab1 = {{1},{2,3},
{4,5,6}}; // initialisation
d'une chaine de caractère
 String [] tabString = {"CE MATIN", "il fait beau"} ;
 }
 }






P a g e | 38












 Chapitre Quatrième
 ETABLISSEMENT DES HORAIRES DE
PERMANENCE DES AGENTS PAR L’ALGORITHME
DE MARIAGE STAGE, IMPLEMENTATION EN
JAVA : CAS DU CENTRE DE SANTE CERPHYTOCO
DE KISANTU

 IV.1. Les données
 Avant d’appliquer l’algorithme de Gale et Shapley pour produire un
horaire de permanence des agents stable et juste, il faut d’abord
considérer les données disponibles, les traiter afin de les rendre
utilisables dans l’algorithme de Gale et Shapley.
 Selon la définition du problème d’appariement stable reprise ci-
haut, ce problème consiste à trouver un appariement optimal entre deux
ensembles d'individus, où chaque individu a une préférence sur les membres de
l'autre ensemble. L'objectif est de trouver un appariement dans lequel aucun
individu ne préfère un autre membre à son partenaire actuel et où il n'existe pas
de pair d'individus qui préfèrent mutuellement s'apparier plutôt que de rester
avec leur partenaire actuel.

 Les deux ensembles d’individus que nous disposons sont : les Agents
et les Groupes de vacation, détaillés de manière suivante :
P a g e | 39

 Agents
  NOM, POSTNOM & PRENOMS

  Sr BASILUA MARIE BOSCO


  Sr MBELA PALMYRE
  KIALULENDO MPOVA CLARISSE
  LUKOWA FLORA
  DIANTAMA NATHAN
  KIVATIKA MICHEL DADY
  NZIMBU MUKOLA ANNUARITE
  BUYA BUANGA JANICE
  NSOLANI MAKIKADILA REBECCA
  NSIMBA BAZELA LAMAMA

  DIZOLA MAMBUNDU DEESSE

  MANSANGA SONGO OLGA

  NGOMBO MEYA CHANCE

  LUVUNGA NDOMBASI FEROS

  NDUNDU NZINGA VICTORINE

  BASEYA KIYA JOSE

  DIVUNINA SINSU MATONDO MATHY

  TONSI MAKIADI CHRETIENNE

  MPUKUTA KIOKA MOISE

  NLANDU VAKANDA DE POSTE

  WETUSA MARIE

  NLANDU URCILE

  BILEPO DORCAS

  LUKENI VALVINE


 Groupe de vacation
P a g e | 40

  Jours de repos  Heures de travail


 Gr  Dimanche  7h30-15h00
ou
pe
1
 Gr  Pas de repos  10h-17h30
ou
pe
2
 Gr  Deux jours  17h30-7h30
ou
pe
3

 Nous avons donc 24 agents, et trois groupes. Et pour une semaine
donnée chaque agent doit se retrouver dans l’un de groupe.

 IV.2. Traitement des données
 L’algorithme de Gale et Shapley exige que les deux ensembles de
données soit de même taille. Dans notre cas, ça veut dire que comme il
y a 24 agents il doit y avoir aussi 24 groupes. Or dans le cas d’espèce
on n’a pas 24 groupes. On est donc tombé dans le cas des listes
incomplètes. Ce cas se résout de la manière suivant :
 On peut fabriquer une liste complète à partir d’une liste incomplète en
ajoutant un nouvel homme V, le veuf et une nouvelle femme v, la
veuve. Le veuf sera la dernière préférence de v et v la dernière
préférence de V. La femme fk classera v le dernier de sa liste de
préférence (peut être incomplète) puis classera après V dans un ordre
indifférent, tous les hommes qui n’étaient pas sur sa liste.

 L’homme hk classera v la dernière de sa liste de préférence (peut
être incomplète) puis classera après v, dans un ordre indifférent, toutes
les femmes qui n’étaient pas sur sa liste [Knuth, 1976].
 Dans le cas que nous traitons, on doit donc ajouter les individus
appelés veufs dans l’ensemble de Groupe car c’est cet ensemble qui est
incomplète. On aura donc :

 Groupe de vacation traité
P a g e | 41


 
Gr Gr

 
Gr Gr

 
Gr Gr

 
Gr Gr

 
Gr Gr

 
Gr Gr

 
Gr Gr

 
Gr Gr

 
Gr Gr

 
Gr Gr

 
Gr Gr

 
Gr Gr


 On a donc ajouter des suffixes A, B,C,D,E,F,G
 De tel en sorte que celui qui est affecté au Groupe1 et celui qui est
affecté au Groupe1_A ou Groupe1_G sont affectés au même groupe. Il
P a g e | 42

nous reste maintenant de traiter les données de préférences de chaque


individu de chaque ensemble.
 On aura par exemple :
 Préférence des Agents
 Sr BASILUA MARIE      
BOSCO Gro Gro Gro Gro Gro

 Sr MBELA PALMYRE      
Gro Gro Gro Gro Gro

 KIALULENDO      
MPOVA CLARISSE Gro Gro Gro Gro Gro

 …      

 LUKENI VALVINE      
Gro Gro Gro Gro Gro


 Préférence des Groupes
 G  Sr BASILUA MARIE   LUVUNGA NDOMBASI FEROS
r BOSCO
o
u
p
e
1
 G  Sr MBELA PALMYRE   NDUNDU NZINGA VICTORINE
r
o
u
p
e
2
_
G
 G  KIALULENDO MPOVA   BASEYA KIYA JOSE
r CLARISSE
o
u
p
e
1
_
A
P a g e | 43

 …  …   …
 G  LUKENI VALVINE   TONSI MAKIADI CHRETIENNE
r
o
u
p
e
1
_
B

 Vu la grande taille de ces deux tableaux on ne pourra les représenter
dans ce document-ci.
 Ayant maintenant nos deux ensembles d’individus de même taille on
peut maintenant et facilement appliquer l’algorithme de Gale et
Shapley sur nos données.

 IV.3. Implémentation en Java
 Vu la grande masse de données qu’il y a, exécuter l’algorithme de
Gale et Shapley sur ces données à la main, serait fastidieux. C’est
pourquoi nous avons implémenté cette solution en Java, en mettant en
place une application qui va permettre de faire cela automatiquement
et à moindre temps.

 IV.4. Présentation de l’application
 Cette application s’appelle CERPHYTOCO_PLANNING, elle est
connectée à une base de données qui contient 3 tables, Mariage, Agent
et Planning.
 La table Agent permet d’enregistrer les agents qu’on va ensuite
appeler dans l’application.
 La table Mariage c’est la table qui enregistre les appariements stables
que l’application va produire.
 Enfin la table planning c’est une table qui permet de remettre la
dénomination des groupes comme avant afin de ne pas troubler les
décideurs.

 Accueil de l’application
 Dès vous ouvrez l’application vous tombez sur cette interface
d’accueil, composée de deux espaces une colonne de menu avec ses
P a g e | 44

boutons et un espace de travail qui contient deux boutons l’un permet


de faire des nouvelles affectations stables, car les préférences changent
aléatoirement. Il y a aussi un bouton qui permet de vider les anciennes
affectations.

 Le menu Planification
 Mis à part la colonne menu qu’on a déjà présenté, cette interface a un
espace composé d’un tableau qui reprend les affectations stables afin
de permettre aux décideurs de s’y référer, il y a aussi deux comboBox
dont le premier contient les agents enregistrés dans la base de données,
le deuxième contient le trois groupes de vacation. Le bouton Affecter a
pour rôle d’affecter un agent à un groupe. Exemple dans le tableau ci-
dessous on voit que l’agent Sr MBELA est affectée au groupe
Groupe3E, donc on lui affecte au Groupe3 tout court.
P a g e | 45

 Le menu Agent
 Cette interface a un espace composé d’un tableau qui reprend les
agents enregistrés dans la base de données, il y a aussi les boutons
chacun faisant le rôle marqué sur son étiquette.

 Le menu Planning
 Cette interface a un espace composé d’un tableau qui reprend le
nouveau planning en bonne et due forme enregistré dans la base de
données, il y a aussi un TextField qui affiche la date du jour mais dans
lequel on doit placer la semaine en vigueur pour ce nouveau planning.
Ensuite il y a un bouton imprimer qui permet d’imprimer le planning
en question.
P a g e | 46


 Le planning imprimé
P a g e | 47









P a g e | 48

 CONCLUSION GENERALE

 Nous voici au terme de notre étude qui a porté sur l’Etablissement
des horaires de permanence des agents par l’algorithme de mariage stage,
implémentation en Java : cas du centre de santé Cerphytoco de Kisantu.
 Après avoir traités ces problèmes du centre de santé Cerphytoco de
Kisantu, nous avons constatés qu’ils peuvent ajouter d’autres agents dans leur
centre en utilisant cet algorithme qui leur permettra de faire un appariement des
agents avec leur vacation de façon optimale en utilisant l’algorithme de Gale et
Shapley.
 Enfin, hormis les notions évoquées dans ce travail, beaucoup
d’autres notions peuvent être appliquées dans certains domaines ou travails.
 Nous suggérons aux chercheurs qui s’intéresseront à ce sujet de
tenir compte des fonctions de chaque agent parce qu’il y a des fonctions qui ne
peuvent appartenir dans certains groupes d’autres aussi sont obligées d’être que
dans un groupe donné, par exemple les gestionnaires doivent seulement
appartenir au groupe1.














P a g e | 49



 BIBLIOGRAPHIE
 Gale, D., Shapley, L. S. (1962). College Admissions and the Stability
of Marriage. American Mathematical Monthly, 69(1), 9-15.
 Roth, A. E., Sotomayor, M. (1990). Two-Sided Matching: A Study in
Game-Theoretic Modeling and Analysis. Cambridge University Press.
 Manlove, D. F. (2013). Algorithmics of Matching Under Preferences.
World Scientific Publishing Company.
 Gusfield, D., Irving, R. W. (1989). The Stable Marriage Problem:
Structure and Algorithms. MIT Press.
 Roth, A. E. (1984). The Evolution of the Labor Market for Medical
Interns and Residents: A Case Study in Game Theory. Journal of
Political Economy, 92(6), 991-1016.
 Cechlárová, K., Gurvich, V., Mönch, L., & Sotskov, Y.N. (2011).
Combinatorial Optimization and Applications. Springer.
 Irving, R. W. (1985). An Efficient Algorithm for the "Stable
Roommates" Problem. Journal of Algorithms, 6(4), 577-595.
 Shapley, L. S. (1984). A Note on the Stable Marriage Problem.
Discrete Applied Mathematics, 8(3), 343-344.
 Knuth, D. E., Yao, A. C., & Mccloskey, D. N. (1976). An Analysis of
Optimal Matching under Preferences. Algorithms & Complexity: New
Directions and Recent Results, 141-184.
 Honoré, B. E., & Lippman, S. A. (1985). An Inverse Duality Approach
to the Linear Hospital Resident Assignment Problem. Management
Science, 31(5), 590-601.
 Gusfield, D. (1987). Stability in the Marriage Problem: A Unified
Approach. SIAM Journal on Computing, 16(1), 111-128.
 Gallo, G., & Stardom, M. (1997). Stable Matchings: Structure and
Algorithms. MIT Press.
P a g e | 50

 Gusfield, D., & Irving, R. W. (1989). The Stable Marriage Problem:


Structure and Algorithms. Mathematics of Operations Research, 9(3),
490-509.
 Fischer, P. (1973). Optimal Solution for Stable Marriages in a
Quasilinear Time. Journal of the ACM, 20(1), 46-55.
 Hegedüs, C., Hujter, M., & Manlove, D. (2002). Pareto Optimality in
House Allocation Problems. International Journal of Game Theory,
31(4), 547-565.

 Table des matières


 Epigraphe...........................................................................................................................i
 Dédicace.............................................................................................................................ii

 Remerciements.................................................................................................................iii

 Sigles et abréviations........................................................................................................iv

 Liste des tableaux..............................................................................................................v

 Liste des figures................................................................................................................vi

 INTRODUCTION.............................................................................................................1

 1...................................................................................................................Problématique
............................................................................................................................................1

 2..........................................................................................................................Hypothèse
............................................................................................................................................1

 3.............................................................................................................Objectif du travail
............................................................................................................................................1

 4.................................................................................................................Choix du travail
............................................................................................................................................2

 5.....................................................................................................Méthodes et techniques
............................................................................................................................................2

 6.......................................................................................................Subdivision du travail
............................................................................................................................................2

 Chapitre premier..............................................................................................................3

 PROBLEME DE MARIAGE...........................................................................................3

 I.0 Introduction.................................................................................................................3

 I.1. Historique....................................................................................................................3
P a g e | 51

 I.2. Problème classique.....................................................................................................3

 I.3. Mariages stables..........................................................................................................4

 Définition 1.1. (Affectation)..............................................................................................4

 Définition 1.2. (Affectation stable)..................................................................................4

 Définition 1.3. (Couplage).................................................................................................4

 1.3.1. Listes incomplètes....................................................................................................6

 1.3.2. Conversion de listes incomplètes en listes complètes............................................6

 Théorème 1.1.....................................................................................................................7

 1.4. Algorithme de Gale et Shapley..................................................................................7

 1.4.1. Stabilité....................................................................................................................8

 Théorème 1.2 :...................................................................................................................9

 1.4.2. Description de l’algorithme....................................................................................9

 1.4.3. Conditions..............................................................................................................10

 1.4.4. Ensembles de tailles différentes............................................................................10

 1.4.5. Version d’algorithme............................................................................................11

 1.5. Quelques applications..............................................................................................11

 1.5.1. Le problème des colocataires................................................................................11

 1.5.2. La carte scolaire....................................................................................................12

 1.6. Rôles du tableau.......................................................................................................12

 1.7. Importance du tableau.............................................................................................13

 Chapitre deuxième..........................................................................................................14

 BREVE DESCRIPTION DU MILIEU D’ETUDE.......................................................14

 II.1. Localisation du milieu d’étude...............................................................................14

 II.2. Situation géographie..............................................................................................14

 II.3. Aperçu historique....................................................................................................14

 II.4. Structure administrative.........................................................................................14

 a.........................................................................................................Le comité directeur :


..........................................................................................................................................14

 b.............................................................................................................Comité de gestion:
..........................................................................................................................................14
P a g e | 52

 II.5. Situation du personnel du centre...........................................................................15

 II.6. Organigramme du Centre de Santé Cerphytoco..................................................16

 II.7. Services organisées..................................................................................................17

 II.8. Les différents rôles de chaque services..................................................................17

 II.9. Vacations par services.............................................................................................18

 II.10. Etablissement des horaires des agents.................................................................19

 Chapitre Troisième.........................................................................................................20

 GENERALITE SUR LE LANGAGE JAVA.................................................................20

 III.1. Le concept de base.................................................................................................20

 III.2. Syntaxe de base du Langage.................................................................................20

 III.2.1. Quelques remarques...........................................................................................20

 III.2.1. Les mot clef « private » et « public ».................................................................21

 III.2.2. Entité de classe et Entité d'instance en Java.....................................................21

 III.3. Les objets................................................................................................................22

 III.3.1. La création d'un objet : instancié une classe....................................................23

 III.3.2. La durée de vie d'un objet..................................................................................23

 Exemple :.........................................................................................................................23

 III.3.3. La création d'objets identiques..........................................................................23

 Exemple 1 :......................................................................................................................23

 Exemple 2 :......................................................................................................................23

 III.3.4. Les références et la comparaison d'objets.........................................................24

 Exemple 1 :......................................................................................................................24

 Exemple 2 :......................................................................................................................24

 III.3.5. L'objet nul...........................................................................................................24

 III.3.6. Les variables de classes......................................................................................24

 Exemple 1 :......................................................................................................................24

 Exemple 2 :......................................................................................................................25

 III.3.7. La variable This..................................................................................................25

 Exemple 2 :......................................................................................................................25

 III.3.7. L'opérateur INSTANCEOF...............................................................................25


P a g e | 53

 Exemple 1 :......................................................................................................................25

 Exemple 2 :......................................................................................................................26

 Exemple 3 :......................................................................................................................26

 III.4. Exécution d’un programme en Java....................................................................26

 III.5. Caractéristiques du langage Java.........................................................................26

 III.6. Interface et implémentation..................................................................................27

 III.7. Types primitifs en Java.........................................................................................28

 III.8. Type non primitifs en Java...................................................................................28

 III.9. Interprétation des opérateurs =, ==.....................................................................29

 III.10. Les tableaux en Java............................................................................................29

 Exemple de Code :...........................................................................................................31

 III.10. Détail syntaxique sur les tableaux......................................................................32

 CONCLUSION GENERALE........................................................................................33

Vous aimerez peut-être aussi