<?xml 
version="1.0" encoding="utf-8"?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
>

<channel xml:lang="fr">
	<title>Site WWW de Laurent Bloch</title>
	<link>http://www.laurentbloch.org/</link>
	
	<language>fr</language>
	<generator>SPIP - www.spip.net (Sarka-SPIP)</generator>




 
	<item xml:lang="fr">
		<title>Plan du cours d'algorithmes pour la biologie (BNF 103)</title>
		<link>http://www.laurent-bloch.org/spip.php?article117</link>
		<guid isPermaLink="true">http://www.laurent-bloch.org/spip.php?article117</guid>
		<dc:date>2010-03-07T17:19:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		


		<dc:subject>article_une</dc:subject>

		<description>Le cours suivra le plan suivant : D&#233;finitions, notations, pseudocode Exemple, Pseudo-code, pseudo-code-&gt;scheme, recherche dans une liste, complexit&#233;, notations asymptotiques. Donn&#233;es et information Quelques notions de base. Graphes et arbres Encores des notions de base... Automates et machines de Turing &#192; l'attaque des vrais fondements. Automates II : non-d&#233;terminisme Apr&#232;s les automates &#224; &#233;tats finis d&#233;terministes, les automates non-d&#233;terministes, qui sont d'ailleurs &#233;quivalents. (...)

-
&lt;a href="http://www.laurent-bloch.org/spip.php?rubrique14" rel="directory"&gt;Algorithmes pour la biologie&lt;/a&gt;

/ 
&lt;a href="http://www.laurent-bloch.org/spip.php?mot65" rel="tag"&gt;article_une&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Le cours suivra le plan suivant :&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt;&lt;a href='http://www.laurent-bloch.org/spip.php?article68' class='spip_in'&gt;D&#233;finitions, notations, pseudocode&lt;/h3&gt;
&lt;p&gt;&lt;/a&gt; Exemple, Pseudo-code, pseudo-code-&gt;scheme, recherche dans une liste, complexit&#233;, notations asymptotiques.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt;&lt;a href='http://www.laurent-bloch.org/spip.php?article111' class='spip_in'&gt;Donn&#233;es et information&lt;/h3&gt;
&lt;p&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Quelques notions de base.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt;&lt;a href='http://www.laurent-bloch.org/spip.php?article110' class='spip_in'&gt;Graphes et arbres&lt;/h3&gt;
&lt;p&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Encores des notions de base...&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt;&lt;a href='http://www.laurent-bloch.org/spip.php?article112' class='spip_in'&gt;Automates et machines de Turing&lt;/h3&gt;
&lt;p&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&#192; l'attaque des vrais fondements.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt;&lt;a href='http://www.laurent-bloch.org/spip.php?article113' class='spip_in'&gt;Automates II : non-d&#233;terminisme&lt;/h3&gt;
&lt;p&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Apr&#232;s les automates &#224; &#233;tats finis d&#233;terministes, les automates non-d&#233;terministes, qui sont d'ailleurs &#233;quivalents.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt;&lt;a href='http://www.laurent-bloch.org/spip.php?article118' class='spip_in'&gt;Expressions r&#233;guli&#232;res&lt;/h3&gt;
&lt;p&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;La suite logique des automates, auxquels elles sont &#233;quivalentes.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt; &lt;a href='http://www.laurent-bloch.org/spip.php?article71' class='spip_in'&gt;Acc&#233;l&#233;ration d'un algorithme&lt;/h3&gt;
&lt;p&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Recherche du maximum d'un ensemble de valeurs, &lt;i&gt;memoization&lt;/i&gt; de Fibonacci, recherche de segments maximaux O(n&lt;sup&gt;3&lt;/sup&gt;), O(n&lt;sup&gt;2&lt;/sup&gt;), O(n).
On attaque l'algorithmique proprement dite.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt; &lt;a href='http://www.laurent-bloch.org/spip.php?article76' class='spip_in'&gt;Acc&#233;l&#233;ration de l'algorithme de Fibonacci&lt;/h3&gt;
&lt;p&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Un exemple.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt; &lt;a href='http://www.laurent-bloch.org/spip.php?article77' class='spip_in'&gt;Tris&lt;/h3&gt;
&lt;p&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Algorithmes de tri par insertion, recherche de maximum dans une liste, tri fusion, tri rapide, tri lin&#233;aire.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt; &lt;a href='http://www.laurent-bloch.org/spip.php?article81' class='spip_in'&gt;Structures de donn&#233;es &#233;l&#233;mentaires&lt;/h3&gt;
&lt;p&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Les pile, les files, le tas et tris par tas, les arbres, arbres binaires de recherche, tables de hashage.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt; &lt;a href='http://www.laurent-bloch.org/spip.php?article88' class='spip_in'&gt;Recherche de mots dans un texte&lt;/h3&gt;
&lt;p&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Force brute, Knuth-Morris-Pratt (KMP), Karp Rabin.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt; &lt;a href='http://www.laurent-bloch.org/spip.php?article144' class='spip_in'&gt;Le pr&#233;c&#233;dent en style r&#233;cursif&lt;/h3&gt;
&lt;p&gt;&lt;/a&gt;&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt; &lt;a href='http://www.laurent-bloch.org/spip.php?article94' class='spip_in'&gt;Instrumentation d'un programme pour l'observer : KMP&lt;/h3&gt;
&lt;p&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Une variation autour du pr&#233;c&#233;dent.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt; Recherche de mots dans un texte (suite)&lt;/h3&gt;
&lt;p&gt;Structures de donn&#233;es
Les arbres de mot-cl&#233;s (keyword trees), les arbres de suffixes (suffix trees).&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt; Recherche d'un motif dans un texte&lt;/h3&gt;
&lt;p&gt;Prosite, les expressions r&#233;guli&#232;res, grep, les automates &#224; &#233;tat fini, expression r&#233;guli&#232;res -&gt; automates &#224; &#233;tat finis ind&#233;terministes, d&#233;terminisation d'un automate &#224; &#233;tat fini, minimisation d'automates &#224; &#233;tat finis.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt; Algorithmes sur les graphes&lt;/h3&gt;
&lt;p&gt;Le m&#233;tabolisme, repr&#233;sentation de graphe, recherche de plus court chemin, recherche d'arbre couvrant minimal.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt; &lt;a href='http://www.laurent-bloch.org/spip.php?article89' class='spip_in'&gt;Algorithme de Needleman et Wunsch&lt;/h3&gt;
&lt;p&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Alignement de s&#233;quences.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt; &lt;a href='http://www.laurent-bloch.org/spip.php?article90' class='spip_in'&gt;Programmation dynamique&lt;/h3&gt;
&lt;p&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Recherche de s&#233;quences hydrophobes, comparaison de s&#233;quence par l'algorithme de &lt;a href='http://www.laurent-bloch.org/spip.php?article89' class='spip_in'&gt;Needleman et Wunsch&lt;/a&gt;, par l'algorithme de Smith et Waterman, optimisation de Gotoh, multiplication de matrices : minimisation des calculs.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt; Recherche dans des banques de donn&#233;es&lt;/h3&gt;
&lt;p&gt;Blast, Fasta, les matrices PAM.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt; Chaines de Markov&lt;/h3&gt;
&lt;p&gt;Pr&#233;diction de mod&#232;les de g&#232;nes, pr&#233;diction de structure, repr&#233;sentation de motifs fonctionnels.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt; Des probl&#232;mes difficiles : NP-compl&#233;tude&lt;/h3&gt;
&lt;p&gt;Probl&#232;me de la clique, Sat, voyageur de commerce.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt; Solution presque optimales&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;Simulated anealing&lt;/i&gt;, algorithmes g&#233;n&#233;tiques...&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
	<item xml:lang="fr">
		<title>Algorithmes de tri</title>
		<link>http://www.laurent-bloch.org/spip.php?article77</link>
		<guid isPermaLink="true">http://www.laurent-bloch.org/spip.php?article77</guid>
		<dc:date>2009-06-22T14:14:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Laurent Bloch, William Saurin</dc:creator>



		<description>Auteurs : William Saurin, Laurent Bloch .toclist-style:none ; .titlemargin:auto ;text-align:center .centertext-align:center ;margin-left:auto ;margin-right:auto ; .flushlefttext-align:left ;margin-left:0ex ;margin-right:auto ; .flushrighttext-align:right ;margin-left:auto ;margin-right:0ex ; DIV TABLEmargin-left:inherit ;margin-right:inherit ; PREtext-align:left ;margin-left:0ex ;margin-right:auto ; BLOCKQUOTEmargin-left:4ex ;margin-right:4ex ;text-align:left ; .partmargin:auto (...)

-
&lt;a href="http://www.laurent-bloch.org/spip.php?rubrique14" rel="directory"&gt;Algorithmes pour la biologie&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Auteurs : &lt;strong&gt;William Saurin, Laurent Bloch&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;&lt;/p&gt; &lt;HEAD&gt; &lt;META http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=ISO-8859-1&quot;&gt; &lt;META name=&quot;GENERATOR&quot; content=&quot;hevea 1.08&quot;&gt; &lt;STYLE type=&quot;text/css&quot;&gt; .toc{list-style:none;} .title{margin:auto;text-align:center} .center{text-align:center;margin-left:auto;margin-right:auto;} .flushleft{text-align:left;margin-left:0ex;margin-right:auto;} .flushright{text-align:right;margin-left:auto;margin-right:0ex;} DIV TABLE{margin-left:inherit;margin-right:inherit;} PRE{text-align:left;margin-left:0ex;margin-right:auto;} BLOCKQUOTE{margin-left:4ex;margin-right:4ex;text-align:left;} .part{margin:auto;text-align:center} .lstlisting{font-family:monospace;white-space:pre;margin-right:auto;margin-left:0pt;text-align:left} &lt;/STYLE&gt; &lt;/HEAD&gt; &lt;BODY &gt; &lt;!--HEVEA command line is: /usr/bin/hevea Tris --&gt; &lt;!--HTMLHEAD--&gt; &lt;!--ENDHTML--&gt; &lt;!--PREFIX &lt;ARG &gt;&lt;/ARG&gt;--&gt; &lt;!--CUT DEF section 1 --&gt; &lt;h3 class=&quot;spip&quot;&gt;#Sommaire-&lt;/h3&gt;
&lt;p&gt;&lt;!--TOC section Recherche dichotomique.--&gt;&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt;Recherche dichotomique&lt;/h3&gt;
&lt;p&gt;&lt;!--TOC subsection Aurait-on-pu aller plus vite dans la recherche d'un &#233;l&#233;ment dans
une liste?--&gt;&lt;/p&gt; &lt;H3 CLASS=&quot;subsection&quot;&gt;Aurait-on-pu aller plus vite dans la recherche d'un &#233;l&#233;ment dans
une liste ?&lt;/H3&gt;&lt;!--SEC END --&gt;
&lt;p&gt;Comment cherche-t-on un mot dans un dictionnaire ? on regarde les
mots de la page qui est au milieu du dictionnaire et on se demande
si celui que l'on cherche est dans la page, s'il plus grand que le
dernier ou s'il est plus petit que le premier. S'il est dans la page :
c'est trouv&#233;, s'il est plus petit on recommence sur la moiti&#233; inf&#233;rieure
du dictionnaire et s'il est plus grand on recommence sur la moiti&#233;
sup&#233;rieure.&lt;BR&gt;
&lt;BR&gt;
&lt;!--TOC subsection Algorithme dichotomique--&gt;&lt;/p&gt; &lt;H3 CLASS=&quot;subsection&quot;&gt;Algorithme dichotomique&lt;/H3&gt;&lt;!--SEC END --&gt;
&lt;DIV CLASS=&quot;lstlisting&quot;&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Nom&lt;/B&gt; &lt;B&gt;de&lt;/B&gt; l'algorithme : dichot&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Donn&#233;e&lt;/B&gt; d'entr&#233;e : vecteur tri&#233; t &lt;B&gt;et&lt;/B&gt; valeur v&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;R&#233;sultat&lt;/B&gt; : num&#233;ro dans la liste&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;petit &lt;- 0&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;grand &lt;- longueur &lt;B&gt;de&lt;/B&gt; t -1&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;pivot &lt;- Entier(grand/ 2)&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;/FONT&gt;
&lt;FONT COLOR=purple&gt;&lt;B&gt;si&lt;/B&gt; v = t[grand] &lt;B&gt;alors&lt;/B&gt; &lt;B&gt;retourner&lt;/B&gt; grand&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;B&gt;sinon&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;B&gt;si&lt;/B&gt; v =t[petit] &lt;B&gt;alors&lt;/B&gt; &lt;B&gt;retourner&lt;/B&gt; petit&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;B&gt;sinon&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;B&gt;tant&lt;/B&gt; &lt;B&gt;que&lt;/B&gt; pivot != petit &lt;B&gt;et&lt;/B&gt; t[pivot] != v &lt;B&gt;faire&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;B&gt;si&lt;/B&gt; t[pivot] &lt; v &lt;B&gt;alors&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; petit &lt;- pivot&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;B&gt;sinon&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; grand &lt;- pivot&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;B&gt;finsi&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; pivot &lt;- Entier((grand - petit) / 2)&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;B&gt;fin&lt;/B&gt; &lt;B&gt;tant&lt;/B&gt; &lt;B&gt;que&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;B&gt;si&lt;/B&gt; pivot != petit &lt;B&gt;alors&lt;/B&gt; &lt;B&gt;retourner&lt;/B&gt; pivot&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;B&gt;sinon&lt;/B&gt; &lt;B&gt;retourner&lt;/B&gt; -1 &lt;B&gt;fin&lt;/B&gt; &lt;B&gt;si&lt;/B&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;BR&gt;
&lt;!--TOC subsection Exemple--&gt;
&lt;H3 CLASS=&quot;subsection&quot;&gt;Exemple&lt;/H3&gt;&lt;!--SEC END --&gt;
&lt;p&gt;Rechercher 176 dans le tableau suivant :&lt;BR&gt;&lt;/p&gt;
&lt;TABLE BORDER=1 CELLSPACING=0 CELLPADDING=1&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;67&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;8&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;9&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;10&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;11&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;17&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;43&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;89&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;100&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;113&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;156&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;176&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;231&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;248&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;301&lt;/TD&gt;
&lt;/TR&gt;&lt;/TABLE&gt;&lt;BR&gt;
&lt;TABLE BORDER=1 CELLSPACING=0 CELLPADDING=1&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;petit&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;pivot&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;grand&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;67&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;8&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;9&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;10&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;11&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;17&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;43&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;89&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;100&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;113&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;156&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;176&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;231&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;248&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;301&lt;/TD&gt;
&lt;/TR&gt;&lt;/TABLE&gt;&lt;BR&gt;
&lt;TABLE BORDER=1 CELLSPACING=0 CELLPADDING=1&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;petit&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;pivot&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;grand&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;67&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;8&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;9&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;10&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;11&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;17&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;43&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;89&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;100&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;113&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;156&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;176&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;231&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;248&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;301&lt;/TD&gt;
&lt;/TR&gt;&lt;/TABLE&gt;&lt;BR&gt;
&lt;!--TOC subsection Combien de fois fait on le test &#8220;grand != petit et t[pivot]
!= v&#8221;--&gt;
&lt;H3 CLASS=&quot;subsection&quot;&gt;Combien de fois fait on le test &#8220;grand != petit et t[pivot] != v&#8221;&lt;/H3&gt;&lt;!--SEC END --&gt;
&lt;p&gt;En fait &#224; chaque &#233;tape on coupe l'espace de recherche (le tableau
en 2) . On cesse de faire des tests lorsque l'espace de recherche
contient au plus un ou deux &#233;l&#233;ments. &lt;BR&gt;&lt;/p&gt;
&lt;TABLE BORDER=1 CELLSPACING=0 CELLPADDING=1&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;&#233;tape&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;...&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;n&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;taille du tableau&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;t&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;t/2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;t/4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;t/8&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;...&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;t/2&lt;SUP&gt;&lt;I&gt;n&lt;/I&gt;&amp;minus;1&lt;/SUP&gt;&lt;/TD&gt;
&lt;/TR&gt;&lt;/TABLE&gt;&lt;BR&gt;
A l'&#233;tape n (o&#249; on s'arr&#234;te) on a une taille 2&lt;= &lt;I&gt;t&lt;/I&gt;/2&lt;SUP&gt;&lt;I&gt;n&lt;/I&gt;&amp;minus;1&lt;/SUP&gt; et donc&lt;BR&gt;
&lt;BR&gt;
2&lt;SUP&gt;&lt;I&gt;n&lt;/I&gt;&lt;/SUP&gt;&lt;= &lt;I&gt;t&lt;/I&gt; et donc &lt;I&gt;n&lt;/I&gt; &lt;= &lt;I&gt;log&lt;/I&gt;&lt;SUB&gt;2&lt;/SUB&gt;&lt;I&gt;t&lt;/I&gt;&lt;BR&gt;
&lt;BR&gt;
Selon l'algorithme le nombre de test est : &lt;BR&gt;
&lt;BR&gt;
&lt;!--TOC subsection En Scheme :--&gt;
&lt;H3 CLASS=&quot;subsection&quot;&gt;En Scheme :&lt;/H3&gt;&lt;!--SEC END --&gt;
&lt;DIV CLASS=&quot;lstlisting&quot;&gt;&lt;TT&gt;(&lt;B&gt;define&lt;/B&gt; (dichot t v) ; t est un vecteur tri&#233;e v une valeur&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;let&lt;/B&gt;* ((petit 0)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (grand (- (&lt;B&gt;vector&lt;/B&gt;-&lt;B&gt;length&lt;/B&gt; t) 1))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (pivot (quotient (+ grand petit) 2)))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;if&lt;/B&gt; (= v (&lt;B&gt;vector&lt;/B&gt;-ref t grand)) grand&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;if&lt;/B&gt; (= v (&lt;B&gt;vector&lt;/B&gt;-ref t petit)) petit&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;let&lt;/B&gt; loop ()&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;if&lt;/B&gt; (&lt;B&gt;and&lt;/B&gt; (not (= petit pivot))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (not (= v (&lt;B&gt;vector&lt;/B&gt;-ref t pivot))))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;begin&lt;/B&gt;&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;if&lt;/B&gt; (&lt; (&lt;B&gt;vector&lt;/B&gt;-ref t pivot) v)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;set !&lt;/B&gt; petit pivot)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;set !&lt;/B&gt; grand pivot))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;set !&lt;/B&gt; pivot (quotient (+ grand petit) 2))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (loop))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;if&lt;/B&gt; (not (= petit pivot)) pivot -1)))))))&lt;/TT&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;BR&gt;
&lt;!--TOC section Tri par insertion--&gt;
&lt;h3 class=&quot;spip&quot;&gt;Tri par insertion&lt;/h3&gt;
&lt;p&gt;Un tableau A :&lt;BR&gt;&lt;/p&gt;
&lt;TABLE BORDER=1 CELLSPACING=0 CELLPADDING=1&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;6&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;7&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;100&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;10&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;8&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;56&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;78&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;67&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;34&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;/TR&gt;&lt;/TABLE&gt;&lt;BR&gt;
Nous nous proposons de trier un tableau &lt;I&gt;V&lt;/I&gt; repr&#233;sent&#233;
par un vecteur de longueur &lt;TT&gt;Vlen&lt;/TT&gt;.
&lt;p&gt;L'id&#233;e est simple : &#224; un certain moment de
l'algorithme la r&#233;gion qui va de 0 &#224; &lt;I&gt;j&lt;/I&gt; &#8722; 1
dans le tableau est d&#233;j&#224; tri&#233;e. Il suffit
pour avoir une s&#233;quence tri&#233;e de 0 &#224; &lt;I&gt;j&lt;/I&gt;
d'ins&#233;rer &lt;I&gt;V&lt;/I&gt;[&lt;I&gt;j&lt;/I&gt;] dans cette s&#233;quence. Ins&#233;rer
c'est trouver le premier &#233;l&#233;ment dans la
s&#233;quence de 0 &#224; &lt;I&gt;j&lt;/I&gt;&#8722;1 tel que cet &#233;l&#233;ment soit
plus grand que &lt;I&gt;V&lt;/I&gt;[&lt;I&gt;j&lt;/I&gt;], on d&#233;cale alors tous les
&#233;l&#233;ments y compris celui l&#224; d'un rang vers le haut
et on ins&#232;re l'&#233;l&#233;ment &lt;I&gt;V&lt;/I&gt;[&lt;I&gt;j&lt;/I&gt;] dans le trou.&lt;/p&gt; &lt;p&gt;Il y a un pi&#232;ge : si on d&#233;cale tous les &#233;l&#233;ments
vers la droite, &#224; la fin du d&#233;calage &lt;I&gt;V&lt;/I&gt;[&lt;I&gt;j&lt;/I&gt;] doit
contenir &lt;I&gt;V&lt;/I&gt;[&lt;I&gt;j&lt;/I&gt;&#8722;1]. Il faut donc avoir sauvegard&#233;
&lt;I&gt;V&lt;/I&gt;[&lt;I&gt;j&lt;/I&gt;] avant le d&#233;calage : il nous faut une
variable auxiliaire.&lt;/p&gt; &lt;p&gt;On peut observer que la s&#233;quence qui va de 0 &#224;
0 dans un tableau est toujours tri&#233;e.&lt;/p&gt; &lt;p&gt;Pour une &#233;tape donn&#233;e il faut faire :&lt;/p&gt; &lt;OL CLASS=&quot;enumerate&quot; type=1&gt;&lt;LI CLASS=&quot;li-enumerate&quot;&gt;
trouver o&#249; ins&#233;rer ;
&lt;/LI&gt;&lt;LI CLASS=&quot;li-enumerate&quot;&gt;sauvegarder &lt;I&gt;V&lt;/I&gt;[&lt;I&gt;j&lt;/I&gt;] ;
&lt;/LI&gt;&lt;LI CLASS=&quot;li-enumerate&quot;&gt;d&#233;caler ;
&lt;/LI&gt;&lt;LI CLASS=&quot;li-enumerate&quot;&gt;ins&#233;rer &lt;I&gt;V&lt;/I&gt;[&lt;I&gt;j&lt;/I&gt;] dans le trou.
&lt;/LI&gt;&lt;/OL&gt;
&lt;p&gt;En somme :&lt;BR&gt;&lt;/p&gt; &lt;TABLE BORDER=1 CELLSPACING=0 CELLPADDING=1&gt;&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;6&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;7&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;8&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;10&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;56&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;100&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;78&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;67&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;34&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;__&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;&lt;/TR&gt;
&lt;/TABLE&gt;&lt;TABLE BORDER=1 CELLSPACING=0 CELLPADDING=1&gt;&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;6&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;7&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;8&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;10&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;56&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;100&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;78&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;67&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;34&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;^&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;__&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;&lt;/TR&gt;
&lt;/TABLE&gt;
&lt;p&gt;puis&lt;/p&gt; &lt;TABLE BORDER=1 CELLSPACING=0 CELLPADDING=1&gt;&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;6&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;7&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;8&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;10&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;56&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;100&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;67&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;34&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;^&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;__&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;&lt;/TR&gt;
&lt;/TABLE&gt;&lt;TABLE BORDER=1 CELLSPACING=0 CELLPADDING=1&gt;&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;78&lt;/TD&gt;&lt;/TR&gt;
&lt;/TABLE&gt;&lt;TABLE BORDER=1 CELLSPACING=0 CELLPADDING=1&gt;&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;6&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;7&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;8&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;10&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;56&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;100&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;67&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;34&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;^&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;__&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;&lt;/TR&gt;
&lt;/TABLE&gt;&lt;TABLE BORDER=1 CELLSPACING=0 CELLPADDING=1&gt;&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;6&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;7&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;8&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;10&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;56&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;78&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;100&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;67&lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt;34&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;&lt;/TR&gt;
&lt;/TABLE&gt;&lt;!--TOC subsection Pseudo-code--&gt;
&lt;H3 CLASS=&quot;subsection&quot;&gt;&lt;!--SEC ANCHOR --&gt;Pseudo-code&lt;/H3&gt;&lt;!--SEC END --&gt;&lt;TABLE CLASS=&quot;lstframe&quot; STYLE=&quot;padding:1ex;border-style:solid;&quot;&gt;&lt;TR&gt;&lt;TD CLASS=&quot;lstlisting&quot;&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Nom&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;de&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;l&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;'&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;algorithme&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; : &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;tri&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;-&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;insertion&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Donn&#233;e&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; : &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;un&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;tableau&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;V&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;R&#233;sultat&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; : &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;V&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;est&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;tri&#233;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;pour&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;allant&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;de&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; 1 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;&#224;&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; (&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;longueur&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;de&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;V&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;) -1 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;faire&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- 0&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;tant&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;que&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;et&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;V&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;] &lt;= &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;V&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;] &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;faire&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; + 1&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;fait&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;rotation&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;-&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;droite&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; (&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;V&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;, &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; , &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; - 1)&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;fait&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;retourner&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;V&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Nom&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;de&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;l&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;'&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;algorithme&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; : &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;rotation&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;-&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;droite&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Donn&#233;es&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; : &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;un&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;tableau&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;V&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;, &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;, &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Soit&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Vlen&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;longueur&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;(&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;V&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;)&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;tmp&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;V&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;+1]&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;k&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;tant&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;que&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;k&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;faire&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;V&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;k&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;+1] &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;V&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;k&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;]&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;k&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;k&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; - 1&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;fait&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;V&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;] &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;tmp&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;/TABLE&gt;
&lt;!--TOC subsection Traduisons en Scheme :--&gt;
&lt;H3 CLASS=&quot;subsection&quot;&gt;&lt;!--SEC ANCHOR --&gt;Traduisons en Scheme :&lt;/H3&gt;&lt;!--SEC END --&gt;
&lt;DIV CLASS=&quot;lstlisting&quot;&gt;&lt;TT&gt;
(&lt;B&gt;define&lt;/B&gt; (rotation-droite V i j) (&lt;B&gt;let&lt;/B&gt; ((Vlen (&lt;B&gt;vector-length&lt;/B&gt; V))) (&lt;B&gt;if&lt;/B&gt; (&gt;= j (- Vlen 1)) 'impossible (&lt;B&gt;let&lt;/B&gt; ((tmp (&lt;B&gt;vector-ref&lt;/B&gt; V (+ j 1)))) (&lt;B&gt;do&lt;/B&gt; ((k j (- k 1))) ((&lt; k i) (&lt;B&gt;vector-set !&lt;/B&gt; V i tmp)) (&lt;B&gt;vector-set !&lt;/B&gt; V (+ k 1) (&lt;B&gt;vector-ref&lt;/B&gt; V k)))))))
&lt;p&gt;(&lt;B&gt;define&lt;/B&gt; (tri-insert V) (&lt;B&gt;let&lt;/B&gt; ((Vlen (&lt;B&gt;vector-length&lt;/B&gt; V))) (&lt;B&gt;do&lt;/B&gt; ((j 1 (+ j 1))) ((&gt; j (- Vlen 1)) V) (&lt;B&gt;let&lt;/B&gt; loop ((i 0)) (&lt;B&gt;if&lt;/B&gt; (&lt;B&gt;and&lt;/B&gt; (&lt;= (&lt;B&gt;vector-ref&lt;/B&gt; V i) (&lt;B&gt;vector-ref&lt;/B&gt; V j)) (&lt; i j)) (loop (+ i 1)) (rotation-droite V i (- j 1)))))))
&lt;/TT&gt;&lt;/p&gt;
&lt;/DIV&gt;
&lt;p&gt;&lt;!--TOC subsection Complexit&#233;--&gt;&lt;/p&gt; &lt;H3 CLASS=&quot;subsection&quot;&gt;Complexit&#233;&lt;/H3&gt;&lt;!--SEC END --&gt;
&lt;p&gt;Le nombre d'op&#233;rations de comparaisons d'&#233;l&#233;ments de tableau de cet
algorithme est en &lt;I&gt;O&lt;/I&gt;(&lt;I&gt;n&lt;/I&gt;&lt;SUP&gt;2&lt;/SUP&gt;) en effet il y a &lt;I&gt;n&lt;/I&gt;&amp;minus;1 &#233;tape &#224; chacune d'entre
elles on fait au plus le nombre de comparaison correspondant au nombre
d'&#233;l&#233;ments de la s&#233;quence tri&#233; de l'&#233;tape, pour l'&#233;tape 1 1, pour
l'&#233;tape 2 2, et ainsi de suite soit 1+2+3+...+&lt;I&gt;n&lt;/I&gt;&amp;minus;1 si &lt;I&gt;n&lt;/I&gt; est la
taille du tableau et donc au plus (&lt;I&gt;n&lt;/I&gt;&amp;minus;1)&lt;I&gt;n&lt;/I&gt;/2 comparaisons &#224; chaque
&#233;tape il y a au plus &lt;I&gt;i&lt;/I&gt; d&#233;calage si &lt;I&gt;i&lt;/I&gt; est le num&#233;ro de l'&#233;tape et donc
de la m&#234;me fa&#231;on (&lt;I&gt;n&lt;/I&gt;&amp;minus;1)&lt;I&gt;n&lt;/I&gt;/2 d&#233;calage &#233;l&#233;mentaires.&lt;BR&gt;
&lt;BR&gt;
&lt;!--TOC section Tri fusion--&gt;&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt;Tri fusion&lt;/h3&gt;
&lt;p&gt;L'id&#233;e est la suivante. Supposons que nous ayons deux ensembles de
valeurs tri&#233;es (dans une liste par exemple) pour fabriquer une liste
tri&#233;e &#224; partir des deux listes tri&#233;es il suffit de se dire que si
la premi&#232;re liste est vide le r&#233;sultat est la seconde, si la seconde
est vide, le r&#233;sultat est la premi&#232;re si aucune des deux n'est vide
il suffit de prendre la t&#234;te de la liste qui est la plus petite et
de la concat&#233;ner &#224; la liste r&#233;sultant de la fusion du reste de cette
liste et de l'autre liste. En Scheme :&lt;BR&gt;
&lt;BR&gt;&lt;/p&gt; &lt;DIV CLASS=&quot;lstlisting&quot;&gt;&lt;TT&gt;(&lt;B&gt;define&lt;/B&gt; (fusion l1 l2)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;if&lt;/B&gt; (&lt;B&gt;null&lt;/B&gt; ? l1)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; l2&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;if&lt;/B&gt; (&lt;B&gt;null&lt;/B&gt; ? l2)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; l1&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;if&lt;/B&gt; (&lt; (&lt;B&gt;car&lt;/B&gt; l1) (&lt;B&gt;car&lt;/B&gt; l2))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;cons&lt;/B&gt; (&lt;B&gt;car&lt;/B&gt; l1)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (fusion (&lt;B&gt;cdr&lt;/B&gt; l1)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; l2))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;cons&lt;/B&gt; (&lt;B&gt;car&lt;/B&gt; l2)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (fusion&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; l1&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;cdr&lt;/B&gt; l2)))))))&lt;/TT&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;BR&gt;
Ainsi on voit que pour trier une liste il suffit de la s&#233;parer en
deux sous listes, de trier chacune de ces listes et de les fusionner.
Sauf si la liste est vide au d&#233;part, dans ce cas elle est d&#233;j&#224; tri&#233;e !&lt;BR&gt;
&lt;BR&gt;
S&#233;parer une liste en deux sous-listes et appliquer une fonction &lt;I&gt;f&lt;/I&gt; &#224;
chacun de ces sous-listes et enfin appliquer une fonction &lt;I&gt;g&lt;/I&gt; &#224; ces
deux sous-listes peut s'&#233;crire :&lt;BR&gt;
&lt;BR&gt;
&lt;DIV CLASS=&quot;lstlisting&quot;&gt;&lt;TT&gt;(&lt;B&gt;define&lt;/B&gt; (separe-et-applique l f g l1 l2)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;if&lt;/B&gt; (&lt;B&gt;null&lt;/B&gt; ? l) (g (f l1) (f l2))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (separe-et-applique&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;cdr&lt;/B&gt; l) f g l2 (&lt;B&gt;cons&lt;/B&gt; (&lt;B&gt;car&lt;/B&gt; l) l1))))&lt;/TT&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;BR&gt;
Pour trier par fusion la liste &lt;I&gt;l&lt;/I&gt; il suffirait d'appeler
&lt;TT&gt;separe-et-applique&lt;/TT&gt; &#224; &lt;TT&gt;a&lt;/TT&gt; avec comme fonction &lt;I&gt;g&lt;/I&gt;
&lt;TT&gt;fusion&lt;/TT&gt; et comme fonction &lt;I&gt;f&lt;/I&gt; une fonction qui trie une liste !&lt;BR&gt;&lt;BR&gt;
&lt;DIV CLASS=&quot;lstlisting&quot;&gt;&lt;TT&gt;(separe-et-applique l trier fusion '() '())&lt;/TT&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;BR&gt;
et en somme :&lt;BR&gt;
&lt;BR&gt;
&lt;DIV CLASS=&quot;lstlisting&quot;&gt;&lt;TT&gt;(&lt;B&gt;define&lt;/B&gt; (fusion l1 l2)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;if&lt;/B&gt; (&lt;B&gt;null&lt;/B&gt; ? l1) l2&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;if&lt;/B&gt; (&lt;B&gt;null&lt;/B&gt; ? l2) l1&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;if&lt;/B&gt; (&lt; (&lt;B&gt;car&lt;/B&gt; l1) (&lt;B&gt;car&lt;/B&gt; l2))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;cons&lt;/B&gt; (&lt;B&gt;car&lt;/B&gt; l1)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (fusion (&lt;B&gt;cdr&lt;/B&gt; l1) l2))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;cons&lt;/B&gt; (&lt;B&gt;car&lt;/B&gt; l2)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (fusion l1 (&lt;B&gt;cdr&lt;/B&gt; l2)))))))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt;(&lt;B&gt;define&lt;/B&gt; (separe-et-applique l f g l1 l2)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;if&lt;/B&gt; (&lt;B&gt;null&lt;/B&gt; ? l)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (g (f l1) (f l2))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (separe-et-applique&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;cdr&lt;/B&gt; l) f g l2 (&lt;B&gt;cons&lt;/B&gt; (&lt;B&gt;car&lt;/B&gt; l) l1))))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt;(&lt;B&gt;define&lt;/B&gt; (tri-fusion l)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;if&lt;/B&gt; (&lt;B&gt;or&lt;/B&gt; (&lt;B&gt;null&lt;/B&gt; ? l) (&lt;B&gt;null&lt;/B&gt; ? (&lt;B&gt;cdr&lt;/B&gt; l)))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; l&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (separe-et-applique&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; l tri-fusion fusion '() '())))&lt;/TT&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;BR&gt;
&lt;!&#8212;TOC subsection Combien de &lt;TT&gt;cons&lt;/TT&gt; ?&#8212;&gt;
&lt;H3 CLASS=&quot;subsection&quot;&gt;Combien de &lt;TT&gt;cons&lt;/TT&gt; ?&lt;/H3&gt;&lt;!--SEC END --&gt;
&lt;p&gt;A la premi&#232;re &#233;tape on fera pas plus de &lt;TT&gt;cons&lt;/TT&gt; qu'il y a
d'&#233;l&#233;ments dans la liste de d&#233;part -1. Mais on aura aussi du faire le
nombre de &lt;TT&gt;cons&lt;/TT&gt; n&#233;cessaire &#224; trier les deux sous-liste qui ont
chacune pas plus que &lt;I&gt;n&lt;/I&gt;/2 +1 &#233;l&#233;ments.&lt;BR&gt;
&lt;BR&gt;&lt;/p&gt;
&lt;DIV CLASS=&quot;center&quot;&gt;&lt;TABLE CELLSPACING=2 CELLPADDING=0&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt;&lt;I&gt;N&lt;/I&gt;(&lt;I&gt;n&lt;/I&gt;) &lt;= &lt;I&gt;n&lt;/I&gt;&amp;minus;1 + 2 * (&lt;I&gt;N&lt;/I&gt;(&lt;I&gt;n&lt;/I&gt;/2 +1))&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt;&lt;I&gt;N&lt;/I&gt;(&lt;I&gt;n&lt;/I&gt;) &lt;= &lt;I&gt;n&lt;/I&gt;&amp;minus;1 + 2 * &lt;I&gt;n&lt;/I&gt;/2 * 4(&lt;I&gt;N&lt;/I&gt;(&lt;I&gt;n&lt;/I&gt;/2 +1 / 2 +1))&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt;&lt;I&gt;N&lt;/I&gt;(&lt;I&gt;n&lt;/I&gt;) &lt;= &lt;I&gt;n&lt;/I&gt;&amp;minus;1 + &lt;I&gt;n&lt;/I&gt; + 4&lt;/TD&gt;
&lt;/TR&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;BR&gt;
Faire un arbre !!!&lt;BR&gt;
&lt;BR&gt;
&lt;!&#8212;TOC section Tri rapide &lt;EM&gt;(Quicksort)&lt;/EM&gt;&#8212;&gt;
&lt;h3 class=&quot;spip&quot;&gt;Tri rapide&lt;/h3&gt;
&lt;p&gt;L'algorithme &lt;i&gt; &lt;strong&gt;Quicksort&lt;/strong&gt; &lt;/i&gt; a &#233;t&#233; publi&#233; par C.A.R. Hoare&lt;SUP&gt;&lt;A NAME=&quot;text1&quot; HREF=&quot;#note1&quot;&gt;1&lt;/A&gt;&lt;/SUP&gt; en 1962.&lt;BR&gt;
&lt;BR&gt;
Une autre fa&#231;on de faire consiste &#224; choisir un &#233;l&#233;ment du tableau
&#224; trier, nous appellerons cet &#233;l&#233;ment le pivot, puis &#224; s'assurer que
tous les &#233;l&#233;ments plus petits ou &#233;gaux au pivot sont au d&#233;but du tableau et les &#233;l&#233;ments plus grand ou &#233;gaux &#224; la fin. Il y a de la sorte deux r&#233;gion cr&#233;&#233;es dont tous les &#233;l&#233;ments de la premi&#232;re sont plus petits ou &#233;gaux &#224; ceux de la seconde. De la sorte le tableau est partiellement tri&#233;, il suffit alors de trier la partie basse et la partie haute.&lt;BR&gt;
&lt;BR&gt;
On peut &#233;crire qu'&#224; chaque &#233;tape on fera :&lt;/p&gt;
&lt;OL CLASS=&quot;enumerate&quot; type=1&gt;&lt;LI CLASS=&quot;li-enumerate&quot;&gt;
choisir le pivot ;
&lt;LI CLASS=&quot;li-enumerate&quot;&gt;cr&#233;er deux r&#233;gions une au d&#233;but qui ne contienne aucun &#233;l&#233;ment plus
grand que pivot, une &#224; la fin qui ne contienne aucun &#233;l&#233;ment plus
petit que pivot ; soit q la position fin de la premi&#232;re r&#233;gion :
&lt;UL CLASS=&quot;itemize&quot;&gt;&lt;LI CLASS=&quot;li-itemize&quot;&gt;
trier les &#233;l&#233;ments du d&#233;but a q,
&lt;LI CLASS=&quot;li-itemize&quot;&gt;trier les &#233;l&#233;ments de q +1 &#224; dernier &#233;l&#233;ment ;
&lt;/UL&gt;
&lt;/OL&gt;
Supposons qu'il s'agisse de trier les &#233;l&#233;ments du tableau entre les
positions &lt;I&gt;imin&lt;/I&gt; et &lt;I&gt;imax&lt;/I&gt; (comprises), on pourrait dire que le pivot est
imin puis on examinerait en descendant tous les &#233;l&#233;ments du tableau
de &lt;I&gt;imax&lt;/I&gt; vers &lt;I&gt;imin&lt;/I&gt; jusqu'&#224; en avoir trouv&#233; un plus petit ou &#233;gal aupivot appelons &lt;I&gt;jmax&lt;/I&gt; cette position. On peut ensuite parcourir le tableau
de &lt;I&gt;imin&lt;/I&gt; jusqu'&#224; ce qu'on ait trouv&#233; un &#233;l&#233;ment plus grand ou &#233;gal
que le pivot ; appelons &lt;I&gt;jmin&lt;/I&gt; cette position. Si &lt;I&gt;jmin&lt;/I&gt; est inf&#233;rieur
&#224; &lt;I&gt;jmax&lt;/I&gt; alors on &#233;change les valeurs en &lt;I&gt;jmin&lt;/I&gt; et &lt;I&gt;jmax&lt;/I&gt; on incr&#233;mente
&lt;I&gt;jmin&lt;/I&gt; et on d&#233;cr&#233;mente &lt;I&gt;jmax&lt;/I&gt; puis on recommence &#224; balayer vers le bas
(pour &lt;I&gt;jmax&lt;/I&gt;) et vers le haut (pour &lt;I&gt;jmin&lt;/I&gt;). Si &lt;I&gt;jmin&lt;/I&gt; n'est pas inf&#233;rieur
&#224; &lt;I&gt;jmax&lt;/I&gt; alors il est clair que &lt;I&gt;jmax&lt;/I&gt; est le haut de la r&#233;gion de valeur
inf&#233;rieures au pivot.&lt;BR&gt;
&lt;BR&gt;
On peut alors trier entre &lt;I&gt;imin&lt;/I&gt; et &lt;I&gt;jmax&lt;/I&gt; et entre &lt;I&gt;jmax&lt;/I&gt; +1 et &lt;I&gt;imax&lt;/I&gt;.&lt;BR&gt;
&lt;BR&gt;
&lt;DIV CLASS=&quot;lstlisting&quot;&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Nom&lt;/B&gt; &lt;B&gt;de&lt;/B&gt; l'algorithme : tri-rapide&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Donn&#233;e&lt;/B&gt; d'entr&#233;e : un vecteur v, imin &lt;B&gt;et&lt;/B&gt; imax&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; les bornes dans lesquelles trier&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;si&lt;/B&gt; imin &lt; imax &lt;B&gt;alors&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; q &lt;- partition(v, imin, imax)&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; tri-rapide(v, imin, q)&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; tri-rapide(v, q+1, imax)&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;finsi&lt;/B&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;BR&gt;
avec l'algorithme suivant pour &lt;FONT COLOR=purple&gt;partition&lt;/FONT&gt; :&lt;BR&gt;
&lt;BR&gt;
&lt;DIV CLASS=&quot;lstlisting&quot;&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Nom&lt;/B&gt; &lt;B&gt;de&lt;/B&gt; l'algorithme : partition&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Donn&#233;es&lt;/B&gt; d'entr&#233;e : un vecteur v, imin &lt;B&gt;et&lt;/B&gt; imax&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; les bornes dans lesquelles partitionner&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;x &lt;- v[imin]&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;tant&lt;/B&gt; &lt;B&gt;que&lt;/B&gt; vrai &lt;B&gt;faire&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;B&gt;tant&lt;/B&gt; &lt;B&gt;que&lt;/B&gt; v[imax] &gt; x &lt;B&gt;faire&lt;/B&gt; imax &lt;- imax -1 &lt;B&gt;fait&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;B&gt;tant&lt;/B&gt; &lt;B&gt;que&lt;/B&gt; v[imin] &lt; x &lt;B&gt;faire&lt;/B&gt; imin &lt;- imin + 1 &lt;B&gt;fait&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;B&gt;si&lt;/B&gt; imin &lt; imax &lt;B&gt;alors&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; echanger v[imax] &lt;B&gt;et&lt;/B&gt; v[ iman]&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; imax &lt;- imax - 1&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; imin &lt;- imin + 1&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;B&gt;sinon&lt;/B&gt; &lt;B&gt;retourner&lt;/B&gt; imax &lt;B&gt;finsi&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;fait&lt;/B&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;BR&gt;
&lt;!--TOC subsection En Scheme :--&gt;
&lt;H3 CLASS=&quot;subsection&quot;&gt;En Scheme :&lt;/H3&gt;&lt;!--SEC END --&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_Scheme cadre&quot;&gt;&lt;div class=&quot;scheme scheme&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;define&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;tri&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;rapide V&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;define&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;tri&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;aux V imin imax&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&lt;&lt;/span&gt; imin imax&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;let&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;q &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;partition V imin imax&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;tri&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;aux V imin q&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;tri&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;aux V &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; q &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; imax&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; V&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;tri&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;aux V 0 &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;vector-length&lt;/span&gt; V&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;define&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;partition V imin imax&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;let&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;x &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;vector-ref&lt;/span&gt; V imin&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;let&lt;/span&gt; boucle &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;do&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;i imax &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt; i &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&lt;=&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;vector-ref&lt;/span&gt; V imax&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; x&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;set!&lt;/span&gt; imax i&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;do&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;i imin &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; i &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;vector-ref&lt;/span&gt; V imin&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; x&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;set!&lt;/span&gt; imin i&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&lt;&lt;/span&gt; imin imax&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;begin&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;permute V imax imin&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;set!&lt;/span&gt; imax &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt; imax &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;set!&lt;/span&gt; imin &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; imin &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;boucle&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; imax&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;define&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;permute V i j&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;let&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;tmp &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;vector-ref&lt;/span&gt; V i&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;vector-set!&lt;/span&gt; V i &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;vector-ref&lt;/span&gt; V j&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;vector-set!&lt;/span&gt; V j tmp&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='cadre_download' style='text-align: right;'&gt; &lt;a href='http://www.laurent-bloch.org/local/cache-code/7241a7497f7e4be9eb90a66ed6e01df9.txt' style='font-family: verdana, arial, sans; font-weight: bold; font-style: normal;'&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;En voici une version compil&#233;e et g&#233;n&#233;rique, qui re&#231;oit en param&#232;tre le pr&#233;dicat qui
d&#233;finit la relation d'ordre &#224; appliquer pour le tri, et qui en inf&#232;re aussi le type des &#233;l&#233;ments
&#224; trier, nombres ou cha&#238;nes de caract&#232;res :&lt;/p&gt; &lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_Scheme cadre&quot;&gt;&lt;div class=&quot;scheme scheme&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;module&lt;/span&gt; tri&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;rapide&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;main def&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;tri&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;;; ./bin/make-tri-rapide &quot;string&lt;=?&quot; 5 8 2 0 78 0 1 12 42 2 4&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;;; #(0 0 1 12 2 2 4 42 5 78 8)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;;; ./bin/make-tri-rapide &quot;&gt;=&quot; 5 8 2 0 78 0 1 12 42 2 4&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;;; #(78 42 12 8 5 4 2 2 1 0 0)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;define&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;def&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;tri Args&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;let*&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;nom&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;predicat &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;cadr&lt;/span&gt; Args&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;le&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;tri&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;make&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;tri&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;rapide&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;eval &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;string&lt;span style=&quot;color: #66cc66;&quot;&gt;-&gt;&lt;/span&gt;symbol nom&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;predicat&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;le&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;vecteur&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;list&lt;span style=&quot;color: #66cc66;&quot;&gt;-&gt;&lt;/span&gt;vector&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;cond&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;string=?&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;substring&lt;/span&gt; nom&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;predicat 0 &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;s&quot;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;cddr Args&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;;; on trie des cha&#238;nes de caract&#232;res&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;else&lt;/span&gt; &lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;;; on trie des nombres&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;map&lt;/span&gt; string&lt;span style=&quot;color: #66cc66;&quot;&gt;-&gt;&lt;/span&gt;number &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;cddr Args&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;print&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;le&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;tri le&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;vecteur&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;;; (define mon-tri (make-tri-rapide (eval (string-&gt;symbol &quot;string&lt;=?&quot;))))&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;;; (mon-tri '#(&quot;Alice&quot; &quot;Julot&quot; &quot;Bernard&quot; &quot;&#201;lodie&quot;))&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;;; #(Alice Bernard Julot &#201;lodie)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;define&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;make&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;tri&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;rapide predicat&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;define&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;tri&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;aux V imin imax&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&lt;&lt;/span&gt; imin imax&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;let&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;q &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;partition V imin imax&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;tri&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;aux V imin q&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;tri&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;aux V &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; q &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; imax&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; V&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;define&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;tri&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;rapide V&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;tri&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;aux V 0 &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;vector-length&lt;/span&gt; V&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;define&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;permute V i j&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;let&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;tmp &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;vector-ref&lt;/span&gt; V i&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;vector-set!&lt;/span&gt; V i &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;vector-ref&lt;/span&gt; V j&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;vector-set!&lt;/span&gt; V j tmp&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;define&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;partition V imin imax&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;let&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;x &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;vector-ref&lt;/span&gt; V imin&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;let&lt;/span&gt; boucle &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;do&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;i imax &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt; i &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;predicat &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;vector-ref&lt;/span&gt; V i&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; x&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;set!&lt;/span&gt; imax i&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;do&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;i imin &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; i &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;predicat x &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;vector-ref&lt;/span&gt; V i&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;set!&lt;/span&gt; imin i&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&lt;&lt;/span&gt; imin imax&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;begin&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;permute V imax imin&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;set!&lt;/span&gt; imax &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt; imax &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;set!&lt;/span&gt; imin &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; imin &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;boucle&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; imax&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; tri&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;rapide&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;;; make-tri-rapide renvoie une proc&#233;dure, &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;;; qui est le programme de tri voulu&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='cadre_download' style='text-align: right;'&gt; &lt;a href='http://www.laurent-bloch.org/local/cache-code/b0d1a2ef24bff2a2036f50aa39d57db5.txt' style='font-family: verdana, arial, sans; font-weight: bold; font-style: normal;'&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;BR&gt;
&lt;BR&gt;
&lt;!--TOC section Tri lin&#233;aire--&gt;&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt;Tri lin&#233;aire&lt;/h3&gt;
&lt;p&gt;Il s'agit de trier un tableau &lt;I&gt;V&lt;/I&gt; mais nous savons
dans quel intervalle sont pr&#233;sentes les valeurs de &lt;I&gt;V&lt;/I&gt;.&lt;BR&gt;
&lt;BR&gt;
On peut alors cr&#233;er un tableau &lt;I&gt;C&lt;/I&gt; dont les indices vont de
valeur la plus petite de &lt;I&gt;V&lt;/I&gt; (&lt;I&gt;vmin&lt;/I&gt;) &#224; valeur la plus
grande de &lt;I&gt;V&lt;/I&gt; (&lt;I&gt;vmax&lt;/I&gt;). &lt;I&gt;C&lt;/I&gt; est initialis&#233; &#224; 0.&lt;BR&gt;
&lt;BR&gt;
On parcourt &lt;I&gt;V&lt;/I&gt; et pour chaque valeur de &lt;I&gt;V&lt;/I&gt;[&lt;I&gt;i&lt;/I&gt;]
on fait &lt;I&gt;C&lt;/I&gt;[&lt;I&gt;V&lt;/I&gt;[&lt;I&gt;i&lt;/I&gt;]] &amp;larr; &lt;I&gt;C&lt;/I&gt;[&lt;I&gt;V&lt;/I&gt;[&lt;I&gt;i&lt;/I&gt;]] +1. A la fin dans
c[v[i]] on a le nombre de fois que la valeur &lt;I&gt;C&lt;/I&gt;[&lt;I&gt;V&lt;/I&gt;[&lt;I&gt;i&lt;/I&gt;]]
est pr&#233;sente dans &lt;I&gt;V&lt;/I&gt;. On peut alors calculer les sommes cumul&#233;es
de &lt;I&gt;C&lt;/I&gt;[&lt;I&gt;vmin&lt;/I&gt;] ... &lt;I&gt;C&lt;/I&gt;[&lt;I&gt;i&lt;/I&gt;] on a maintenant en &lt;I&gt;C&lt;/I&gt;[&lt;I&gt;i&lt;/I&gt;]
le nombre de valeurs de &lt;I&gt;V&lt;/I&gt; qui sont inf&#233;rieures ou &#233;gales &#224;
&lt;I&gt;i&lt;/I&gt;. On parcourt une fois &lt;I&gt;V&lt;/I&gt; et pour chaque &lt;I&gt;V&lt;/I&gt;[&lt;I&gt;i&lt;/I&gt;]
rencontr&#233; on &#233;crit sa valeur en &lt;I&gt;C&lt;/I&gt;[&lt;I&gt;V&lt;/I&gt;[&lt;I&gt;i&lt;/I&gt;]] dans un tableau
&lt;I&gt;B&lt;/I&gt; et on fait &lt;I&gt;C&lt;/I&gt;[&lt;I&gt;V&lt;/I&gt;[&lt;I&gt;i&lt;/I&gt;]] &amp;larr; &lt;I&gt;C&lt;/I&gt;[&lt;I&gt;V&lt;/I&gt;[&lt;I&gt;i&lt;/I&gt;]]&amp;minus;1.
&#192; la fin &lt;I&gt;B&lt;/I&gt; est une version tri&#233;e de &lt;I&gt;A&lt;/I&gt;.&lt;BR&gt;
&lt;BR&gt;&lt;/p&gt; &lt;DIV CLASS=&quot;lstlisting&quot;&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Nom&lt;/B&gt; &lt;B&gt;de&lt;/B&gt; l'algorithme : tri-lin&#233;aire&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Donn&#233;es&lt;/B&gt; d'entr&#233;e : v un vecteur&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Donn&#233;e&lt;/B&gt; en sortie : b un vecteur qui contient toutes les&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; valeurs &lt;B&gt;de&lt;/B&gt; v tri&#233;es&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Cr&#233;er&lt;/B&gt; un vecteur c &lt;B&gt;de&lt;/B&gt; longueur valeur maximum &lt;B&gt;de&lt;/B&gt; v&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; - valeur minimum &lt;B&gt;de&lt;/B&gt; v + 1 initialis&#233;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;B&gt;&#224;&lt;/B&gt; 0 &lt;B&gt;pour&lt;/B&gt; toutes ses valeurs.&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;pour&lt;/B&gt; i &lt;B&gt;allant&lt;/B&gt; &lt;B&gt;de&lt;/B&gt; 0 &lt;B&gt;&#224;&lt;/B&gt; longueur &lt;B&gt;de&lt;/B&gt; v -1 &lt;B&gt;faire&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; c[v[i] - vmin] &lt;- c[v[i] - vmin] + 1&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;fait&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;pour&lt;/B&gt; i &lt;B&gt;allant&lt;/B&gt; &lt;B&gt;de&lt;/B&gt; 1 &lt;B&gt;&#224;&lt;/B&gt; longueur &lt;B&gt;de&lt;/B&gt; c -1 &lt;B&gt;faire&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; c[i] &lt;- c[i] + c[i-1]&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;fait&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;cr&#233;er&lt;/B&gt; un vecteur b &lt;B&gt;de&lt;/B&gt; longueur longueur &lt;B&gt;de&lt;/B&gt; c&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;pour&lt;/B&gt; i &lt;B&gt;allant&lt;/B&gt; &lt;B&gt;de&lt;/B&gt; longueur &lt;B&gt;de&lt;/B&gt; v -1 &lt;B&gt;&#224;&lt;/B&gt; 0 &lt;B&gt;faire&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; b[c[v[i] -vmin] - 1] &lt;- v[i]&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; c[v[i]-vmin] &lt;- c[v[i]-vmin] - 1&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;fait&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;retourner&lt;/B&gt; b&lt;/FONT&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;BR&gt;
Combien d'op&#233;rations ?&lt;BR&gt;
&lt;BR&gt;
&lt;!--TOC subsection En Scheme :--&gt;
&lt;H3 CLASS=&quot;subsection&quot;&gt;En Scheme :&lt;/H3&gt;&lt;!--SEC END --&gt;
&lt;DIV CLASS=&quot;lstlisting&quot;&gt;&lt;TT&gt;(&lt;B&gt;define&lt;/B&gt; (rmax v)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;let&lt;/B&gt; loop ((rmax 0)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (i 1))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;if&lt;/B&gt; (&gt;= i (&lt;B&gt;vector&lt;/B&gt;-&lt;B&gt;length&lt;/B&gt; v))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; rmax&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (loop (&lt;B&gt;if&lt;/B&gt; (&gt; (&lt;B&gt;vector&lt;/B&gt;-ref v i)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;vector&lt;/B&gt;-ref v rmax))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; i&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; rmax)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (+ i 1)))))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt;(&lt;B&gt;define&lt;/B&gt; (rmin v)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;let&lt;/B&gt; loop ((rmin 0)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (i 1))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;if&lt;/B&gt; (&gt;= i (&lt;B&gt;vector&lt;/B&gt;-&lt;B&gt;length&lt;/B&gt; v))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; rmin&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (loop (&lt;B&gt;if&lt;/B&gt; (&lt; (&lt;B&gt;vector&lt;/B&gt;-ref v i)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;vector&lt;/B&gt;-ref v rmin))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; i&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; rmin)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (+ i 1)))))&lt;/TT&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;BR&gt;
&lt;DIV CLASS=&quot;lstlisting&quot;&gt;&lt;TT&gt;(&lt;B&gt;define&lt;/B&gt; (tri-lineaire v)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;let&lt;/B&gt; ((vmin (&lt;B&gt;vector&lt;/B&gt;-ref v (rmin v)))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (vmax (&lt;B&gt;vector&lt;/B&gt;-ref v (rmax v))))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;let&lt;/B&gt; ((b (make-&lt;B&gt;vector&lt;/B&gt; (&lt;B&gt;vector&lt;/B&gt;-&lt;B&gt;length&lt;/B&gt; v)))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (c (make-&lt;B&gt;vector&lt;/B&gt; (+ 1 (- vmax vmin)) 0)))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;do&lt;/B&gt; ((i 0 (+ i 1)))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; ((&gt;= i (&lt;B&gt;vector&lt;/B&gt;-&lt;B&gt;length&lt;/B&gt; v)) 'done)&lt;/TT&gt;&lt;TT&gt;&lt;/TT&gt;
&lt;TT&gt; (&lt;B&gt;vector&lt;/B&gt;-&lt;B&gt;set !&lt;/B&gt;&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; c&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (- (&lt;B&gt;vector&lt;/B&gt;-ref v i) vmin)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (+ 1 (&lt;B&gt;vector&lt;/B&gt;-ref c (- (&lt;B&gt;vector&lt;/B&gt;-ref v i) vmin)))))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;do&lt;/B&gt; ((i 1 (+ i 1)))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; ((&gt;= i (&lt;B&gt;vector&lt;/B&gt;-&lt;B&gt;length&lt;/B&gt; c)) 'done)&lt;/TT&gt;&lt;TT&gt;&lt;/TT&gt;
&lt;TT&gt; (&lt;B&gt;vector&lt;/B&gt;-&lt;B&gt;set !&lt;/B&gt; c i (+ (&lt;B&gt;vector&lt;/B&gt;-ref c (- i 1))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;vector&lt;/B&gt;-ref c i))))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;do&lt;/B&gt; ((i 0 (+ i 1)))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; ((&gt;= i (&lt;B&gt;vector&lt;/B&gt;-&lt;B&gt;length&lt;/B&gt; v)) b)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;vector&lt;/B&gt;-&lt;B&gt;set !&lt;/B&gt; b&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (- (&lt;B&gt;vector&lt;/B&gt;-ref c (- (&lt;B&gt;vector&lt;/B&gt;-ref v i)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; vmin)) 1)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;vector&lt;/B&gt;-ref v i))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;vector&lt;/B&gt;-&lt;B&gt;set !&lt;/B&gt; c (- (&lt;B&gt;vector&lt;/B&gt;-ref v i) vmin)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (- (&lt;B&gt;vector&lt;/B&gt;-ref c (- (&lt;B&gt;vector&lt;/B&gt;-ref v i)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; vmin))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; 1))))))&lt;/TT&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;BR&gt;
&lt;h3 class=&quot;spip&quot;&gt;Tas et tri par tas&lt;/h3&gt;
&lt;p&gt;Un tas est un objet qui peut &#234;tre vu comme un
arbre binaire complet : &#224; part peut-&#234;tre un seul
de ses sous arbres tous ont soit un ou deux fils
qui sont des arbres-vides soit deux fils qui ne
sont pas des arbres vides. Tous les sous-arbres
non vides se pr&#233;sentent sur deux niveaux au plus.
Enfin lorsqu'on examine deux sous arbres vides
dont l'un est &#224; gauche de l'aure, le sous arbre de
gauche est toujours &#224; une profondeur sup&#233;rieure ou
&#233;gale &#224; celui de droite. La valeur d'un sous arbre
est toujours plus &#233;lev&#233;e que les valeurs contenues
dans ses sous arbres droit et gauche.&lt;BR&gt;
&lt;BR&gt;
Repr&#233;sentation d'un tas : on peut le repr&#233;senter
par un tableau (de longueur l) et par une valeur
qui repr&#233;sente le nombre de sous-arbres non vides
du tas. Les valeurs du tas seront stock&#233;es dans
les cellules 1 &#224; taille du tas (attention &#224; la
taille maximum du tas qui doit etre plus petite
d'un que la taille du tableau). De la sorte la
valeur du fils gauche de l'arbre dont la valeur
sera en position &lt;I&gt;i&lt;/I&gt; du tableau sera stock&#233;e en
2&lt;I&gt;i&lt;/I&gt; et le fils droit en 2i+1, de la m&#234;me mani&#232;re
le p&#232;re d'un noeud en position &lt;I&gt;i&lt;/I&gt; sera en
&lt;TT&gt;Entier(i/2)&lt;/TT&gt;.&lt;BR&gt;
&lt;BR&gt;&lt;/p&gt; &lt;DIV CLASS=&quot;lstlisting&quot;&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Nom&lt;/B&gt; &lt;B&gt;de&lt;/B&gt; l'algo : p&#232;re&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Donn&#233;e&lt;/B&gt; : i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;R&#233;sultat&lt;/B&gt; : la position du p&#232;re &lt;B&gt;de&lt;/B&gt; i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;retourner&lt;/B&gt; Entier(i/2)&lt;/FONT&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;BR&gt;
De le m&#234;me fa&#231;on :&lt;BR&gt;
&lt;BR&gt;
&lt;DIV CLASS=&quot;lstlisting&quot;&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Nom&lt;/B&gt; &lt;B&gt;de&lt;/B&gt; l'algo : fils-gauche&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Entr&#233;e&lt;/B&gt; : i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;R&#233;sultat&lt;/B&gt; : la position du fils gauche &lt;B&gt;de&lt;/B&gt; i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;retourner&lt;/B&gt; 2 * i&lt;/FONT&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;BR&gt;
et fils droit :&lt;BR&gt;
&lt;BR&gt;
&lt;DIV CLASS=&quot;lstlisting&quot;&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Nom&lt;/B&gt; &lt;B&gt;de&lt;/B&gt; l'algo : fils-droit&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Donn&#233;e&lt;/B&gt; : i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;R&#233;sultat&lt;/B&gt; : la position du fils droit &lt;B&gt;de&lt;/B&gt; i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;retourner&lt;/B&gt; (2 * i) + 1&lt;/FONT&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;BR&gt;
&lt;DIV CLASS=&quot;lstlisting&quot;&gt;&lt;TT&gt;(&lt;B&gt;define&lt;/B&gt; (tas:creer taillemax)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;vector&lt;/B&gt; 'tas 0 (&lt;B&gt;make-vector&lt;/B&gt; (+ 1 taillemax))))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt;(&lt;B&gt;define&lt;/B&gt; (tas:taille T)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;vector-ref&lt;/B&gt; T 1))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt;(&lt;B&gt;define&lt;/B&gt; (tas:tableau T)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;vector-ref&lt;/B&gt; T 2))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt;(&lt;B&gt;define&lt;/B&gt; (tas:pere i)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;quotient&lt;/B&gt; i 2))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt;(&lt;B&gt;define&lt;/B&gt; (tas:fils-gauche i)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (* i 2))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt;(&lt;B&gt;define&lt;/B&gt; (tas:fils-droit i)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (+ 1 (* 2 i)))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt;(&lt;B&gt;define&lt;/B&gt; (tas:permute ! T i j)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;let&lt;/B&gt; ((tmp (&lt;B&gt;vector-ref&lt;/B&gt; T i)))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;vector-set !&lt;/B&gt; T i (&lt;B&gt;vector-ref&lt;/B&gt; T j))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;vector-set !&lt;/B&gt; T j tmp)))&lt;/TT&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;BR&gt;
Probl&#232;me : comment ajouter un &#233;l&#233;ment &#224; un tas. On
augmente la taille du tas de 1, on positionne le
nouvel &#233;l&#233;ment &#224; l'indice taille dans le tableau
et on le laisse remonter (en &#233;changeant sa valeur
avec son p&#232;re) tant que son p&#232;re existe (on n'est
pas &#224; la racine) ou que celui-ci &#224; une valeur
inf&#233;rieure &#224; la valeur du noeud :&lt;BR&gt;
&lt;BR&gt;
&lt;DIV CLASS=&quot;lstlisting&quot;&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Nom&lt;/B&gt; &lt;B&gt;de&lt;/B&gt; l'algo : augmenter-tas&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Donn&#233;es&lt;/B&gt; : T, un tas, &lt;B&gt;et&lt;/B&gt; v, une
valeur&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;R&#233;sultat&lt;/B&gt; : le tas comportant la nouvelle valeur&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;taille &lt;B&gt;de&lt;/B&gt; T &lt;- taille &lt;B&gt;de&lt;/B&gt; T + 1&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i &lt;- taille &lt;B&gt;de&lt;/B&gt; T&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;T [i] &lt;- v&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;tant&lt;/B&gt; &lt;B&gt;que&lt;/B&gt; i &gt; 1 &lt;B&gt;et&lt;/B&gt; T [i] &gt; T[pere(i)] &lt;B&gt;faire&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &#233;changer T [i] &lt;B&gt;et&lt;/B&gt; T[pere(i)]&lt;/FONT&gt;
&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; i &lt;- pere (i)&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;fait&lt;/B&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;BR&gt;
La complexit&#233; de l'algorithme ?
&lt;I&gt;log&lt;/I&gt;&lt;SUB&gt;2&lt;/SUB&gt;(&lt;I&gt;taille&lt;/I&gt;(&lt;I&gt;t&lt;/I&gt;)).&lt;BR&gt;
&lt;BR&gt;
On peut envisager d'ins&#233;rer un nouvel &#233;l&#233;ment dans le tas &#224; la place
du sommet de la fa&#231;on suivante :&lt;BR&gt;
&lt;BR&gt;
&lt;DIV CLASS=&quot;lstlisting&quot;&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Nom&lt;/B&gt; &lt;B&gt;de&lt;/B&gt; l'algo : ins&#233;rer-tas
&lt;B&gt;Donn&#233;es&lt;/B&gt; : v, T une valeur &lt;B&gt;et&lt;/B&gt; un tas.
&lt;B&gt;R&#233;sultat&lt;/B&gt; : T le tas
T[1]&lt;-v
i&lt;-1
&lt;B&gt;tant que&lt;/B&gt; (fils-gauche(i) &lt;= taille &lt;B&gt;de&lt;/B&gt; T &lt;B&gt;et&lt;/B&gt; T[fils-gauche(i)] &gt; T[i]) &lt;B&gt;ou&lt;/B&gt; (fils-droit[i] &lt;= taille &lt;B&gt;de&lt;/B&gt; T &lt;B&gt;et&lt;/B&gt; T[fils-droit(i)]&gt; T[i])&lt;/i&gt;
&lt;B&gt;faire&lt;/B&gt; &lt;B&gt;si&lt;/B&gt; fils-droit(i) &gt; taille &lt;B&gt;de&lt;/B&gt; T &lt;B&gt;ou&lt;/B&gt; T[fils-droit(i)] &lt;= T[fils-gauche(i)]&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;B&gt;alors&lt;/B&gt; echanger T[fils-gauche(i)] &lt;B&gt;et&lt;/B&gt; T[i]&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;B&gt;sinon&lt;/B&gt; echanger T[fils-droit(i)] &lt;B&gt;et&lt;/B&gt; T[i]&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;finsi&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;retourner&lt;/B&gt; T&lt;/FONT&gt;&lt;/DIV&gt;
&lt;BLOCKQUOTE CLASS=&quot;figure&quot;&gt;&lt;DIV CLASS=&quot;center&quot;&gt;&lt;HR WIDTH=&quot;80%&quot; SIZE=2&gt;&lt;/DIV&gt;
&lt;DIV CLASS=&quot;center&quot;&gt;&lt;BR&gt;
&lt;div class=&quot;box&quot;&gt;
&lt;p class=&quot;line1&quot;&gt;&lt;span class=&quot;def&quot;&gt;Exemple :&lt;/span&gt; &lt;/p&gt; &lt;div class=&quot;ind&quot;&gt; &lt;table border=&quot;0&quot;&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td height=&quot;10&quot;&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align=&quot;center&quot;&gt; &lt;table border=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td align=&quot;center&quot; valign=&quot;bottom&quot;&gt;
&lt;p&gt;&lt;span class='spip_document_26 spip_documents spip_documents_center'&gt; &lt;a href=&quot;http://www.laurent-bloch.org/IMG/gif/heap.gif&quot; title=&quot;GIF - 1.5 ko&quot;&gt; &lt;img src=&quot;http://www.laurent-bloch.org/local/cache-vignettes/L296xH207/heap-77826.gif&quot; width='296' height='207' alt=&quot;GIF - 1.5 ko&quot; style='height:207px;width:296px;' /&gt; &lt;/a&gt; &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align=&quot;center&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td height=&quot;10&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;&lt;font size=&quot;-1&quot;&gt;Figure 1 : &lt;i&gt;Tas&lt;/i&gt; = 10 &lt;i&gt;sommets&lt;/i&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td height=&quot;10&quot;&gt;&lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;BR&gt;
&lt;BR&gt;
&lt;A NAME=&quot;figtas&quot;&gt;&lt;/A&gt;&lt;/p&gt;
&lt;/DIV&gt;&lt;DIV CLASS=&quot;center&quot;&gt;&lt;HR WIDTH=&quot;80%&quot; SIZE=2&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;
&lt;i&gt;(Cette figure et la suivante sont emprunt&#233;es &#224; H. W. Lang
de l'universit&#233; de Flensburg en Allemagne, qui propose
un excellent site sur le sujet : &lt;a href=&quot;http://www.inf.fh-flensburg.de/lang/algorithmen/sortieren/algoen.htm&quot; target=&quot;_top&quot;&gt;http://www.inf.fh-flensburg.de/lang/algorithmen/sortieren/algoen.htm&lt;/a&gt;)&lt;/i&gt;
&lt;BR&gt;
&lt;BR&gt;
&lt;p&gt;Peut-on extraire l'&#233;l&#233;ment maximum du tas et
conserver au tas sa structure ? Il suffit de
prendre l'&#233;l&#233;ment en position 1 (que l'on
extrait), de placer en position 1 l'&#233;l&#233;ment qui
est en position taille du tas puis de le faire
descendre tant qu'il n'est pas en bas et que l'un
de ses fils plus grand que lui apr&#232;s avoir r&#233;duit
d'un la taille du tas. Il descend de la sorte en
&#233;tant &#233;chang&#233; avec son fil de valeur la plus
&#233;lev&#233;e.&lt;BR&gt;
&lt;BR&gt;&lt;/p&gt; &lt;DIV CLASS=&quot;lstlisting&quot;&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Nom&lt;/B&gt; &lt;B&gt;de&lt;/B&gt; l'algo : extraire-tas&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Donn&#233;es&lt;/B&gt; : T un tas&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;R&#233;sultat&lt;/B&gt; : v le plus grand &#233;l&#233;ment &lt;B&gt;de&lt;/B&gt; T&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;v&lt;- tableau &lt;B&gt;de&lt;/B&gt; T[1]&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;taille &lt;B&gt;de&lt;/B&gt; T &lt;- taille &lt;B&gt;de&lt;/B&gt; T -1&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;inserer-tas(T[taille &lt;B&gt;de&lt;/B&gt; T + 1], T)&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;retourner&lt;/B&gt; v&lt;/FONT&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;BR&gt;
On peut alors utiliser ces deux algorithmes pour trier un tableau.
&lt;BLOCKQUOTE CLASS=&quot;figure&quot;&gt;&lt;DIV CLASS=&quot;center&quot;&gt;&lt;HR WIDTH=&quot;80%&quot; SIZE=2&gt;&lt;/DIV&gt;
&lt;DIV CLASS=&quot;center&quot;&gt;&lt;BR&gt;
&lt;table border=&quot;0&quot;&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td height=&quot;10&quot;&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align=&quot;center&quot;&gt; &lt;table border=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td align=&quot;center&quot; valign=&quot;bottom&quot;&gt;
&lt;p&gt;&lt;span class='spip_document_27 spip_documents spip_documents_left' style='float:left;'&gt; &lt;a href=&quot;http://www.laurent-bloch.org/IMG/gif/heap2a.gif&quot; title=&quot;GIF - 815 octets&quot;&gt; &lt;img src=&quot;http://www.laurent-bloch.org/local/cache-vignettes/L124xH154/heap2a-22222.gif&quot; width='124' height='154' alt=&quot;GIF - 815 octets&quot; style='height:154px;width:124px;' /&gt; &lt;/a&gt; &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;img src=&quot;http://www.laurent-bloch.org/Images/heap2a.gif&quot; alt=&quot;Extraire l'&#233;l&#233;ment maximum&quot; style='max-width: 500px; max-height: 100000px'&gt;&lt;/p&gt;
&lt;/td&gt; &lt;td align=&quot;center&quot; valign=&quot;bottom&quot;&gt;
&lt;p&gt;&lt;span class='spip_document_28 spip_documents spip_documents_center'&gt; &lt;a href=&quot;http://www.laurent-bloch.org/IMG/gif/heap2b.gif&quot; title=&quot;GIF - 996 octets&quot;&gt; &lt;img src=&quot;http://www.laurent-bloch.org/local/cache-vignettes/L143xH139/heap2b-48a37.gif&quot; width='143' height='139' alt=&quot;GIF - 996 octets&quot; style='height:139px;width:143px;' /&gt; &lt;/a&gt; &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;img src=&quot;http://www.laurent-bloch.org/Images/heap2b.gif&quot; alt=&quot;D&#233;truire la derni&#232;re feuille et r&#233;&#233;crire son &#233;tiquette &#224; la racine&quot; hspace=&quot;40&quot; style='max-width: 500px; max-height: 100000px'&gt;&lt;/p&gt;
&lt;/td&gt; &lt;td align=&quot;center&quot; valign=&quot;bottom&quot;&gt;
&lt;p&gt;&lt;span class='spip_document_29 spip_documents spip_documents_right' style='float:right;'&gt; &lt;a href=&quot;http://www.laurent-bloch.org/IMG/gif/heap2c.gif&quot; title=&quot;GIF - 746 octets&quot;&gt; &lt;img src=&quot;http://www.laurent-bloch.org/local/cache-vignettes/L124xH139/heap2c-476ef.gif&quot; width='124' height='139' alt=&quot;GIF - 746 octets&quot; style='height:139px;width:124px;' /&gt; &lt;/a&gt; &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;img src=&quot;http://www.laurent-bloch.org/Images/heap2c.gif&quot; alt=&quot;Permuter le sommet avec son plus grand descendant direct&quot; style='max-width: 500px; max-height: 100000px'&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td height=&quot;10&quot;&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td align=&quot;center&quot; valign=&quot;bottom&quot;&gt;(a)&lt;/td&gt; &lt;td align=&quot;center&quot; valign=&quot;bottom&quot;&gt;(b)&lt;/td&gt; &lt;td align=&quot;center&quot; valign=&quot;bottom&quot;&gt;(c)&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align=&quot;center&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td height=&quot;10&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td height=&quot;10&quot;&gt;&lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;
&lt;table border=&quot;0&quot;&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td height=&quot;10&quot;&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align=&quot;center&quot;&gt; &lt;table border=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td align=&quot;center&quot; valign=&quot;bottom&quot;&gt;
&lt;p&gt;&lt;span class='spip_document_30 spip_documents spip_documents_left' style='float:left;'&gt; &lt;a href=&quot;http://www.laurent-bloch.org/IMG/gif/heap2d.gif&quot; title=&quot;GIF - 749 octets&quot;&gt; &lt;img src=&quot;http://www.laurent-bloch.org/local/cache-vignettes/L128xH139/heap2d-e350f.gif&quot; width='128' height='139' alt=&quot;GIF - 749 octets&quot; style='height:139px;width:128px;' /&gt; &lt;/a&gt; &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;img src=&quot;http://www.laurent-bloch.org/Images/heap2d.gif&quot; alt=&quot;Permuter l'&#233;tiquette avec l'&#233;tiquette maximum de ses descendants directs&quot; hspace=&quot;40&quot; style='max-width: 500px; max-height: 100000px'&gt;&lt;/p&gt;
&lt;/td&gt; &lt;td align=&quot;center&quot; valign=&quot;bottom&quot;&gt;
&lt;p&gt;&lt;span class='spip_document_31 spip_documents spip_documents_right' style='float:right;'&gt; &lt;a href=&quot;http://www.laurent-bloch.org/IMG/gif/heap2e.gif&quot; title=&quot;GIF - 653 octets&quot;&gt; &lt;img src=&quot;http://www.laurent-bloch.org/local/cache-vignettes/L124xH139/heap2e-cd3ca.gif&quot; width='124' height='139' alt=&quot;GIF - 653 octets&quot; style='height:139px;width:124px;' /&gt; &lt;/a&gt; &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;img src=&quot;http://www.laurent-bloch.org/Images/heap2e.gif&quot; alt=&quot;Tas restaur&#233;&quot; style='max-width: 500px; max-height: 100000px'&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td height=&quot;10&quot;&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td align=&quot;center&quot; valign=&quot;bottom&quot;&gt;(d)&lt;/td&gt; &lt;td align=&quot;center&quot; valign=&quot;bottom&quot;&gt;(e)&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align=&quot;center&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td height=&quot;10&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;&lt;font size=&quot;-1&quot;&gt;Figure 2 : &lt;i&gt;Extraire l'&#233;l&#233;ment le plus grand et restaurer la structure de tas&lt;/i&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td height=&quot;10&quot;&gt;&lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;BR&gt;
&lt;A NAME=&quot;&quot;&gt;&lt;/A&gt;&lt;/p&gt;
&lt;/DIV&gt;&lt;DIV CLASS=&quot;center&quot;&gt;&lt;HR WIDTH=&quot;80%&quot; SIZE=2&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;
&lt;DIV CLASS=&quot;lstlisting&quot;&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Nom&lt;/B&gt; &lt;B&gt;de&lt;/B&gt; l'algo : Tri-par-tas&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Donn&#233;es&lt;/B&gt; : V un tableau&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;R&#233;sultat&lt;/B&gt; : V tri&#233;.&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;t &lt;- creer un tas contenant un tableau &lt;B&gt;de&lt;/B&gt; taille longueur&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;de&lt;/B&gt; V + 1&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;taille &lt;B&gt;de&lt;/B&gt; t = 0&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;pour&lt;/B&gt; i &lt;B&gt;allant&lt;/B&gt; &lt;B&gt;de&lt;/B&gt; 0 &lt;B&gt;&#224;&lt;/B&gt; longueur(V) - 1 &lt;B&gt;faire&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; augmenter-tas(t, V[i])&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;fait&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;pour&lt;/B&gt; i &lt;B&gt;allant&lt;/B&gt; &lt;B&gt;de&lt;/B&gt; 0 &lt;B&gt;&#224;&lt;/B&gt; longueur &lt;B&gt;de&lt;/B&gt; V - 1 &lt;B&gt;faire&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; V[longueur(V) - 1 - i] &lt;- extraire-tas(t)&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;fait&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;retourner&lt;/B&gt; V&lt;/FONT&gt;&lt;/DIV&gt;
&lt;BLOCKQUOTE CLASS=&quot;figure&quot;&gt;&lt;DIV CLASS=&quot;center&quot;&gt;&lt;HR WIDTH=&quot;80%&quot; SIZE=2&gt;&lt;/DIV&gt;
&lt;DIV CLASS=&quot;center&quot;&gt;&lt;BR&gt;
&lt;div class=&quot;ind&quot;&gt; &lt;table border=&quot;0&quot;&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td height=&quot;10&quot;&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align=&quot;center&quot;&gt; &lt;table border=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td align=&quot;center&quot; valign=&quot;bottom&quot;&gt;
&lt;p&gt;&lt;span class='spip_document_32 spip_documents spip_documents_left' style='float:left;'&gt; &lt;a href=&quot;http://www.laurent-bloch.org/IMG/gif/tas-vecteur.gif&quot; title=&quot;GIF - 2 ko&quot;&gt; &lt;img src=&quot;http://www.laurent-bloch.org/local/cache-vignettes/L411xH118/tas-vecteur-ff4bd.gif&quot; width='411' height='118' alt=&quot;GIF - 2 ko&quot; style='height:118px;width:411px;' /&gt; &lt;/a&gt; &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align=&quot;center&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td height=&quot;10&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;&lt;font size=&quot;-1&quot;&gt;Figure 3 : &lt;i&gt;Repr&#233;sentation par un tableau du tas de la figure &lt;/i&gt; 1&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td height=&quot;10&quot;&gt;&lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/DIV&gt;
&lt;DIV CLASS=&quot;lstlisting&quot;&gt;&lt;TT&gt;(&lt;B&gt;define&lt;/B&gt; (tas:ajoute ! T v)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;vector-set !&lt;/B&gt; T 1 (+ (tas:taille T) 1))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;let&lt;/B&gt; ((i (tas:taille T)))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;vector-set !&lt;/B&gt; (tas:tableau T) i v)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;let&lt;/B&gt; boucle ((i i))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;if&lt;/B&gt; (&lt;B&gt;and&lt;/B&gt; (&gt; i 1)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&gt; (&lt;B&gt;vector-ref&lt;/B&gt;&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (tas:tableau T) i)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;vector-ref&lt;/B&gt;&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (tas:tableau T)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (tas:pere i))))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;begin&lt;/B&gt;&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (tas:permute !&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (tas:tableau T) i (tas:pere i))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (boucle (tas:pere i)))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; T))))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt;(&lt;B&gt;define&lt;/B&gt; (tas:insere-sommet ! T v)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;vector-set !&lt;/B&gt; (tas:tableau T) 1 v)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;let&lt;/B&gt; boucle ((i 1)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (g 2)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (d 3))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;if&lt;/B&gt; (&lt;B&gt;or&lt;/B&gt; (&lt;B&gt;and&lt;/B&gt; (&lt;= g (tas:taille T))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt; (&lt;B&gt;vector-ref&lt;/B&gt; (tas:tableau T) i)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;vector-ref&lt;/B&gt; (tas:tableau T) g)))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;and&lt;/B&gt; (&lt;= d (tas:taille T))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt; (&lt;B&gt;vector-ref&lt;/B&gt; (tas:tableau T) i)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;vector-ref&lt;/B&gt; (tas:tableau T) d))))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;let&lt;/B&gt; ((m&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;if&lt;/B&gt; (&gt; d (tas:taille T))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; g&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;if&lt;/B&gt; (&lt;&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;vector-ref&lt;/B&gt; (tas:tableau T) g)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;vector-ref&lt;/B&gt; (tas:tableau T) d))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; d g))))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (tas:permute ! (tas:tableau T) i m)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (boucle m&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (tas:fils-gauche m)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (tas:fils-droit m))))))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt;(&lt;B&gt;define&lt;/B&gt; (tas:extraire T)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;let&lt;/B&gt; ((res (&lt;B&gt;vector-ref&lt;/B&gt; (tas:tableau T) 1))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (nouveau-sommet (&lt;B&gt;vector-ref&lt;/B&gt;&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (tas:tableau T)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (tas:taille T))))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;vector-set !&lt;/B&gt; T 1&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (- (tas:taille T) 1))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (tas:insere-sommet ! T nouveau-sommet)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; res))&lt;/TT&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;BR&gt;
On peut utiliser ces algorithmes pour d&#233;terminer
quels sont les k plus petits &#233;l&#233;ments d'un flux de
donn&#233;es de donn&#233;es. On commencerait construire un
tas avec les k premiers &#233;l&#233;ments du tas. A partir
de l'&#233;l&#233;ment k+1 du flux on pourrait pour chacun
des &#233;l&#233;ments suivants tester s'il est plus petit
que l'&#233;l&#233;ment au sommet du tas et si c'est le cas
l'ins&#233;rer au sommet du tas.&lt;BR&gt;
&lt;BR&gt;
&lt;DIV CLASS=&quot;lstlisting&quot;&gt;&lt;TT&gt;(&lt;B&gt;define&lt;/B&gt; (trier-liste L)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;let&lt;/B&gt; ((T (tas:creer (&lt;B&gt;length&lt;/B&gt; L))))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;let&lt;/B&gt; loop ((L L))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;if&lt;/B&gt; (&lt;B&gt;not&lt;/B&gt; (&lt;B&gt;null ?&lt;/B&gt; L))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;begin&lt;/B&gt; (tas:ajoute ! T (&lt;B&gt;car&lt;/B&gt; L))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (loop (&lt;B&gt;cdr&lt;/B&gt; L)))))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;let&lt;/B&gt; loop ((L '()))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;if&lt;/B&gt; (&lt;B&gt;zero ?&lt;/B&gt; (tas:taille T)) L&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (loop (&lt;B&gt;cons&lt;/B&gt; (tas:extraire T) L))))))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt;(&lt;B&gt;define&lt;/B&gt; (trier-vecteur V)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;let&lt;/B&gt; ((T (tas:creer (&lt;B&gt;vector-length&lt;/B&gt; V))))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;do&lt;/B&gt; ((i 0 (+ i 1)))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; ((&gt;= i (&lt;B&gt;vector-length&lt;/B&gt; V)))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (tas:ajoute ! T (&lt;B&gt;vector-ref&lt;/B&gt; V i)))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;do&lt;/B&gt; ((i (- (&lt;B&gt;vector-length&lt;/B&gt; V) 1) (- i 1)))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; ((&lt; i 0) V)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;vector-set !&lt;/B&gt; V i (tas:extraire T)))))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt;(&lt;B&gt;define&lt;/B&gt; (n-min V n)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;if&lt;/B&gt; (&lt;= (&lt;B&gt;vector-length&lt;/B&gt; V) n)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (trier-vecteur V)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;let&lt;/B&gt; ((T (tas:creer n)))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;do&lt;/B&gt; ((i 0 (+ i 1)))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; ((&gt;= i n) T)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (tas:inserer-sommet ! T (&lt;B&gt;vector-ref&lt;/B&gt; V i)))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;do&lt;/B&gt; ((i n (+ i 1)))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; ((&gt;= i (&lt;B&gt;vector-length&lt;/B&gt; V)) T)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (entasser T (&lt;B&gt;vector-ref&lt;/B&gt; V i)))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;let&lt;/B&gt; ((W (&lt;B&gt;make-vector&lt;/B&gt; n)))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;do&lt;/B&gt; ((i 0 (+ i 1)))&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; ((&gt;= i n) W)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;vector-set !&lt;/B&gt; W&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (- (- n 1) i)&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt; (tas:extraire T)))))))&lt;/TT&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;BR&gt;
Exercice : Ecrire l'algorithme d&#233;crit
informellement ci-dessus en supposant qu'une
fonction fct rend des valeurs successives ou bien
qu'elle rend -1 comme derni&#232;re valeur.&lt;BR&gt;
&lt;BR&gt;
&lt;p&gt;&lt;BR&gt;
&lt;!--BEGIN NOTES document--&gt;&lt;/p&gt;
&lt;HR WIDTH=&quot;50%&quot; SIZE=1&gt;&lt;DL CLASS=&quot;list&quot;&gt;&lt;DT CLASS=&quot;dt-list&quot;&gt;&lt;A NAME=&quot;note1&quot; HREF=&quot;#text1&quot;&gt;&lt;FONT SIZE=5&gt;1&lt;/FONT&gt;&lt;/A&gt;&lt;DD CLASS=&quot;dd-list&quot;&gt;Le Britannique C. Antony R. Hoare est &#224; l'origine de quelques contributions de premier plan. Des &#233;tudes universitaires de tonalit&#233; plut&#244;t litt&#233;raire lui ont donn&#233; l'occasion de partir en stage en 1960 dans le laboratoire d'Andre&#239; Nikolai&#233;vitch Kolmogorov &#224; l'Universit&#233; de Moscou pour travailler sur un projet de traduction automatique. Pour r&#233;aliser un dictionnaire &#233;lectronique n&#233;cessaire &#224; ce projet (par ailleurs vite abandonn&#233;) il inventa l'algorithme de tri &lt;EM&gt;&#171; Quicksort &#187;&lt;/EM&gt; que tout &#233;tudiant en informatique se doit d'avoir &#233;tudi&#233; en d&#233;tail et programm&#233;. Ce stage lui avait donn&#233; le go&#251;t de la programmation, mais, comme il le raconte lui-m&#234;me avec humour, il eut la chance que sa formation initiale lui ferm&#226;t les portes du &lt;EM&gt;UK National Physical Laboratory&lt;/EM&gt;, et il entra dans l'industrie. C'est l&#224; qu'il eut l'occasion de participer au d&#233;veloppement de syst&#232;mes d'exploitation, domaine pour lequel il &#233;labora la m&#233;thode des &lt;a href='http://www.acm.org/classics/feb96/' class='spip_out' rel='external'&gt;moniteurs de Hoare&lt;/a&gt; afin de contr&#244;ler les acc&#232;s concurrents et exclusifs &#224; des ressources partag&#233;es et la th&#233;orie des processus s&#233;quentiels communicants, encore aujourd'hui le seul mod&#232;le complet et coh&#233;rent qui exc&#232;de r&#233;ellement le mod&#232;le de von Neumann.
&lt;/DL&gt;
&lt;!--END NOTES--&gt;
&lt;!--HTMLFOOT--&gt;
&lt;!--ENDHTML--&gt;
&lt;!--FOOTER--&gt;
&lt;HR SIZE=2&gt;&lt;BLOCKQUOTE CLASS=&quot;quote&quot;&gt;&lt;EM&gt;This document was translated from L&lt;sup&gt;A&lt;/sup&gt;T&lt;sub&gt;E&lt;/sub&gt;X by
&lt;/EM&gt;&lt;A HREF=&quot;http://pauillac.inria.fr/~maranget/hevea/index.html&quot;&gt;&lt;EM&gt;H&lt;FONT SIZE=2&gt;&lt;sup&gt;E&lt;/sup&gt;&lt;/FONT&gt;V&lt;FONT SIZE=2&gt;&lt;sup&gt;E&lt;/sup&gt;&lt;/FONT&gt;A&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt;.&lt;/EM&gt;&lt;/BLOCKQUOTE&gt;&lt;/BODY&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
	<item xml:lang="fr">
		<title>Recherche de mots dans un texte, KMP</title>
		<link>http://www.laurent-bloch.org/spip.php?article88</link>
		<guid isPermaLink="true">http://www.laurent-bloch.org/spip.php?article88</guid>
		<dc:date>2009-05-08T19:33:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Laurent Bloch, William Saurin</dc:creator>



		<description>L'algorithme de Knuth-Morris-Pratt .li-itemizemargin:1ex 0ex ; .li-enumeratemargin:1ex 0ex ; .dd-descriptionmargin:0ex 0ex 1ex 4ex ; .dt-descriptionmargin:0ex ; .toclist-style:none ; .thefootnotestext-align:left ;margin:0ex ; .dt-thefootnotesmargin:0em ; .dd-thefootnotesmargin:0em 0em 0em 2em ; .footnoterulemargin:1em auto 1em 0px ;width:50% ; .captionpadding-left:2ex ; padding-right:2ex ; margin-left:auto ; margin-right:auto .titlemargin:2ex auto ;text-align:center (...)

-
&lt;a href="http://www.laurent-bloch.org/spip.php?rubrique14" rel="directory"&gt;Algorithmes pour la biologie&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;&lt;/p&gt; &lt;HEAD&gt; &lt;TITLE&gt;L'algorithme de Knuth-Morris-Pratt &lt;/TITLE&gt; &lt;META http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=ISO-8859-1&quot;&gt; &lt;META name=&quot;GENERATOR&quot; content=&quot;hevea 1.10&quot;&gt; &lt;STYLE type=&quot;text/css&quot;&gt; .li-itemize{margin:1ex 0ex;} .li-enumerate{margin:1ex 0ex;} .dd-description{margin:0ex 0ex 1ex 4ex;} .dt-description{margin:0ex;} .toc{list-style:none;} .thefootnotes{text-align:left;margin:0ex;} .dt-thefootnotes{margin:0em;} .dd-thefootnotes{margin:0em 0em 0em 2em;} .footnoterule{margin:1em auto 1em 0px;width:50%;} .caption{padding-left:2ex; padding-right:2ex; margin-left:auto; margin-right:auto} .title{margin:2ex auto;text-align:center} .center{text-align:center;margin-left:auto;margin-right:auto;} .flushleft{text-align:left;margin-left:0ex;margin-right:auto;} .flushright{text-align:right;margin-left:auto;margin-right:0ex;} DIV TABLE{margin-left:inherit;margin-right:inherit;} PRE{text-align:left;margin-left:0ex;margin-right:auto;} BLOCKQUOTE{margin-left:4ex;margin-right:4ex;text-align:left;} TD P{margin:0px;} .boxed{border:1px solid black} .textboxed{border:1px solid black} .vbar{border:none;width:2px;background-color:black;} .hbar{border:none;height:2px;width:100%;background-color:black;} .hfill{border:none;height:1px;width:200%;background-color:black;} .vdisplay{border-collapse:separate;border-spacing:2px;width:auto; empty-cells:show; border:2px solid red;} .vdcell{white-space:nowrap;padding:0px;width:auto; border:2px solid green;} .display{border-collapse:separate;border-spacing:2px;width:auto; border:none;} .dcell{white-space:nowrap;padding:0px;width:auto; border:none;} .dcenter{margin:0ex auto;} .vdcenter{border:solid #FF8000 2px; margin:0ex auto;} .minipage{text-align:left; margin-left:0em; margin-right:auto;} .marginpar{border:solid thin black; width:20%; text-align:left;} .marginparleft{float:left; margin-left:0ex; margin-right:1ex;} .marginparright{float:right; margin-left:1ex; margin-right:0ex;} .theorem{text-align:left;margin:1ex auto 1ex 0ex;} .part{margin:2ex auto;text-align:center} .lstlisting{font-family:monospace;white-space:pre;margin-right:auto;margin-left:0pt;text-align:left} &lt;/STYLE&gt; &lt;/HEAD&gt; &lt;BODY &gt; &lt;!--HEVEA command line is: /usr/bin/hevea KMP-syn --&gt; &lt;!--CUT DEF section 1 --&gt;&lt;TABLE CLASS=&quot;title&quot;&gt;&lt;TR&gt;&lt;TD&gt;&lt;H1 CLASS=&quot;titlemain&quot;&gt;L'algorithme de Knuth-Morris-Pratt&lt;/H1&gt;&lt;H3 CLASS=&quot;titlerest&quot;&gt;William Saurin, Laurent Bloch&lt;/H3&gt;&lt;H3 CLASS=&quot;titlerest&quot;&gt;Le 8 mai 2009&lt;/H3&gt;&lt;/TD&gt;&lt;/TR&gt; &lt;/TABLE&gt;&lt;P&gt;
&lt;h3 class=&quot;spip&quot;&gt;#Sommaire-&lt;/h3&gt;
&lt;p&gt;Nous nous int&#233;ressons &#224; d&#233;terminer si un mot (ici un mot est
une simple cha&#238;ne de caract&#232;res) figure dans un texte. Nous noterons
&lt;TT&gt;Mot&lt;/TT&gt; le mot et nous consid&#233;rerons que les &#233;l&#233;ments
successifs du mot recherch&#233; sont stock&#233;s en &lt;TT&gt;Mot[0],
Mot[1], ... Mot[m-1]&lt;/TT&gt; Le texte sera not&#233; &lt;TT&gt;Texte&lt;/TT&gt; et ses
&#233;l&#233;ments successifs seront stock&#233;s en &lt;TT&gt;Texte[0], Texte[1], ...
Texte[t-1].&lt;/TT&gt;&lt;/p&gt; &lt;p&gt;L'indice &lt;I&gt;j&lt;/I&gt; correspond &#224; une progression dans le mot et l'indice
&lt;I&gt;i&lt;/I&gt; &#224; une progression dans le texte. &#192; un moment donn&#233; on compare le
caract&#232;re d'indice &lt;I&gt;i&lt;/I&gt;+&lt;I&gt;j&lt;/I&gt; du texte avec le caract&#232;re d'indice &lt;I&gt;j&lt;/I&gt; du
mot.&lt;/p&gt; &lt;HR SIZE=2&gt;
&lt;h3 class=&quot;spip&quot;&gt;Algorithme force brute.&lt;/h3&gt;
&lt;p&gt;On peut imaginer positionner successivement la sous chaine sous le
texte de mani&#232;re &#224; ce que sa premi&#232;re position (celle index&#233;e par
0) soit successivement sous les chacune des positions du texte. On
v&#233;rifie alors la coincidence des diff&#233;rents caract&#232;res superpos&#233;s.&lt;/p&gt; &lt;TABLE CLASS=&quot;lstframe&quot; STYLE=&quot;padding:1ex;border-style:solid;&quot;&gt;&lt;TR&gt;&lt;TD CLASS=&quot;lstlisting&quot;&gt;&lt;FONT COLOR=purple&gt;Algorithme&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; : &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;brute&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;-&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;force&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Donn&#233;es&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; : &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Texte&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;, &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Mot&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;EM&gt;&lt;FONT COLOR=purple&gt; ; le texte, et le mot recherch&#233;&lt;/FONT&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;R&#233;sultat&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; : &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;la&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;premi&#232;re&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;position&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;o&#249;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;le&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;mot&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;a&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&#233;t&#233;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;trouv&#233;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;, &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;ou&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;bien&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; -1.&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Soient&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Ltexte&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;la&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;longueur&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;du&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Texte&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Lmot&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;la&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;longueur&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;du&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Mot&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;pour&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;allant&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;de&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; 0 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;&#224;&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; (&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Ltexte&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; - &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Lmot&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;) &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;faire&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- 0&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;tant&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;que&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Lmot&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;et&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Texte&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;+&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;] = &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Mot&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;] &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;faire&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;+1&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;fait&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;si&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; = &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Lmot&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;alors&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;retourner&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;finsi&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;fait&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;si&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; = &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Lmot&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;alors&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;retourner&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;sinon&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;retourner&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; -1&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;/TABLE&gt;
&lt;p&gt;Complexit&#233; de l'algorithme : &lt;I&gt;l&lt;/I&gt; &#215; &lt;I&gt;m&lt;/I&gt;&lt;/p&gt; &lt;p&gt;En Scheme :&lt;/p&gt; &lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_Scheme cadre&quot;&gt;&lt;div class=&quot;scheme scheme&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;module&lt;/span&gt; force&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;brute&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;main get&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;args&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;define&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;get&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;args args&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;print&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;force&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;brute &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;cadr&lt;/span&gt; args&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;caddr&lt;/span&gt; args&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;;; les instruments&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;define&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;force&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;brute Texte Motif&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;let*&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;L&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;Texte &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;string-length&lt;/span&gt; Texte&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;L&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;Motif &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;string-length&lt;/span&gt; Motif&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;DerPos&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;Texte &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt; L&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;Texte &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;let&lt;/span&gt; boucle1 &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;i 0&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;j 0&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;let&lt;/span&gt; boucle2 &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;and&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&lt;&lt;/span&gt; j L&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;Motif&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;char=?&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;string-ref&lt;/span&gt; Texte &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; i j&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;string-ref&lt;/span&gt; Motif j&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;begin&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;set!&lt;/span&gt; j &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; j &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;boucle2&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;cond&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; j L&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;Motif&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; i&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&lt;&lt;/span&gt; i DerPos&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;Texte&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;boucle1 &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; i &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; 0&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;else&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='cadre_download' style='text-align: right;'&gt; &lt;a href='http://www.laurent-bloch.org/local/cache-code/be3d3552a317b3c885a85097ceab3574.txt' style='font-family: verdana, arial, sans; font-weight: bold; font-style: normal;'&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;HR SIZE=2&gt;
&lt;h3 class=&quot;spip&quot;&gt;Expos&#233; de l'algorithme KMP&lt;/h3&gt;
&lt;p&gt;L'id&#233;e de l'algorithme est simple : lorsque nous ne r&#233;ussissons plus &#224;
faire progresser l'indice &lt;I&gt;j&lt;/I&gt; vers la droite, en fait nous faisons
progresser l'indice &lt;I&gt;i&lt;/I&gt; mais dans ce cas nous r&#233;examinons &#224; nouveau
des caract&#232;res du texte. Puisque nous les avons d&#233;j&#224; vus ne pourrions
nous pas nous en passer ?&lt;/p&gt; &lt;p&gt;La deuxi&#232;me id&#233;e est que puisque les &lt;I&gt;k&lt;/I&gt;+1 caract&#232;res du texte, de
rang &lt;I&gt;i&lt;/I&gt; &#224; &lt;I&gt;i&lt;/I&gt;+&lt;I&gt;k&lt;/I&gt;, que nous
venons d'examiner sont &#171; bons &#187; alors ce sont aussi les &lt;I&gt;k&lt;/I&gt;+1 premiers
caract&#232;res du mot : nous pouvons savoir ce qui nous arrivera
d'avance uniquement en examinant d'abord les caract&#232;res du mot. Par
exemple, si les &lt;I&gt;n&lt;/I&gt; derniers caract&#232;res parmi ces &lt;I&gt;k&lt;/I&gt;+1, soit les
caract&#232;res du mot de rangs &lt;I&gt;k&lt;/I&gt;&#8722;&lt;I&gt;n&lt;/I&gt;+1 &#224; &lt;I&gt;k&lt;/I&gt;, se trouvent constituer un
pr&#233;fixe du mot, nous pouvons recommencer la comparaison dans le
texte &#224; la position &lt;I&gt;i&lt;/I&gt;+&lt;I&gt;k&lt;/I&gt;&#8722;&lt;I&gt;n&lt;/I&gt;+1, et comme nous savons que les caract&#232;res
&lt;I&gt;i&lt;/I&gt;+&lt;I&gt;k&lt;/I&gt;&#8722;&lt;I&gt;n&lt;/I&gt;+1 &#224; &lt;I&gt;i&lt;/I&gt;+&lt;I&gt;k&lt;/I&gt; sont bien &#233;gaux aux &lt;I&gt;n&lt;/I&gt; premiers caract&#232;res du
mot, en fait nous allons recommencer la comparaison avec le
caract&#232;re de rang &lt;I&gt;i&lt;/I&gt;+&lt;I&gt;k&lt;/I&gt;+1 dans le texte, et &lt;I&gt;k&lt;/I&gt;&#8722;&lt;I&gt;n&lt;/I&gt;+1 dans le mot.&lt;/p&gt; &lt;p&gt;La troisi&#232;me id&#233;e est celle-ci : la seconde id&#233;e consiste &#224; exploiter
le fait que si nous examinons les diff&#233;rents pr&#233;fixes du mot, de longuurs croissantes, certains de ces pr&#233;fixes vont avoir des suffixes
identiques &#224; un certain pr&#233;fixe du mot lui-m&#234;me, ce qui est la
circonstance qui autorise le recours &#224; la seconde id&#233;e expos&#233;e
ci-dessus.&lt;/p&gt; &lt;p&gt;Reprenons : si les &lt;I&gt;k&lt;/I&gt;+1 caract&#232;res de rangs &lt;I&gt;i&lt;/I&gt; &#224; &lt;I&gt;i&lt;/I&gt;+&lt;I&gt;k&lt;/I&gt; &#233;taient &#171; bons &#187;,
c'est-&#224;-dire &#233;gaux aux &lt;I&gt;k&lt;/I&gt;+1 premiers caract&#232;res du mot, on peut en
tirer des cons&#233;quences. Par exemple, si aucun des caract&#232;res de
&lt;I&gt;i&lt;/I&gt;+1 &#224; &lt;I&gt;i&lt;/I&gt;+&lt;I&gt;k&lt;/I&gt; du texte n'est &#233;gal au premier caract&#232;re du mot,
on en d&#233;duit qu'il est inutile de commencer une comparaison &#224; ces emplacements, on peut sauter tout de suite &#224; la position
&lt;I&gt;i&lt;/I&gt;+&lt;I&gt;k&lt;/I&gt;+1 du texte. Par contre, si un suffixe de la cha&#238;ne
&lt;TT&gt;Texte[i..i+k]&lt;/TT&gt;, disons &lt;TT&gt;Texte[i+k-m..i+k]&lt;/TT&gt; est un pr&#233;fixe du mot, alors il faut reprendre la comparaison
&#224; la position &lt;TT&gt;Texte[i+k+1]&lt;/TT&gt; du texte et &#224; partir de la
position &lt;TT&gt;Mot[k-m]&lt;/TT&gt;, puisque l'on sait d&#233;j&#224; que la
comparaison sera positive pour les &lt;TT&gt;m+1&lt;/TT&gt; premiers caract&#232;res.&lt;/p&gt; &lt;p&gt;Si la comparaison &#233;tait positive pour les &lt;I&gt;k&lt;/I&gt;+1 premiers caract&#232;res
du mot, soit &lt;TT&gt;Texte[i..i+k] = Mot[0..k]&lt;/TT&gt;, et si en outre
&lt;TT&gt;Texte[i+k-m..i+k] = Mot[k-m..k]&lt;/TT&gt;, alors c'est que
&lt;TT&gt;Mot[0..m]= Mot[k-m..k]&lt;/TT&gt;. Or ce r&#233;sultat concerne
uniquement &lt;TT&gt;Mot&lt;/TT&gt;, est peut &#234;tre pr&#233;-calcul&#233;.&lt;/p&gt; &lt;p&gt;Dans le cas de notre exemple : &lt;I&gt;i&lt;/I&gt;=2, &lt;I&gt;k&lt;/I&gt;=4, &lt;I&gt;m&lt;/I&gt;=2.&lt;/p&gt; &lt;p&gt;Imaginons donc que pour tous les mots allant de 0 &#224; &lt;I&gt;k&lt;/I&gt;
dans la cha&#238;ne nous connaissions la positions la plus grande &lt;I&gt;j&lt;/I&gt;
telle que le mot allant de 0 &#224; &lt;I&gt;j&lt;/I&gt; soit identique &#224;
celle allant de &lt;I&gt;k&lt;/I&gt;&#8722;&lt;I&gt;j&lt;/I&gt; &#224; &lt;I&gt;k&lt;/I&gt;. Consid&#233;rons que &lt;TT&gt;prec&lt;/TT&gt;
soit une fonction telle que &lt;TT&gt;prec&lt;/TT&gt;(&lt;I&gt;k&lt;/I&gt;) soit la valeur
de &lt;I&gt;j&lt;/I&gt; en question. Imaginons que nous ayons examin&#233; tous
les caract&#232;res du texte allant de &lt;I&gt;i&lt;/I&gt; &#224; &lt;I&gt;i&lt;/I&gt;+&lt;I&gt;k&lt;/I&gt; avec succ&#232;s,
c'est &#224; dire tous ceux de la chaine de 0 &#224; &lt;I&gt;k&lt;/I&gt;. Nous cherchons
donc &#224; trouver quel caract&#232;re de la cha&#238;ne peut-&#234;tre mis en correspondance
avec le caract&#232;re &lt;TT&gt;i+k+1&lt;/TT&gt; du texte. Le caract&#232;re &lt;TT&gt;k+1&lt;/TT&gt;
de la cha&#238;ne est un bon candidat mais s'il n'est pas identique &#224;
celui du texte alors le caract&#232;re &lt;TT&gt;prec(k)+1&lt;/TT&gt; de la cha&#238;ne
en est autre bon candidat, si ce caract&#232;re n'est pas identique alors
&lt;TT&gt;prec(prec (k))+1&lt;/TT&gt; est &#224; nouveau un bon candidat,
et ainsi de suite jusqu'&#224; ce qu'on ait trouv&#233; une identit&#233; ou jusqu'&#224;
ce que &lt;TT&gt;prec(...(prec(k))...)+1&lt;/TT&gt; vaille 0 et ait &#233;chou&#233;. Dans
le premier cas on examinera le caract&#232;re suivant du texte. Dans tous
les cas on examine le caract&#232;re suivant du texte.&lt;/p&gt; &lt;BLOCKQUOTE CLASS=&quot;figure&quot;&gt;&lt;DIV CLASS=&quot;center&quot;&gt;&lt;HR WIDTH=&quot;80%&quot; SIZE=2&gt;&lt;/DIV&gt;
&lt;span class='spip_document_33 spip_documents spip_documents_left' style='float:left;'&gt; &lt;a href=&quot;http://www.laurent-bloch.org/IMG/gif/kmp-motif.gif&quot; title=&quot;GIF - 2.7 ko&quot;&gt; &lt;img src=&quot;http://www.laurent-bloch.org/local/cache-vignettes/L381xH274/kmp-motif-5096c.gif&quot; width='381' height='274' alt=&quot;GIF - 2.7 ko&quot; style='height:274px;width:381px;' /&gt; &lt;/a&gt; &lt;/span&gt;
&lt;DIV CLASS=&quot;caption&quot;&gt;&lt;TABLE CELLSPACING=6 CELLPADDING=0&gt;&lt;TR&gt;&lt;TD VALIGN=top ALIGN=left&gt;Figure 1 :&lt;/TD&gt;&lt;/TR&gt;
&lt;/TABLE&gt;&lt;/DIV&gt;&lt;A NAME=&quot;&quot;&gt;&lt;/A&gt;&lt;DIV CLASS=&quot;center&quot;&gt;&lt;HR WIDTH=&quot;80%&quot; SIZE=2&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;
&lt;p&gt;La fonction qui construit la table des pr&#233;fixes est &#233;crite selon
la m&#233;thode expos&#233;e &#224; la section &lt;A HREF=&quot;#sec:prefixes&quot;&gt; ??&lt;/A&gt; plus bas.&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt;L'algorithme KMP proprement dit&lt;/h3&gt;
&lt;p&gt;Nous supposerons donc l'existence d'un tableau &lt;TT&gt;Tpref&lt;/TT&gt; qui,
pour chaque position &lt;I&gt;k&lt;/I&gt; du mot recherch&#233; &#224; laquelle une comparaison
&#233;choue (et qui correspond donc, si nous avons commenc&#233; dans le texte &#224;
la position &lt;I&gt;i&lt;/I&gt;, &#224; la position &lt;I&gt;i&lt;/I&gt;+&lt;I&gt;k&lt;/I&gt; du texte), nous donne la position
o&#249; recommencer la comparaison en &#233;vitant les positions qu'il est
inutile de v&#233;rifier parce que c'est d&#233;j&#224; fait. Ou, en d'autres termes,
de combien de positions dans le texte il faut revenir en arri&#232;re &#224;
partir de &lt;I&gt;i&lt;/I&gt;+&lt;I&gt;k&lt;/I&gt;. Soit :&lt;/p&gt; &lt;UL CLASS=&quot;itemize&quot;&gt;&lt;LI CLASS=&quot;li-itemize&quot;&gt;
si nous avons compar&#233; fructueusement de &lt;TT&gt;Texte[i]&lt;/TT&gt; &#224;
&lt;TT&gt;Texte[i+k-1]&lt;/TT&gt;, mais &#233;chou&#233; en comparant &lt;TT&gt;Texte[i+k]&lt;/TT&gt;
&#224; &lt;TT&gt;Mot[k]&lt;/TT&gt;, alors la comparaison doit pour avoir des chances
de r&#233;ussite reprendre en &lt;TT&gt;Texte[i+k-Tpref[k-1]]&lt;/TT&gt;.Notons que
&lt;TT&gt;Tpref[-1]&lt;/TT&gt; existe et vaut &#8722;1, parce que la comparaison
peut &#233;chouer au premier caract&#232;re du texte, &lt;TT&gt;Texte[0]&lt;/TT&gt;, et
donc du mot, &lt;TT&gt;Mot[0]&lt;/TT&gt;, et alors il faut recommencer en
&lt;TT&gt;Texte[1]&lt;/TT&gt;.
&lt;/LI&gt;&lt;/UL&gt;
&lt;p&gt;Nous verrons plus bas la construction de &lt;TT&gt;Tpref&lt;/TT&gt;, pour
l'instant supposons ce tableau construit et donn&#233; par la proc&#233;dure
&lt;TT&gt;kmp:tableau&lt;/TT&gt;. Voici le principe de l'algorithme :&lt;/p&gt; &lt;TABLE CLASS=&quot;lstframe&quot; STYLE=&quot;padding:1ex;border-style:solid;&quot;&gt;&lt;TR&gt;&lt;TD CLASS=&quot;lstlisting&quot;&gt;&lt;FONT COLOR=purple&gt;Algorithme&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; : &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;kmp&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; :&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;KMP&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Donn&#233;es&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; : &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Mot&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;, &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Texte&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;R&#233;sultat&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; : &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;la&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;position&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;&#224;&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;laquelle&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;est&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Mot&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;dans&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Texte&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Soient&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Tpref&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;kmp&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; :&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;tableau&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;(&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Mot&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;)&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Lmot&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;longueur&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;(&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Mot&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;)&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Ltexte&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;longueur&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;(&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Texte&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;)&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- 0&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- 0&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;tant&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;que&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Lmot&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;et&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;+&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Ltexte&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;faire&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;si&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Texte&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;+&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;] = &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Mot&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;] &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;alors&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;+1&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;sinon&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;+&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; - &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Tpref&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;]&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;si&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &gt; 0 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;alors&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Tpref&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;]&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;finsi&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;finsi&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;fait&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;si&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; = &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Lmot&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;alors&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;retourner&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;sinon&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;retourner&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; -1&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;fin&lt;/B&gt;&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;/TABLE&gt;
&lt;p&gt;En moyenne cet algorithme s'ex&#233;cute en un temps moyen qui cro&#238;t
comme &lt;I&gt;O&lt;/I&gt;(&lt;I&gt;n&lt;/I&gt;).&lt;/p&gt; &lt;p&gt;Signalons l'excellent &lt;a href='http://fr.wikipedia.org/wiki/Algorithme_de_Knuth-Morris-Pratt' class='spip_out' rel='external'&gt;article de Wikip&#233;dia, en
fran&#231;ais&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;En Scheme :&lt;/p&gt; &lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_Scheme cadre&quot;&gt;&lt;div class=&quot;scheme scheme&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;module&lt;/span&gt; kmp&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;main appel&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;import&lt;/span&gt; kmp&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;tableau&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;define&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;appel args&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;print&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;kmp:KMP &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;cadr&lt;/span&gt; args&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;caddr&lt;/span&gt; args&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;define&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;kmp:KMP Mot Texte&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;let&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;Tpref &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;kmp:tableau Mot&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;L&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;texte &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;string-length&lt;/span&gt; Texte&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;L&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;mot &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;string-length&lt;/span&gt; Mot&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;i 0&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;j 0&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;let&lt;/span&gt; boucle &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;char=?&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;string-ref&lt;/span&gt; Texte &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; i j&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;string-ref&lt;/span&gt; Mot j&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;set!&lt;/span&gt; j &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; j &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;begin&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;set!&lt;/span&gt; i &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; i j&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;vector-ref&lt;/span&gt; Tpref j&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&gt;&lt;/span&gt; j 0&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;set!&lt;/span&gt; j &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;vector-ref&lt;/span&gt; Tpref j&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;and&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&lt;&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; i j&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; L&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;texte&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&lt;&lt;/span&gt; j L&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;mot&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;boucle&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; j L&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;mot&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; i&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; i j&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='cadre_download' style='text-align: right;'&gt; &lt;a href='http://www.laurent-bloch.org/local/cache-code/aef623d0bf8cac0864ec98bb6f55d27d.txt' style='font-family: verdana, arial, sans; font-weight: bold; font-style: normal;'&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 class=&quot;spip&quot;&gt;Construction de la table des pr&#233;fixes&lt;/h3&gt;
&lt;p&gt;&lt;A NAME=&quot;sec:prefixes&quot;&gt;&lt;/A&gt;&lt;/p&gt; &lt;p&gt;Le but de la construction de la table des pr&#233;fixes est de d&#233;terminer,
en fonction du r&#233;sultat d'une comparaison partielle entre une zone du
texte et le d&#233;but du mot cherch&#233;, d&#233;but que nous appelons
&lt;EM&gt;motif&lt;/EM&gt;, quelle est la position suivante, dans le mot, &#224; partir
de laquelle il est utile de reprendre la comparaison.&lt;/p&gt; &lt;p&gt;Si la comparaison a &#233;t&#233; positive entre les &lt;I&gt;k&lt;/I&gt; caract&#232;res de la zone
&lt;TT&gt;Texte[i..i+k-1]&lt;/TT&gt; et les &lt;I&gt;k&lt;/I&gt; caract&#232;res du mot, soit
&lt;TT&gt;Mot[0..k-1]&lt;/TT&gt;, c'est que ces carat&#232;res sont identiques, dirait
Monsieur de la Palice. Nous allons &#171; pr&#233;-chercher &#187; dans le mot les
sous-cha&#238;nes, que nous appellerons &lt;EM&gt;motifs&lt;/EM&gt;, telles que
&lt;TT&gt;Mot[0..j]&lt;/TT&gt; = &lt;TT&gt;Mot[k-j..k]&lt;/TT&gt;. Munis de la liste de
ces motifs, nous saurons combien de caract&#232;res sauter lorsqu'une
comparaison &#233;chouera au caract&#232;re de rang &lt;I&gt;k&lt;/I&gt; du mot.&lt;/p&gt; &lt;p&gt;Pour chaque position dans le mot nous d&#233;terminerons la longueur du
plus long motif qui se termine &#224; la position courante.&lt;/p&gt; &lt;p&gt;&lt;TT&gt;Tpref&lt;/TT&gt; v&#233;rifiera la propri&#233;t&#233; suivante : si
&lt;TT&gt;Texte[i..i+k-1] = Mot[0..k-1]&lt;/TT&gt; mais que &lt;TT&gt;Texte[i+k] != Mot[k]&lt;/TT&gt;, alors la premi&#232;re position &#224; laquelle
une occurrence du mot peut appara&#238;tre est &lt;TT&gt;Texte[i+k-Tpref[k-1]]&lt;/TT&gt;.
En particulier, &lt;TT&gt;Tpref[-1]&lt;/TT&gt; existe et vaut &#8722;1, parce que la
comparaison peut &#233;chouer au premier caract&#232;re du texte, et donc du mot.&lt;/p&gt; &lt;p&gt;&lt;TT&gt;Tpref[j]&lt;/TT&gt; aura pour valeur la longueur du motif initial le
plus long qui se termine en &lt;TT&gt;Mot[j]&lt;/TT&gt;. Notamment, &lt;TT&gt;Tpref[-1] = -1&lt;/TT&gt;, comme signal&#233; ci-dessus.&lt;/p&gt; &lt;p&gt;Voici l'expos&#233; de l'algorithme. Afin d'&#233;viter un cas particulier, nous
adopterons la convention suivante : &lt;TT&gt;Mot[-1]&lt;/TT&gt; existe et sa
valeur est diff&#233;rente de toute autre valeur possible pour les
caract&#232;res de &lt;TT&gt;Mot&lt;/TT&gt;. Nous choisirons ici le caract&#232;re nul
ASCII, qui s'&#233;crit en Scheme&lt;/p&gt;
&lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre' dir='ltr'&gt;#a000&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;p&gt;. Pour des raisons de
syntaxe de Scheme, les indices de notre tableau seront augment&#233;s de 1 :
Tpref[i] dans le pseudo-code est &#233;quivalent &#224; Tpref[i+1] dans les
d&#233;veloppements ci-dessus.&lt;/p&gt; &lt;TABLE CLASS=&quot;lstframe&quot; STYLE=&quot;padding:1ex;border-style:solid;&quot;&gt;&lt;TR&gt;&lt;TD CLASS=&quot;lstlisting&quot;&gt;&lt;FONT COLOR=purple&gt;Algorithme&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; : &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;kmp&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; :&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;tableau&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Donn&#233;e&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; : &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Mot&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Soient&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Lmot&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;longueur&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;de&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Mot&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Tpref&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;un&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;tableau&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;de&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;longueur&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Lmot&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;+1&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- 0&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- -1&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Tpref&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[0] &lt;- -1&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;c&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- #&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;a000&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;EM&gt;&lt;FONT COLOR=purple&gt; ;; le caract&#232;re nul&lt;/FONT&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;tant&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;que&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Lmot&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;faire&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;si&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;c&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; = &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Mot&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;]&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;alors&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Tpref&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;+1] &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;+1&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;+1&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;+1&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;sinon&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;si&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &gt; 0 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;alors&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Tpref&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;]&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;sinon&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Tpref&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;+1] &lt;- 0&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;+1&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- 0&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;finsi&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;finsi&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;c&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Mot&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;]&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;fait&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;retourner&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Tpref&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;fin&lt;/B&gt;&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;/TABLE&gt;
&lt;p&gt;En Scheme (algorithme adapt&#233; de &lt;a href='http://fr.wikipedia.org/wiki/Algorithme_de_Knuth-Morris-Pratt' class='spip_out' rel='external'&gt;l'article de Wikipedia, en
fran&#231;ais&lt;/a&gt;) :&lt;/p&gt; &lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_Scheme cadre&quot;&gt;&lt;div class=&quot;scheme scheme&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;module&lt;/span&gt; kmp&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;tableau&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;export&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;kmp:tableau Motif&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;define&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;kmp:tableau Motif&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;let*&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;L&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;motif &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;string-length&lt;/span&gt; Motif&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;Tpref &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;make-vector&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; L&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;motif &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; 0&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;i 0&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;j &lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;vector-set!&lt;/span&gt; Tpref 0 j&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;let&lt;/span&gt; boucle &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;c #a000&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;;; le caract&#232;re nul&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;print&lt;/span&gt; Tpref&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;cond&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; i L&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;motif&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; 'fini&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;char=?&lt;/span&gt; c &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;string-ref&lt;/span&gt; Motif i&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;vector-set!&lt;/span&gt; Tpref &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; i &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; j &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;set!&lt;/span&gt; j &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; j &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;set!&lt;/span&gt; i &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; i &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&gt;&lt;/span&gt; j 0&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;set!&lt;/span&gt; j &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;vector-ref&lt;/span&gt; Tpref j&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;else&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;vector-set!&lt;/span&gt; Tpref &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; i &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; 0&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;set!&lt;/span&gt; i &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; i &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;set!&lt;/span&gt; j 0&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&lt;&lt;/span&gt; i L&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;motif&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;boucle &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;string-ref&lt;/span&gt; Motif j&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; Tpref&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='cadre_download' style='text-align: right;'&gt; &lt;a href='http://www.laurent-bloch.org/local/cache-code/0188312402e9a556894181a8e0516bfc.txt' style='font-family: verdana, arial, sans; font-weight: bold; font-style: normal;'&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 class=&quot;spip&quot;&gt;Trace d'ex&#233;cution&lt;/h3&gt;
&lt;p&gt;Voici un exemple de d&#233;roulement de l'algorithme de construction
du tableau des pr&#233;fixes :&lt;/p&gt; &lt;TABLE CLASS=&quot;lstframe&quot; STYLE=&quot;padding:1ex;border-style:solid;&quot;&gt;&lt;TR&gt;&lt;TD CLASS=&quot;lstlisting&quot;&gt;&lt;FONT COLOR=purple&gt;Init&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;. : &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Motif&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;FONT COLOR=purple&gt;&quot;ATATAGA&quot;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Tpref&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- 00000000&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- 0&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- -1&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;c&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- #&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;a000&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Tpref&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[0] &lt;- -1&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;----&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;c&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; = #&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;a000&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt; !&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;= &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Motif&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[0] = &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;A&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;, &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;donc&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; :&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; = -1, &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;donc&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; :&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Tpref&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[1] &lt;- 0&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- 1&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- 0&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;c&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;A&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;----&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;c&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; = &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;A&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt; !&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;= &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Motif&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[1] = &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;T&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;, &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;donc&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; :&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; = 0, &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;donc&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; :&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Tpref&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[2] &lt;- 0&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- 2&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- 0&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;c&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;A&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;----&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;c&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; = &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;A&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; = &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Motif&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[2], &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;donc&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; :&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Tpref&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[3] &lt;- 1 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;EM&gt;&lt;FONT COLOR=purple&gt; ; (j + 1)&lt;/FONT&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- 1&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- 3&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;c&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;T&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;----&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;c&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; = &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;T&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; = &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Motif&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[3], &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;donc&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; :&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Tpref&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[4] &lt;- 2 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;EM&gt;&lt;FONT COLOR=purple&gt; ; (j + 1)&lt;/FONT&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- 2&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- 4&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;c&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;A&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;----&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;c&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; = &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;A&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; = &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Motif&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[4], &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;donc&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; :&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Tpref&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[5] &lt;- 3 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;EM&gt;&lt;FONT COLOR=purple&gt; ; (j + 1)&lt;/FONT&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- 3&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- 5&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;c&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;T&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;----&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;c&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; = &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;T&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt; !&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;= &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Motif&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[5] = &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;G&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; , &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;donc&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; :&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Tpref&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; = 3] = 1&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;c&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;T&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;----&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;c&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; = &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;T&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt; !&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;= &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Motif&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[5] = &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;G&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;, &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;donc&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; :&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Tpref&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; = 1] = &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;O&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;c&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;A&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;----&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;c&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; = &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;A&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt; !&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;= &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Motif&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[5] = &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;G&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;, &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;donc&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; :&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; = 0, &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;donc&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; :&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Tpref&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;+1 = 6] &lt;- 0&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- 6&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- 0&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;c&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;A&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;----&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;c&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; = &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;A&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; = &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Motif&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[6]&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Tpref&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[7] &lt;- 1&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- 1&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- 7&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;c&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;T&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;----&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; = &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;longueur&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;(&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Motif&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;) =&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;fait&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Tpref&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; = #(-1 0 0 1 2 3 0 1)&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;/TABLE&gt;
&lt;p&gt;En moyenne cet algorithme s'ex&#233;cute en un temps moyen qui cro&#238;t
comme &lt;I&gt;O&lt;/I&gt;(&lt;I&gt;n&lt;/I&gt;).&lt;/p&gt; &lt;HR SIZE=2&gt;
&lt;h3 class=&quot;spip&quot;&gt;KMP en style r&#233;cursif&lt;/h3&gt;
&lt;p&gt;Aux fins d'une meilleure conformit&#233; aux canons de l'&#233;l&#233;gance lispienne,
voici les m&#234;mes programmes r&#233;&#233;crits dans un style r&#233;cursif d&#233;pourvu
d'affectations :&lt;/p&gt; &lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_Scheme cadre&quot;&gt;&lt;div class=&quot;scheme scheme&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;module&lt;/span&gt; kmp&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;main main&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;import&lt;/span&gt; kmp&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;table&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;define&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;main args&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;print&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;kmp:KMP &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;cadr&lt;/span&gt; args&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;caddr&lt;/span&gt; args&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;define&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;kmp:KMP Word Text&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;let&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;Tpref &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;kmp:table Word&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;Ltext &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;string-length&lt;/span&gt; Text&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;LastCharPos &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;string-length&lt;/span&gt; Word&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;let&lt;/span&gt; loop &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;i 0&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;j 0&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;cond&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; i j&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; Ltext&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;char=?&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;string-ref&lt;/span&gt; Text &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; i j&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;string-ref&lt;/span&gt; Word j&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; j LastCharPos&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; i&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;loop i &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; j &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;else&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;loop&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; i j&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;vector-ref&lt;/span&gt; Tpref j&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&gt;&lt;/span&gt; j 0&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;vector-ref&lt;/span&gt; Tpref j&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; j&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='cadre_download' style='text-align: right;'&gt; &lt;a href='http://www.laurent-bloch.org/local/cache-code/9c462d1308afbc99bd3c44a2f15dea50.txt' style='font-family: verdana, arial, sans; font-weight: bold; font-style: normal;'&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_Scheme cadre&quot;&gt;&lt;div class=&quot;scheme scheme&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;module&lt;/span&gt; kmp&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;table&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;export&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;kmp:table Word&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;define&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;kmp:table Word&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;let*&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;WordLength &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;string-length&lt;/span&gt; Word&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;Tpref &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;make-vector&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; WordLength &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; 0&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;vector-set!&lt;/span&gt; Tpref 0 &lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;let&lt;/span&gt; loop &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;i 0&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;j &lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;c #a000&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;;; null character&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&gt;=&lt;/span&gt; i WordLength&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; Tpref&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;cond&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;char=?&lt;/span&gt; c &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;string-ref&lt;/span&gt; Word i&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;vector-set!&lt;/span&gt; Tpref &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; i &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; j &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;loop &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; i &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; j &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;string-ref&lt;/span&gt; Word &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; j &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&gt;&lt;/span&gt; j 0&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;let&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;j2 &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;vector-ref&lt;/span&gt; Tpref j&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;loop i&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; j2&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;string-ref&lt;/span&gt; Word j2&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;else&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;vector-set!&lt;/span&gt; Tpref &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; i &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; 0&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;loop &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; i &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; 0&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;string-ref&lt;/span&gt; Word 0&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='cadre_download' style='text-align: right;'&gt; &lt;a href='http://www.laurent-bloch.org/local/cache-code/f6ac564fd018bfff2b5a11ccf73c0ef6.txt' style='font-family: verdana, arial, sans; font-weight: bold; font-style: normal;'&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;!--CUT END --&gt;
&lt;!--HTMLFOOT--&gt;
&lt;!--ENDHTML--&gt;
&lt;!--FOOTER--&gt;&lt;/p&gt;
&lt;HR SIZE=2&gt;&lt;BLOCKQUOTE CLASS=&quot;quote&quot;&gt;&lt;EM&gt;This document was translated from L&lt;sup&gt;A&lt;/sup&gt;T&lt;sub&gt;E&lt;/sub&gt;X by
&lt;/EM&gt;&lt;A HREF=&quot;http://hevea.inria.fr/index.html&quot;&gt;&lt;EM&gt;H&lt;/EM&gt;&lt;EM&gt;&lt;FONT SIZE=2&gt;&lt;sup&gt;E&lt;/sup&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;EM&gt;V&lt;/EM&gt;&lt;EM&gt;&lt;FONT SIZE=2&gt;&lt;sup&gt;E&lt;/sup&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;EM&gt;A&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt;.&lt;/EM&gt;&lt;/BLOCKQUOTE&gt;&lt;/BODY&gt;
&lt;/HTML&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
	<item xml:lang="fr">
		<title>Algorithme de Needleman et Wunsch</title>
		<link>http://www.laurent-bloch.org/spip.php?article89</link>
		<guid isPermaLink="true">http://www.laurent-bloch.org/spip.php?article89</guid>
		<dc:date>2008-05-27T21:04:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		



		<description>L'algorithme de Needleman et Wunsch .toclist-style:none ; .titlemargin:auto ;text-align:center .centertext-align:center ;margin-left:auto ;margin-right:auto ; .flushlefttext-align:left ;margin-left:0ex ;margin-right:auto ; .flushrighttext-align:right ;margin-left:auto ;margin-right:0ex ; DIV TABLEmargin-left:inherit ;margin-right:inherit ; PREtext-align:left ;margin-left:0ex ;margin-right:auto ; BLOCKQUOTEmargin-left:4ex ;margin-right:4ex ;text-align:left ; .partmargin:auto (...)

-
&lt;a href="http://www.laurent-bloch.org/spip.php?rubrique14" rel="directory"&gt;Algorithmes pour la biologie&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot; &quot;&lt;a href='http://www.w3.org/TR/REC-html40/loose.dtd' class='spip_out' rel='nofollow external'&gt;http://www.w3.org/TR/REC-html40/loo...&lt;/a&gt;&quot;&gt;&lt;/p&gt; &lt;HEAD&gt; &lt;TITLE&gt;L'algorithme de Needleman et Wunsch&lt;/TITLE&gt; &lt;META http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=ISO-8859-1&quot;&gt; &lt;META name=&quot;GENERATOR&quot; content=&quot;hevea 1.08&quot;&gt; &lt;STYLE type=&quot;text/css&quot;&gt; .toc{list-style:none;} .title{margin:auto;text-align:center} .center{text-align:center;margin-left:auto;margin-right:auto;} .flushleft{text-align:left;margin-left:0ex;margin-right:auto;} .flushright{text-align:right;margin-left:auto;margin-right:0ex;} DIV TABLE{margin-left:inherit;margin-right:inherit;} PRE{text-align:left;margin-left:0ex;margin-right:auto;} BLOCKQUOTE{margin-left:4ex;margin-right:4ex;text-align:left;} .part{margin:auto;text-align:center} .lstlisting{font-family:monospace;white-space:pre;margin-right:auto;margin-left:0pt;text-align:left} &lt;/STYLE&gt; &lt;/HEAD&gt; &lt;BODY &gt; &lt;!--HEVEA command line is: /usr/bin/hevea -fix Needleman-Wunsch --&gt; &lt;!--HTMLHEAD--&gt; &lt;!--ENDHTML--&gt; &lt;!--PREFIX &lt;ARG &gt;&lt;/ARG&gt;--&gt; &lt;!--CUT DEF section 1 --&gt; &lt;BR&gt; &lt;TABLE CLASS=&quot;title&quot;&gt; &lt;TR&gt;&lt;TD&gt; &lt;H1 CLASS=&quot;titlemain&quot;&gt;L'algorithme de Needleman et Wunsch&lt;/H1&gt; &lt;H3 CLASS=&quot;titlerest&quot;&gt;Laurent Bloch&lt;/H3&gt; &lt;H3 CLASS=&quot;titlerest&quot;&gt;Le 10 mai 2006&lt;/H3&gt;&lt;/TD&gt; &lt;/TR&gt;&lt;/TABLE&gt;&lt;BR&gt; &lt;HR SIZE=2&gt;&lt;BR&gt; &lt;h3 class=&quot;spip&quot;&gt;Sommaire-&lt;/h3&gt;
&lt;h3 class=&quot;spip&quot;&gt;Principes de l'algorithme&lt;/h3&gt;
&lt;p&gt;Dans un autre article de ce site sont pr&#233;sent&#233;s des algorithmes de
recherche d'un mot dans un texte, notamment celui de
&lt;a href='http://www.laurent-bloch.org/spip.php?article88' class='spip_in'&gt;Knuth-Morris-Pratt&lt;/a&gt; (KMP). Ces algorithmes sont d&#233;volus
au probl&#232;me de la &lt;EM&gt;recherche exacte&lt;/EM&gt; : il s'agit de trouver, si
elle existe, la premi&#232;re occurrence exacte de &lt;EM&gt;ce&lt;/EM&gt; mot dans
&lt;EM&gt;ce&lt;/EM&gt; texte.&lt;/p&gt; &lt;p&gt;Nous allons maintenant &#233;tudier, parce que c'est un probl&#232;me
central en bioinformatique, une recherche approximative : il
s'agit de savoir si deux mots se ressemblent, quel est leur
degr&#233; de ressemblance, ou de trouver, dans un ensemble de mots,
celui qui ressemble le plus &#224; un mot-cible. Et nous allons voir
que ce probl&#232;me rel&#232;ve de solutions tr&#232;s diff&#233;rentes de celles
qui valent pour la recherche exacte.&lt;/p&gt; &lt;p&gt;Notons d'abord que la &lt;EM&gt;ressemblance&lt;/EM&gt; est une notion
impr&#233;cise : la plupart des algorithmes utilis&#233;s proposent diff&#233;rents
param&#232;tres pour &lt;EM&gt;ajuster&lt;/EM&gt; les facteurs de ressemblance aux
caract&#233;ristiques du probl&#232;me trait&#233;.&lt;/p&gt; &lt;p&gt;Les algorithmes utilis&#233;s fournissent en g&#233;n&#233;ral deux r&#233;sultats :&lt;/p&gt;
&lt;UL CLASS=&quot;itemize&quot;&gt;&lt;LI CLASS=&quot;li-itemize&quot;&gt;
pour chaque comparaison de deux cha&#238;nes, un &lt;EM&gt;score&lt;/EM&gt; de ressemblance, qui permet ensuite de trouver la meilleure ressemblance parmi un ensemble de comparaisons ;
&lt;LI CLASS=&quot;li-itemize&quot;&gt;un &lt;EM&gt;alignement&lt;/EM&gt; des deux cha&#238;nes (qui n'ont pas forc&#233;ment la m&#234;me longueur) selon la configuration qui procure le meilleur score ; on dit bien &lt;EM&gt;un&lt;/EM&gt; alignement, et non pas &lt;EM&gt;l'&lt;/EM&gt;alignement, parce qu'en effet, comme nous le verrons plus loin, le probl&#232;me peut admettre plusieurs solutions conduisant au m&#234;me score.
&lt;/UL&gt;
Le plus caract&#233;ristique de cette famille d'algorithmes est peut-&#234;tre
celui de Needleman et Wunsch, que nous &#233;tudierons ici ; il r&#233;alise un alignement global de deux s&#233;quences (cha&#238;nes de caract&#232;res).
&lt;p&gt;Calculer un alignement global peut &#234;tre co&#251;teux si les s&#233;quences &#224;
aligner sont longues, ou s'il y en a beaucoup. D'autres algorithmes,
qui ressemblent &#224; celui-ci, ont &#233;t&#233; con&#231;us pour limiter la taille du
probl&#232;me en ne r&#233;alisant l'alignement que pour des r&#233;gions &#171; &lt;EM&gt;int&#233;ressantes&lt;/EM&gt; &#187;. La d&#233;termination des r&#233;gions int&#233;ressantes est
bien s&#251;r en elle-m&#234;me un probl&#232;me int&#233;ressant. Citons l'algorithme de
Smith et Waterman, qui r&#233;alise des alignements locaux, et le logiciel
BLAST&lt;SUP&gt;&lt;A NAME=&quot;text1&quot; HREF=&quot;#note1&quot;&gt;1&lt;/A&gt;&lt;/SUP&gt;, qui mettent en
oeuvre des m&#233;thodes similaires &#224; celles de Needleman et Wunsch,
apr&#232;s des optimisations &#233;ventuellement complexes.&lt;/p&gt; &lt;p&gt;Le probl&#232;me de la comparaison de s&#233;quences est exponentiel, la
solution est en &lt;I&gt;O&lt;/I&gt;(&lt;I&gt;k&lt;/I&gt;&lt;SUP&gt;&lt;I&gt;n&lt;/I&gt;&lt;/SUP&gt;) ; ces algorithmes sont susceptibles d'une multiplicit&#233; de solutions ; une des techniques les plus g&#233;n&#233;ralement utilis&#233;es pour en r&#233;duire la complexit&#233; est la
&lt;a href='http://www.laurent-bloch.org/spip.php?article90' class='spip_in'&gt;programmation dynamique&lt;/a&gt;, qui fait l'objet d'un &lt;a href='http://www.laurent-bloch.org/spip.php?article90' class='spip_in'&gt;autre article&lt;/a&gt; sur ce site.&lt;/p&gt; &lt;div class=flushright; style=&quot;width:60%&quot;&gt;
&lt;EM&gt;La programmation dynamique r&#233;sout des probl&#232;mes en combinant des
solutions de sous-probl&#232;mes.
(Thomas Cormen, Charles Leiserson, Ronald Rivest et Clifford Stein, &lt;/EM&gt;Introduction &#224; l'algorithmique&lt;EM&gt;)&lt;/EM&gt; &lt;/div&gt;
&lt;p&gt;L'id&#233;e de la programmation dynamique
est de m&#233;moriser les r&#233;sultats de calculs interm&#233;diaires qui
seront probablement r&#233;p&#233;t&#233;s.
La programmation dynamique est par exemple souvent un bon choix
lorsque l'on aura besoin, apr&#232;s les avoir calcul&#233;es, des valeurs
stock&#233;es dans tous les noeuds d'un arbre ou dans toutes les cases
d'un tableau. Parfois aussi cette conservation des r&#233;sultats
interm&#233;diaires est impos&#233;e par un probl&#232;me tel que le calcul d'une
valeur se fait en fonction de toutes les pr&#233;c&#233;dentes. L'art
algorithmique consiste &#224; chercher des solutions qui &#233;vitent ce type de
contrainte mais c'est parfois impossible. Et puis il y a des probl&#232;mes
intrins&#232;quement r&#233;cursifs pour lesquels n'existe pas d'algorithme
it&#233;ratif.&lt;BR&gt;
&lt;BR&gt;
Nous allons donc chercher des proc&#233;d&#233;s pour associer
un algorithme qui calcule des valeurs successives avec une structure
de donn&#233;es qui les archive.&lt;/p&gt; &lt;div class=flushright; style=&quot;width:60%&quot;&gt; &lt;EM&gt;Cette section doit beaucoup au travail pr&#233;alable de William Saurin pour cet enseignement, ainsi qu'&#224; une page cr&#233;&#233;e par Eric C. Rouchka, de l'universit&#233; Washington &#224; Saint-Louis, et reprise par Per Kraulis au &lt;/EM&gt;Stockholm Bioinformatics Center&lt;EM&gt; :&lt;/EM&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href='http://www.sbc.su.se/~pjk/molbioinfo2001/dynprog/dynamic.html' class='spip_out' rel='external'&gt;http://www.sbc.su.se/~pjk/molbioinf...&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Supposons que nous souhaitions calculer un alignement global
de deux s&#233;quences :&lt;BR&gt;
&lt;BR&gt;
s&#233;quence n&#176; 1 : &lt;TT&gt;G A A T T C A G T T A&lt;/TT&gt;&lt;BR&gt;
&lt;BR&gt;
s&#233;quence n&#176; 2 : &lt;TT&gt;G G A T C G A&lt;/TT&gt;&lt;BR&gt;
&lt;BR&gt;
La s&#233;quence n&#176; 1 a &lt;I&gt;m&lt;/I&gt;=11 r&#233;sidus, la s&#233;quence n&#176; 2 &lt;I&gt;n&lt;/I&gt;=7 r&#233;sidus.&lt;/p&gt; &lt;p&gt;Nous allons ici &#233;tudier l'algorithme avec des param&#232;tres
particuli&#232;rement simples, peut-&#234;tre m&#234;me simplistes : p&#233;nalit&#233; nulle
pour les trous &lt;EM&gt;(gaps)&lt;/EM&gt; et les discordances (substitutions), une
p&#233;nalit&#233; n&#233;gative, ou prime, &#233;gale &#224; 1 pour les concordances &lt;i&gt;(matches)&lt;/i&gt;. Le but
est d'acqu&#233;rir une vue d'ensemble de l'architecture de la solution,
qui permettra au lecteur d'envisager ensuite des exemples plus
compliqu&#233;s, avec des formules de calcul plus &#233;labor&#233;es pour les scores
et pour les p&#233;nalit&#233;s de gap.&lt;/p&gt; &lt;p&gt;Le principe de pond&#233;ration que nous adopterons sera le suivant :&lt;/p&gt;
&lt;UL CLASS=&quot;itemize&quot;&gt;&lt;LI CLASS=&quot;li-itemize&quot;&gt;
la &#171; prime de score &#187; pour la comparaison du r&#233;sidu de rang &lt;I&gt;i&lt;/I&gt; de la premi&#232;re s&#233;quence avec le r&#233;sidu de rang &lt;I&gt;j&lt;/I&gt; de le seconde s&#233;quence sera &lt;I&gt;S&lt;/I&gt;&lt;SUB&gt;&lt;I&gt;i&lt;/I&gt;,&lt;I&gt;j&lt;/I&gt;&lt;/SUB&gt; = 1 si les deux r&#233;sidus sont identiques, sinon :
&lt;LI CLASS=&quot;li-itemize&quot;&gt;&lt;I&gt;S&lt;/I&gt;&lt;SUB&gt;&lt;I&gt;i&lt;/I&gt;,&lt;I&gt;j&lt;/I&gt;&lt;/SUB&gt; = 0 (score de discordance) ;
&lt;LI CLASS=&quot;li-itemize&quot;&gt;&lt;I&gt;w&lt;/I&gt; = 0 (p&#233;nalit&#233; de &lt;EM&gt;gap&lt;/EM&gt;).
&lt;/UL&gt;
L'algorithme op&#232;re en trois &#233;tapes :
&lt;UL CLASS=&quot;itemize&quot;&gt;&lt;LI CLASS=&quot;li-itemize&quot;&gt;
initialisation ;
&lt;LI CLASS=&quot;li-itemize&quot;&gt;calcul des scores et remplissage de la matrice ;
&lt;LI CLASS=&quot;li-itemize&quot;&gt;calcul de l'alignement en &#171; remontant &#187; dans la matrice.
&lt;/UL&gt;
&lt;h3 class=&quot;spip&quot;&gt;Initialisation&lt;/h3&gt;
&lt;p&gt;Cr&#233;ation d'une matrice &lt;I&gt;M&lt;/I&gt; de &lt;I&gt;m&lt;/I&gt;+2=13 colonnes et &lt;I&gt;n&lt;/I&gt;+2=9 lignes : la
ligne et la colonne de rangs 0 contiendront les textes des
s&#233;quences, la seconde ligne (de rang 1, les &lt;I&gt;M&lt;/I&gt;&lt;SUB&gt;1,&lt;I&gt;j&lt;/I&gt;&lt;/SUB&gt;) et la premi&#232;re
colonne (les &lt;I&gt;M&lt;/I&gt;&lt;SUB&gt;&lt;I&gt;i&lt;/I&gt;,1&lt;/SUB&gt;) de &lt;I&gt;M&lt;/I&gt; sont remplies de 0 parce que nous
avons pos&#233; qu'il n'y avait pas de p&#233;nalit&#233;s pour des &lt;EM&gt;gaps&lt;/EM&gt;
initiaux ou finals.&lt;/p&gt; &lt;TABLE BORDER=1 CELLSPACING=0 CELLPADDING=1&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; C &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; 0 &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; C &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;/TR&gt;&lt;/TABLE&gt;
&lt;h3 class=&quot;spip&quot;&gt;Remplissage de la matrice&lt;/h3&gt;
&lt;p&gt;&#192; chaque position &lt;I&gt;M&lt;/I&gt;&lt;SUB&gt;&lt;I&gt;i&lt;/I&gt;,&lt;I&gt;j&lt;/I&gt;&lt;/SUB&gt; de la matrice &lt;I&gt;M&lt;/I&gt; (&lt;I&gt;i&lt;/I&gt; est le num&#233;ro de
ligne, &lt;I&gt;j&lt;/I&gt; le num&#233;ro de colonne) le score se calcule ainsi :&lt;BR&gt;
&lt;BR&gt;&lt;/p&gt;
&lt;DIV CLASS=&quot;center&quot;&gt;&lt;TABLE CELLSPACING=0 CELLPADDING=0&gt;
&lt;TR VALIGN=middle&gt;&lt;TD NOWRAP &gt;&lt;I&gt;M&lt;/I&gt;&lt;SUB&gt;&lt;I&gt;i&lt;/I&gt;,&lt;I&gt;j&lt;/I&gt;&lt;/SUB&gt; = &lt;I&gt;&lt;I&gt;Maximum&lt;/I&gt; &lt;I&gt;de&lt;/I&gt; :&lt;/I&gt; &lt;/TD&gt;
&lt;TD NOWRAP&gt;&lt;TABLE CELLSPACING=2 CELLPADDING=0&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt;&lt;I&gt;M&lt;/I&gt;&lt;SUB&gt;&lt;I&gt;i&lt;/I&gt;&amp;minus;1,&lt;I&gt;j&lt;/I&gt;&amp;minus;1&lt;/SUB&gt; + &lt;I&gt;S&lt;/I&gt;&lt;SUB&gt;&lt;I&gt;i&lt;/I&gt;,&lt;I&gt;j&lt;/I&gt;&lt;/SUB&gt;&lt;/TD&gt;
&lt;TD ALIGN=left NOWRAP&gt;(concordance ou discordance &lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=left NOWRAP&gt;dans la diagonale)&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt;&lt;I&gt;M&lt;/I&gt;&lt;SUB&gt;&lt;I&gt;i&lt;/I&gt;,&lt;I&gt;j&lt;/I&gt;&amp;minus;1&lt;/SUB&gt; + &lt;I&gt;w&lt;/I&gt;&lt;/TD&gt;
&lt;TD ALIGN=left NOWRAP&gt;(gap dans la s&#233;quence n&#176; 1)&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt;&lt;I&gt;M&lt;/I&gt;&lt;SUB&gt;&lt;I&gt;i&lt;/I&gt;&amp;minus;1,&lt;I&gt;j&lt;/I&gt;&lt;/SUB&gt; + &lt;I&gt;w&lt;/I&gt;&lt;/TD&gt;
&lt;TD ALIGN=left NOWRAP&gt;(gap dans la s&#233;quence n&#176; 2)&lt;/TD&gt;
&lt;/TR&gt;&lt;/TABLE&gt;&lt;/TD&gt;
&lt;TD NOWRAP&gt; &lt;/TD&gt;
&lt;/TR&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;p&gt;Nous voyons que pour calculer &lt;I&gt;M&lt;/I&gt;&lt;SUB&gt;&lt;I&gt;i&lt;/I&gt;,&lt;I&gt;j&lt;/I&gt;&lt;/SUB&gt; il faut (et il suffit
de) conna&#238;tre &lt;I&gt;M&lt;/I&gt;&lt;SUB&gt;&lt;I&gt;i&lt;/I&gt;&amp;minus;1,&lt;I&gt;j&lt;/I&gt;&lt;/SUB&gt;, &lt;I&gt;M&lt;/I&gt;&lt;SUB&gt;&lt;I&gt;i&lt;/I&gt;,&lt;I&gt;j&lt;/I&gt;&amp;minus;1&lt;/SUB&gt; et &lt;I&gt;M&lt;/I&gt;&lt;SUB&gt;&lt;I&gt;i&lt;/I&gt;&amp;minus;1,&lt;I&gt;j&lt;/I&gt;&amp;minus;1&lt;/SUB&gt; ; de ce point de vue le probl&#232;me est assez analogue &#224; ceux pos&#233;s par Fibonacci ou par le triangle de Pascal.&lt;/p&gt; &lt;p&gt;Ainsi, comme chaque s&#233;quence commence par le r&#233;sidu &lt;TT&gt;G&lt;/TT&gt;
(concordance), &lt;I&gt;S&lt;/I&gt;&lt;SUB&gt;1,1&lt;/SUB&gt;=1. Nous avons pos&#233; par hypoth&#232;se &lt;I&gt;w&lt;/I&gt;=0.
Donc :&lt;/p&gt; &lt;DIV CLASS=&quot;center&quot;&gt;&lt;TABLE CELLSPACING=0 CELLPADDING=0&gt;
&lt;TR VALIGN=middle&gt;&lt;TD NOWRAP &gt;
&lt;/TD&gt;
&lt;TD NOWRAP&gt;&lt;TABLE CELLSPACING=2 CELLPADDING=0&gt;
&lt;TR&gt;&lt;TD ALIGN=right NOWRAP&gt;&lt;I&gt;M&lt;/I&gt;&lt;SUB&gt;1,1&lt;/SUB&gt;&lt;/TD&gt;
&lt;TD ALIGN=left NOWRAP&gt; = &lt;I&gt;Max&lt;/I&gt;[&lt;I&gt;M&lt;/I&gt;&lt;SUB&gt;0,0&lt;/SUB&gt;+1, &lt;I&gt;M&lt;/I&gt;&lt;SUB&gt;1,0&lt;/SUB&gt;+0, &lt;I&gt;M&lt;/I&gt;&lt;SUB&gt;0,1&lt;/SUB&gt;+0] &lt;/TD&gt;
&lt;TD ALIGN=right NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=right NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=right NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=right NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=right NOWRAP&gt; (1)&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=right NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=left NOWRAP&gt; = &lt;I&gt;Max&lt;/I&gt;[1,0,0] &lt;/TD&gt;
&lt;TD ALIGN=right NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=right NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=right NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=right NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=right NOWRAP&gt; (2)&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=right NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=left NOWRAP&gt; = 1
&lt;/TD&gt;
&lt;TD ALIGN=right NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=right NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=right NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=right NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=right NOWRAP&gt; (3)&lt;/TD&gt;
&lt;/TR&gt;&lt;/TABLE&gt;&lt;/TD&gt;
&lt;/TR&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;p&gt;Nous pouvons donc inscrire un 1 en &lt;I&gt;M&lt;/I&gt;&lt;SUB&gt;1,1&lt;/SUB&gt; :&lt;/p&gt; &lt;TABLE BORDER=1 CELLSPACING=0 CELLPADDING=1&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; C &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; 0 &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; C &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;/TR&gt;&lt;/TABLE&gt;
&lt;p&gt;Ceci fait, toujours parce que &lt;I&gt;w&lt;/I&gt;=0, nous pouvons facilement remplir
la ligne 1 et la colonne 1 avec des 1 ; ainsi :&lt;/p&gt; &lt;DIV CLASS=&quot;center&quot;&gt;&lt;TABLE CELLSPACING=0 CELLPADDING=0&gt;
&lt;TR VALIGN=middle&gt;&lt;TD NOWRAP &gt;
&lt;/TD&gt;
&lt;TD NOWRAP&gt;&lt;TABLE CELLSPACING=2 CELLPADDING=0&gt;
&lt;TR&gt;&lt;TD ALIGN=right NOWRAP&gt;&lt;I&gt;M&lt;/I&gt;&lt;SUB&gt;2,1&lt;/SUB&gt;&lt;/TD&gt;
&lt;TD ALIGN=left NOWRAP&gt; = &lt;I&gt;Max&lt;/I&gt;[&lt;I&gt;M&lt;/I&gt;&lt;SUB&gt;1,0&lt;/SUB&gt;+0, &lt;I&gt;M&lt;/I&gt;&lt;SUB&gt;2,0&lt;/SUB&gt;+0, &lt;I&gt;M&lt;/I&gt;&lt;SUB&gt;1,1&lt;/SUB&gt;+0] &lt;/TD&gt;
&lt;TD ALIGN=right NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=right NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=right NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=right NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=right NOWRAP&gt; (4)&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=right NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=left NOWRAP&gt; = &lt;I&gt;Max&lt;/I&gt;[0,0,1] &lt;/TD&gt;
&lt;TD ALIGN=right NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=right NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=right NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=right NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=right NOWRAP&gt; (5)&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=right NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=left NOWRAP&gt; = 1
&lt;/TD&gt;
&lt;TD ALIGN=right NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=right NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=right NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=right NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=right NOWRAP&gt; (6)&lt;/TD&gt;
&lt;/TR&gt;&lt;/TABLE&gt;&lt;/TD&gt;
&lt;/TR&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;p&gt;soit :&lt;/p&gt; &lt;TABLE BORDER=1 CELLSPACING=0 CELLPADDING=1&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; C &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; 0 &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; C &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;/TR&gt;&lt;/TABLE&gt;
&lt;p&gt;Finalement :&lt;/p&gt; &lt;TABLE BORDER=1 CELLSPACING=0 CELLPADDING=1&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; C &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; 0 &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; C &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;6&lt;/FONT&gt;&lt;/TD&gt;
&lt;/TR&gt;&lt;/TABLE&gt;&lt;BR&gt;
Nous avons signal&#233; ci-dessus que le probl&#232;me g&#233;n&#233;ral de
la comparaison de s&#233;quences &#233;tait exponentiel (&lt;I&gt;O&lt;/I&gt;(&lt;I&gt;k&lt;/I&gt;&lt;SUP&gt;&lt;I&gt;n&lt;/I&gt;&lt;/SUP&gt;)).
L'utilisation de la programmation dynamique, avec le
graphe repr&#233;sent&#233; par ce tableau, permet
de le r&#233;duire &#224; un probl&#232;me quadratique (&lt;I&gt;O&lt;/I&gt;(&lt;I&gt;m&lt;/I&gt; &#215; &lt;I&gt;n&lt;/I&gt;),
&lt;I&gt;m&lt;/I&gt; et &lt;I&gt;n&lt;/I&gt; &#233;tant les longueurs respectives des s&#233;quences).
En effet, il y a &lt;I&gt;m&lt;/I&gt; &#215; &lt;I&gt;n&lt;/I&gt; valeurs dans la table, et le
calcul de chacune s'effectue en temps constant.
&lt;h3 class=&quot;spip&quot;&gt;D&#233;terminer l'alignement optimal&lt;/h3&gt;
&lt;p&gt;L'&#233;tape pr&#233;c&#233;dente nous a d&#233;j&#224; permis de savoir que le
score d'alignement maximum pour nos deux s&#233;quences est 6.
Souvent, cette information est suffisante, parce que
l'on cherche en fait les meilleurs scores parmi une
collection de s&#233;quences &#224; comparer &#224; la cible. Mais
peut &#234;tre aussi int&#233;ressant de conna&#238;tre un alignement
qui donne ce score.&lt;/p&gt; &lt;p&gt;Nous allons maintenant d&#233;terminer l'alignement effectif
qui donne ce r&#233;sultat.&lt;/p&gt; &lt;p&gt;Pour cela, on consid&#232;re la case du tableau qui contient le
score maximum, qui est &lt;I&gt;M&lt;/I&gt;&lt;SUB&gt;&lt;I&gt;m&lt;/I&gt;,&lt;I&gt;n&lt;/I&gt;&lt;/SUB&gt;, et on la
compare &#224; ses voisines. Ici toutes les voisines contiennent la valeur
5. Comme la diff&#233;rence de scores est 1 dans tous les
cas, et que le seul moyen d'avoir un accroissement de 1
est une concordance &lt;i&gt;(match&lt;/i&gt;) (toutes les autres situations donnent
un accroissement nul), c'est que la case pr&#233;c&#233;dente &#233;tait
la voisine en diagonale :&lt;/p&gt; &lt;TABLE BORDER=1 CELLSPACING=0 CELLPADDING=1&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; C &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; 0 &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; C &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;5&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;6&lt;/FONT&gt;&lt;/TD&gt;
&lt;/TR&gt;&lt;/TABLE&gt;
&lt;p&gt;Ce qui nous donne un alignement :&lt;/p&gt; &lt;TABLE CELLSPACING=2 CELLPADDING=0&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;A&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;|&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;A&lt;/TD&gt;
&lt;/TR&gt;&lt;/TABLE&gt;
&lt;p&gt;Maintenant nous consid&#233;rons la case courante et
cherchons celle qui la pr&#233;c&#232;de : c'est la voisine avec
le score maximum, soit celle de la m&#234;me ligne.&lt;/p&gt; &lt;TABLE BORDER=1 CELLSPACING=0 CELLPADDING=1&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; C &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; 0 &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; C &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;5&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;5&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;6&lt;/FONT&gt;&lt;/TD&gt;
&lt;/TR&gt;&lt;/TABLE&gt;
&lt;BR&gt;
Cet alignement correspond &#224; un gap dans la s&#233;quence n&#176; 2 :
&lt;BR&gt;
&lt;TABLE CELLSPACING=2 CELLPADDING=0&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;T&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;A&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;|&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;_&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;A&lt;/TD&gt;
&lt;/TR&gt;&lt;/TABLE&gt;
&lt;p&gt;Encore une fois, le pr&#233;d&#233;cesseur imm&#233;diat donne un gap dans la
s&#233;quence n&#176; 2 :&lt;/p&gt; &lt;TABLE BORDER=1 CELLSPACING=0 CELLPADDING=1&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; C &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; 0 &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; C &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;5&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;5&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;5&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;6&lt;/FONT&gt;&lt;/TD&gt;
&lt;/TR&gt;&lt;/TABLE&gt;
&lt;BR&gt;
&lt;TABLE CELLSPACING=2 CELLPADDING=0&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;T&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;T&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;A&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;|&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;_&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;_&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;A&lt;/TD&gt;
&lt;/TR&gt;&lt;/TABLE&gt;
&lt;p&gt;Au bout du compte :&lt;/p&gt; &lt;TABLE BORDER=1 CELLSPACING=0 CELLPADDING=1&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; C &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;FONT COLOR=red&gt;0 &lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;1&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;1&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;2&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;2&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;3&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; C &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;4&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;4&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;5&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;5&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;5&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;6&lt;/FONT&gt;&lt;/TD&gt;
&lt;/TR&gt;&lt;/TABLE&gt;
&lt;BR&gt;
&lt;TABLE CELLSPACING=2 CELLPADDING=0&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;G&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;A&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;A&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;T&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;T&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;C&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;A&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;G&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;T&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;T&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;A&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;|&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;|&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;|&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;|&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;|&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;|&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;G&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;G&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;A&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;_&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;T&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;C&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;_&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;G&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;_&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;_&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;A&lt;/TD&gt;
&lt;/TR&gt;&lt;/TABLE&gt;
&lt;p&gt;Il y a une autre solution possible :&lt;/p&gt; &lt;TABLE BORDER=1 CELLSPACING=0 CELLPADDING=1&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; C &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;FONT COLOR=red&gt;0 &lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;1&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;1&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;1&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;2&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;2&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;3&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; C &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;4&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;4&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;5&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;5&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;5&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;6&lt;/FONT&gt;&lt;/TD&gt;
&lt;/TR&gt;&lt;/TABLE&gt;
&lt;p&gt;qui donne l'alignement suivant :&lt;/p&gt; &lt;TABLE CELLSPACING=2 CELLPADDING=0&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;G&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;_&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;A&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;A&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;T&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;T&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;C&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;A&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;G&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;T&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;T&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;A&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;|&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;|&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;|&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;|&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;|&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;|&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;G&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;G&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;_&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;A&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;_&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;T&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;C&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;_&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;G&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;_&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;_&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;A&lt;/TD&gt;
&lt;/TR&gt;&lt;/TABLE&gt;
&lt;BR&gt;
&lt;HR SIZE=2&gt;&lt;BR&gt;
&lt;h3 class=&quot;spip&quot;&gt;L'algorithme&lt;/h3&gt;
&lt;DIV CLASS=&quot;lstlisting&quot;&gt;&lt;FONT COLOR=purple&gt;Algo : NW&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Donn&#233;es&lt;/B&gt; : s1, s2, S &lt;B&gt;et&lt;/B&gt; gap ; des cha&#238;nes num&#233;rot&#233;es de&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; ; 1 &#224; longueur(s1) et de 1 &#224; longueur(s2), &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; ; S le score de concordance entre caract&#232;res &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; ; et gap un co&#251;t de gap.&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;R&#233;sultat&lt;/B&gt; : la matrice &lt;B&gt;de&lt;/B&gt; calcul des scores&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Cr&#233;er&lt;/B&gt; C une matrice &lt;B&gt;&#224;&lt;/B&gt; longueur(s1) + 2 colonnes &lt;B&gt;et&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;B&gt;&#224;&lt;/B&gt; longueur(s2) + 2 lignes&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;pour&lt;/B&gt; j &lt;B&gt;allant&lt;/B&gt; &lt;B&gt;de&lt;/B&gt; 2 &lt;B&gt;&#224;&lt;/B&gt; longueur(s1)+2 &lt;B&gt;faire&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; C[1, j] &lt;- gap * j-2&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;fait&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;pour&lt;/B&gt; i &lt;B&gt;allant&lt;/B&gt; &lt;B&gt;de&lt;/B&gt; 2 &lt;B&gt;&#224;&lt;/B&gt; longueur(s2)+2 &lt;B&gt;faire&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; C[i, 1] &lt;- gap * i-2&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;B&gt;pour&lt;/B&gt; j &lt;B&gt;allant&lt;/B&gt; &lt;B&gt;de&lt;/B&gt; 2 &lt;B&gt;&#224;&lt;/B&gt; longueur(s2)+2 &lt;B&gt;faire&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; C[i, j] = max(C[i-1,j-1] + &lt;i&gt;&lt;B&gt;si&lt;/B&gt; s1[i] = s2[j]&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;B&gt;alors&lt;/B&gt; 1 &lt;B&gt;sinon&lt;/B&gt; 0&lt;/i&gt;,&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; C[i-1,j] + gap,&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; C[i,j-1] + gap)&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;B&gt;fait&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;fait&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;
&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;retourner&lt;/B&gt; C&lt;/FONT&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;BR&gt;
Nous verrons dans un &lt;a href='http://www.laurent-bloch.org/spip.php?article91' class='spip_in'&gt;prochain article&lt;/a&gt; l'algorithme
de remont&#233;e dans le graphe &lt;EM&gt;(backtracking)&lt;/EM&gt; pour trouver
&lt;EM&gt;un&lt;/EM&gt; alignement optimal.&lt;BR&gt;
&lt;BR&gt;
Au sujet de ces algorithmes on consultera avec profit le livre de
Maxime Crochemore, Christophe Hancart et Thierry Lecroq,
&lt;EM&gt;Algorithmique du texte&lt;/EM&gt;, chez Vuibert.&lt;BR&gt;
&lt;BR&gt;
&lt;HR SIZE=2&gt;&lt;BR&gt;
&lt;h3 class=&quot;spip&quot;&gt;Le programme&lt;/h3&gt; &lt;DIV CLASS=&quot;lstlisting&quot;&gt; &lt;TABLE CLASS=&quot;lstframe&quot; STYLE=&quot;padding:1ex;border -style:solid;&quot;&gt;&lt;TR&gt;&lt;TD CLASS=&quot;lstlisting&quot;&gt;&lt;tt&gt;(&lt;B&gt;module&lt;/B&gt; nw:lb (&lt;B&gt;main&lt;/B&gt; &lt;B&gt;main&lt;/B&gt;) (&lt;B&gt;import&lt;/B&gt; nw:matrices) (&lt;B&gt;import&lt;/B&gt; nw:chains) (&lt;B&gt;import&lt;/B&gt; nw:alignment)) (&lt;B&gt;define&lt;/B&gt; (nw-2 s1 s2 match-bonus gap-penalty) (&lt;B&gt;let&lt;/B&gt; ((ncol (+ (chain-length s1) 2)) (nlin (+ (chain-length s2) 2))) (&lt;B&gt;let&lt;/B&gt; ((C (make-matrix nlin ncol 0))) (matrix:margins C s1 s2) &lt;EM&gt;;; &lt;/EM&gt; (&lt;B&gt;do&lt;/B&gt; ((j 2 (+ j 1))) ((= j nlin) 'fait) (matrix:set! C j 1 (* j gap-penalty))) (&lt;B&gt;do&lt;/B&gt; ((i 2 (+ i 1))) ((= i ncol) 'fait) (matrix:set! C 1 i (* gap-penalty i))) (&lt;B&gt;do&lt;/B&gt; ((i 2 (+ i 1))) ((= i ncol) C) (&lt;B&gt;do&lt;/B&gt; ((j 2 (+ j 1))) ((= j nlin) 'fait) (&lt;B&gt;let&lt;/B&gt; ((val (&lt;B&gt;max&lt;/B&gt; (+ (matrix:ref C (- j 1) (- i 1)) (&lt;B&gt;if&lt;/B&gt; (&lt;B&gt;char&lt;/B&gt;=? (matrix:ref C 0 i) (matrix:ref C j 0)) match-bonus 0)) (+ (matrix:ref C j (- i 1)) gap-penalty) (+ (matrix:ref C (- j 1) i) gap-penalty)))) (matrix:set! C j i val))))))) &lt;EM&gt;;; l&#224; on suppose qu'une s&#233;quence est dans un fichier fasta&lt;/EM&gt; &lt;EM&gt;;; read-fasta lit un fichier fasta et rend la premiere s&#233;quence trouv&#233;e&lt;/EM&gt; (&lt;B&gt;define&lt;/B&gt; (read-fasta port) (&lt;B&gt;let&lt;/B&gt; ((titre (read-line port))) (&lt;B&gt;if&lt;/B&gt; (&lt;B&gt;or&lt;/B&gt; (eof-object? titre) (&lt;B&gt;zero?&lt;/B&gt; (&lt;B&gt;string-length&lt;/B&gt; titre)) (&lt;B&gt;not&lt;/B&gt; (&lt;B&gt;char&lt;/B&gt;=? (&lt;B&gt;string-ref&lt;/B&gt; titre 0) #\&gt;))) (&lt;B&gt;error&lt;/B&gt; 'read-fasta &quot;not a fasta file&quot; port) (&lt;B&gt;let&lt;/B&gt; loop ((str &quot;&quot;)) (&lt;B&gt;let&lt;/B&gt; ((lu (read-line port))) (&lt;B&gt;if&lt;/B&gt; (&lt;B&gt;or&lt;/B&gt; (eof-object? lu) (&lt;B&gt;char&lt;/B&gt;=? #\&gt; (&lt;B&gt;string-ref&lt;/B&gt; lu 0))) (&lt;B&gt;cons&lt;/B&gt; titre str) (&lt;B&gt;begin&lt;/B&gt; (&lt;B&gt;print&lt;/B&gt; lu) (loop (string-append str lu))))))))) (&lt;B&gt;define&lt;/B&gt; (f-concorde base1 base2 match-bonus) (&lt;B&gt;if&lt;/B&gt; (&lt;B&gt;char&lt;/B&gt;=? base1 base2) match-bonus 0)) &lt;EM&gt;;;&lt;/EM&gt; (&lt;B&gt;define&lt;/B&gt; (usage) (&lt;B&gt;print&lt;/B&gt; &quot;nw fichier-1 fichier-2 match-bonus gap-penalty&quot;) (exit 1)) (&lt;B&gt;define&lt;/B&gt; (&lt;B&gt;main&lt;/B&gt; argv) (&lt;B&gt;if&lt;/B&gt; (&lt;B&gt;not&lt;/B&gt; (= (&lt;B&gt;length&lt;/B&gt; argv) 5)) (usage) (&lt;B&gt;let&lt;/B&gt; ((f1 (&lt;B&gt;cadr&lt;/B&gt; argv)) (f2 (&lt;B&gt;caddr&lt;/B&gt; argv)) (match-bonus (&lt;B&gt;string-&gt;number&lt;/B&gt; (&lt;B&gt;cadddr&lt;/B&gt; argv))) (gap-penalty (&lt;B&gt;string-&gt;number&lt;/B&gt; (&lt;B&gt;cadddr&lt;/B&gt; (&lt;B&gt;cdr&lt;/B&gt; argv))))) (&lt;B&gt;let&lt;/B&gt;* ((s1 (make-chain (&lt;B&gt;cdr&lt;/B&gt; (&lt;B&gt;let&lt;/B&gt; ((port (open-input-file f1))) (read-fasta port))))) (s2 (make-chain (&lt;B&gt;cdr&lt;/B&gt; (&lt;B&gt;let&lt;/B&gt; ((port (open-input-file f2))) (read-fasta port))))) (the-score-matrix (nw-2 s1 s2 match-bonus gap-penalty))) (matrix:print the-score-matrix) (matrix:print (alignment the-score-matrix match-bonus gap-penalty))))))&lt;/tt&gt;&lt;/TD&gt;&lt;/TR&gt; &lt;/TABLE&gt; &lt;/DIV&gt;&lt;BR&gt; &lt;BR&gt; &lt;HR SIZE=2&gt;&lt;BR&gt;
&lt;h3 class=&quot;spip&quot;&gt;Le module de manipulation de matrices&lt;/h3&gt;
&lt;p&gt;Voici les deux s&#233;quences au format FASTA :&lt;BR&gt;
&lt;BR&gt;&lt;/p&gt; &lt;DIV CLASS=&quot;lstlisting&quot;&gt;&lt;TT&gt;&gt; La s&#233;quence 1&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt;GAATTCAGTTA&lt;/TT&gt;&lt;/DIV&gt;
&lt;p&gt;Chaque fichier ne peut comporter qu'une s&#233;quence, mais le texte
de la s&#233;quence peut s'&#233;tendre sur plusieurs lignes. Vous pouvez visiter au NCBI le &lt;a href='http://www.ncbi.nlm.nih.gov/blast/fasta.shtml' class='spip_out' rel='external'&gt;site de r&#233;f&#233;rence du format FASTA&lt;/a&gt;.&lt;/p&gt; &lt;DIV CLASS=&quot;lstlisting&quot;&gt;&lt;TT&gt;&gt; La s&#233;quence 2&lt;/TT&gt;&lt;TT&gt;
&lt;/TT&gt;&lt;TT&gt;GGATCGA&lt;/TT&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;BR&gt;
&lt;B&gt;Le module de matrices :&lt;/B&gt;&lt;BR&gt;
&lt;BR&gt; &lt;DIV CLASS=&quot;lstlisting&quot;&gt; &lt;TABLE CLASS=&quot;lstframe&quot; STYLE=&quot;padding:1ex ;border-style:solid;&quot;&gt;&lt;TR&gt;&lt;TD CLASS=&quot;lstlisting&quot;&gt;&lt;tt&gt;(&lt;B&gt;module&lt;/B&gt; nw:matrices (&lt;B&gt;export&lt;/B&gt; (make-matrix n m . &lt;B&gt;fill&lt;/B&gt;) (matrix? obj) (matrix:ref T i j) (matrix:set! T i j val) (matrix:nlines T) (matrix:ncols T) (matrix:margins M s1 s2) (matrix:print T)) (&lt;B&gt;import&lt;/B&gt; nw:chains)) &lt;EM&gt;;; il nous faut des matrices&lt;/EM&gt; (&lt;B&gt;define&lt;/B&gt; matrix:tag &quot;*MATRIX*&quot;) (&lt;B&gt;define&lt;/B&gt; (make-matrix lin col . &lt;B&gt;fill&lt;/B&gt;) (&lt;B&gt;let&lt;/B&gt; ((the-table (&lt;B&gt;vector&lt;/B&gt; &quot;*MATRIX*&quot; (&lt;B&gt;make-vector&lt;/B&gt; lin #f)))) (&lt;B&gt;do&lt;/B&gt; ((i 0 (+ i 1))) ((= i lin)) (&lt;B&gt;vector-set!&lt;/B&gt; (&lt;B&gt;vector-ref&lt;/B&gt; the-table 1) i (&lt;B&gt;if&lt;/B&gt; (&lt;B&gt;null?&lt;/B&gt; &lt;B&gt;fill&lt;/B&gt;) (&lt;B&gt;make-vector&lt;/B&gt; col) (&lt;B&gt;make-vector&lt;/B&gt; col (&lt;B&gt;car&lt;/B&gt; &lt;B&gt;fill&lt;/B&gt;))))) the-table)) &lt;EM&gt;;; un pr&#233;dicat d'appartenance, pour v&#233;rifier qu'un&lt;/EM&gt; &lt;EM&gt;;; objet appartient bien au type :&lt;/EM&gt; (&lt;B&gt;define&lt;/B&gt; (matrix? obj) (&lt;B&gt;and&lt;/B&gt; (&lt;B&gt;vector?&lt;/B&gt; obj) (&lt;B&gt;string&lt;/B&gt;=? (&lt;B&gt;vector-ref&lt;/B&gt; obj 0) &quot;*MATRIX*&quot;) (&lt;B&gt;vector?&lt;/B&gt; (&lt;B&gt;vector-ref&lt;/B&gt; obj 1)))) &lt;EM&gt;;; un mutateur, pour modifier un objet du type en&lt;/EM&gt; &lt;EM&gt;;; affectant une valeur &#224; un &#233;l&#233;ment du tableau :&lt;/EM&gt; (&lt;B&gt;define&lt;/B&gt; (matrix:set! T i j val) (&lt;B&gt;if&lt;/B&gt; (matrix? T) (&lt;B&gt;vector-set!&lt;/B&gt; (&lt;B&gt;vector-ref&lt;/B&gt; (&lt;B&gt;vector-ref&lt;/B&gt; T 1) i) j val))) &lt;EM&gt;;; un s&#233;lecteur, pour acc&#233;der &#224; un &#233;l&#233;ment d'un&lt;/EM&gt; &lt;EM&gt;;; tableau du type :&lt;/EM&gt; (&lt;B&gt;define&lt;/B&gt; (matrix:ref T i j) (&lt;B&gt;if&lt;/B&gt; (matrix? T) (&lt;B&gt;vector-ref&lt;/B&gt; (&lt;B&gt;vector-ref&lt;/B&gt; (&lt;B&gt;vector-ref&lt;/B&gt; T 1) i) j))) (&lt;B&gt;define&lt;/B&gt; (matrix:margins M s1 s2) (&lt;B&gt;let&lt;/B&gt; ((nlin (matrix:nlines M)) (ncol (matrix:ncols M))) (&lt;B&gt;do&lt;/B&gt; ((j 2 (+ j 1)) (c (chain-ref s1 1) (chain-ref s1 (&lt;B&gt;min&lt;/B&gt; j (- ncol 2))))) ((= j ncol) 'fait) (matrix:set! M 0 j c)) (&lt;B&gt;do&lt;/B&gt; ((i 2 (+ i 1)) (c (chain-ref s2 1) (chain-ref s2 (&lt;B&gt;min&lt;/B&gt; i (- nlin 2))))) ((= i nlin) 'fait) (matrix:set! M i 0 c)) (matrix:set! M 0 0 #\space) (matrix:set! M 0 1 #\space) (matrix:set! M 1 0 #\space))) &lt;EM&gt;;; diverses proc&#233;dures utilitaires dont la fonction se&lt;/EM&gt; &lt;EM&gt;;; comprend d'elle-m&#234;me :&lt;/EM&gt; (&lt;B&gt;define&lt;/B&gt; (matrix:nlines T) (&lt;B&gt;if&lt;/B&gt; (matrix? T) (&lt;B&gt;vector-length&lt;/B&gt; (&lt;B&gt;vector-ref&lt;/B&gt; T 1)))) (&lt;B&gt;define&lt;/B&gt; (matrix:ncols T) (&lt;B&gt;if&lt;/B&gt; (matrix? T) (&lt;B&gt;vector-length&lt;/B&gt; (&lt;B&gt;vector-ref&lt;/B&gt; (&lt;B&gt;vector-ref&lt;/B&gt; T 1) 0)))) (&lt;B&gt;define&lt;/B&gt; (matrix:print T) (&lt;B&gt;if&lt;/B&gt; (matrix? T) (&lt;B&gt;let&lt;/B&gt; ((n (matrix:nlines T)) (m (matrix:ncols T))) (&lt;B&gt;do&lt;/B&gt; ((i 0 (+ 1 i))) ((= i n)) (&lt;B&gt;let&lt;/B&gt; ((this-line (&lt;B&gt;vector-ref&lt;/B&gt; (&lt;B&gt;vector-ref&lt;/B&gt; T 1) i))) (&lt;B&gt;do&lt;/B&gt; ((j 0 (+ 1 j))) ((= j m)) (display (&lt;B&gt;vector-ref&lt;/B&gt; this-line j)) (display &quot; &quot;)) (newline))))))&lt;/tt&gt;&lt;/TD&gt;&lt;/TR&gt; &lt;/TABLE&gt; &lt;/DIV&gt;&lt;BR&gt; &lt;p&gt;&lt;BR&gt;
&lt;B&gt;Le module de cha&#238;nes :&lt;/B&gt;&lt;BR&gt;
&lt;BR&gt;&lt;/p&gt; &lt;DIV CLASS=&quot;lstlisting&quot;&gt;&lt;TT&gt;(module nw:chains&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt; (&lt;B&gt;export&lt;/B&gt;&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt; (make-chain s)&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt; (chain-ref s i)&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt; (chain-set! s i c)&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt; (chain-length s)))&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt;;; il nous faut des cha&#238;ne num&#233;rot&#233;es de 1 &#224; longueur de cha&#238;ne:&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt;(&lt;B&gt;define&lt;/B&gt; (make-chain s) ; prend une string et rend un cha&#238;ne &#224; partir de 1&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt; s)&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt;(&lt;B&gt;define&lt;/B&gt; (chain-ref s i)&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt; (string-ref s (- i 1)))&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt;(&lt;B&gt;define&lt;/B&gt; (chain-set! s i c)&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt; (string-set! s (- i 1) c))&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt;(&lt;B&gt;define&lt;/B&gt; (chain-length s)&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt; (string-length s))&lt;/TT&gt;&lt;/DIV&gt;&lt;BR&gt; &lt;p&gt;&lt;B&gt;Le Makefile :&lt;/B&gt;&lt;/p&gt; &lt;DIV CLASS=&quot;lstlisting&quot;&gt;&lt;TT&gt;BIGLOO = bigloo&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt;AFILE = NW-afile.scm&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt;BGL_FLAGS = -afile $(AFILE) -Obench -farithmetic -static-bigloo&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt;CIBLE = nw&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt;REPERT_CIBLE = .&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt;%.o: %.scm&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt; @ $(BIGLOO) $(BGL_FLAGS) -c $*.scm -o $*.o&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt;OBJECTS = NW-lb.o NW-matrices.o NW-chains.o NW-alignment.o&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt;SOURCES = NW-lb.scm NW-matrices.scm NW-chains.scm NW-alignment.scm&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt;all: $(REPERT_CIBLE)/$(CIBLE)&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt;$(REPERT_CIBLE)/$(CIBLE): $(OBJECTS)&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt; @ echo &quot;Edition de liens...&quot;&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt; @ $(BIGLOO) $(BGL_FLAGS) $(OBJECTS) \&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt; -o $(REPERT_CIBLE)/$(CIBLE)&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt; @ echo &quot;$(REPERT_CIBLE)/$(CIBLE) construit.&quot;&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt; @ echo &quot;-------------------------------&quot;&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt;$(REPERT_CIBLE):&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt; @ mkdir -p $(REPERT_CIBLE)&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt;install:&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt; cp $(REPERT_CIBLE)/$(CIBLE) $(REPERT_CGI)&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt;clean:&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt; -rm -f $(OBJECTS) $(SOURCES_C)&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt; -rm -f *~ Src/*~ Src/*.o Src/*.mco&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt; @ echo &quot;nettoyage fait...&quot;&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt; @ echo &quot;-------------------------------&quot;&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt;# destruction aussi des binaires :&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt;cleanall: clean&lt;/TT&gt;&lt;TT&gt; &lt;/TT&gt;&lt;TT&gt; -rm -f $(REPERT_CIBLE)/$(CIBLE)&lt;/TT&gt;&lt;/DIV&gt;&lt;BR&gt; &lt;BR&gt; &lt;!--BEGIN NOTES document--&gt; &lt;HR WIDTH=&quot;50%&quot; SIZE=1&gt;&lt;DL CLASS=&quot;list&quot;&gt;&lt;DT CLASS=&quot;dt-list&quot;&gt;&lt;A NAME=&quot;note1&quot; HREF=&quot;#text1&quot;&gt;&lt;FONT SIZE=5&gt;1&lt;/FONT&gt;&lt;/A&gt;&lt;DD CLASS=&quot;dd-list&quot;&gt;BLAST (Basic Local Alignment Search Tool) est un logiciel &#233;crit par S.F. Altschul, W. Gish, W. Miller, Gene Myers et D.J. Lipman. Il est l'outil de travail quotidien de tous ceux qui travaillent en biologie mol&#233;culaire (cf. &lt;A HREF=&quot;http://en.wikipedia.org/wiki/BLAST&quot;&gt;&lt;TT&gt;http://en.wikipedia.org/wiki/BLAST&lt;/TT&gt;&lt;/A&gt;). &lt;/DL&gt; &lt;!--END NOTES--&gt; &lt;!--HTMLFOOT--&gt; &lt;!--ENDHTML--&gt; &lt;!--FOOTER--&gt; &lt;HR SIZE=2&gt;&lt;BLOCKQUOTE CLASS=&quot;quote&quot;&gt;&lt;EM&gt;This document was translated from L&lt;sup&gt;A&lt;/sup&gt;T&lt;sub&gt;E&lt;/sub&gt;X by &lt;/EM&gt;&lt;A HREF=&quot;http://pauillac.inria.fr/~maranget/hevea/index.html&quot;&gt;&lt;EM&gt;H&lt;FONT SIZE=2&gt;&lt;sup&gt;E&lt;/sup&gt;&lt;/FONT&gt;V&lt;FONT SIZE=2&gt;&lt;sup&gt;E&lt;/sup&gt;&lt;/FONT&gt;A&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt;.&lt;/EM&gt;&lt;/BLOCKQUOTE&gt;&lt;/BODY&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
	<item xml:lang="fr">
		<title>Needleman et Wunsch, once again</title>
		<link>http://www.laurent-bloch.org/spip.php?article91</link>
		<guid isPermaLink="true">http://www.laurent-bloch.org/spip.php?article91</guid>
		<dc:date>2008-05-27T16:09:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		



		<description>Needleman et Wunsch : le retour .toclist-style:none ; .titlemargin:auto ;text-align:center .centertext-align:center ;margin-left:auto ;margin-right:auto ; .flushlefttext-align:left ;margin-left:0ex ;margin-right:auto ; .flushrighttext-align:right ;margin-left:auto ;margin-right:0ex ; DIV TABLEmargin-left:inherit ;margin-right:inherit ; PREtext-align:left ;margin-left:0ex ;margin-right:auto ; BLOCKQUOTEmargin-left:4ex ;margin-right:4ex ;text-align:left ; .partmargin:auto (...)

-
&lt;a href="http://www.laurent-bloch.org/spip.php?rubrique14" rel="directory"&gt;Algorithmes pour la biologie&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot; &quot;&lt;a href='http://www.w3.org/TR/REC-html40/loose.dtd' class='spip_out' rel='nofollow external'&gt;http://www.w3.org/TR/REC-html40/loo...&lt;/a&gt;&quot;&gt;&lt;/p&gt; &lt;HEAD&gt; &lt;TITLE&gt;Needleman et Wunsch : le retour&lt;/TITLE&gt; &lt;META http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=ISO-8859-1&quot;&gt; &lt;META name=&quot;GENERATOR&quot; content=&quot;hevea 1.08&quot;&gt; &lt;STYLE type=&quot;text/css&quot;&gt; .toc{list-style:none;} .title{margin:auto;text-align:center} .center{text-align:center;margin-left:auto;margin-right:auto;} .flushleft{text-align:left;margin-left:0ex;margin-right:auto;} .flushright{text-align:right;margin-left:auto;margin-right:0ex;} DIV TABLE{margin-left:inherit;margin-right:inherit;} PRE{text-align:left;margin-left:0ex;margin-right:auto;} BLOCKQUOTE{margin-left:4ex;margin-right:4ex;text-align:left;} .part{margin:auto;text-align:center} .lstlisting{font-family:monospace;white-space:pre;margin-right:auto;margin-left:0pt;text-align:left} &lt;/STYLE&gt; &lt;/HEAD&gt; &lt;BODY &gt; &lt;!--HEVEA command line is: /usr/bin/hevea -fix NW-backtrack --&gt; &lt;!--HTMLHEAD--&gt; &lt;!--ENDHTML--&gt; &lt;!--PREFIX &lt;ARG &gt;&lt;/ARG&gt;--&gt; &lt;!--CUT DEF section 1 --&gt; &lt;BR&gt; &lt;TABLE CLASS=&quot;title&quot;&gt; &lt;TR&gt;&lt;TD&gt; &lt;H1 CLASS=&quot;titlemain&quot;&gt;Needleman et Wunsch : le retour&lt;/H1&gt; &lt;H3 CLASS=&quot;titlerest&quot;&gt;Laurent Bloch&lt;/H3&gt; &lt;H3 CLASS=&quot;titlerest&quot;&gt;Le 18 mai 2006&lt;/H3&gt;&lt;/TD&gt; &lt;/TR&gt;&lt;/TABLE&gt;&lt;BR&gt; &lt;HR SIZE=2&gt;&lt;BR&gt; &lt;h3 class=&quot;spip&quot;&gt;Calculer un alignement d'apr&#232;s un graphe&lt;/h3&gt;
&lt;p&gt;Cet article est la suite de l'&lt;a href='http://www.laurent-bloch.org/spip.php?article89' class='spip_in'&gt;Algorithme de
Needleman et Wunsch&lt;/a&gt;, o&#249; nous avions montr&#233; comment
d&#233;terminer le score maximum, c'est-&#224;-dire le co&#251;t minimum,
d'alignement de deux s&#233;quences. Nous avions eu recours &#224;
une m&#233;thode de &lt;a href='http://www.laurent-bloch.org/spip.php?article90' class='spip_in'&gt;programmation dynamique&lt;/a&gt;, par
la construction d'une matrice des scores. Ceci fait, restait
&#224; exhiber un alignement optimal : c'est l'objet du pr&#233;sent
article. Nous obtiendrons ce r&#233;sultat en remontant dans le
graphe repr&#233;sent&#233; par la matrice, selon un chemin qui va
nous donner l'alignement. Reprenons la d&#233;marche de
l'&lt;a href='http://www.laurent-bloch.org/spip.php?article89' class='spip_in'&gt;article&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Pour cela, on part de la case du tableau qui contient le
score maximum, qui est &lt;I&gt;M&lt;/I&gt;&lt;SUB&gt;&lt;I&gt;m&lt;/I&gt;,&lt;I&gt;n&lt;/I&gt;&lt;/SUB&gt;, et on consid&#232;re ses
voisines. Ici toutes les voisines contiennent la valeur
5. Comme la diff&#233;rence de scores est 1 dans tous les
cas, et que le seul moyen d'avoir un accroissement de 1
est une concordance (toutes les autres situations donnent
un accroissement nul), c'est que la case pr&#233;c&#233;dente &#233;tait
la voisine en diagonale :&lt;/p&gt; &lt;TABLE BORDER=1 CELLSPACING=0 CELLPADDING=1&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; C &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; 0 &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; C &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;5&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;6&lt;/FONT&gt;&lt;/TD&gt;
&lt;/TR&gt;&lt;/TABLE&gt;
&lt;BR&gt;
Ce qui nous donne un alignement :
&lt;BR&gt;
&lt;TABLE CELLSPACING=2 CELLPADDING=0&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;A&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;|&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;A&lt;/TD&gt;
&lt;/TR&gt;&lt;/TABLE&gt;
&lt;p&gt;Maintenant nous consid&#233;rons la case courante et
cherchons celle qui la pr&#233;c&#232;de : c'est la voisine avec
le score maximum, soit celle de la m&#234;me ligne.&lt;/p&gt; &lt;TABLE BORDER=1 CELLSPACING=0 CELLPADDING=1&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; C &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; 0 &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; C &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;5&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;5&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;6&lt;/FONT&gt;&lt;/TD&gt;
&lt;/TR&gt;&lt;/TABLE&gt;
&lt;BR&gt;
Cet alignement correspond &#224; un gap dans la s&#233;quence n&#176; 2 :
&lt;BR&gt;
&lt;TABLE CELLSPACING=2 CELLPADDING=0&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;T&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;A&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;|&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;_&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;A&lt;/TD&gt;
&lt;/TR&gt;&lt;/TABLE&gt;
&lt;p&gt;Encore une fois, le pr&#233;d&#233;cesseur imm&#233;diat donne un gap dans la
s&#233;quence n&#176; 2 :&lt;/p&gt; &lt;TABLE BORDER=1 CELLSPACING=0 CELLPADDING=1&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; C &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; 0 &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; C &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;5&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;5&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;5&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;6&lt;/FONT&gt;&lt;/TD&gt;
&lt;/TR&gt;&lt;/TABLE&gt;
&lt;BR&gt;
&lt;TABLE CELLSPACING=2 CELLPADDING=0&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;T&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;T&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;A&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;|&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;_&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;_&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;A&lt;/TD&gt;
&lt;/TR&gt;&lt;/TABLE&gt;
&lt;p&gt;Au bout du compte :&lt;/p&gt; &lt;TABLE BORDER=1 CELLSPACING=0 CELLPADDING=1&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; C &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;FONT COLOR=red&gt;0 &lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;1&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;1&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;2&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;2&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;3&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; C &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;4&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;4&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;5&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;5&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;5&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;6&lt;/FONT&gt;&lt;/TD&gt;
&lt;/TR&gt;&lt;/TABLE&gt;
&lt;BR&gt;
&lt;TABLE CELLSPACING=2 CELLPADDING=0&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;G&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;A&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;A&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;T&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;T&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;C&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;A&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;G&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;T&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;T&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;A&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;|&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;|&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;|&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;|&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;|&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;|&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;G&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;G&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;A&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;_&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;T&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;C&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;_&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;G&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;_&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;_&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;A&lt;/TD&gt;
&lt;/TR&gt;&lt;/TABLE&gt;
&lt;p&gt;Il y a une autre solution possible :&lt;/p&gt; &lt;TABLE BORDER=1 CELLSPACING=0 CELLPADDING=1&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; C &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; A &lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;FONT COLOR=red&gt;0 &lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;1&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;1&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;1&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;2&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;2&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; T &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;3&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; C &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;4&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;4&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; G &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;5&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;5&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;5&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=left NOWRAP&gt; A &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;0&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;1&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;2&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;3&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;4&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;5&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;&lt;FONT COLOR=red&gt;6&lt;/FONT&gt;&lt;/TD&gt;
&lt;/TR&gt;&lt;/TABLE&gt;
&lt;p&gt;qui donne l'alignement suivant :&lt;/p&gt; &lt;TABLE CELLSPACING=2 CELLPADDING=0&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;G&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;_&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;A&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;A&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;T&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;T&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;C&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;A&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;G&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;T&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;T&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;A&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;|&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;|&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;|&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;|&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;|&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt; &lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;|&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;&lt;TD ALIGN=center NOWRAP&gt;G&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;G&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;_&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;A&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;_&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;T&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;C&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;_&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;G&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;_&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;_&lt;/TD&gt;
&lt;TD ALIGN=center NOWRAP&gt;A&lt;/TD&gt;
&lt;/TR&gt;&lt;/TABLE&gt;
&lt;BR&gt;
Au sujet de cet algorithme on consultera avec profit le livre de
Maxime Crochemore, Christophe Hancart et Thierry Lecroq,
&lt;EM&gt;Algorithmique du texte&lt;/EM&gt;, chez Vuibert.&lt;BR&gt;
&lt;BR&gt;
&lt;HR SIZE=2&gt;&lt;BR&gt;
&lt;h3 class=&quot;spip&quot;&gt;Le programme&lt;/h3&gt; &lt;DIV CLASS=&quot;lstlisting&quot;&gt;&lt;tt&gt; (&lt;B&gt;module&lt;/B&gt; nw:alignment (&lt;B&gt;export&lt;/B&gt; (alignment C match-bonus gap-penalty)) (&lt;B&gt;import&lt;/B&gt; nw:matrices)) (&lt;B&gt;define&lt;/B&gt; (alignment-col-set! align col . vals) (matrix:set! align 0 col (&lt;B&gt;car&lt;/B&gt; vals)) (matrix:set! align 1 col (&lt;B&gt;cadr&lt;/B&gt; vals)) (matrix:set! align 2 col (&lt;B&gt;caddr&lt;/B&gt; vals))) (&lt;B&gt;define&lt;/B&gt; (alignment C match-bonus gap-penalty) (&lt;B&gt;let&lt;/B&gt;* ((ncol (matrix:ncols C)) (nlin (matrix:nlines C)) (line-length (+ nlin ncol (- 4))) (this-alignment (make-matrix 3 line-length #\space))) (&lt;B&gt;let&lt;/B&gt; boucle ((i (- nlin 1)) (j (- ncol 1)) (p-align (- (+ nlin ncol) 5))) (&lt;B&gt;if&lt;/B&gt; (&lt;B&gt;and&lt;/B&gt; (= i 1) (= j 1)) 'fait (&lt;B&gt;cond&lt;/B&gt; ((&lt;B&gt;and&lt;/B&gt; (= j 1) (&gt; i 1)) (alignment-col-set! this-alignment p-align #\_ #\space (matrix:ref C i 0)) (boucle (- i 1) j (- p-align 1))) ((&lt;B&gt;and&lt;/B&gt; (= i 1) (&gt; j 1)) (alignment-col-set! this-alignment p-align (matrix:ref C 0 j) #\space #\_) (boucle i (- j 1) (- p-align 1)) ) ((&lt;B&gt;and&lt;/B&gt; (= (matrix:ref C i j) (+ (matrix:ref C (- i 1) (- j 1)) match-bonus)) (&lt;B&gt;char&lt;/B&gt;=? (matrix:ref C i 0) (matrix:ref C 0 j))) (alignment-col-set! this-alignment p-align (matrix:ref C 0 j) #\| (matrix:ref C i 0)) (boucle (- i 1) (- j 1) (- p-align 1))) ((= (matrix:ref C i j) (matrix:ref C (- i 1) (- j 1))) (alignment-col-set! this-alignment p-align (matrix:ref C 0 j) #\x (matrix:ref C i 0)) (boucle (- i 1) (- j 1) (- p-align 1)) ) ((= (matrix:ref C i j) (+ (matrix:ref C (- i 1) j) gap-penalty)) (alignment-col-set! this-alignment p-align #\_ #\space (matrix:ref C i 0)) (boucle (- i 1) j (- p-align 1))) ((= (matrix:ref C i j) (+ (matrix:ref C i (- j 1)) gap-penalty)) (alignment-col-set! this-alignment p-align (matrix:ref C 0 j) #\space #\_) (boucle i (- j 1) (- p-align 1))) )) this-alignment)))&lt;/tt&gt; &lt;/DIV&gt;&lt;BR&gt; &lt;BR&gt; &lt;!--HTMLFOOT--&gt; &lt;!--ENDHTML--&gt; &lt;!--FOOTER--&gt; &lt;HR SIZE=2&gt;&lt;BLOCKQUOTE CLASS=&quot;quote&quot;&gt;&lt;EM&gt;This document was translated from L&lt;sup&gt;A&lt;/sup&gt;T&lt;sub&gt;E&lt;/sub&gt;X by &lt;/EM&gt;&lt;A HREF=&quot;http://pauillac.inria.fr/~maranget/hevea/index.html&quot;&gt;&lt;EM&gt;H&lt;FONT SIZE=2&gt;&lt;sup&gt;E&lt;/sup&gt;&lt;/FONT&gt;V&lt;FONT SIZE=2&gt;&lt;sup&gt;E&lt;/sup&gt;&lt;/FONT&gt;A&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt;.&lt;/EM&gt;&lt;/BLOCKQUOTE&gt;&lt;/BODY&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
	<item xml:lang="fr">
		<title>Knuth-Morris-Pratt en style r&#233;cursif</title>
		<link>http://www.laurent-bloch.org/spip.php?article144</link>
		<guid isPermaLink="true">http://www.laurent-bloch.org/spip.php?article144</guid>
		<dc:date>2008-05-13T20:54:41Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		



		<description>Voici comme promis une version en style r&#233;cursif du programme Knuth-Morris-Pratt. Ce type d'exercice est plein de pi&#232;ges : si vous d&#233;couvrez que je suis tomb&#233; dans l'un d'entre eux, je serais content que vous me le signaliez. (module kmp-table (export (kmp:table Word))) (define (kmp:table Word) (let* ((WordLength (string-length Word)) (Tpref (make-vector (+ WordLength 1) 0)) ) (vector-set ! Tpref 0 -1) (let loop ((i 0) (j -1) (c (...)

-
&lt;a href="http://www.laurent-bloch.org/spip.php?rubrique14" rel="directory"&gt;Algorithmes pour la biologie&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Voici comme promis une version en style r&#233;cursif du &lt;a href='http://www.laurent-bloch.org/spip.php?article88' class='spip_in'&gt;programme Knuth-Morris-Pratt&lt;/a&gt;. Ce type d'exercice est plein de pi&#232;ges : si vous d&#233;couvrez que je suis tomb&#233; dans l'un d'entre eux, je serais content que vous me le signaliez.&lt;/p&gt; &lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_Scheme cadre&quot;&gt;&lt;div class=&quot;scheme scheme&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;module&lt;/span&gt; kmp&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;table&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;export&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;kmp:table Word&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;define&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;kmp:table Word&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;let*&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;WordLength &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;string-length&lt;/span&gt; Word&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;Tpref &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;make-vector&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; WordLength &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; 0&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;vector-set!&lt;/span&gt; Tpref 0 &lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;let&lt;/span&gt; loop &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;i 0&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;j &lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;c #a000&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;;; null character&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&gt;=&lt;/span&gt; i WordLength&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; Tpref&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;cond&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;char=?&lt;/span&gt; c &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;string-ref&lt;/span&gt; Word i&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;vector-set!&lt;/span&gt; Tpref &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; i &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; j &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;loop &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; i &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; j &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;string-ref&lt;/span&gt; Word &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; j &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&gt;&lt;/span&gt; j 0&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;let&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;j2 &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;vector-ref&lt;/span&gt; Tpref j&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;loop i&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; j2&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;string-ref&lt;/span&gt; Word j2&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;else&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;vector-set!&lt;/span&gt; Tpref &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; i &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; 0&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;loop &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; i &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; 0&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;string-ref&lt;/span&gt; Word 0&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='cadre_download' style='text-align: right;'&gt; &lt;a href='http://www.laurent-bloch.org/local/cache-code/a7b8c4cfcec8d09a2390260a508b1faf.txt' style='font-family: verdana, arial, sans; font-weight: bold; font-style: normal;'&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_Scheme cadre&quot;&gt;&lt;div class=&quot;scheme scheme&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;module&lt;/span&gt; kmp&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;main main&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;import&lt;/span&gt; kmp&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;table&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;define&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;main args&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;print&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;kmp:KMP &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;cadr&lt;/span&gt; args&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;caddr&lt;/span&gt; args&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;define&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;kmp:KMP Word Text&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;let&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;Tpref &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;kmp:table Word&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;L&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;texte &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;string-length&lt;/span&gt; Text&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;LastCharPos &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;string-length&lt;/span&gt; Word&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;let&lt;/span&gt; loop &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;m 0&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;;; match&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;i 0&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;;; index&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;cond&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; m i&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; L&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;texte&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;char=?&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;string-ref&lt;/span&gt; Text &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; m i&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;string-ref&lt;/span&gt; Word i&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; i LastCharPos&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; m&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;loop m &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; i &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;else&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;loop&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;+&lt;/span&gt; m i&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;vector-ref&lt;/span&gt; Tpref i&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&gt;&lt;/span&gt; i 0&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;vector-ref&lt;/span&gt; Tpref i&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; i&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='cadre_download' style='text-align: right;'&gt; &lt;a href='http://www.laurent-bloch.org/local/cache-code/3eee1b6e4e4d4da913caccbadcd6ed91.txt' style='font-family: verdana, arial, sans; font-weight: bold; font-style: normal;'&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
	<item xml:lang="fr">
		<title>Corrig&#233; de l'examen BNF-103 de juin 2006</title>
		<link>http://www.laurent-bloch.org/spip.php?article124</link>
		<guid isPermaLink="true">http://www.laurent-bloch.org/spip.php?article124</guid>
		<dc:date>2007-06-05T14:06:41Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		



		<description>correction-exam-BNF103-200606 .li-itemizemargin:1ex 0ex ; .li-enumeratemargin:1ex 0ex ; .dd-descriptionmargin:0ex 0ex 1ex 4ex ; .dt-descriptionmargin:0ex ; .toclist-style:none ; .thefootnotestext-align:left ;margin:0ex ; .dt-thefootnotesmargin:0em ; .dd-thefootnotesmargin:0em 0em 0em 2em ; .footnoterulemargin:1em auto 1em 0px ;width:50% ; .captionpadding-left:2ex ; padding-right:2ex ; margin-left:auto ; margin-right:auto .titlemargin:auto ;text-align:center .centertext-align:center (...)

-
&lt;a href="http://www.laurent-bloch.org/spip.php?rubrique14" rel="directory"&gt;Algorithmes pour la biologie&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot; &quot;&lt;a href='http://www.w3.org/TR/REC-html40/loose.dtd' class='spip_out' rel='nofollow external'&gt;http://www.w3.org/TR/REC-html40/loo...&lt;/a&gt;&quot;&gt;&lt;/p&gt; &lt;HEAD&gt; &lt;TITLE&gt;correction-exam-BNF103-200606&lt;/TITLE&gt; &lt;META http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=ISO-8859-1&quot;&gt; &lt;META name=&quot;GENERATOR&quot; content=&quot;hevea 1.09&quot;&gt; &lt;STYLE type=&quot;text/css&quot;&gt; .li-itemize{margin:1ex 0ex;} .li-enumerate{margin:1ex 0ex;} .dd-description{margin:0ex 0ex 1ex 4ex;} .dt-description{margin:0ex;} .toc{list-style:none;} .thefootnotes{text-align:left;margin:0ex;} .dt-thefootnotes{margin:0em;} .dd-thefootnotes{margin:0em 0em 0em 2em;} .footnoterule{margin:1em auto 1em 0px;width:50%;} .caption{padding-left:2ex; padding-right:2ex; margin-left:auto; margin-right:auto} .title{margin:auto;text-align:center} .center{text-align:center;margin-left:auto;margin-right:auto;} .flushleft{text-align:left;margin-left:0ex;margin-right:auto;} .flushright{text-align:right;margin-left:auto;margin-right:0ex;} DIV TABLE{margin-left:inherit;margin-right:inherit;} PRE{text-align:left;margin-left:0ex;margin-right:auto;} BLOCKQUOTE{margin-left:4ex;margin-right:4ex;text-align:left;} TD P{margin:0px;} .boxed{border:1px solid black} .textboxed{border:1px solid black} .vbar{border:none;width:2px;background-color:black;} .hbar{border:none;height:2px;width:100%;background-color:black;} .hfill{border:none;height:1px;width:200%;background-color:black;} .vdisplay{border-collapse:separate;border-spacing:2px;width:auto; empty-cells:show; border:2px solid red;} .vdcell{white-space:nowrap;padding:0px;width:auto; border:2px solid green;} .display{border-collapse:separate;border-spacing:2px;width:auto; border:none;} .dcell{white-space:nowrap;padding:0px;width:auto; border:none;} .dcenter{margin:0ex auto;} .vdcenter{border:solid #FF8000 2px; margin:0ex auto;} .minipage{text-align:left; margin-left:0em; margin-right:auto;} .marginpar{border:solid thin black; width:20%; text-align:left;} .marginparleft{float:left; margin-left:0ex; margin-right:1ex;} .marginparright{float:right; margin-left:1ex; margin-right:0ex;} .theorem{text-align:left;margin:1ex auto 1ex 0ex;} .part{margin:auto;text-align:center} .lstlisting{font-family:monospace;white-space:pre;margin-right:auto;margin-left:0pt;text-align:left} &lt;/STYLE&gt; &lt;/HEAD&gt; &lt;BODY &gt; &lt;!--HEVEA command line is: /usr/bin/hevea -fix correction-exam-BNF103-200606 --&gt; &lt;!--CUT DEF section 1 --&gt;&lt;DIV CLASS=&quot;center&quot;&gt; &lt;FONT COLOR=purple&gt;&lt;B&gt;Conservatoire National des Arts et M&#233;tiers&lt;/B&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;292 rue Saint-Martin &#8211; 75141 PARIS Cedex 03&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;&#8211;0&#8211;&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt; &lt;FONT COLOR=purple&gt;&lt;B&gt;Chaire de Bioinformatique&lt;/B&gt;&lt;/FONT&gt; &lt;/P&gt;&lt;/DIV&gt;&lt;P&gt;&lt;BR&gt; &lt;BR&gt; &lt;BR&gt; &lt;/P&gt;&lt;DIV CLASS=&quot;minipage&quot;&gt;&lt;SPAN CLASS=&quot;textboxed&quot;&gt; &lt;/SPAN&gt;&lt;SPAN CLASS=&quot;textboxed&quot;&gt;&lt;FONT COLOR=purple&gt;Corrig&#233; de l'examen du :&lt;BR&gt; lundi 26 juin 2006 Heure : 18h15 &#8211; 20h15&lt;BR&gt;&lt;BR&gt; TITRE DE L'ENSEIGNEMENT : Algorithmique de la Bioinformatique&lt;BR&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN CLASS=&quot;textboxed&quot;&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt; (BNF103)&lt;/B&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN CLASS=&quot;textboxed&quot;&gt; &lt;/SPAN&gt;&lt;/DIV&gt;&lt;P&gt; &lt;BR&gt; &lt;/P&gt;&lt;P&gt;&lt;BR&gt; &lt;/P&gt;&lt;HR SIZE=2&gt;&lt;P&gt;&lt;BR&gt; &lt;h3 class=&quot;spip&quot;&gt;1. &lt;/h3&gt;
&lt;/P&gt;&lt;P&gt;&lt;FONT SIZE=4&gt;&lt;B&gt;&lt;FONT COLOR=purple&gt;Programme min&lt;/FONT&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;L'algorithme suivant permet de calculer l'indice de la valeur minimale d'un tableau.&lt;/P&gt;&lt;TABLE CLASS=&quot;lstframe&quot; STYLE=&quot;padding:1ex;border-style:solid;&quot;&gt;&lt;TR&gt;&lt;TD CLASS=&quot;lstlisting&quot;&gt;&lt;FONT COLOR=purple&gt;1 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Nom&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;de&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;l&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;'&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;algorithme&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; : &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Min&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;2 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Entr&#233;e&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; : &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;A&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;EM&gt;&lt;FONT COLOR=purple&gt;; un tableau indice de 0 &#224; longueur(A)-1&lt;/FONT&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;3 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Sortie&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; : &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;l&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;'&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;indice&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;de&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;la&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;plus&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;petite&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;valeur&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;de&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;A&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;4 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;imin&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- 0&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;EM&gt;&lt;FONT COLOR=purple&gt;;&lt;/FONT&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;5 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;pour&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;allant&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;de&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; 1 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;&#224;&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;longueur&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;(&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;A&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;) -1 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;faire&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;6 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;si&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;A&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;imin&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;] &gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;A&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;] &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;alors&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;7 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;imin&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;8 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;finsi&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;9 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;fait&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;10 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;retourner&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;(&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;imin&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;)&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt; &lt;/TABLE&gt;&lt;OL CLASS=&quot;enumerate&quot; type=1&gt;&lt;LI CLASS=&quot;li-enumerate&quot;&gt; Ecrire une fonction Scheme qui impl&#233;mente cet algorithme. &lt;/LI&gt;&lt;LI CLASS=&quot;li-enumerate&quot;&gt;Combien de fois le test de la ligne 6 sera-t-il ex&#233;cut&#233; ? &lt;/LI&gt;&lt;LI CLASS=&quot;li-enumerate&quot;&gt;Combien de fois l'affectation de la ligne 7 sera-t-elle ex&#233;cut&#233;e dans le pire des cas, dans le meilleur des cas, en moyenne ? &lt;/LI&gt;&lt;LI CLASS=&quot;li-enumerate&quot;&gt;Quand la ligne 7 est ex&#233;cut&#233;e que peut-on dire de la relation entre &lt;TT&gt;A[i]&lt;/TT&gt; et les valeurs des cases pr&#233;c&#233;dentes du tableau ? &lt;/LI&gt;&lt;/OL&gt;&lt;!--TOC section R&#233;ponse :--&gt; &lt;H2 CLASS=&quot;section&quot;&gt;&lt;!--SEC ANCHOR --&gt;R&#233;ponse :&lt;/H2&gt;&lt;!--SEC END --&gt;&lt;OL CLASS=&quot;enumerate&quot; type=1&gt;&lt;LI CLASS=&quot;li-enumerate&quot;&gt; Fonction Scheme :&lt;P&gt;
&lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='7' class='spip_cadre' dir='ltr'&gt;(define (minr A) (let ((imin 0)) (do ((i 1 (+ i 1))) ((&gt;= i (vector-length A)) imin) (if (&gt; (vector-ref A imin) (vector-ref A i)) (set! imin i)))))&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;/LI&gt;&lt;LI CLASS=&quot;li-enumerate&quot;&gt;Soit L la longueur du tableau A. Le test de la ligne 6 sera
effectu&#233; L-1 fois.
&lt;/LI&gt;&lt;LI CLASS=&quot;li-enumerate&quot;&gt;Si le tableau est tri&#233; en ordre d&#233;croissant, le nombre contenu
dans chaque case sera inf&#233;rieur au nombre contenu dans la case
pr&#233;c&#233;dente, et ainsi l'affectation de la ligne 7 sera effectu&#233;e
L-1 fois (le pire des cas).
&lt;p&gt;Si le tableau est tri&#233; en ordre croissant, l'&#233;l&#233;ment de la case 0
sera le plus petit, et l'affectation de la ligne 7 ne sera
jamais effectu&#233;e (le meilleur des cas).&lt;/p&gt; &lt;p&gt;En moyenne, l'affectation de la ligne 7 sera effectu&#233;e
&lt;I&gt;integer&lt;/I&gt;(&lt;I&gt;L&lt;/I&gt;&#8722;1/2) fois.&lt;/p&gt; &lt;/LI&gt;&lt;LI CLASS=&quot;li-enumerate&quot;&gt;La ligne 7 est ex&#233;cut&#233;e si &lt;TT&gt;A[i]&lt;/TT&gt; est inf&#233;rieur &#224;
&lt;TT&gt;A[imin]&lt;/TT&gt;, ce qui signifie que &lt;TT&gt;A[i]&lt;/TT&gt; est inf&#233;rieur
aux valeurs de toutes les cases pr&#233;c&#233;dentes du tableau.
&lt;/LI&gt;&lt;/OL&gt;&lt;HR SIZE=2&gt;
&lt;p&gt;&lt;BR&gt;
&lt;/HTML&gt;&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt;2. &lt;/h3&gt;
&lt;p&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT SIZE=4&gt;&lt;B&gt;&lt;FONT COLOR=purple&gt;Tri par s&#233;lection&lt;/FONT&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;Nous voulons d&#233;finir un algorithme qui permette de trier un tableau &lt;TT&gt;A&lt;/TT&gt; dont les indices vont de &lt;TT&gt;0&lt;/TT&gt; &#224; &lt;TT&gt;longueur(A)-1&lt;/TT&gt;. Pour cela nous allons proc&#233;der par &#233;tapes. La premi&#232;re sera num&#233;rot&#233;e 0, la seconde 1, etc...&lt;/P&gt;&lt;P&gt;Au cours d'une &#233;tape donn&#233;e &lt;I&gt;i&lt;/I&gt; nous consid&#233;rerons que les &#233;l&#233;ments du tableau jusqu'&#224; l'&#233;l&#233;ment num&#233;ro &lt;I&gt;i&lt;/I&gt;&#8722;1 sont tri&#233;s et nous chercherons dans les &#233;l&#233;ments de num&#233;ro &lt;I&gt;i&lt;/I&gt;, &lt;I&gt;i&lt;/I&gt;+1, ... &lt;I&gt;longueur&lt;/I&gt;(&lt;I&gt;A&lt;/I&gt;)&#8722;1 le plus petit, nous &#233;changerons alors cet &#233;l&#233;ment avec l'&#233;l&#233;ment de num&#233;ro &lt;I&gt;i&lt;/I&gt; puis nous recommencerons.&lt;/P&gt;&lt;P&gt;&lt;BR&gt; &lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt;&lt;/h3&gt;
&lt;p&gt;&lt;/P&gt;&lt;P&gt;On consid&#232;re maintenant la fonction Scheme &lt;TT&gt;minr&lt;/TT&gt; telle qu'un appel &#224; &lt;TT&gt;(minr A i)&lt;/TT&gt; permet de trouver l'indice du plus petit &#233;l&#233;ment de &lt;TT&gt;A&lt;/TT&gt; entre &lt;TT&gt;i&lt;/TT&gt; et &lt;TT&gt;longueur(A)-1&lt;/TT&gt;.&lt;/P&gt;&lt;P&gt;Cette fonction s'&#233;crit :&lt;/P&gt;&lt;P&gt;&lt;/p&gt;
&lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='7' class='spip_cadre' dir='ltr'&gt;(define (minr A i) (let ((imin i)) (do ((j (+ i 1) (+ j 1))) ((&gt;= j (vector-length A)) imin) (if (&gt; (vector-ref A imin) (vector-ref A j)) (set! imin j)))))&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;p&gt;Cette fonction impl&#233;mente un algorithme que nous appelons
&lt;TT&gt;MinR&lt;/TT&gt;. C'est une variante de l'algorithme &lt;TT&gt;Min&lt;/TT&gt; de
la question 1. Ecrire le pseudocode de l'algorithme &lt;TT&gt;MinR&lt;/TT&gt;.&lt;/p&gt; &lt;p&gt;&lt;BR&gt;
&lt;/HTML&gt;&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt;&lt;/h3&gt;
&lt;p&gt;&lt;/P&gt;&lt;P&gt;La fonction Scheme suivante r&#233;alise l'algorithme du tri par s&#233;lection:&lt;/P&gt;&lt;P&gt;&lt;/p&gt;
&lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='7' class='spip_cadre' dir='ltr'&gt;(define (tri-select! A) (do ((i 0 (+ i 1))) ((&gt;= i (vector-length A)) A) (let ((j (minr A i))) (let ((tmp (vector-ref A j))) (vector-set! A j (vector-ref A i)) (vector-set! A i tmp)))))&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;p&gt;&#201;crire maintenant le pseudocode de l'algorithme de tri par s&#233;lection.&lt;/p&gt; &lt;p&gt;&lt;BR&gt;
&lt;/HTML&gt;&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt;&lt;/h3&gt; &lt;/P&gt;&lt;P&gt;Combien de fois l'algorithme de tri par s&#233;lection fait-il appel &#224; l'algorithme &lt;TT&gt;MinR&lt;/TT&gt; ?&lt;/P&gt;&lt;!--TOC section R&#233;ponse :--&gt; &lt;H2 CLASS=&quot;section&quot;&gt;&lt;!--SEC ANCHOR --&gt;R&#233;ponse :&lt;/H2&gt;&lt;!--SEC END --&gt;&lt;OL CLASS=&quot;enumerate&quot; type=1&gt;&lt;LI CLASS=&quot;li-enumerate&quot;&gt; Pseudo-code de la fonction qui d&#233;termine le plus petit &#233;l&#233;ment du tableau &lt;TT&gt;A&lt;/TT&gt; de longeur L entre les indices &lt;TT&gt;i&lt;/TT&gt; et &lt;TT&gt;L-1&lt;/TT&gt; :&lt;TABLE CLASS=&quot;lstframe&quot; STYLE=&quot;padding:1ex;border-style:solid;&quot;&gt;&lt;TR&gt;&lt;TD CLASS=&quot;lstlisting&quot;&gt;&lt;FONT COLOR=purple&gt;1 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Nom&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;de&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;l&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;'&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;algorithme&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; : &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;MinR&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;2 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Entr&#233;e&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; : &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;A&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;EM&gt;&lt;FONT COLOR=purple&gt;; un tableau indic&#233; de 0 &#224; L-1&lt;/FONT&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;3 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;EM&gt;&lt;FONT COLOR=purple&gt;; un indice compris entre 0 et L-1&lt;/FONT&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;4 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Sortie&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; : &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;l&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;'&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;indice&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;de&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;la&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;plus&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;petite&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;valeur&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;de&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;A&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;5 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;entre&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; 0 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;et&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;L&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;-1&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;6 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;imin&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;EM&gt;&lt;FONT COLOR=purple&gt;;&lt;/FONT&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;7 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;pour&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;allant&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;de&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;+1 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;&#224;&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;L&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;-1 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;faire&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;8 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;si&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;A&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;imin&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;] &gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;A&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;] &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;alors&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;9 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;imin&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;10 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;finsi&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;11 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;fait&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;12 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;retourner&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;(&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;imin&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;)&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt; &lt;/TABLE&gt;&lt;/LI&gt;&lt;LI CLASS=&quot;li-enumerate&quot;&gt;Pseudo-code du tri par s&#233;lection :&lt;TABLE CLASS=&quot;lstframe&quot; STYLE=&quot;padding:1ex;border-style:solid;&quot;&gt;&lt;TR&gt;&lt;TD CLASS=&quot;lstlisting&quot;&gt;&lt;FONT COLOR=purple&gt;1 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Nom&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;de&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;l&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;'&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;algorithme&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; : &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;Tri&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;-&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;select&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;2 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Entr&#233;e&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; : &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;A&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;EM&gt;&lt;FONT COLOR=purple&gt;; un tableau indic&#233; de 0 &#224; L-1&lt;/FONT&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;3 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;pour&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;allant&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;de&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; 0 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;&#224;&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;L&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;-1&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;4 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;MinR&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;(&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;A&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;, &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;)&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;5 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;tmp&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;A&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;]&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;6 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;A&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;j&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;] &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;A&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;]&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;7 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;A&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;] &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;tmp&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;8 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;fait&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;9 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;retourner&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;A&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt; &lt;/TABLE&gt;&lt;/LI&gt;&lt;LI CLASS=&quot;li-enumerate&quot;&gt;L'algorithme de tri par s&#233;lection fait appel L fois &#224; la fonction &lt;TT&gt;MinR&lt;/TT&gt;. L'algorithme de MinR traite &#224; chaque appel un sous-tableau de longueur K variant entre L-1 et 1, soit en moyenne &lt;I&gt;L&lt;/I&gt;&#8722;2/2, et, comme nous l'avons vu, effectue &lt;I&gt;K&lt;/I&gt;&#8722;1/2 comparaison, soit &lt;I&gt;L&lt;/I&gt;&#8722;3/4. L'algorithme de tri effectue donc en moyenne &lt;I&gt;L&lt;/I&gt; &#215; &lt;I&gt;L&lt;/I&gt;&#8722;3/4 op&#233;rations &#233;l&#233;mentaires, il est en &lt;I&gt;O&lt;/I&gt;(&lt;I&gt;n&lt;/I&gt;&lt;SUP&gt;2&lt;/SUP&gt;). &lt;/LI&gt;&lt;/OL&gt;&lt;HR SIZE=2&gt;&lt;P&gt;&lt;BR&gt; &lt;h3 class=&quot;spip&quot;&gt;3. &lt;/h3&gt;
&lt;p&gt; &lt;/P&gt;&lt;P&gt;Une cha&#238;ne d'ADN peut &#234;tre repr&#233;sent&#233;e comme une cha&#238;ne de caract&#232;res contenant uniquement les caract&#232;res A,T,G,C.&lt;/P&gt;&lt;P&gt;&lt;BR&gt; &lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt;&lt;/h3&gt; &lt;/P&gt;&lt;P&gt;On peut aussi repr&#233;senter une cha&#238;ne d'ADN par un nombre en consid&#233;rant que chaque lettre repr&#233;sente un chiffre et que le nombre repr&#233;sentant la cha&#238;ne d'ADN est &#233;crit en base 4. Par exemple en admettant que A repr&#233;sente le chiffre 0, T, le chiffre 1, G, le chiffre 2 et C le chiffre 3, la cha&#238;ne d'ADN ATG serait repr&#233;sent&#233;e par le nombre 6 = 0 * 16 + 1 * 4 + 2 * 1. Par quel nombre serait repr&#233;sent&#233;e la cha&#238;ne GTG? la cha&#238;ne TAA ?&lt;/P&gt;&lt;!--TOC subsection R&#233;ponse :--&gt; &lt;H3 CLASS=&quot;subsection&quot;&gt;&lt;!--SEC ANCHOR --&gt;R&#233;ponse :&lt;/H3&gt;&lt;!--SEC END --&gt;&lt;P&gt;&lt;TT&gt;GTG&lt;/TT&gt; &#8594; 2 &#215; 16 + 1 &#215; 4 + 2 &#215; 1 = 38 &lt;/P&gt;&lt;P&gt;&lt;TT&gt;TAA&lt;/TT&gt; &#8594; 1 &#215; 16 + 0 &#215; 4 + 0 &#215; 1 = 16 &lt;/P&gt;&lt;P&gt;&lt;BR&gt; &lt;h3 class=&quot;spip&quot;&gt;&lt;/h3&gt; &lt;/P&gt;&lt;P&gt;Si une cha&#238;ne d'ADN a une longueur de 2 nucl&#233;otides (deux lettres), quelle est la cha&#238;ne repr&#233;sent&#233;e par le nombre 15 ? par le nombre 0 ?&lt;/P&gt;&lt;!--TOC subsection R&#233;ponse :--&gt; &lt;H3 CLASS=&quot;subsection&quot;&gt;&lt;!--SEC ANCHOR --&gt;R&#233;ponse :&lt;/H3&gt;&lt;!--SEC END --&gt;&lt;P&gt;15 = 3 &#215; 4 + 3 &#215; 1 = &lt;TT&gt;CC&lt;/TT&gt;&lt;/P&gt;&lt;P&gt;00 = 0 &#215; 4 + 0 &#215; 1 = &lt;TT&gt;AA&lt;/TT&gt;&lt;/P&gt;&lt;P&gt;&lt;BR&gt; &lt;h3 class=&quot;spip&quot;&gt;&lt;/h3&gt;
&lt;A NAME=&quot;quest:base4&quot;&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;Quelle est le plus grand nombre qui repr&#233;sente une cha&#238;ne d'ADN de longueur 10 ? Quelle cha&#238;ne repr&#233;sente-t-il ? Le nombre repr&#233;sentant une cha&#238;ne d'ADN d&#233;pend de l'association que nous d&#233;finissons entre les lettres A,T,G et C et les chiffre 0, 1, 2, 3. Si nous d&#233;cidons d'associer T &#224; 0, G &#224; 1, C &#224; 2 et A &#224; 3, par quel nombre serait repr&#233;sent&#233;e la cha&#238;ne ATG ? la cha&#238;ne GTG ? Quelle serait la cha&#238;ne d'ADN repr&#233;sent&#233;e par le nombre 15 ?&lt;/P&gt;&lt;!--TOC subsection R&#233;ponse :--&gt; &lt;H3 CLASS=&quot;subsection&quot;&gt;&lt;!--SEC ANCHOR --&gt;R&#233;ponse :&lt;/H3&gt;&lt;!--SEC END --&gt;&lt;P&gt;Dans notre syst&#232;me &#224; base 4, le &#171; chiffre &#187; qui a la plus grande valeur est &lt;TT&gt;C&lt;/TT&gt;, qui vaut 4&#8722;1=3. Le plus grand nombre repr&#233;sent&#233; par dix chiffres en base 4 sera constitu&#233; de dix &#171; chiffres &#187; &lt;TT&gt;C&lt;/TT&gt;, et vaudra :&lt;/P&gt;&lt;P&gt;(4&#8722;1) &#215; 4&lt;SUP&gt;9&lt;/SUP&gt; + (4&#8722;1) &#215; 4&lt;SUP&gt;8&lt;/SUP&gt; + ... + (4&#8722;1) &#215; 4&lt;SUP&gt;2&lt;/SUP&gt; + (4&#8722;1) &#215; 4&lt;SUP&gt;1&lt;/SUP&gt; + (4&#8722;1) &#215; 4&lt;SUP&gt;0&lt;/SUP&gt; &lt;/P&gt;&lt;P&gt;soit en d&#233;veloppant :&lt;/P&gt;&lt;P&gt;4&lt;SUP&gt;10&lt;/SUP&gt; &#8722; 4&lt;SUP&gt;9&lt;/SUP&gt; + 4&lt;SUP&gt;9&lt;/SUP&gt; &#8722; 4&lt;SUP&gt;8&lt;/SUP&gt; + 4&lt;SUP&gt;8&lt;/SUP&gt; &#8722; ... + 4&lt;SUP&gt;3&lt;/SUP&gt; &#8722; 4&lt;SUP&gt;2&lt;/SUP&gt; + 4&lt;SUP&gt;2&lt;/SUP&gt; &#8722; 4&lt;SUP&gt;1&lt;/SUP&gt; + 4&lt;SUP&gt;1&lt;/SUP&gt; &#8722;1 &lt;/P&gt;&lt;P&gt;et gr&#226;ce &#224; ces combinaisons d'additions et de soustractions :&lt;/P&gt;&lt;P&gt;&lt;TT&gt;CCCCCCCCCC&lt;/TT&gt; &#8594; 4&lt;SUP&gt;10&lt;/SUP&gt;&#8722;1 = 1048575&lt;/P&gt;&lt;P&gt;&lt;BR&gt; &lt;h3 class=&quot;spip&quot;&gt;&lt;/h3&gt; &lt;/P&gt;&lt;P&gt;Combien y a-t-il de fa&#231;ons d'associer les lettres A, T, G et C chacune avec un chiffre diff&#233;rent pris entre 0 et 3 ?&lt;/P&gt;&lt;!--TOC subsection R&#233;ponse :--&gt; &lt;H3 CLASS=&quot;subsection&quot;&gt;&lt;!--SEC ANCHOR --&gt;R&#233;ponse :&lt;/H3&gt;&lt;!--SEC END --&gt;&lt;P&gt;S'il y a 4 choix possibles pour A, il en reste 3 pour T, 2 pour G et 1 pour C : donc 4!=24 solutions possibles, qui sont appel&#233;es les &lt;EM&gt;permutations&lt;/EM&gt; de l'ensemble &lt;TT&gt; { A,T,G,C } &lt;/TT&gt; (cf. &lt;A HREF=&quot;http://fr.wikipedia.org/wiki/Permutation&quot;&gt;&lt;TT&gt;http://fr.wikipedia.org/wiki/Permutation&lt;/TT&gt;&lt;/A&gt;).&lt;/P&gt;&lt;P&gt;&lt;BR&gt; &lt;h3 class=&quot;spip&quot;&gt;&lt;/h3&gt; &lt;/P&gt;&lt;P&gt;Une cha&#238;ne de prot&#233;ine est une cha&#238;ne d'acides amin&#233;s, elle peut &#234;tre repr&#233;sent&#233;e comme une cha&#238;ne de caract&#232;res ne contenant que les caract&#232;res suivants: &lt;/P&gt;&lt;P&gt;A,C,D,E,F,G,H,I,K,L,M,N,P,Q,R,S,T,V,W,Y. &lt;/P&gt;&lt;P&gt;En effet il y a 20 acides amin&#233;s. On peut repr&#233;senter une cha&#238;ne de prot&#233;ine par un nombre en consid&#233;rant que chacun des caract&#232;res pouvant appara&#238;tre dans une cha&#238;ne de prot&#233;ine est associ&#233; &#224; un nombre pris entre 0 et 19. Le calcul pour une prot&#233;ine se fera donc en base 20.&lt;/P&gt;&lt;P&gt;On peut prendre comme correspondance entre acide amin&#233; et chiffre la correspondance suivante par exemple: &lt;/P&gt;&lt;P&gt;A: 0; C: 1; D: 2; E: 3; F: 4; G: 5; H: 6; I: 7; K: 8; L: 9; M:10; N:11; P:12; Q:13; R:14; S:15; T:16; V:17; W:18; Y:19;&lt;/P&gt;&lt;P&gt;Dans ce cas quelle est la valeur du nombre repr&#233;sentant le tripeptide CAY ?&lt;/P&gt;&lt;!--TOC subsection R&#233;ponse :--&gt; &lt;H3 CLASS=&quot;subsection&quot;&gt;&lt;!--SEC ANCHOR --&gt;R&#233;ponse :&lt;/H3&gt;&lt;!--SEC END --&gt;&lt;P&gt;&lt;TT&gt;CAY&lt;/TT&gt; &#8594; 1 &#215; 20&lt;SUP&gt;2&lt;/SUP&gt; + 0 &#215; 20&lt;SUP&gt;1&lt;/SUP&gt; + 19 &#215; 20&lt;SUP&gt;0&lt;/SUP&gt; &lt;/P&gt;&lt;P&gt;soit : 1 &#215; 400 + 0 &#215; 20 + 19 &#215; 1 = 419&lt;/P&gt;&lt;P&gt;&lt;BR&gt; &lt;h3 class=&quot;spip&quot;&gt;&lt;/h3&gt; &lt;/P&gt;&lt;P&gt;Quel est le plus grand nombre repr&#233;sentant un tripeptide (une prot&#233;ine form&#233;e de trois acides amin&#233;s) ? Quel est le plus grand nombre repr&#233;sentant une prot&#233;ine de 300 acides amin&#233;s ?&lt;/P&gt;&lt;!--TOC subsection R&#233;ponse :--&gt; &lt;H3 CLASS=&quot;subsection&quot;&gt;&lt;!--SEC ANCHOR --&gt;R&#233;ponse :&lt;/H3&gt;&lt;!--SEC END --&gt;&lt;P&gt;Le raisonnement est le m&#234;me qu'&#224; la question &lt;A HREF=&quot;#quest:base4&quot;&gt;&lt;/A&gt; :&lt;/P&gt;&lt;P&gt;&lt;TT&gt;YYY&lt;/TT&gt; &#8594; 20&lt;SUP&gt;3&lt;/SUP&gt;&#8722;1 = 7999&lt;/P&gt;&lt;P&gt;&lt;TT&gt;YYYYYYYYYYYYYYYYYYYY&lt;/TT&gt; &#8594; 20&lt;SUP&gt;300&lt;/SUP&gt;&#8722;1&lt;/P&gt;&lt;P&gt;&lt;BR&gt; &lt;h3 class=&quot;spip&quot;&gt;&lt;/h3&gt;
&lt;p&gt; &lt;/P&gt;&lt;P&gt;Soit la fonction Scheme: &lt;/P&gt;&lt;P&gt;&lt;/p&gt;
&lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='14' class='spip_cadre' dir='ltr'&gt;(define (adn-&gt;number DNA-CHAINE) (let ((valeur 0)) (do ((i 0 (+ i 1))) ((&gt;= i (string-length DNA-CHAINE))valeur) (set! valeur (+ (* valeur 4) (if (char=? (string-ref DNA-CHAINE i) #\T) 0 (if (char=? (string-ref DNA-CHAINE i) #\G) 1 (if (char=? (string-ref DNA-CHAINE i) #\C) 2 3))))))))&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;p&gt;Cette fonction rend la valeur d'un nombre associ&#233; &#224; une cha&#238;ne d'ADN.
Quelle correspondance a-t-on choisi entre les nucl&#233;otides (lettres) de
la cha&#238;ne d'ADN et les chiffres 0,1,2,3 ?&lt;/p&gt; &lt;p&gt;&lt;!--TOC subsection R&#233;ponse :--&gt;&lt;/p&gt;
&lt;H3 CLASS=&quot;subsection&quot;&gt;&lt;!--SEC ANCHOR --&gt;R&#233;ponse :&lt;/H3&gt;&lt;!--SEC END --&gt;
&lt;p&gt;&lt;TT&gt;T&lt;/TT&gt; &#8594; 0&lt;/p&gt; &lt;p&gt;&lt;TT&gt;G&lt;/TT&gt; &#8594; 1&lt;/p&gt; &lt;p&gt;&lt;TT&gt;C&lt;/TT&gt; &#8594; 2&lt;/p&gt; &lt;p&gt;&lt;TT&gt;A&lt;/TT&gt; &#8594; 3&lt;/p&gt; &lt;p&gt;&lt;BR&gt;
&lt;/HTML&gt;&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt;&lt;/h3&gt; &lt;/P&gt;&lt;P&gt;Donner le pseudocode de l'algorithme d&#233;crit par la fonction &lt;TT&gt;adn-&gt;number&lt;/TT&gt;.&lt;/P&gt;&lt;!--TOC subsection R&#233;ponse :--&gt; &lt;H3 CLASS=&quot;subsection&quot;&gt;&lt;!--SEC ANCHOR --&gt;R&#233;ponse :&lt;/H3&gt;&lt;!--SEC END --&gt;&lt;TABLE CLASS=&quot;lstframe&quot; STYLE=&quot;padding:1ex;border-style:solid;&quot;&gt;&lt;TR&gt;&lt;TD CLASS=&quot;lstlisting&quot;&gt;&lt;FONT COLOR=purple&gt;1 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Nom&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;de&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;l&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;'&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;algorithme&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; : &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;ADN&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;-&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;number&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;2 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;Entr&#233;e&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; : &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;A&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;EM&gt;&lt;FONT COLOR=purple&gt;; une s&#233;quence d'ADN repr&#233;sent&#233;e par une &lt;/FONT&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;3 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;cha&#238;ne&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;de&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;caract&#232;res&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;4 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;R&#233;sultat&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; : &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;la&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;valeur&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;num&#233;rique&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;qui&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;repr&#233;sente&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;la&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;s&#233;quence&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;5 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;valeur&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- 0&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;6 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;L&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;longueur&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;de&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;A&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;7 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;pour&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;allant&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;de&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; 0 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;&#224;&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;L&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;-1 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;faire&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;8 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;si&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;A&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;] = &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;T&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;alors&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;valeur&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;valeur&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; + 0&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;9 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;sinon&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;si&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;A&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;] = &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;G&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;alors&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;valeur&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;valeur&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; + 1&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;10 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;sinon&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;si&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;A&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;] = &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;C&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;alors&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;valeur&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;valeur&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; + 2&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;11 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;sinon&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;si&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;A&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;[&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;i&lt;/FONT&gt;&lt;FONT COLOR=purple&gt;] = &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;A&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;alors&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;valeur&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;- &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;valeur&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; + 3&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;12 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;finsi&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;13 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;fait&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;14 &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;&lt;B&gt;retourner&lt;/B&gt;&lt;/FONT&gt;&lt;FONT COLOR=purple&gt; &lt;/FONT&gt;&lt;FONT COLOR=purple&gt;valeur&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt; &lt;/TABLE&gt;&lt;P&gt;&lt;BR&gt; &lt;h3 class=&quot;spip&quot;&gt;&lt;/h3&gt; &lt;/P&gt;&lt;P&gt;On peut se demander si deux cha&#238;nes sont identiques de la fa&#231;on suivante: ont-elle la m&#234;me longueur et dans ce cas sont-elles repr&#233;sent&#233;es par le m&#234;me nombre ? Ecrire la fonction.&lt;/P&gt;&lt;!--TOC subsection R&#233;ponse :--&gt; &lt;H3 CLASS=&quot;subsection&quot;&gt;&lt;!--SEC ANCHOR --&gt;R&#233;ponse :&lt;/H3&gt;&lt;!--SEC END --&gt;&lt;P&gt;
&lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='3' class='spip_cadre' dir='ltr'&gt;(define (adn=? seq1 seq2) (and (= (string-length seq1) (string-length seq1)) (= (adn-&gt;number seq1) (adn-&gt;number seq2))))&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;p&gt;&lt;!--CUT END --&gt;
&lt;!--HTMLFOOT--&gt;
&lt;!--ENDHTML--&gt;
&lt;!--FOOTER--&gt;&lt;/p&gt;
&lt;HR SIZE=2&gt;&lt;BLOCKQUOTE CLASS=&quot;quote&quot;&gt;&lt;EM&gt;Ce document a &#233;t&#233; traduit de L&lt;sup&gt;A&lt;/sup&gt;T&lt;sub&gt;E&lt;/sub&gt;X par &lt;/EM&gt;&lt;A HREF=&quot;http://hevea.inria.fr/&quot;&gt;&lt;EM&gt;H&lt;/EM&gt;&lt;EM&gt;&lt;FONT SIZE=2&gt;&lt;sup&gt;E&lt;/sup&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;EM&gt;V&lt;/EM&gt;&lt;EM&gt;&lt;FONT SIZE=2&gt;&lt;sup&gt;E&lt;/sup&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;EM&gt;A&lt;/EM&gt;&lt;/A&gt;&lt;/BLOCKQUOTE&gt;&lt;/BODY&gt;
&lt;/HTML&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
	<item xml:lang="fr">
		<title>Expressions r&#233;guli&#232;res</title>
		<link>http://www.laurent-bloch.org/spip.php?article118</link>
		<guid isPermaLink="true">http://www.laurent-bloch.org/spip.php?article118</guid>
		<dc:date>2007-05-11T18:52:38Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		



		<description>#Sommaire- regexp .li-itemizemargin:1ex 0ex ; .li-enumeratemargin:1ex 0ex ; .dd-descriptionmargin:0ex 0ex 1ex 4ex ; .dt-descriptionmargin:0ex ; .toclist-style:none ; .thefootnotestext-align:left ;margin:0ex ; .dt-thefootnotesmargin:0em ; .dd-thefootnotesmargin:0em 0em 0em 2em ; .footnoterulemargin:1em auto 1em 0px ;width:50% ; .captionpadding-left:2ex ; padding-right:2ex ; margin-left:auto ; margin-right:auto .titlemargin:2ex auto ;text-align:center .centertext-align:center (...)

-
&lt;a href="http://www.laurent-bloch.org/spip.php?rubrique14" rel="directory"&gt;Algorithmes pour la biologie&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;h3 class=&quot;spip&quot;&gt;#Sommaire-&lt;/h3&gt;
&lt;p&gt;&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;&lt;/p&gt; &lt;HEAD&gt; &lt;TITLE&gt;regexp&lt;/TITLE&gt; &lt;META http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;&gt; &lt;META name=&quot;GENERATOR&quot; content=&quot;hevea 1.10&quot;&gt; &lt;STYLE type=&quot;text/css&quot;&gt; .li-itemize{margin:1ex 0ex;} .li-enumerate{margin:1ex 0ex;} .dd-description{margin:0ex 0ex 1ex 4ex;} .dt-description{margin:0ex;} .toc{list-style:none;} .thefootnotes{text-align:left;margin:0ex;} .dt-thefootnotes{margin:0em;} .dd-thefootnotes{margin:0em 0em 0em 2em;} .footnoterule{margin:1em auto 1em 0px;width:50%;} .caption{padding-left:2ex; padding-right:2ex; margin-left:auto; margin-right:auto} .title{margin:2ex auto;text-align:center} .center{text-align:center;margin-left:auto;margin-right:auto;} .flushleft{text-align:left;margin-left:0ex;margin-right:auto;} .flushright{text-align:right;margin-left:auto;margin-right:0ex;} DIV TABLE{margin-left:inherit;margin-right:inherit;} PRE{text-align:left;margin-left:0ex;margin-right:auto;} BLOCKQUOTE{margin-left:4ex;margin-right:4ex;text-align:left;} TD P{margin:0px;} .boxed{border:1px solid black} .textboxed{border:1px solid black} .vbar{border:none;width:2px;background-color:black;} .hbar{border:none;height:2px;width:100%;background-color:black;} .hfill{border:none;height:1px;width:200%;background-color:black;} .vdisplay{border-collapse:separate;border-spacing:2px;width:auto; empty-cells:show; border:2px solid red;} .vdcell{white-space:nowrap;padding:0px;width:auto; border:2px solid green;} .display{border-collapse:separate;border-spacing:2px;width:auto; border:none;} .dcell{white-space:nowrap;padding:0px;width:auto; border:none;} .dcenter{margin:0ex auto;} .vdcenter{border:solid #FF8000 2px; margin:0ex auto;} .minipage{text-align:left; margin-left:0em; margin-right:auto;} .marginpar{border:solid thin black; width:20%; text-align:left;} .marginparleft{float:left; margin-left:0ex; margin-right:1ex;} .marginparright{float:right; margin-left:1ex; margin-right:0ex;} .theorem{text-align:left;margin:1ex auto 1ex 0ex;} .part{margin:2ex auto;text-align:center} .lstlisting{font-family:monospace;white-space:pre;margin-right:auto;margin-left:0pt;text-align:left} &lt;/STYLE&gt; &lt;/HEAD&gt; &lt;BODY &gt; &lt;p&gt;&lt;!--HEVEA command line is: /usr/bin/hevea regexp --&gt;
&lt;!--CUT DEF section 1 --&gt;&lt;/p&gt;
&lt;TABLE CLASS=&quot;title&quot;&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;/TABLE&gt;
&lt;p&gt;&lt;EM&gt;Cet article vient &#224; la suite d'un autre :&lt;/EM&gt; &lt;a href='http://www.laurent-bloch.org/spip.php?article113' class='spip_in'&gt;Automates II : non-d&#233;terminisme&lt;/a&gt;. &lt;EM&gt;Nous poursuivons ainsi, guid&#233;s par
MM. Hopcroft et Ullmann&lt;/EM&gt;&lt;EM&gt;[&lt;/EM&gt;&lt;A HREF=&quot;#automata-hopcroft&quot;&gt;&lt;EM&gt;3&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt;]&lt;/EM&gt;&lt;EM&gt;, auxquels s'est
joint Rajeev Motwani, notre tour de quelques outils formels de la
linguistique de la programmation, qui n'a que peu &#224; voir avec celle
des langages humains, faut-il le pr&#233;ciser.&lt;/EM&gt;&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt;D&#233;finitions et r&#233;f&#233;rences&lt;/h3&gt;
&lt;p&gt;Ce nouveau chapitre introduit les expressions r&#233;guli&#232;res, qui
permettent, comme les automates finis abord&#233;s lors des chapitres
pr&#233;c&#233;dents, de d&#233;finir des langages. Nous montrerons qu'elles sont
&#233;quivalentes aux &lt;a href='http://www.laurent-bloch.org/spip.php?article113' class='spip_in'&gt;automates &#224; &#233;tats finis
non-d&#233;terministes&lt;/a&gt; (NFA), dont nous avons montr&#233; qu'ils &#233;taient
eux-m&#234;mes &#233;quivalents aux &lt;a href='http://www.laurent-bloch.org/spip.php?article112' class='spip_in'&gt;automates &#224; &#233;tats finis
d&#233;terministes&lt;/a&gt; (DFA).&lt;/p&gt; &lt;p&gt;Comme le dit Wikip&#233;dia : une expression r&#233;guli&#232;re (&#171; regexp &#187;, RE) est
une suite de caract&#232;res typographiques qu'on appelle plus simplement &#171; motif &#187;, &#171; &lt;EM&gt;pattern&lt;/EM&gt; &#187; en anglais. Une expression r&#233;guli&#232;re sert
&#224; d&#233;crire, &#224; &lt;EM&gt;d&#233;noter&lt;/EM&gt; un langage, dit &lt;EM&gt;langage
r&#233;gulier&lt;/EM&gt;langage r&#233;gulier ; les caract&#232;res de l'expression
r&#233;guli&#232;re d&#233;finissent les r&#232;gles de ce langage. Confronter un texte &#224;
une expression r&#233;guli&#232;re permet de savoir si ce texte est conforme aux
r&#232;gles du langage ou non ; s'il est conforme, le texte sera dit
&lt;EM&gt;un mot du langage.&lt;/EM&gt;&lt;/p&gt; &lt;p&gt;Une expression r&#233;guli&#232;re sera utilis&#233;e de fa&#231;on analogue &#224; ce que nous
avons vu pour les automates finis : le texte dont il faut d&#233;terminer
s'il appartient ou non au langage consid&#233;r&#233; sera soumis &#224; l'analyseur
d'expressions r&#233;guli&#232;res (un logiciel, par exemple le programme
&lt;TT&gt;grep&lt;/TT&gt;, analyseur d'expressions r&#233;guli&#232;res contenu dans tout
syst&#232;me Unix ou Linux), qui utilisera l'expression r&#233;guli&#232;re qui
d&#233;crit le langage comme une table de transitions. Le texte sera dit
reconnu si la lecture de ses caract&#232;res successifs permet de parcourir
l'expression r&#233;guli&#232;re jusqu'&#224; la fin. Voici un sch&#233;ma qui montre
le processus :
&lt;BR&gt;&lt;/p&gt; &lt;BLOCKQUOTE CLASS=&quot;figure&quot;&gt;&lt;DIV CLASS=&quot;center&quot;&gt;&lt;HR WIDTH=&quot;80%&quot; SIZE=2&gt;&lt;/DIV&gt;
&lt;span class='spip_document_89 spip_documents spip_documents_left' style='float:left;'&gt; &lt;a href=&quot;http://www.laurent-bloch.org/IMG/png/regexp-grep.png&quot; title=&quot;PNG - 7.6 ko&quot;&gt; &lt;img src=&quot;http://www.laurent-bloch.org/local/cache-vignettes/L360xH171/regexp-grep-08fdc.png&quot; width='360' height='171' alt=&quot;PNG - 7.6 ko&quot; style='height:171px;width:360px;' /&gt; &lt;/a&gt; &lt;/span&gt;&lt;BR&gt;
&lt;DIV CLASS=&quot;caption&quot;&gt;&lt;TABLE CELLSPACING=6 CELLPADDING=0&gt;&lt;TR&gt;&lt;TD VALIGN=top ALIGN=left&gt;Figure 1 : &lt;EM&gt;&lt;TT&gt;grep&lt;/TT&gt;&lt;/EM&gt; analyse un texte au moyen d'une expression r&#233;guli&#232;re.&lt;/TD&gt;&lt;/TR&gt;
&lt;/TABLE&gt;&lt;/DIV&gt;&lt;A NAME=&quot;fig:regexpgrep&quot;&gt;&lt;/A&gt;&lt;br clear=left&gt;
&lt;DIV CLASS=&quot;center&quot;&gt;&lt;HR WIDTH=&quot;80%&quot; SIZE=2&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;
&lt;p&gt; &lt;BR&gt;&lt;BR&gt;&lt;/p&gt; &lt;p&gt;Premier exemple&lt;/p&gt; &lt;p&gt;Un exemple tr&#232;s simple aidera &#224; comprendre : nous cherchons &#224; d&#233;crire
le langage des num&#233;ros d'immatriculation des voitures en France (nous
prendrons les num&#233;ros &#171; &#224; l'ancienne mode &#187;, mieux adapt&#233;s &#224; ce qu'il
faut montrer). Ces num&#233;ros sont (&#233;taient ?) compos&#233;s de trois ou
quatre chiffres, suivis de trois lettres, suivis de deux ou trois
chiffres. Dans un premier temps nous nous limiterons &#224; 3 chiffres,
suivis de trois lettres majuscules, suivies de deux chiffres. Nous
pla&#231;ons les textes &#224; analyser dans le fichier &lt;TT&gt;mes-textes&lt;/TT&gt;
ci-dessous :&lt;/p&gt; &lt;PRE CLASS=&quot;verbatim&quot;&gt;321ABM75 num&#233;ro parisien
voici un num&#233;ro : 321 ABM 75
321 abm 75 c'est un num&#233;ro en minuscules
321abm75
567 QWT 972
567qwt971
&lt;/PRE&gt;
&lt;p&gt;L'expression r&#233;guli&#232;re qui d&#233;signe &#171; un chiffre quelconque de 0 &#224; 9 &#187;
s'&#233;crit : &lt;TT&gt;[0-9]&lt;/TT&gt;. Celle qui d&#233;signe &#171; une lettre majuscule de
A &#224; Z &#187; s'&#233;crit : &lt;TT&gt;[A-Z]&lt;/TT&gt;. Notre expression r&#233;guli&#232;re pourra
donc s'&#233;crire (soumise &#224; &lt;TT&gt;grep&lt;/TT&gt;) :&lt;/p&gt; &lt;PRE CLASS=&quot;verbatim&quot;&gt;&gt; grep [0-9][0-9][0-9][A-Z][A-Z][A-Z][0-9][0-9] mes-textes
321ABM75 num&#233;ro parisien
&lt;/PRE&gt;
&lt;p&gt;La commande &lt;TT&gt;grep&lt;/TT&gt; ci-dessus affiche les lignes du fichier
&lt;TT&gt;mes-textes&lt;/TT&gt; qui contiennent un texte reconnu par l'expression
r&#233;guli&#232;re. Le num&#233;ro de la premi&#232;re ligne du fichier est reconnue.
Ceux de la seconde et la troisi&#232;me ne le sont pas parce qu'ils
contiennent des espaces suppl&#233;mentaires non pr&#233;vus. Ce lui de la
quatri&#232;me ligne comporte des lettres minuscules, non reconnus. Ceux de
la cinqui&#232;me et la sixi&#232;me comportent des num&#233;ros de d&#233;partement &#224;
trois chiffres, qui existent mais que notre expression r&#233;guli&#232;re ne sait
pas encore reconna&#238;tre.&lt;/p&gt; &lt;p&gt;Plus de r&#232;gles&lt;/p&gt; &lt;p&gt;Les r&#232;gles de r&#233;daction (en d'autres termes la syntaxe) pour former des
expressions r&#233;guli&#232;res reposent sur des caract&#232;res dits sp&#233;ciaux
(c'est-&#224;-dire dot&#233;s d'une fonction syntaxique sp&#233;ciale) de
substitution, de groupement et de quantification :&lt;/p&gt; &lt;DL CLASS=&quot;description&quot;&gt;&lt;DT CLASS=&quot;dt-description&quot;&gt;
&lt;B&gt;Substitution&lt;/B&gt;&lt;/DT&gt;
&lt;DD CLASS=&quot;dd-description&quot;&gt; Une barre verticale s&#233;pare deux expressions
alternatives : &lt;TT&gt;equo|aequo&lt;/TT&gt; d&#233;signe soit &lt;TT&gt;equo&lt;/TT&gt;, soit
&lt;TT&gt;aequo&lt;/TT&gt;. L'alternative n'existe que dans la syntaxe des
expressions r&#233;guli&#232;res &lt;EM&gt;&#233;tendues&lt;/EM&gt;, reconnues avec l'option
&lt;TT&gt;-E&lt;/TT&gt; de &lt;TT&gt;grep&lt;/TT&gt;, ou avec la variante &lt;TT&gt;egrep&lt;/TT&gt;.
&lt;/DD&gt;
&lt;DT CLASS=&quot;dt-description&quot;&gt;
&lt;B&gt;Groupement&lt;/B&gt;&lt;/DT&gt;&lt;DD CLASS=&quot;dd-description&quot;&gt; Il est possible d'utiliser des parenth&#232;ses pour
d&#233;finir le champ et la priorit&#233; de la d&#233;tection. Ainsi,
&lt;TT&gt;(ae|e)quo&lt;/TT&gt; d&#233;signe le m&#234;me ensemble que &lt;TT&gt;aequo|equo&lt;/TT&gt;.
Le groupement n'existe que dans la syntaxe des expressions
r&#233;guli&#232;res &lt;EM&gt;&#233;tendues&lt;/EM&gt;,
reconnues avec l'option &lt;TT&gt;-E&lt;/TT&gt; de &lt;TT&gt;grep&lt;/TT&gt;, ou avec la
variante &lt;TT&gt;egrep&lt;/TT&gt;.
&lt;/DD&gt;
&lt;DT CLASS=&quot;dt-description&quot;&gt;
&lt;B&gt;Quantification&lt;/B&gt;&lt;/DT&gt;&lt;DD CLASS=&quot;dd-description&quot;&gt; En apposant des caract&#232;res de quantification &#224;
droite d'un caract&#232;re ou d'un groupe de caract&#232;res, il est possible
de d&#233;terminer leur nombre de r&#233;p&#233;titions autoris&#233;. Les quantifieurs
les plus utilis&#233;s sont :
&lt;p&gt;&lt;img src=&quot;http://www.laurent-bloch.org/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; &lt;TT&gt; ?&lt;/TT&gt; qui permet de d&#233;clarer que l'unit&#233; de texte auquel
il s'applique doit exister en z&#233;ro ou un exemplaire dans le texte
examin&#233; ;
&lt;br /&gt;&lt;img src=&quot;http://www.laurent-bloch.org/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; &lt;TT&gt;*&lt;/TT&gt; qui permet de d&#233;clarer que l'unit&#233; de texte auquel il
s'applique peut &#234;tre r&#233;p&#233;t&#233;e un nombre quelconque, &#233;ventuellement
nul, de fois ;
&lt;br /&gt;&lt;img src=&quot;http://www.laurent-bloch.org/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; &lt;TT&gt;+&lt;/TT&gt; qui permet de d&#233;clarer que l'unit&#233; de
texte auquel il s'applique doit exister en au moins un exemplaire
dans le texte examin&#233; ;
&lt;br /&gt;&lt;img src=&quot;http://www.laurent-bloch.org/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; &lt;tt&gt;&lt;i&gt;m&lt;/i&gt;&lt;/tt&gt; d&#233;clare que l'unit&#233; de texte qui pr&#233;c&#232;de doit
figurer exactement &lt;TT&gt;m&lt;/TT&gt; fois dans le texte examin&#233;,
&lt;tt&gt;&lt;i&gt;m,&lt;/i&gt;&lt;/tt&gt; d&#233;clare qu'il doit figurer au moins &lt;TT&gt;m&lt;/TT&gt; fois,
&lt;tt&gt;&lt;i&gt;m,n&lt;/i&gt;&lt;/tt&gt; d&#233;clare qu'il doit figurer au moins &lt;TT&gt;m&lt;/TT&gt; fois
et au plus &lt;TT&gt;n&lt;/TT&gt; fois, &lt;TT&gt;n&lt;/TT&gt; inclus. Ce dernier type de
quantificateur n'existe que dans la syntaxe des expressions
r&#233;guli&#232;res &#233;tendues,
reconnues avec l'option &lt;TT&gt;-E&lt;/TT&gt; de &lt;TT&gt;grep&lt;/TT&gt;, ou avec la
variante &lt;TT&gt;egrep&lt;/TT&gt;.&lt;/p&gt; &lt;p&gt;Munis de ces nouveaux outils, nous pouvons reconna&#238;tre de nouveaux
mod&#232;les de num&#233;ros d'immatriculation :&lt;/p&gt; &lt;PRE CLASS=&quot;verbatim&quot;&gt;&gt; grep -E '[0-9]&lt;i&gt;3,4&lt;/i&gt; ?[a-zA-Z]&lt;i&gt;2,3&lt;/i&gt; ?[0-9]&lt;i&gt;2,3&lt;/i&gt;' mes-textes
321ABM75 num&#233;ro parisien
voici un num&#233;ro : 321 ABM 75
321 abm 75 c'est un num&#233;ro en minuscules
321abm75
567 QWT 971
567qwt971
&lt;/PRE&gt;
&lt;p&gt;On note les apostrophes qui d&#233;limitent l'expresssion r&#233;guli&#232;re,
et la cha&#238;ne &lt;TT&gt;' ?'&lt;/TT&gt; qui repr&#233;sente un espace, pr&#233;sent z&#233;ro
ou une fois.&lt;/p&gt; &lt;p&gt;L'int&#233;r&#234;t premier des expressions r&#233;guli&#232;res r&#233;side dans leur
commodit&#233; d'emploi : elles sont une notation textuelle, alors
que les automates ne peuvent &#234;tre repr&#233;sent&#233;s que par des
diagrammes ou par des structures de donn&#233;es complexes. De
ce fait les expressions r&#233;guli&#232;res peuvent &#234;tre utilis&#233;es et
transform&#233;es facilement par les langages de programmation,
d'ailleurs elles peuvent &#234;tre employ&#233;es elles-m&#234;mes comme
une sorte de langage de programmation, non Turing-&#233;quivalent
mais efficace pour divers probl&#232;mes tels que l'analyse de
textes ou la traduction de langages de programmation (cf.
l'article &lt;a href='http://www.laurent-bloch.org/spip.php?article34' class='spip_in'&gt;Programmer des grammaires avec Bigloo&lt;/a&gt;).&lt;/p&gt; &lt;p&gt;Tout utilisateur d'un syst&#232;me Unix ou Linux a acc&#232;s &#224; un logiciel
d'expressions r&#233;guli&#232;res sous l'esp&#232;ce de la merveilleuse commande
&lt;TT&gt;grep&lt;/TT&gt; (pour &lt;EM&gt;Global (search for) Regular Expression and
Print&lt;/EM&gt;), et ses variantes &lt;TT&gt;egrep&lt;/TT&gt;, &lt;TT&gt;fgrep&lt;/TT&gt; et
&lt;TT&gt;rgrep&lt;/TT&gt;. En voici quelques exemples :&lt;/p&gt; &lt;PRE CLASS=&quot;verbatim&quot;&gt;grep '^\.[a-z][a-z] ' mes-textes
egrep '(ranum|cox)' securite.bib
egrep '^\.([a-k]|[t-z])[a-z] ' mes-textes
&lt;/PRE&gt;
&lt;p&gt;La commande &lt;TT&gt;grep&lt;/TT&gt; de la premi&#232;re ligne affiche les lignes du
fichier &lt;TT&gt;mes-textes&lt;/TT&gt; qui commencent par un point (&lt;tt&gt;^\.&lt;/tt&gt;,
la contre-barre annule la signification particuli&#232;re du point, qui
isol&#233; d&#233;signe &#171; n'importe quel caract&#232;re &#187;), suivi de deux caract&#232;res
minuscules quelconques (&lt;TT&gt;[a-z]&lt;/TT&gt;), suivis d'un espace.&lt;/p&gt; &lt;p&gt;Les motifs des deux lignes suivantes comportent des alternatives,
&lt;TT&gt;(ranum|cox)&lt;/TT&gt; et &lt;TT&gt;([a-k]|[t-z])&lt;/TT&gt;, non support&#233;es par
&lt;TT&gt;grep&lt;/TT&gt; et qui exigent &lt;TT&gt;egrep&lt;/TT&gt; ou &lt;TT&gt;grep -E&lt;/TT&gt;,
c'est-&#224;-dire &lt;TT&gt;grep&lt;/TT&gt; avec des expressions r&#233;guli&#232;res
&lt;EM&gt;&#233;tendues&lt;/EM&gt; : la commande de la seconde ligne affiche les lignes
du fichier &lt;TT&gt;securite.bib&lt;/TT&gt; qui contiennent le mot &#171; ranum &#187;
&lt;EM&gt;ou&lt;/EM&gt; le mot &#171; cox &#187; ; celle de la troisi&#232;me ligne affiche les
lignes du fichier &lt;TT&gt;mes-textes&lt;/TT&gt; qui commencent par un point
(&lt;tt&gt;^\.&lt;/tt&gt;), suivi d'un caract&#232;re minuscule compris soit parmi les
premi&#232;res lettres de l'alphabet jusqu'&#224; &lt;TT&gt;k&lt;/TT&gt;, soit parmi les
derni&#232;res &#224; partir de &lt;TT&gt;t&lt;/TT&gt;, mais pas entre &lt;TT&gt;l&lt;/TT&gt; et
&lt;TT&gt;s&lt;/TT&gt; (&lt;TT&gt; ([a-k]|[t-z]) &lt;/TT&gt;), suivi d'un caract&#232;re minuscule
quelconque, suivi d'un espace.&lt;/p&gt; &lt;p&gt;La plupart des langages de programmation modernes procurent un ou
plusieurs paquetages d'expressions r&#233;guli&#232;res, notamment pour celles
qui ob&#233;issent &#224; la &lt;a href='http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap09.html' class='spip_out' rel='external'&gt;norme
Posix&lt;/a&gt;[&lt;A HREF=&quot;#posix-regexp&quot;&gt;&lt;EM&gt;4&lt;/EM&gt;&lt;/A&gt;]
&#224; laquelle on se reportera pour une description d&#233;taill&#233;e de laur
syntaxe. Le langage que nous utilisons pour ce cours,
&lt;a href='http://www.laurent-bloch.org/spip.php?article6' class='spip_in'&gt;Scheme&lt;/a&gt;, et plus particuli&#232;rement le
&lt;a href='http://www-sop.inria.fr/mimosa/fp/Bigloo/' class='spip_out' rel='external'&gt;compilateur
Bigloo&lt;/a&gt;, offre en outre
des moyens de construire son propre &lt;a href='http://www-sop.inria.fr/mimosa/fp/Bigloo/doc/bigloo-12.html#Regular-parsing' class='spip_out' rel='external'&gt;analyseur de grammaires
r&#233;guli&#232;res&lt;/a&gt;,
qui permettra de reconna&#238;tre le langage que l'on aura ainsi d&#233;fini et
d'en analyser les textes.&lt;/p&gt; &lt;p&gt;Outre le livre d&#233;sormais familier de MM. Hopcroft, Ullmann et
Motwani[&lt;A HREF=&quot;#automata-hopcroft&quot;&gt;&lt;EM&gt;3&lt;/EM&gt;&lt;/A&gt;], l'excellent ouvrage de Jeffrey E. F.
Friedl &lt;EM&gt;Ma&#238;trise des expressions r&#233;guli&#232;res&lt;/EM&gt;[&lt;A HREF=&quot;#friedl-regexp&quot;&gt;&lt;EM&gt;2&lt;/EM&gt;&lt;/A&gt;]
sera pr&#233;cieux pour le lecteur d&#233;sireux d'approfondir la sujet. Il
existe en fran&#231;ais un petit guide pratique bien fait par Bernard
Desgraupes : &lt;EM&gt;Expressions r&#233;guli&#232;res &#8211; Le Guide de survie&lt;/EM&gt;
[&lt;A HREF=&quot;#desgraupes-regexp&quot;&gt;&lt;EM&gt;1&lt;/EM&gt;&lt;/A&gt;] &lt;a href='http://fr.wikipedia.org/wiki/Expression_r%C3%A9guli%C3%A8re' class='spip_out' rel='external'&gt;L'article de
Wikip&#233;dia&lt;/a&gt;,
outre qu'il traduit (&#224; mon avis malheureusement) &lt;EM&gt;regular
expression&lt;/EM&gt; par &lt;EM&gt;expression rationnelle&lt;/EM&gt;, n'est pas excellent.&lt;/p&gt; &lt;HR SIZE=2&gt;
&lt;p&gt;&lt;BR&gt;&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt;Premiers rep&#232;res th&#233;oriques &#8212; Op&#233;rations sur les langages&lt;/h3&gt;
&lt;p&gt;Rappelons en quel sens nous employons le mot langage : l'ensemble
des mots accept&#233;s par un automate, ou qui correspondent &#224; un mod&#232;le
d&#233;not&#233; par une expression r&#233;guli&#232;re &#233;quivalente &#224; cet automate,
constitue le &lt;EM&gt;langage&lt;/EM&gt; reconnu par un automate
reconnu par l'automate. De fa&#231;on similaire, un langage est dit
&lt;EM&gt;reconnaissable&lt;/EM&gt; s'il existe un
automate qui le reconna&#238;t, ou une expression r&#233;guli&#232;re qui le d&#233;note. Un
tel langage sera appel&#233; &lt;EM&gt;langage r&#233;gulier&lt;/EM&gt;.&lt;/p&gt; &lt;p&gt;Les op&#233;rateurs utilis&#233;s dans les expressions r&#233;guli&#232;res r&#233;alisent
des op&#233;rations sur les langages reconnus par elles. Ces op&#233;rations
sont au nombre de trois (on rappelle que &#1108; d&#233;signe le mot
vide, qui ne contient aucun caract&#232;re) :&lt;/p&gt; &lt;DL CLASS=&quot;description&quot;&gt;
&lt;DT CLASS=&quot;dt-description&quot;&gt;
&lt;B&gt;Union&lt;/B&gt;&lt;/DT&gt;&lt;DD CLASS=&quot;dd-description&quot;&gt; L'union de deux langages &lt;I&gt;L&lt;/I&gt; et &lt;I&gt;M&lt;/I&gt;, not&#233;e &lt;I&gt;L&lt;/I&gt; &#8746; &lt;I&gt;M&lt;/I&gt;,
est l'ensemble des mots qui sont soit dans &lt;I&gt;L&lt;/I&gt;, soit dans &lt;I&gt;M&lt;/I&gt;, soit
dans les deux. Ainsi, si &lt;I&gt;L&lt;/I&gt; = &lt;i&gt;&#1108;, 00, 001, 111&lt;/i&gt; et &lt;I&gt;M&lt;/I&gt; =
&lt;i&gt;11, 001&lt;/i&gt;, alors &lt;I&gt;L&lt;/I&gt; &#8746; &lt;I&gt;M&lt;/I&gt; = &lt;i&gt;&#1108;, 00, 001, 111, 11&lt;/i&gt;.
&lt;/DD&gt;
&lt;DT CLASS=&quot;dt-description&quot;&gt;
&lt;B&gt;Concat&#233;nation&lt;/B&gt;&lt;/DT&gt;&lt;DD CLASS=&quot;dd-description&quot;&gt; La concat&#233;nation de deux langages &lt;I&gt;L&lt;/I&gt; et &lt;I&gt;M&lt;/I&gt;,
not&#233;e &lt;I&gt;L&lt;/I&gt;.&lt;I&gt;M&lt;/I&gt; ou &lt;I&gt;LM&lt;/I&gt;, est l'ensemble des mots form&#233;s de la
concat&#233;nation d'un mot quelconque de &lt;I&gt;L&lt;/I&gt; avec un mot quelconque de
&lt;I&gt;M&lt;/I&gt;. Ainsi, avec nos deux langages de l'alin&#233;a pr&#233;c&#233;dent, &lt;I&gt;L&lt;/I&gt; = &lt;i&gt;&#1108;, 00, 001, 111&lt;/i&gt; et &lt;I&gt;M&lt;/I&gt; = &lt;i&gt;11, 001&lt;/i&gt;, &lt;I&gt;LM&lt;/I&gt; = &lt;i&gt;11, 001, 0011, 00001, 00111, 001001, 111111, 111001&lt;/i&gt;.
&lt;/DD&gt;
&lt;DT CLASS=&quot;dt-description&quot;&gt;
&lt;B&gt;Fermeture&lt;/B&gt;&lt;/DT&gt;&lt;DD CLASS=&quot;dd-description&quot;&gt; La &lt;EM&gt;fermeture de Kleene (Kleene closure)&lt;/EM&gt;,
ainsi nomm&#233;e d'apr&#232;s le nom du logicien Kleene, d'un langage &lt;I&gt;L&lt;/I&gt;,
not&#233;e &lt;I&gt;L&lt;/I&gt;&lt;SUP&gt;*&lt;/SUP&gt;, est l'ensemble des mots form&#233;s par la concat&#233;nation d'un
nombre quelconque (&#233;ventuellement nul) de mots de &lt;I&gt;L&lt;/I&gt;, en admettant
les r&#233;p&#233;titions. Si &lt;I&gt;L&lt;/I&gt; = &lt;i&gt;11, 001&lt;/i&gt;, alors &lt;I&gt;L&lt;/I&gt;&lt;SUP&gt;*&lt;/SUP&gt; = &lt;i&gt;&#1108;, 11, 001, 11001, 1111001, 1111001001, ... &lt;/i&gt;.
Cet ensemble est infini.
&lt;/DD&gt;&lt;/DL&gt;&lt;HR SIZE=2&gt;
&lt;p&gt;&lt;BR&gt;&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt;Les bases des expressions r&#233;guli&#232;res&lt;/h3&gt;
&lt;p&gt;&lt;A NAME=&quot;sub:defregexp&quot;&gt;&lt;/A&gt;&lt;/p&gt; &lt;p&gt;Nous allons construire l'alg&#232;bre des expressions r&#233;guli&#232;res en partant
de ses constituants &#233;l&#233;mentaires, au nombre de trois :&lt;/p&gt; &lt;ol class=&quot;spip&quot;&gt;&lt;li&gt; Les constantes &#1108; et &#8709; sont des expressions
r&#233;guli&#232;res qui d&#233;notent respectivement les langages &lt;i&gt;&#1108;&lt;/i&gt;
et &#8709;, ce que nous &#233;crirons &lt;I&gt;L&lt;/I&gt;(&#1108;) = &lt;i&gt;&#1108;&lt;/i&gt;
et &lt;I&gt;L&lt;/I&gt;(&#8709;) = &#8709;.&lt;/li&gt;&lt;li&gt; Si &lt;I&gt;a&lt;/I&gt; est un symbole quelconque, alors &lt;B&gt;a&lt;/B&gt; est une
expression r&#233;guli&#232;re qui d&#233;note le langage &lt;i&gt;&lt;I&gt;a&lt;/I&gt;&lt;/i&gt;, soit
&lt;I&gt;L&lt;/I&gt;(&lt;B&gt;&lt;I&gt;a&lt;/I&gt;&lt;/B&gt;) = &lt;i&gt;&lt;I&gt;a&lt;/I&gt;&lt;/i&gt;.&lt;/li&gt;&lt;li&gt; Une variable not&#233;e &lt;I&gt;L&lt;/I&gt; repr&#233;sente un langage quelconque.&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;La construction comporte quatre &#233;tapes :&lt;/p&gt; &lt;ol class=&quot;spip&quot;&gt;&lt;li&gt; Si &lt;I&gt;E&lt;/I&gt; et &lt;I&gt;F&lt;/I&gt; sont des expressions r&#233;guli&#232;res, &lt;I&gt;E&lt;/I&gt; + &lt;I&gt;F&lt;/I&gt; est une
expression r&#233;guli&#232;re qui d&#233;note l'union de &lt;I&gt;L&lt;/I&gt;(&lt;I&gt;E&lt;/I&gt;) et de &lt;I&gt;L&lt;/I&gt;(&lt;I&gt;F&lt;/I&gt;) :
&lt;I&gt;L&lt;/I&gt;(&lt;I&gt;E&lt;/I&gt; + &lt;I&gt;F&lt;/I&gt;) = &lt;I&gt;L&lt;/I&gt;(&lt;I&gt;E&lt;/I&gt;) &#8746; &lt;I&gt;L&lt;/I&gt;(&lt;I&gt;F&lt;/I&gt;).&lt;/li&gt;&lt;li&gt; Si &lt;I&gt;E&lt;/I&gt; et &lt;I&gt;F&lt;/I&gt; sont des expressions r&#233;guli&#232;res, &lt;I&gt;EF&lt;/I&gt; est une
expression r&#233;guli&#232;re qui d&#233;note la concat&#233;nation de de &lt;I&gt;L&lt;/I&gt;(&lt;I&gt;E&lt;/I&gt;) et de
&lt;I&gt;L&lt;/I&gt;(&lt;I&gt;F&lt;/I&gt;) : &lt;I&gt;L&lt;/I&gt;(&lt;I&gt;EF&lt;/I&gt;) = &lt;I&gt;L&lt;/I&gt;(&lt;I&gt;E&lt;/I&gt;)&lt;I&gt;L&lt;/I&gt;(&lt;I&gt;F&lt;/I&gt;), qui peut aussi se noter : &lt;I&gt;L&lt;/I&gt;(&lt;I&gt;E&lt;/I&gt;.&lt;I&gt;F&lt;/I&gt;) = &lt;I&gt;L&lt;/I&gt;(&lt;I&gt;E&lt;/I&gt;).&lt;I&gt;L&lt;/I&gt;(&lt;I&gt;F&lt;/I&gt;).&lt;/li&gt;&lt;li&gt; Si &lt;I&gt;E&lt;/I&gt; est une expression r&#233;guli&#232;re, &lt;I&gt;E&lt;/I&gt;&lt;SUP&gt;*&lt;/SUP&gt; est une expression
r&#233;guli&#232;re qui d&#233;note la fermeture de &lt;I&gt;L&lt;/I&gt;(&lt;I&gt;E&lt;/I&gt;) : &lt;I&gt;L&lt;/I&gt;(&lt;I&gt;E&lt;/I&gt;&lt;SUP&gt;*&lt;/SUP&gt;) = (&lt;I&gt;L&lt;/I&gt;(&lt;I&gt;E&lt;/I&gt;))&lt;SUP&gt;*&lt;/SUP&gt;.&lt;/li&gt;&lt;li&gt; Si &lt;I&gt;E&lt;/I&gt; est une expression r&#233;guli&#232;re, (&lt;I&gt;E&lt;/I&gt;) est une expression
r&#233;guli&#232;re qui d&#233;note le m&#234;me langage que &lt;I&gt;E&lt;/I&gt; : &lt;I&gt;L&lt;/I&gt;((&lt;I&gt;E&lt;/I&gt;)) = &lt;I&gt;L&lt;/I&gt;(&lt;I&gt;E&lt;/I&gt;).&lt;/li&gt;&lt;/ol&gt;
&lt;h2&gt;Exemples comment&#233;s&lt;/h2&gt;
&lt;HR SIZE=2&gt;
&lt;p&gt;&lt;BR&gt;&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt;Analyser et d&#233;composer un URL&lt;/h3&gt;
&lt;p&gt;L'exemple suivant est un programme qui utilise les expressions
r&#233;guli&#232;res conformes &#224; la norme Posix de Bigloo pour d&#233;composer le
texte de l'URL analys&#233; en ses diff&#233;rents &#233;l&#233;ments syntaxiques pour un
traitement ult&#233;rieur. Ce faisant on aura, en prime, v&#233;rifi&#233; la
correction syntaxique de l'URL. Cette op&#233;ration de v&#233;rification,
d'analyse et de d&#233;composition d'un texte en &#233;l&#233;ments syntaxiques
est d&#233;sign&#233;e, dans le jargon des informaticiens, par le vocable
anglais &lt;EM&gt;to parse&lt;/EM&gt;.&lt;/p&gt; &lt;p&gt;&lt;BR&gt;&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt;Syntaxe des URL&lt;/h3&gt;
&lt;p&gt;L'URL d'un site Web, tel
&lt;A HREF=&quot;http://www.laurentbloch.org/spip.php?article144&quot;&gt;&lt;TT&gt;http://www.laurentbloch.org/spip.php?article144&lt;/TT&gt;&lt;/A&gt; est compos&#233; de
la fa&#231;on suivante :&lt;/p&gt; &lt;ol class=&quot;spip&quot;&gt;&lt;li&gt; le nom du protocole de communication, qui dans le cas d'un site
Web est soit &lt;TT&gt;http&lt;/TT&gt; &lt;EM&gt;(Hypertext Transfer Protocol)&lt;/EM&gt;,
soit &lt;TT&gt;https&lt;/TT&gt;, version de ce protocole s&#233;curis&#233;e par le
protocole de chiffrement SSL ;&lt;/li&gt;&lt;li&gt; la cha&#238;ne de caract&#232;res &lt;TT&gt; ://&lt;/TT&gt; ;&lt;/li&gt;&lt;li&gt; entre &lt;TT&gt; ://&lt;/TT&gt; et le prochain caract&#232;re &lt;TT&gt;/&lt;/TT&gt; se trouve &#233;crit le &lt;EM&gt;nom&lt;/EM&gt; du serveur :&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; sur un r&#233;seau local ce peut &#234;tre un simple nom, par exemple
&lt;TT&gt;agathe&lt;/TT&gt;,&lt;/li&gt;&lt;li&gt; mais sur l'Internet c'est un nom de domaine (ce pourrait &#234;tre
aussi une adresse IP, mais cette pratique n'est pas conseill&#233;e et nous ne l'&#233;tudierons pas),&lt;/li&gt;&lt;li&gt; un nom de domaine est (pour l'instant, parce que les r&#232;gles
sont en train de changer) compos&#233; de mots s&#233;par&#233;s par des points,
par exemple &lt;TT&gt;&lt;a href='http://www.laurentbloch.org/' class='spip_out' rel='nofollow external'&gt;www.laurentbloch.org&lt;/a&gt;&lt;/TT&gt;,&lt;/li&gt;&lt;li&gt; le dernier mot (&lt;TT&gt;org&lt;/TT&gt;) est compos&#233; de deux, trois ou
quatre caract&#232;res alphab&#233;tiques, c'est l'identifiant du domaine de
premier niveau &lt;EM&gt;(Top Level Domain)&lt;/EM&gt;, qui est soit national
(&lt;TT&gt;fr&lt;/TT&gt; pour la France, &lt;TT&gt;be&lt;/TT&gt; pour la Belgique,
&lt;TT&gt;dz&lt;/TT&gt; pour l'Alg&#233;rie), soit g&#233;n&#233;rique (&lt;TT&gt;org&lt;/TT&gt;,
&lt;TT&gt;com&lt;/TT&gt;, &lt;TT&gt;info&lt;/TT&gt;...),&lt;/li&gt;&lt;li&gt; les mots pr&#233;c&#233;dents, qui sont au gr&#233; du propri&#233;taire du
domaine, sont compos&#233;e de caract&#232;res alphab&#233;tiques latins (non
compos&#233;s, c'est-&#224;-dire sans accents ni c&#233;dilles), de chiffres
arabes et &#233;ventuellement d'un ou plusieurs tirets, &#224; l'exclusion
de tout autre caract&#232;re,&lt;/li&gt;&lt;li&gt; les caract&#232;res alphab&#233;tiques peuvent &#234;tre minuscules ou
majuscules ;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; derri&#232;re le nom du serveur vient, de fa&#231;on facultative, le
caract&#232;re &lt;EM&gt; :&lt;/EM&gt;, suivi d'un &lt;EM&gt;num&#233;ro de port&lt;/EM&gt;, nombre
de l'intervalle [0,65535] ;&lt;/li&gt;&lt;li&gt; derri&#232;re le nom du serveur (ou le num&#233;ro de port facultatif)
vient, de fa&#231;on facultative, un caract&#232;re &lt;EM&gt;/&lt;/EM&gt;, suivi ou non
du chemin sur le serveur du fichier que l'on veut afficher ;
ce chemin est constitu&#233; de noms qui ob&#233;issent &#224; une syntaxe plus
souple que les noms de domaines, nous n'en ferons pas l'analyse.&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;&lt;BR&gt;&lt;/p&gt; &lt;h3 class=&quot;spip&quot;&gt;Le programme d'analyse&lt;/h3&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_Scheme cadre&quot;&gt;&lt;div class=&quot;scheme scheme&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;module&lt;/span&gt; verif&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;url&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;main analyse&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;arg&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;define&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;analyse&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;arg args&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;let*&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;chaine &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;cadr&lt;/span&gt; args&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;regexp &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;string-append&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;^http(s)?://&quot;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;(([a-zA-Z0-9-]+&lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\\&lt;/span&gt;.){1,5}&quot;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;[a-zA-Z]{2,4})(:&lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\\&lt;/span&gt;d+)?(/(.*)?)?$&quot;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;result &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;pregexp&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;match regexp chaine&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;if&lt;/span&gt; result&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;let&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;ssl &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;cadr&lt;/span&gt; result&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;hote &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;caddr&lt;/span&gt; result&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;port &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;let&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;ce&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;port &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;car&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;cddddr&lt;/span&gt; result&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;if&lt;/span&gt; ce&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;port&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;substring&lt;/span&gt; ce&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;port &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;string-length&lt;/span&gt; ce&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;port&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;chemin &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;let&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;ce&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;chemin &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;cadr&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;cddddr&lt;/span&gt; result&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;or&lt;/span&gt; ce&lt;span style=&quot;color: #66cc66;&quot;&gt;-&lt;/span&gt;chemin #unspecified&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;print&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;La chaine a analyser : &quot;&lt;/span&gt; chaine&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;print&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;SSL ? &quot;&lt;/span&gt; ssl&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;print&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;Le site hote : &quot;&lt;/span&gt; hote&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;print&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;Le port : &quot;&lt;/span&gt; port&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;print&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;Le chemin : &quot;&lt;/span&gt; chemin&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal;&quot;&gt;&lt;div style=&quot;font-family: monospace; font-weight: normal; font-style: normal; margin:0; padding:0; background:inherit;&quot;&gt; &lt;span style=&quot;color: #990000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;print&lt;/span&gt; chaine &lt;span style=&quot;color: #ff0000;&quot;&gt;&quot; : pas un url&quot;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class='cadre_download' style='text-align: right;'&gt; &lt;a href='http://www.laurent-bloch.org/local/cache-code/38a230e43c9d0a5e8479bd39bbe0f6c4.txt' style='font-family: verdana, arial, sans; font-weight: bold; font-style: normal;'&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Le texte &lt;TT&gt;chaine&lt;/TT&gt; est confront&#233; &#224; l'expression r&#233;guli&#232;re
&lt;TT&gt;regexp&lt;/TT&gt; pour v&#233;rifier qu'il est une expression du langage
qu'elle d&#233;note. D&#233;taillons un peu l'expression r&#233;guli&#232;re :&lt;BR&gt;&lt;/p&gt; &lt;p&gt;
&lt;code class='spip_code' dir='ltr'&gt;^http(s)?://(([a-zA-Z0-9-]+\\.){1,5}[a-zA-Z]{2,4})(:\\d+)?(/(.*)?)?$&lt;/code&gt;&lt;/p&gt; &lt;ol class=&quot;spip&quot;&gt;&lt;li&gt; Les expressions &lt;tt&gt;http&lt;/tt&gt; et &lt;tt&gt; ://&lt;/tt&gt; d&#233;notent elles-m&#234;mes :
le texte doit contenir, litt&#233;ralement, &lt;tt&gt;http&lt;/tt&gt; et &lt;tt&gt; ://&lt;/tt&gt;.&lt;/li&gt;&lt;li&gt; L'expression &lt;tt&gt;http&lt;/tt&gt; est pr&#233;c&#233;d&#233;e du caract&#232;re &lt;tt&gt;^&lt;/tt&gt;,
nomm&#233; &lt;EM&gt;ancre de d&#233;but&lt;/EM&gt;, qui reconna&#238;t le
&lt;EM&gt;d&#233;but de texte&lt;/EM&gt;, c'est-&#224;-dire qu'il stipule que le texte
reconnu par l'expression qu'il pr&#233;c&#232;de doit figurer au d&#233;but du
texte : &lt;tt&gt;http://&lt;/tt&gt; ne doit &#234;tre pr&#233;c&#233;d&#233;, dans &lt;TT&gt;chaine&lt;/TT&gt;,
par aucun caract&#232;re.&lt;/li&gt;&lt;li&gt; La parenth&#232;se ouvrante qui suit &lt;tt&gt;http&lt;/tt&gt; est le d&#233;but
d'une paire de &lt;EM&gt;parenth&#232;ses
capturantes&lt;/EM&gt; : le texte reconnu par
la sous-expression contenue dans la premi&#232;re paire de parenth&#232;ses
capturantes sera conserv&#233; dans une premi&#232;re variable, num&#233;rot&#233;e
&lt;TT&gt;1&lt;/TT&gt;, le texte reconnu par la sous-expression de la seconde
paire conserv&#233; dans une seconde variable, num&#233;rot&#233;e &lt;TT&gt;2&lt;/TT&gt;, et
ainsi de suite. &lt;EM&gt;Au sein de l'expression r&#233;guli&#232;re,&lt;/EM&gt; je pourrai
invoquer une telle variable par son num&#233;ro, pr&#233;c&#233;d&#233; d'une barre
oblique inverse redoubl&#233;e pour des raisons syntaxiques&lt;SUP&gt;&lt;A NAME=&quot;text1&quot; HREF=&quot;#note1&quot;&gt;1&lt;/A&gt;&lt;/SUP&gt;, &lt;tt&gt;\\1&lt;/tt&gt; s'il s'agit de la premi&#232;re. Les paires de
parenth&#232;ses sont ordonn&#233;es de la premi&#232;re &#224; la derni&#232;re selon
l'ordre d'apparition de leur parenth&#232;se ouvrante, de la gauche vers
la droite. Si le texte de &lt;TT&gt;chaine&lt;/TT&gt; est reconnu, Bigloo
renverra comme r&#233;sultat une liste (nomm&#233;e ici &lt;TT&gt;result&lt;/TT&gt;) dont
le premier &#233;l&#233;ment &lt;TT&gt;(car result)&lt;/TT&gt; sera le texte entier de
&lt;TT&gt;chaine&lt;/TT&gt; lui-m&#234;me, le second &#233;l&#233;ment &lt;TT&gt;(cadr result)&lt;/TT&gt;
la sous-cha&#238;ne reconnu par la premi&#232;re paire de parenth&#232;ses
capturantes, ainsi de suite.&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;Dans un langage comme Perl, les sous-cha&#238;nes reconnues par
les paires de parenth&#232;ses capturantes successives seraient stock&#233;es
dans des variables nomm&#233;es respectivement &lt;tt&gt;$1&lt;/tt&gt;, &lt;tt&gt;$2&lt;/tt&gt;, etc.
En Java, la cha&#238;ne reconnue enti&#232;re serait dans
&lt;TT&gt;MatcherObj.group()&lt;/TT&gt;, et les sous-cha&#238;nes seraient
stock&#233;es dans &lt;TT&gt;MatcherObj.group(1)&lt;/TT&gt;,
&lt;TT&gt;MatcherObj.group(2)&lt;/TT&gt;, etc.&lt;/p&gt; &lt;ol class=&quot;spip&quot;&gt;&lt;li&gt; Entre &lt;tt&gt;http&lt;/tt&gt; et &lt;tt&gt; ://&lt;/tt&gt;, l'expression &lt;tt&gt;(s) ?&lt;/tt&gt;
comporte donc une paire de parenth&#232;ses capturantes. Le caract&#232;re
&lt;tt&gt; ?&lt;/tt&gt; signifie que l'expression encadr&#233;e par les parenth&#232;ses peut
figurer z&#233;ro ou une fois dans la cha&#238;ne analys&#233;e, en effet le
pr&#233;fixe de l'URL d'un site Web peut &#234;tre &lt;TT&gt;https&lt;/TT&gt; ou
&lt;TT&gt;http&lt;/TT&gt; selon qu'il est ou non s&#233;curis&#233; par le protocole
SSL.&lt;/li&gt;&lt;li&gt; La premi&#232;re paire de crochets &lt;TT&gt;[ ]&lt;/TT&gt; encadre une
&lt;EM&gt;classe de caract&#232;res&lt;/EM&gt;classe de caract&#232;res ; le signe
&lt;tt&gt;+&lt;/tt&gt; qui suit cette classe de caract&#232;res signifie que l'on doit
avoir ici dans le texte &lt;EM&gt;au moins un&lt;/EM&gt; caract&#232;re de la classe
sp&#233;cifi&#233;e. Cette sous-expression reconna&#238;t un &#233;l&#233;ment du nom du
site, &#224; l'exclusion du dernier, le nom du domaine de premier niveau&lt;/li&gt;&lt;li&gt; Derri&#232;re le signe &lt;tt&gt;+&lt;/tt&gt; l'expression le signe &lt;tt&gt;\\.&lt;/tt&gt;
reconna&#238;t un point, destin&#233; &#224; s&#233;parer l'&#233;l&#233;ment du nom du
site qui vient d'&#234;tre reconnu de son successeur.&lt;/li&gt;&lt;li&gt; Derri&#232;re la seconde parenth&#232;se fermante vient le quantificateur
&lt;tt&gt;&lt;i&gt;1,5&lt;/i&gt;&lt;/tt&gt; qui indique que devant le nom de domaine de premier
niveau nous voulons au moins 1 et au plus 5 &#233;l&#233;ments s&#233;par&#233;s pas
des points.&lt;/li&gt;&lt;li&gt; Puis vient le nom de domaine de premier niveau, compos&#233; d'au
moins 2 et au plus 4 caract&#232;res strictement alphab&#233;tiques, et suivi
de la troisi&#232;me parenth&#232;se fermante, qui capturera le nom du site.&lt;/li&gt;&lt;li&gt; Derri&#232;re la trosi&#232;me parenth&#232;se fermante commence une quatri&#232;me
paire de parenth&#232;ses capturantes, suivie du caract&#232;re &lt;tt&gt; ?&lt;/tt&gt;, qui
signifie que le texte &#233;ventuellement reconnu par la sous-expression
entre parenth&#232;ses doit figure z&#233;ro ou une fois ; il s'agit ici en
l'occurrence du num&#233;ro de port facultatif qui peut suivre le nom
du site dans un URL.&lt;/li&gt;&lt;li&gt; L'expression &lt;tt&gt; :&lt;/tt&gt; qui suit la parenth&#232;se ouvrante qui commence la quatri&#232;me paire de parenth&#232;ses capturantes d&#233;note elle-m&#234;me : il faut
ici &lt;tt&gt; :&lt;/tt&gt;, si l'URL comporte un num&#233;ro de port explicite.&lt;/li&gt;&lt;li&gt; L'expression &lt;tt&gt;\\d+&lt;/tt&gt; se d&#233;compose comme suit : &lt;tt&gt;\d&lt;/tt&gt;
d&#233;note un chiffre (&lt;EM&gt;digit&lt;/EM&gt; en anglais, c'est &#233;quivalent &#224; &lt;TT&gt;[0-9]&lt;/TT&gt;) ; &lt;tt&gt;\d+&lt;/tt&gt; signifie
donc &#171; au moins un chiffre &#187; qui sera un &#233;l&#233;ment du num&#233;ro de port ;
la barre oblique inverse est doubl&#233;e parce que dans Bigloo les
expressions r&#233;guli&#232;res sont repr&#233;sent&#233;es dans des cha&#238;nes de
caract&#232;res, dont la s&#233;mantique conf&#232;re &#224; la barre oblique inverse
&lt;tt&gt;\&lt;/tt&gt; une signification particuli&#232;re, et o&#249; &lt;tt&gt;\\&lt;/tt&gt; signifie &#171; le caract&#232;re barre oblique inverse lui-m&#234;me &#187;. En Perl cette
expression s'&#233;crirait &lt;tt&gt;\d+&lt;/tt&gt; ; en Java, &lt;tt&gt;\\d+&lt;/tt&gt;, comme en
Bigloo, pour les m&#234;mes raisons.&lt;/li&gt;&lt;li&gt; L'expression entre parenth&#232;ses &lt;tt&gt;(/(.*) ?) ?&lt;/tt&gt; d&#233;note &#171; une barre
oblique suivie de z&#233;ro ou plusieurs (&lt;tt&gt;*&lt;/tt&gt;) caract&#232;res
quelconques (&lt;TT&gt;.&lt;/TT&gt;) &#187;, qui seront le &lt;EM&gt;chemin&lt;/EM&gt; (facultatif)
de la page sur le site ; cette expression est suivie d'un &lt;tt&gt; ?&lt;/tt&gt;,
elle peut appara&#238;tre z&#233;ro ou une fois ; comme elle est enclose dans
la cinqui&#232;me paire de parenth&#232;ses capturantes, elle sera renvoy&#233;e,
si elle est reconnue, comme le &lt;TT&gt;(cadddr result)&lt;/TT&gt; dans notre
programme.&lt;/li&gt;&lt;li&gt; Le dernier caract&#232;re de notre expression r&#233;guli&#232;re est
&lt;tt&gt;$&lt;/tt&gt;, nomm&#233; &lt;EM&gt;ancre de fin&lt;/EM&gt; fin, qui
reconna&#238;t la &lt;EM&gt;fin de texte&lt;/EM&gt;, c'est-&#224;-dire que le texte recon