Share to: share facebook share twitter share wa share telegram print page

Problème du drapeau hollandais

Le drapeau national hollandais

Le problème du drapeau hollandais est un problème de programmation, présenté par Edsger Dijkstra[1], qui consiste à réorganiser une collection d'éléments identifiés par leur couleur, sachant que seules trois couleurs sont présentes (par exemple, rouge, blanc, bleu, dans le cas du drapeau des Pays-Bas).

Étant donné un nombre quelconque de balles rouges, blanches et bleues alignées dans n'importe quel ordre, le problème est à les réarranger dans le bon ordre : les bleues d'abord, puis les blanches, puis les rouges.

Au départ les balles sont disposées dans un ordre quelconque. À la fin, toutes les balles de la même couleur doivent être rangées ensemble et l'ordre entre les couleurs doit être respecté, ainsi que l'ordre que les balles de même couleur avaient les unes par rapport aux autres dans l'agencement initial : on trouve par exemple d'abord tous les objets bleus, puis tous les objets blancs et enfin tous les objets rouges et si une balle rouge apparaissait avant une autre balle rouge, elle doit apparaître dans cet ordre dans l'agencement final (on appelle un tel algorithme de tri un algorithme stable). L'espace mémoire auxiliaire doit aussi être optimisé.

La solution est à la base d'algorithmes de tris, en particulier de variantes de quicksort qui doivent être stables. Autrement dit on cherche à définir un algorithme qui regroupe des items en trois catégories, ceux qui sont plus petits, ceux qui sont plus grands, et ceux qui sont égaux à un élément spécifique sans trop bouleverser l'ordre initial[2].

Description

L'algorithme proposé par Edsger Dijkstra est un algorithme qui montre que l'on peut ordonner une collection de n objets en un nombre linéaire de tests de couleurs, alors que les algorithmes de tri sans information sur les clés des objets font un nombre de comparaisons entre clés en ordre de grandeur plus grand (en moyenne et au pire de l'ordre de ) [3].

Le cas d'un tableau

Ce problème peut être vu comme le fait d'ordonner les éléments d'un tableau. Supposons que tous les éléments du tableau puissent être classés en trois catégories (petit, moyen et grand). Par exemple, si tous les éléments sont entre 0 et 1, les petits sont ceux entre 0 et 0,1 (non compris), les moyens entre 0,1 (compris) et 0,3 (non compris) et les grand ceux entre 0,3 (compris) et 1. Le problème est alors de mettre tous les petits éléments au début du tableau, puis les moyens, puis les grands éléments à la fin du tableau.

Un algorithme possible est de faire grandir l'ensemble des grands éléments depuis la fin, celui des petits depuis le milieu, et de garder les éléments moyens juste au-dessus des petits. L'algorithme garde en mémoire trois indices, le début du groupe des grands, la fin du groupe des petits et la fin du groupe des moyens. Les éléments à trier sont entre le groupe moyen et le grand groupe. À chaque étape l'algorithme regarde l'élément juste après les éléments moyens classés. Si cet élément est grand, il est échangé avec l'élément avant l'élément le plus grand classé et son indice est décrémenté, s'il est petit il est échangé avec le plus petit élément moyen et son indice ainsi que l'indice de fin des moyens est incrémenté, sinon l'élément n'est pas bougé et seul l'indice de fin des éléments moyens est incrémenté. La complexité de cet algorithme est déplacements et comparaisons[4].

Algorithme général

On considère n éléments rangés dans un tableau T[1..n] (n≥1). Chaque élément a une clé qui ne peut prendre que l’une des trois valeurs : blanc, bleu ou rouge. On souhaite trier le tableau de sorte qu’on ait à gauche tous les éléments bleus (s’il y en a), puis au milieu tous les éléments blancs (s’il y en a), et à droite tous les éléments rouges (s’il y en a).

Principe

Le principe est le suivant. On part des deux extrémités, comme dans la procédure partition du tri rapide. On s’intéresse à la case courante du tableau T, dont on teste la couleur, et selon le résultat on procède à des échanges, de sorte qu'on ait à chaque étape à gauche une zone de bleus, puis une zone de blancs, puis une zone inconnue et enfin, à droite une zone de rouges. On va utiliser une variable b (blue), indice de la première case après la zone bleue connue; une variable w (white), indice de la première case après la zone blanche connue et une variable r (red), indice de la première case avant la zone rouge connue. L'algorithme élémentaire consiste à réduire la zone inconnue comprise entre les bornes w et r par test de la couleur de la case w.

Tableau à une étape donnée :

bleu bleu blanc blanc blanc blanc inconnue inconnue inconnue inconnue rouge rouge
1 2 3 4 5 6 7 8 9 10 11 12

b = 3 ; w = 7 ; r = 10.

Pseudocode

Enum couleur {bleu, blanc, rouge}
Lexique : b, w, r : entier ; T : tab[1..n] de couleur
Début
	b ← 1; w ← 1 ; r ← n
	tant que w ≤ r faire 
		si T[w] = blanc alors w ← w+1
		sinon si T[w] = bleu alors 
			{échanger T[b] et T[w] ; 
			b ← b+1 ; w ← w+1 }
		sinon // T[w] = rouge 
			{échanger T[w] avec T[r] ; 
			r ← r-1}
	fintantque ; 
Fin

Complexité

La complexité au mieux est de n tests de couleur et 0 échange (cas par exemple où tous les éléments sont de couleur bleue) et au pire de 2n tests de couleur et n échanges (par exemple, cas où tous les éléments sont de couleur rouge). Dans le cas où l'on considère que toutes les couleurs sont également possibles en chaque case du tableau, on peut montrer que le nombre moyen de tests est de (5/3)n et que le nombre moyen d'échanges est de (2/3)n [3].

Voir aussi

Liens externes

Références

  1. Dans le livre : Edsger W. Dijkstra, A discipline of programming, Englewood Cliffs, N.J., Prentice-Hall, , xvii+217 (ISBN 0-13-215871-X, OCLC 1958445), le chapitre 14 (pages 111-116) a pour titre : « The Problem of the Dutch national flag ».
  2. Ce cas apparaît en particulier dans les chaînes de caractères triées avec la version de Quicksort à plusieurs clefs. Voir : Eunsang Kim et Kunsoo Park, « Improving multikey Quicksort for sorting strings with many equal elements », Information Processing Letters, vol. 109, no 9,‎ , p. 454–459 (DOI 10.1016/j.ipl.2009.01.007)
  3. a et b Colin L. McMaster, « An analysis of algorithms for the Dutch national flag problem », Communications of the ACM, vol. 21, no 10,‎ , p. 842-846 (DOI 10.1145/359619.359629)
  4. « Dutch National Flag problem and algorithm », Faculty of Information Technology (Clayton), Monash University, Australia,

Read other articles:

Free software Git and Mercurial repository hosting For other uses, see Kallithea (disambiguation). KallitheaDeveloper(s)Software Freedom ConservancyInitial releaseJuly 4, 2014; 9 years ago (2014-07-04)[1]Stable release0.7.0 / May 27, 2021; 2 years ago (2021-05-27)[2] Repositorykallithea-scm.org/repos/kallithea Written inFailed to render property programming language: programming language property not found.[3]Operating systemPlatform...

 

جزء من سلسلة مقالات حولالتطور مواضيع رئيسيةمدخل إلى التطور نظرية التطور سلف مشترك أدلة السلف المشترك عمليات ونتائجوراثيات سكانية  · تنوع جيني طفرة  · تكيف  · اصطفاء طبيعي انحراف وراثي  · انسياب المورثات انتواع  · تشعب تطوري  · تشعب تكيفي تعاون  · تطور مشتر...

 

16th Guards Fighter Aviation DivisionActive1942–1998CountrySoviet UnionAllegianceSoviet Air Force16th Air ArmyRoleAir superioritySizeDivisionGarrison/HQDamgarten, GDR (until 1993)Military unit The 16th Guards Fighter Aviation Division was an Aviation Division of the Soviet Air Forces, active from 1942 to 1998. Originally activated in 1942 as the 258th Fighter Aviation Division from the Air Forces of the 14th Army, then the 258th Mixed Aviation Division 27.2.43; redesignated in accordance wi...

Slag bij Funkstown Onderdeel van de Amerikaanse burgeroorlog Datum 10 juli 1863 Locatie Funkstown Maryland Resultaat onbeslist Strijdende partijen Vlag van Verenigde Staten (1863-1865)Verenigde Staten Geconfedereerde Staten Leiders en commandanten John Buford J.E.B. Stuart Troepensterkte 1 cavaleriedivisie1 infanteriebrigade 1 cavaleriedivisie1 infanteriebrigade Verliezen Totaal voor US en CS: 479 Totaal voor US en CS: 479 Gettysburgveldtocht Brandy Station · 2de Winchester · Aldie · Middl...

 

Ascension Eiland van Vlag van Verenigd Koninkrijk Sint-Helena, Ascension en Tristan da Cunha Vlag van Ascension Wapen van Ascension Locatie Land Vlag van Verenigd Koninkrijk Sint-Helena, Ascension en Tristan da Cunha Locatie Atlantische Oceaan Coördinaten 7° 56′ ZB, 14° 22′ WL Algemeen Oppervlakte 91 km² Inwoners (2008) 885 Hoofdplaats Georgetown Lengte 14 km Breedte 12 km Hoogste punt The Peak (859 m) Detailkaart Foto's Portaal    Geografie Ascension is ee...

 

Serbian customs and practices An icon representing the Nativity of Jesus Christ. Serbian Christmas traditions are customs and practices of the Serbs associated with Christmas and a period encompassing it, between the third Sunday before Christmas Day and Epiphany. There are many, complex traditions connected with this period. They vary from place to place, and in many areas have been updated or watered down to suit modern living. The Serbian name for Christmas is Božić (Serbian Cyrillic: Бо

Sociologia História Portal Teoria Positivismo Antipositivismo Culturalismo Pós-positivismo Funcionalismo Construtivismo social Estruturalismo Interacionismo Teoria crítica Teoria ator-rede Métodos Quantitativa Qualitativa Etnografia Etnometodologia Análise da conversação Análise de redes sociais Subcampos Criminologia Divergente Demografia Educação Econômica Ambiental Industrial Desigualdade Conhecimento Direito Matemática Médica Política Religião Rural Ciência Mudança social...

 

Blason du Touquet-Paris-Plage établi en 1894 et adopté en 1912 par la commune. La Presse écrite au Touquet-Paris-Plage est la liste des journaux, magazines, revues et bulletins relatifs à la commune du Touquet-Paris-Plage, commune française de la région Hauts-de-France. Le premier journal qui paraît, le 15 août 1886, s'appelle Paris-Plage, et la station, qui s'appelle Paris-Plage n'est que le hameau de Cucq, elle devient, le 28 mars 1912, la commune du Touquet-Paris-Plage. Liste des 2...

 

Church and 29th StreetChurch and Day StreetEastbound train at Church and 29th Street in January 2019General informationLocationChurch Street at 29th Street and Day StreetSan Francisco, CaliforniaCoordinates37°44′39″N 122°25′36″W / 37.74403°N 122.42669°W / 37.74403; -122.42669Platforms2 side platformsTracks2ConstructionAccessibleYesHistoryOpenedAugust 11, 1917[1]Rebuilt1997Services Preceding station Muni Following station 30th Street and Dolores...

スペースX CRS-27名称SpX-27任務種別ISS物資補給運用者スペースXCOSPAR ID2023-033A任務期間31日 20時間 28分 特性宇宙機カーゴドラゴン C209宇宙機種別カーゴドラゴン製造者スペースX燃料無重量9,525 kg (20,999 lb)寸法全高:8.1 m (27 ft)直径:4 m (13 ft) 任務開始打ち上げ日2023年3月15日 00:30 UTC [1]ロケットファルコン9ブロック5、B1073.7打上げ場所ケネディ宇宙セ...

 

Vista del Castillo de Carrickfergus. El Castillo de Carrickfergus es un castillo normando situado en el pueblo de Carrickfergus, en el Condado de Antrim, Irlanda del Norte. El castillo está ubicado a orillas del Belfast Lough. Asediado por escoceses, irlandeses, ingleses y franceses, el castillo jugó un importante rol militar hasta 1928 y es una de las estructuras medievales mejor preservadas de toda Irlanda. Hoy día, el castillo es mantenido por el Servicio de Entorno y Patrimonio como un...

 

FIS Nordic World Ski Championships 2011 開催都市 オスロ参加国・地域数 49[1]参加人数 636[2][1]開会式 2011年2月23日閉会式 2011年3月6日主競技場 ホルメンコーレンジャンプ競技場とその周辺 Portal:オリンピックテンプレートを表示 2011年ノルディックスキー世界選手権大会は2011年(平成23年)2月23日から3月6日までの12日間、ノルウェーのオスロで開催されたノルディッ

The Ice Sheet at Ogden hosted the curling events for the 2002 Winter Olympics in Salt Lake City. For the Winter Olympics, there are eleven venues that have been or will be used for curling. Games Venue Other sports hosted at venue for those games Capacity Ref. 1924 Chamonix Stade Olympique de Chamonix Cross-country skiing, Figure skating, Ice hockey, Military patrol, Nordic combined (cross-country skiing), Speed skating 45,000 [1] 1988 Calgary Max Bell Arena (demonstration) Short trac...

 

Overview of the transport infrastructure of Greater Manchester Transportation in Greater ManchesterOverviewLocaleGreater ManchesterTransit typeBuses, car, cycling, airport, commuter rail, tram, tram-train, high speed rail (proposed)Number of linesBus routes: 600+Tram: 8Rail: 16Number of stationsBus stops: 12,000Tram stops: 99Train stations: 101Daily ridership824,657 (2014)[1]OperationOperator(s)Transport for Greater Manchester (TfGM) The transport infrastructure of Greater Manchester ...

 

Mau HoduInformasi pribadiMeninggal1999Pendudukan Indonesia di Timor TimurPartai politikFretilinKarier militerPihak Timor LesteDinas/cabang FalintilMasa dinas1975—1999Pertempuran/perangPendudukan Indonesia di Timor TimurSunting kotak info • L • B Mau Hodu Ran Kadalak (singkatnya Mau Hodu atau Mau Hudo), sebenarnya José Amancio da Costa (meninggal 1999) adalah pejuang kemerdekaan Timor Leste.[1] Latar Belakang Mau Hodu memiliki empat saudara lelaki dan lima saudara...

Railway station in Liverpool, England SandhillsMerseyrail Class 508 at Platform 1 in 2012General informationLocationKirkdale, LiverpoolEnglandCoordinates53°25′48″N 2°59′30″W / 53.4300°N 2.9917°W / 53.4300; -2.9917Grid referenceSJ342930Managed byMerseyrailTransit authorityMerseytravelPlatforms2Other informationStation codeSDLFare zoneC1ClassificationDfT category EKey dates1850Opened2007Closed for Refurbishment2008ReopenedPassengers2017/18 1.326 million2018/1...

 

Cet article est une ébauche concernant les mathématiques et une association. Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants. Association des professeurs de mathématiques de l'enseignement publicHistoireFondation 1910CadreSigle APMEPType Organisation à but non lucratif, association professionnelleForme juridique Association déclaréeObjet social Étude des questions intéressant l'enseignement des mathématiq...

 

American politician (born 1934) Jim InhofeOfficial portrait, 2018United States Senatorfrom OklahomaIn officeNovember 17, 1994 – January 3, 2023Preceded byDavid BorenSucceeded byMarkwayne MullinChair of the Senate Armed Services CommitteeIn officeSeptember 6, 2018[a] – February 3, 2021Preceded byJohn McCainSucceeded byJack ReedChair of the Senate Environment CommitteeIn officeJanuary 3, 2015 – January 3, 2017Preceded byBarbara BoxerSucceeded byJohn Barr...

Ratu KostmopolitanSutradara Ody C. Harahap Produser Raam Punjabi Ditulis oleh Ody C. Harahap Indra Zahry PemeranLuna MayaMirasih Tyas EndahImey LiemAl Fathir MuchtarReza PahleviYati SurachmanCici TegalFerina WidodoAdi KurdiPenata musikJoseph S. DjafarPenyuntingAline JusriaDistributorMVP Pictures Multivision PlusTanggal rilis27 Mei 2010Durasi85 menitNegara Indonesia Bahasa Indonesia Ratu Kostmopolitan adalah film aksi komedi Indonesia yang dirilis pada 27 Mei 2010 yang disutradarai oleh ...

 

Genus of trees This article is about the plant genus. For the tree in the genus commonly called Jacaranda, see Jacaranda mimosifolia. For the rosewood, see Dalbergia nigra. For other uses, see Jacaranda (disambiguation). Jacaranda A flower of Jacaranda mimosifolia Scientific classification Kingdom: Plantae Clade: Tracheophytes Clade: Angiosperms Clade: Eudicots Clade: Asterids Order: Lamiales Family: Bignoniaceae Tribe: Jacarandeae Genus: JacarandaJuss. Type species Jacaranda mimosifolia Jaca...

 
Kembali kehalaman sebelumnya