ࡱ> ~Fhkڅ}TJFIFHHCCG" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?>o^]|MEPEPEPEPEPEPEPEPEPEPEPEPEP_K/-~<[{g+&M_ZydR PEQEW|U/P1%+@u_ƪb>o^ ( ( ( ( ( ( ( ( ( ( ( ( ( 6YkK<)_5m%xR<&( 7Yx_:TƷ~'{{H巷A/=W[Z H\eDKo/ ⿇Z6 &YmcKAukye5͝ݼ]kRI"I.L{jҀ|+x^I5}N vq>^m߶i-"m>k)vEdtfGGR++UHA)b_|%Kx#CvӴGR}/-XEg,i͌M5<Zlb_jQD~ǿ#IZ𶱢xLJY-߄LZ[Y갶a'/'uk K( (n1'fo~8M>P6r-D>7R);m5ݰD7l`Aߵ?=;WU+{E_ oUuRuŵV憈ϖ_h_W7)x[3H_˫}ؚldoټߴ7PEP^>Og[=?&eghlcW:_XmcOnm0xN/G2tށJԂB7?X[.lF E椰4Rǿi@Q@Q@Q@Q@Q@Q@~,m̚6YkK<)@EPڟ΃ ~2IwÞt-+O4R ^.l5D5yh6VO:(M|G?_]{ ;K:szfgO+46}GqB1Ư++>T6U[,B+/ëOi>/UТ`d[Ӗgth5:kӡkyຆ)5i+|:>:/ox'#dzމ}$4i{ BO[Yw0*y@![G;a4XTI}bIrt3XXmm1*sK^]OO<{׺x.-)dV> Kk ]5}"A쬭/m_iƳ~k_hT?u_jsg?xkǺf;4յխ W}ԺA[j`C iiվ4]|'O-f Wt?5_>4E.qs&hqj'ZlX[ku_js?~5>>2VAڷwVilyn59.[L 3q$(%ĒD#i4퇎k携rm5<:ԖYEԮ5Kg&GcȺ~YkxZ.·u}V}BQ3[[Fzs>i=坭z .o&x`fosw?x~L{M[o]{ޑ0Z.!0 +~ş j17ėΝ? k7"BnOBh"Dco5ʖM4?W>kޓn{뚅[%WYETVZq-vϫQjv㉾,p^jw<~f::~iFiwqwg_\miupyHʟN@C:5u@Sqx߅Wi;#-$:6q5X-u}ȗ"Lpgg_OG<{.--fUKɮ}?WM[HЬ,/Է/cWScvΖkoSu_js&k>ū͡<+kOm>fҬ5;}6]3S,4˩.CzH~8|)Mv85/URQz< KJbUe9L!U'UfW?n]3g?i~#ִ֤ ^cutmP;=ݍίoNè*yMXm7Z}XԼ?VKmIF5-*#% {IVE lE3dV@W'UfW?nW\tƭyXi>nuxH L{0imhhb;$ִa$UD?>!]B찋׳bmOKӵi9FTRKE{y0'UfW?nW\ڻXhzyXm MGUYiͪɡKimm{:i1̓LRW,:>[Do^bjZX?]N}j:mcoV*U#4_:5ua.l/@>+ "(,B HRqkOTl<|!|c-wwAe 5kjY^w:ArZ[N#K?u?>-掚r-赸ִv,] [[SR%T@?]ϵQ1gv~%l [qR_>:V{I44VڡUSVot;;;+k>84;Xݗ[Dnq2.+xJ&5"{1o4xgVFBU㶸R40E׆:iVVwyx:&}zE-|S4os-79EI,<k}Wxk߈~7_e[MIM6shV7fwi/Lv<7_ɫxS?ſ ud w'Mߌ&ӆ'!NzhɪXںq۾ ( w񶚾 =<7q+Oշ+ۭ'7~+=oēkZ+Ykw=^ھen` g'E? |r~5T.SywCƉ)-5 ;se#~u~nSPu/)?~;|]T>#~m?MyZC ZxSÖ:FsUL4}Qn͊k_ ~9Ѿ*Xx_xZO=No {ž(j>;suih:=׉ nl5)&m _7P]s6Y迳+ |@U|?RM\M]5K1 jDŽ|SMַ|>=J%ygkxm[Qn$X8=v< {\|{ll#yiJ MZ4ΏK-niYۘn%P.osq/w|Im5-n᷈[y4[xO¶:JE:fv74iP{=/Kgį {xgޑo3VK4۩]o%|w>-ZCլRuX K%KYYG?Ÿ&wY_SW k>"^AivZ~(}M5l4?E9X[MBmE{@i;BO#ƞ <1>'u߈o ^%/ΟZ.t.4ۛ˳7I -Y|b~(_͖hԴ+O~% n,uI%d][jzl á[e(~2~ΗIr;χ?}'> l ݼGi:ܒ9oN'xhNɩ=(>$C}#|mw~9izLnOw]Kwڮ_ikc5;]"HV:\ y-J(OO?Wb5C>56fj&ajm>Ǩ$C}#|mw~9izLnOw]Kwڮ_ikc5;]"HV:\ y-J('ß=f;5W Og=7JYk-4!Tzƹ7z%?أRo9&O ^wy(o,iu& NѤ|Z~jj~5t_e~5Xx.%Kk[1O_↛^$=Oޑ"GC{5׭u/({=bZaꯩ}_] ɣzΥ8w|{᫟>kövusx.xMZXƟm_[˹{yfzxAe|;Y2Y=u/jgm-(t="9ZO\ p-䶹(_ %xS⇎yƧ|H4O:wíKþt'_mome~ư1iI<͞އ'KŃAOt=F5Zh ҡi8:y _W og_ΫZ,aHZܚ텓i>G}g,Yb?kQy=Ϣil"g}ۏ^g@uŧ;+~.Wă_C vu :'?Z 9t=k?{^u9&o)Onk:Mq09\<[_ xvU\k> 犴oRx5M?\%ۇkkƛܗ1Wڎ1Enp߷!'f]rAv/PNG  IHDRZE_sBIT|.wPLTEٟtRNS0JbKGDH cmPPJCmp0712OmIDATxۿd9@ tJ݉A"` F *$@hOjP'e=W'iJ#Wm_WU5HUϟ쯿vU_zՂ.< LP!%̇3/[PD\\t%W.0پmt09lq{.q>lپ~qw6lb]=A !^ V,<A7z}! /ia*ײ?usεܝR K-\AL>Z`73XW,T4Yjٝd)/ZnO2ˁR/܌7vHwIƁ]|jٝbiRٛQ&@M1ρEe9"jdi 8C=vN1MtET2SH/N4nu@C6KܕZ%8~\-1 \3|k ~}k闘2Rn)@~ ӠT ,:n\HZy9:C]Yl0R2ˉ[r.&[\K542'wR2E']<{)ܘI d3颋1H[Gss -1)dst KWiX =L{mGLO|m;g[ܳ3LL2ۿ{':9|:l߇*j}A׮}'cݝflLvw13Ⱦe>0ǯO2dU ~(b]1́$ͱr>c47a{!&tS8my >ĘI4wlEeL~uWlKA;R[Г} I (0\Aَs#uB#Ϥ;pZfnd(x>v<7Ɉd Fa)MZ~s?vI$15Ɉ &.=ΫiB&`& mk X,7>U))`z#l6s6-u] NCUH? .F߫vA_i②eګ>YV)f!M>-S4ؐ6A$ЎP@ vb#㕘hYkX,2~ĠZ;u\[=5my0LAuà7Bs;HJ] 3LZ'% զa#CնaoB42B]N MiO!: {R¡{9JQ1qP&}z`(*26코|vTV`rbK0%I,˱S=5 obj6>iRmŶ--;7٥*+M|Ջ:2Ӷ4`TL3s3Wuv jM]2WubԅU ,b0-S +vWelv%|<oN1W3٦zJ=X?` +sۤ L-?fЪ*Mld' U;~%+neZO0u.[N_ބ=Rn[:6g5[mi:|Л҉tfa`%t~cS + M~M8I_^)hv+q%2Lbl~1lUuf {gU,e.p~2[!fe& LO|i;Ӱ]89N3tzrEAuH\i&+ϰV,{*4LO|ru?}0IK򐉦xiҋuṠkcŋ$ed]8?_//pWk̼bmEϕQxeGx`6LNP a@؋ŵTt(z%)vzf&K~_1'Aݝ©AJR€4C509`"ݱ뛑41O3Ȩ~S"L⨠ kgsWeO0I2Ji ԞF 4.[x <= 'O7o P4{PJ2;qt>xxr 6e bff:ިwzo{킰yur:@qdx&y$66)e=fX<ѰNlӰR>wH IŎh^ {;T7Babˊ!*>"0iDZOfm!b8?hb{ҒJRA)f1w]a&fv^;"Rp v({ 9<x7a=d{8Rgƚá`.G>0 0 sȾguEsC^nMGT}, n=%.C lcy\@51drf0V;}d카%9A YV/g9q0Y1ãMñep X|7i 3˩mhd*eh}Wg2 _4z~]3LVL|naN'SOEfnj7gX,)'VJL.2ߩEf&ffh/|zn#b}_G?Ch|־20~\FLӔ?6HWMdqU OXyN#3tWqU ,V~qz24Tf&kqUtPP a+Ϡm\vPc0T7(=\a f 1ǎ3Ĉ9_heRbtYMyf\`<>!3,x{.K/.Sg0sw\{~hc2e܀x?HL&q~9qu\d* Vv :F?6p(1Ӓ? }d4T oU1 E/3+mD@%ُZnO2(MW2) #1oچ9CD/~d Si cnub p+ nTj)dv\`Ԧ]h t/@W8S2J $Pk˻ͅkdܸ)=X,3M0=ՈJfIbn)gğ_9zjU 31W>3}Q <%4bPJA%f昺n53qepf*LS2Èf)vNeNud.Q? th_ =~%R`=`961dyھ xy-&F,bzpʯ1 ,N}+-2 &fLk}; F7BZ`:ennTZMS){Mϸ8zw&Z]~s3\dVsE 1LΌ&<ՇG s샙 3pf2&?3q1ifi}̟>|g&\LJW &.gLJ ;PWSe=Csٿӂߨ}xIM 3yP~sS`|wK\0p!ë 6\0BFK.cf^\0EcBg"ט2IENDB``!gx'K rɊ>`@2P5xڭTkAfv6Fv7UX4 C n`/)xbMݐ% %Bً'J{A^[EKEnJ;0߾yޛ)@)rcs<`0 l'wUӄ.0p*tt UMUWBaa2ʔ:w=6KvɁCˉZȭZPŇ?GlɛZP,KZl{ƾ@ĸ:Ƴ8q1҈cG)tG%3|6͇,?GıJ>?f#۪ܫwg*z#%_{˛`O2II?V7sC'u`]5cOXºgPDQݶbER81$͌k7f h&ܔ;vt-!N]ȯiAB>O3#Sd0ҧ@f4(!s!|.)r6La>#N0Nj%o "/ވᕆW߶|Wh7liXl %s~x/`!P_qGT@ sxڵTAkA~3&QD-mCEk/B$$KJ0b]uM҄l$d Zދ={CxDTth|3 |;{o`(Ub#B;@{m7u<4"5\DG0n :'8". ^tQy<^fDi#((iY/tZ2wU3'WhFE*#D:Y'ؤ4٬46xW3n6YD7ʧfܜΘM u"M~^A ȧ'g9!@)-h۔x1'J+b˔){)}&Cgϵ.&z&.U+8 -' _S+ `!twT4#eF@R"xڭUkAn?b4Iڢi"-C" 4m=RlkܰiJ6AVxxPţ'"л@z݂ lvB&3ޛy7fg)/B3He[eG>AEQ1 YVH~IZ*ʏ15;Qр0QE<.<şI$e{;x#3—u_D-ܿ1jb>$\ ˬf㷿`,q^_`_:u7T mX%xGipqKr}X_K^z=k{eZEif3ٜi|w^ŭU-Cw1R gc5mk-5ls1jmBW=/}k4iݹIV{LM}` G&+t0TS1M)DHٞ7 St-'&|>M}H_l .$cO'P +nCIa1Vwr*ږAN$~F<(ld[X4FDjQD% i^YzBUtR BiOtC@fΈ.+YNmUb;#· ml_\apޕ mmP:' f^ 'Nx;uR cɞa`! 9fsBpBn @yxڭTkA3UfTA,5 +B$KJ0Bhl$dPKxT衇zGT( EAj|3Q? 潙߼G V}"6Jz&Gm:tʳ #:/cad!f\eCԼk*;QFh>G}o|;jU[+Zi^=z-rfȭ%$>Y ,Z yA,-#s8PG.Pnc. pT\ma\aP* ,, Dl ?ґ/ۮݨWŽHnN\D-x~ϱCG:=o+Y/C+ٌu<+{D47wD̦s״Z.|~S͔n{7A1QsBГERdT2\T2!>PL'tH2'3f[?@(&)JOPa)*1$a *'!8j&HSGσFT`BXby~OYEɰVy}Gm`劽qx,fo=("`!X+  TCZ&`@n$0xڝTMlQy R E m)Z1bBR FCC KD]u-PFI􂉉xЃxwƛD,;}~3ya@x4Z- nce5 LBadHxƂ `]l>7|7Mn k:{Mo t SY;;R ;R.0Os甥,\VQu .-b=jGkHV{<-I5Sm~zh}9M'8y[B>oIx+p+6,8H|~1SG DXq6A_)<)Jb!6 |'TF:~Mi S/4!%§FLM/ Ͳ@%t4Sʁ.* ^4&^2=3I9rf AN񁯏CB G5lڧ-LpsV3+iРhoډEuNVKeQCߝ }` ڗ? `!m!fO$#ct;xڝSMkA~fvWm|hA-론 &"DqY ٍ$$'C S@_CɛBx]O~w1A(Ͱ3;<0LUplB4:g,@}g$SP1p2bd~IME^QR)ҋ,"(&4<̛8b%6keU ^|oĽΑ71ň mV{ ݭA`/e¯٭$dlϲ_g*>ÚYPf2Qvj95-N KF.ؓǰZ{Rk3yi޼)0(<[̗.ۖˋFͺYC\eĕLQ2bq9_J:yVvc7κEPL͈s%Yx6g+>M2qjĈS ۈ@S2M .OV]uk&fך!& e ? Ty-6&߶iObV7m숓`# 7 y+:k``!@ cpΉEؔ)N  &8>xڵV_hSW{?Pn1DTc&HPCinӤҴ}A2{a2ƞtOE{o5Kz9~w/8;S 8c5j*lwml7׹yp_ݻHuzЃXש} Ѯ*7ٹƗ.\hq }R u~Cҿhz)>L;e6D71nݦ]1zQИ+蠖,z bCsծ34/+'jW1t[Xɰtg}f![Tx&Ɩ Lc=S_3^1Π/'?6+3l9`G:nQmmn]܋Ern;?+^Tr;kJs>Qk__^߃";#s%9s31U%ǏӋْ~vx\.0WOmGR:<3?f$|JrdD@j!j CFb)1i*i6-L1&u,QpAnX0qnH|LicL:s{@ 6?6zr9Cfl/˷e MX 8(kpZ$٪FóׂD`C牢8c֒ӇwQ/8Iy"sq5<?5=tRkr'$NԞ*}/B b,jz[;Z{:%"{C TTE`>آ&|޿[;XஸJc![Unpn,% U9FD"!+ ,Ƅev 녝WUV-;׸[^%Ko+Y`-*ir<? M_wOT Y#YE'5 NY<ք'BŇq|Q KuVGV2TKyߨn<׾c\6 p_g`8%O ůDW#)pJ3rچדr$+)dN=]p\sτ?{Zf0DaE&F{h8oEJ ϿvKb+G2G)_6N%YQ_Q\)#b4Oиi٫j Rih owהx5dY!lgq{8j<1ߕ4-lDtKvG40A( D < ,Equation Equation.DSMT40*MathType 5.0 Equation*Equation Equation.DSMT40*MathType 5.0 Equation Equation Equation.DSMT40*MathType 5.0 EquationEquation Equation.DSMT40*MathType 5.0 Equation,Equation Equation.DSMT40*MathType 5.0 EquationEquation Equation.DSMT40*MathType 5.0 EquationEquation Equation.DSMT40*MathType 5.0 EquationEquation Equation.DSMT40*MathType 5.0 Equation/ 0DArialr New0ll wT0"DWingdingsw0ll wT0 DCourier New0ll wT01 B .  @n?" dd@  @@``  XWw=FL FG &%%%%%%%%#@<d)******H0z@??UZ[4*,,-,#8KII     UR$hkڅ}Tb$߷!'f]rAv/x2$x'K rɊ>o.2$P_qGT12$twT4#eF3$2$ 9fsBpB62$X+  TCZk92$!fO$#cu2<2$@ cpΉEؔ)#>2$g]Et ZVKB 0e0e A@A5%8c8c     ?1d0u0@Ty2 NP'p<'p@A)BCD|E?@89 : z oO ʚ;5q8ʚ;g4fdfdP T0jppp@ <4!d!d8!0lv<4dddd8!0lv<4BdBd8!0lv h___PPT2001D<4X ___PPTMac11 @f   hnamd` Arial&Monotype Typography    hnamd` Arial&Monotype Typography    hnamd` Arial&Monotype Typography    hnamd` Arial&Monotype Typography    hnamd` Arial&Monotype Typography  ,namd$ Times Romant   hnamd` Arial&Monotype Typography   x   x     hnamd` Arial&Monotype Typography  9___PPT10 pp66___PPT9$'/ / 15BCGJ?\-26/7/2006 .Programmation dynamiqueO =A#Module 6 : Programmation dynamique$$( $ Plan du module De l efficacit d algorithmes Algorithme de somme minimum Programmation dynamique Nombres de Fibonacci Problme du partitionnement Plus longue squence croissante Multiplication de matrices Plus longue sous-suite commune Problme 10131tZZZZZ  Algorithme de somme minimum(  Soit un tableau t[0..n-1] d entiers de longueur n. Une section de t[0..n-1] est le sous-tableau t[i..j] avec 0 d" id"j <n. Soit Si,j la somme des lments de la section (i,j). Le problme de la section de somme minimum est le suivant : Soit un tableau t[0..n-1] de longueur n, calculez la valeur Si,j minimum pour le tableau t.\o" "  *  "  * , " <<"*"*"F Algorithme de somme minimum(  Premire approche Concevoir un algorithme qui calcule Si,j pour i et j fixs Utiliser le programme dvelopp au point prcdent pour tous les couples (i,j) possibles et conserver la valeur minimum trouve.f$ ( ( 86    Algorithme de somme minimum(  B smin := t[0]; i := 0; WHILE i  Algorithme de somme minimum(   smin := t[0]; smin_k := t[0]; k := 1; WHILE k<>n DO BEGIN smin_k := minimum(smin_k+t[k],t[k]); smin := minimum(smin,smin_k); k := k+1 END; somme_minimale := sminnP  Conclusion   TUn algorithme peut souvent/parfois tre amlior de manire tout fait notable.T  !Nombres de Fibonacci  ~F(n) = F(n  1) + F(n  2) pour n > 1 F(0) = 0 F(1) = 1 (@? $Nombres de Fibonacci  FUNCTION fibonacci(n : integer) : longint; BEGIN IF n = 0 THEN fibonacci := 0 ELSE IF n = 1 THEN fibonacci := 1 ELSE fibonacci := fibonacci(n-1)+fibonacci(n-2) END; 0n*    "Nombres de Fibonacci  Cette faon de faire est trs peu intressante car les mmes valeurs sont recalcules sans cesse On peut montrer que pour calculer F(n) le nombre d appels de fonctions dpasse 1.6n Complexit exponentielle ! $  %Nombres de Fibonacci  tAmlioration : On peut calculer F(n) en un temps linaire en mmorisant des valeurs dj calcules et ncessaires aux calculs suivants On perd de l espace mmoire, mais on gagne du temps&= t  &Nombres de Fibonacci  )F0=0 F1=1 FOR i:=2 TO n DO Fi= Fi-1+Fi-2 p))  'Nombres de Fibonacci   IF n = 0 THEN fibonacci := 0 ELSE IF n = 1 THEN fibonacci := 1 ELSE BEGIN twoback := 0; oneback := 1; FOR i := 2 TO n DO BEGIN current := oneback+twoback; twoback := oneback; oneback := current END; fibonacci := current END(nP   #Programmation dynamique  tLa programmation dynamique est une technique dans laquelle on mmorise des rsultats dj obtenus et qu on rutilise pour trouver de nouveaux rsultats, gnralement sur des rcurrences   (Problme du partitionnement  Exemple : On a neuf livres qui ont respectivement 100, 200, 300& 900 pages. Trois personnes doivent scanner ces livres. Comment effectuer la rpartition de manire ce que chacun des trois ait peu prs le mme nombre de pages traiter?  )Problme du partitionnement  fSoit un arrangement S de nombres non-ngatifs s1& sn et un entier k. Le but est de partitionner S en k parties de manire minimiser la somme des valeurs de chacune des k parties.@/  +Problme du partitionnement  Il s agit de placer k-1 sparateurs pour obtenir les k parties. O placer le dernier sparateur ? Entre le ime et le (i+1)me lment de S Quel est le cot de cette opration? Le maximum entre le cot de la dernire partie le cot de la plus grande partie gauche de ijbZ*Z%ZZMZb*%M   *Problme du partitionnement  Quel est le cot de la plus grande partie gauche de i ? Il suffit de placer les k-2 sparateurs restants optimalement sur la partie s1& si On est en prsence du problme de dpart mais sur une instance plus petite Solution rcursive !\:S`: M` ,Problme du partitionnement  Solution rcursive exhaustive: Soit M[n,k] le cot minimum du partitionnement de s1& sn en k partiesRE3 c  -Problme du partitionnement  jDsavantage : temps de calcul exponentiel puisqu on recalcule tout le temps les mmes valeurs Solution: Stocker les valeurs dj calcules Ncessite un tableau de k fois n lmentsLP MP M  .Problme du partitionnement  .Optimisation: Pour acclrer les calculs, on se donne un tableau d aide p[1..n] avec et : ce qui permet de calculer plus rapidement la rcurrence6GC  /Problme du partitionnement   { compute prefix sums } p[0] := 0; FOR i := 1 TO n DO p[i] := p[i-1] + s[i]; { initialize boundary conditions } FOR i := 1 TO n DO m[i,1] := p[i]; FOR i := 1 TO k DO m[1,i] := s[1]; FOR i := 1 TO n DO FOR j := 1 TO k DO d[i,j] := -1; nP   FOR i := 2 TO n DO FOR j := 2 TO k DO BEGIN m[i,j] := maxint; FOR x := 1 TO i-1 DO BEGIN t := max(m[x,j-1],p[i]-p[x]); IF t < m[i,j] THEN BEGIN m[i,j] := t; d[i,j] := x END END END; nP 0Problme du partitionnement  `En fait l algorithme ncessite une deuxime matrice qui mmorise l endroit o les sparateurs sont placs. Le chemin se construit l envers l aide d une procdure rcursive.  1Problme du partitionnement  PROCEDURE reconstructPartition(n,k: integer); VAR i : integer; BEGIN IF k = 1 THEN FOR i := 1 TO n DO write(s[i]:4) ELSE BEGIN reconstructPartition(d[n,k],k-1); write('|'); FOR i := d[n,k]+1 TO n DO write(s[i]:4) END END;nP 2Problme du partitionnement  Voici le rsultat du problme de dpart 100 200 300 400 500 600 700 800 900 100 100 100 ---- -1 -1 -1 300 200 200 ---- -1 1 1 600 300 300 ---- -1 2 2 1000 600 400 ---- -1 3 3 1500 900 600 ---- -1 3 4 2100 1100 900 ---- -1 4 5 2800 1500 1100 ---- -1 5 6 3600 2100 1500 ---- -1 5 6 4500 2400 1700 ---- -1 6 7 100 200 300 400 500| 600 700| 800 900J(ZZ(1K''  3Plus longue squence croissante (  But : trouver une plus longue squence croissante dans une squence de n nombres. Attention : les lments slectionns ne doivent pas ncessairement tre conscutifs! Exemple : 9 5 2 8 7 3 1 6 4 PLSC : 3 2 3 4 ou 2 3 6  4Plus longue squence croissante (  "Que faut-il connatre sur les n-1 premiers lements de la squence pour pouvoir donner la rponse pour l entiret de la squence des n lments?  5Plus longue squence croissante (  La longueur de la plus grande squence dans s1, s2& sn-1 La longueur de la plus grande squence se terminant avec sn !`wn-:v  6Plus longue squence croissante (  SSoit li la longueur de la plus longue squence se terminant avec le ime caractre $TMS  7Plus longue squence croissante (  2Comment calculer li ? Longueur de la PLSC: :2  8Plus longue squence croissante (  ATemps de calcul ? Proportionnel n2 Peut tre amlior en nlg(n)&B#A  9Multiplication de matrices  On cherche effectuer un produit de matrices de rels M1 x M2 x & Mn Mi comporte pi-1 lignes et pi colonnes Le nombre de multiplications relles doit tre minimal (la multiplication de 2 matrices se fait de manire usuelle)~8  ~  :Multiplication de matrices  Exemple : M1(50x10) M2(10x20) M3(20x5) Comme la multiplication matricielle est associative, il faut trouver la faon optimale d effectuer les multiplications (M1M2)M3 50020 + 50205 = 15000 M1(M2M3) 10205 + 50105 = 3500  wF   w    $ $ ((((((((((((((((((, ,004 488< <            <Multiplication de matrices  BSoit m(i, j) le nombre minimal de multiplications relles ncessaires au calcul de Mi x Mi+1 x & Mj Soit (Mi & Mk) x (Mk+1 & Mj) un parenthsage optimal, alors :T#  =Multiplication de matrices  Solution rcursive :   ;Multiplication de matrices  La solution qui consiste explorer toutes les possibilits est rejeter car cela donne un algorithme de complexit exponentielle. Mieux : stocker les valeurs m[i,j] au fur et mesure dans un tableau bi-dimensionnel, en fait une matrice triangulaire suprieure  >Multiplication de matrices  yPour notre exemple, M aura les valeurs suivantes : 0 10000 3500 0 0 1000 0 0 03Gz3 G ?Multiplication de matrices  Pour les matrices M1& M6 de dimensions respectives 6, 12, 20, 3, 10, 5, 18 Solution : ((1*(2*3))*((4*5)*6))JU>k BMultiplication de matrices  ^ FOR i := 1 TO n DO m[i,i] := 0; FOR l := 2 TO n DO FOR i := 1 TO n-l+1 DO BEGIN j := i+l-1; m[i,j] := maxint; FOR k := i TO j-1 DO BEGIN q := m[i,k]+m[k+1,j] + p[i-1]*p[k]*p[j]; IF q < m[i,j] THEN BEGIN m[i,j] := q; s[i,j] := k END END END;_nP__ AMultiplication de matrices  Pour afficher le parenthsage optimal, il suffit d effectuer un parcours rcursif dans la matrice m.d  CMultiplication de matrices   PROCEDURE print_matrix_chain_multiply(i,j : integer); BEGIN IF j > i THEN BEGIN write('('); print_matrix_chain_multiply(i,s[i,j]); write('*'); print_matrix_chain_multiply(s[i,j]+1,j); write(')') END ELSE write(i) END;nP @Plus longue sous-suite commune(  4Une sous-suite d une suite est la suite en question dont ventuellement certains lments sont manquants. Exemple : BCDB est une sous-suite de la suite ABCBDAB Soit deux suites X et Y. On appelle sous-suite commune une suite qui est sous-suite de X et de Y Exemple : X = ABCBDAB Y=BDCABA BCA est une sous-suite commune X et Y alors que BCBA et BDAB sont deux sous-suites les plus longues communes X et Y.!ZzZ!z8 ! y  DPlus longue sous-suite commune(  Calculer la PLSSC de deux suites par la force brute n est pas praticable d au nombre exponentiel de possibilits.r  EPlus longue sous-suite commune(  Soit Xi = x1x2& xi le ime prfixe de X=x1x2..xm Soit c[i,j] la longueur de la PLSSC de Xi et Y j. Si xi `" yj alors la PLSSC ne peut inclure la fois xi et yj. Donc elle doit tre soit une PLSSC de x1x2& xi-1 et y1y2& yj une PLSSC de x1x2& xi et y1y2& yj-1 jZDZZ( *   FPlus longue sous-suite commune(  *Si i ou j vaut 0, alors c[i,j] = 0. Si xi = yj et i,j >0, alors c[i,j] = c[i-1,j-1]+1 Si xi `" yj et i,j >0, alors C[i,j] = max(c[i,j-1], c[i-1,j]) r#(+ 5  GPlus longue sous-suite commune(    FOR i := 0 TO m DO c[i,0] := 0; FOR j := 0 TO n DO c[0,j] := 0; FOR i := 1 TO m DO FOR j := 1 TO n DO IF x[i] = y[j] THEN BEGIN c[i,j] := c[i-1,j-1]+1; b[i,j] := upleft END ELSE IF c[i-1,j] >= c[i,j-1] THEN BEGIN c[i,j] := c[i-1,j]; b[i,j] := up END ELSE BEGIN c[i,j] := c[i,j-1]; b[i,j] := left END; lcs := c[m,n] nP   HPlus longue sous-suite commune(  tL affichage du rsultat (la sous-suite commune) se fait l aide d un parcours rcursif dans le tableau d aide B deux entres (pour X et pour Y) rempli des valeurs (left, up, upleft).   IPlus longue sous-suite commune(  8 B D C A B A 0 0 0 0 0 0 A 0 0U 0U 0U 1\ 1L 1\ B 0 1\ 1L 1L 1U 2\ 2L C 0 1U 1U 2\ 2L 2U 2U B 0 1\ 1U 2U 2U 3\ 3L D 0 1U 2\ 2U 2U 3U 3U A 0 1U 2U 2U 3\ 3U 4\ B 0 1\ 2U 2U 3U 4\ 4U9P  % ! 8 1 JPlus longue sous-suite commune(  VPROCEDURE print_lcs(s : string200; i,j : integer); BEGIN IF (i<>0) AND (j<>0) THEN IF b[i,j] = upleft THEN BEGIN print_lcs(s,i-1,j-1); write(s[i]) END ELSE IF b[i,j] = up THEN print_lcs(s,i-1,j) ELSE print_lcs(s,i,j-1) END;WnPWW Problme 10131  Some people think that the bigger an elephant is, the smarter it is. To disprove this, you want to take the data on a collection of elephants and put as large a subset of this data as possible into a sequence so that the weights are increasing, but the IQ's are decreasing. The input will consist of data for a bunch of elephants, one elephant per line, terminated by the end-of-file. The data for a particular elephant will consist of a pair of integers: the first representing its size in kilograms and the second representing its IQ in hundredths of IQ points. Both integers are between 1 and 10000. The data will contain information for at most 1000 elephants. Two elephants may have the same weight, the same IQ, or even the same weight and IQ. P Problme 10131  Say that the numbers on the i-th data line are W[i] and S[i]. Your program should output a sequence of lines of data; the first line should contain a number n; the remaining n lines should each contain a single positive integer (each one representing an elephant). If these n integers are a[1], a[2],..., a[n] then it must be the case that W[a[1]] < W[a[2]] < ... < W[a[n]] and S[a[1]] > S[a[2]] > ... > S[a[n]] In order for the answer to be correct, n should be as large as possible. All inequalities are strict: weights must be strictly increasing, and IQs must be strictly decreasing. There may be many correct outputs for a given input, your program only needs to find one.P Problme 10131  gSample Input 6008 1300 6000 2100 500 2000 1000 4000 1100 3000 6000 2000 8000 1400 6000 1200 2000 1900 hPhh  Sample Output 4 4 5 9 7 $PP ^ 0` 33PP` 3333` ___MMM` 13` 333fpKNāvI` j@v۩ῑ΂H` Q_{>?" dd@,?n<d@ `7 `2@`7``2 n?" dd@   @@``PR    @ ` ` p>>   . (    <P" @   T(d" @   <\"U_ @   Td">& @   N"P @   <"p @   S ~?d?"" @   6x "U  T Click to edit Master title style! !$  0P "   RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S  6\ "@  P*   6h  "@`   R*   6P "`  R* `  C *ALogo CIL"`PB  s *޽h ? 3333  Blends   0 S K  (  ZZ P@ # "Dwoh  s *"PP  Bd" P@ZZ P 0  # "Nyh  s *"P    Bd"P 0 x   B" a*f   0"   <X ?"pP  T Click to edit Master title style! !   08 " `    W#Click to edit Master subtitle style$ $  6 "`p   T*   6 "`p   V*   6 "`  V*   S ~?d?" %& @ `  C *ALogo CIL"`PB  s *޽h ? 3333 0 `(    0dv P   v T*    0Hev    v V*  d  c $ ?  v  0lv  0 v RClick to edit Master text styles Second level Third level Fourth level Fifth level!    S   6]v _P  v T*    6 pv _  v V*  H  0޽h ? 3380___PPT10.P%\w 0 0|( d |l | C  pP  r | S p  `    H | 0޽h ? 3333___PPT10i.r'+D=' = @B +}  0 $(  r  S ( U   r  S     H  0޽h ? 3333___PPT10i.ALB+D=' = @B +}  0  $(  r  S  " U   r  S h    H  0޽h ? 3333___PPT10i.]+D=' = @B +  0  0(  x  c $] U   x  c $^    H  0޽h ? 3333___PPT10i.]+D=' = @B +  0  C(  x  c $s U   x  c $h       T ?? Y  Complexit proportionnelle n3(   H  0޽h ? 3333___PPT10i.]+D=' = @B +  0 0 0(  x  c $t U   x  c $Щ    H  0޽h ? 3333___PPT10i.]+D=' = @B +  0 @ S(  x  c $@ U     c $    0   T  ?? Y  Complexit proportionnelle n2(   H  0޽h ? 3333___PPT10i.]+D=' = @B +   0   P  (  x  c $ U     S 4     " r  S  7      Z ??pB  ZD??P %    ` ??Y U0     ` ??@ Wn-1     ` ??  Wk-1     `l ??  Uk     `t ??`-G Ut  B  # lD8c?? B  # lD8c?? H  0޽h ? 3333___PPT10i.]+D=' = @B +H  0 `  \(   x   c $ U      c $  <$0  H   0޽h ? 3333$___PPT10.]+[W_D' = @B DS' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<* {%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<* {%(+8+0+ 0 +H  0  (\(  (x ( c $ a U  a  ( c $T a  <$0 a H ( 0޽h ? 3333$___PPT10.]+[W_D' = @B DS' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*(&%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*(&?%(+8+0+(0 +  0  ,X(  ,x , c $ a U  a  , c $ a   a "P@08X  , TTa ??"~   Complexit proportionnelle n(  H , 0޽h ? 3333___PPT10i.]+D=' = @B +}  0  0$(  0r 0 S %a U  a r 0 S %a   a H 0 0޽h ? 3333___PPT10i.)e}}+D=' = @B +  0  80(  8x 8 c $(1a U  a x 8 c $2a   a H 8 0޽h ? 3333___PPT10i.)-=+D=' = @B +  0 P HF(  Hx H c $7a U  a  H c $8a   a "P@08XH H 0޽h ? 3333___PPT10i.)-=+D=' = @B +c 0 zr 4 (  4 4 S Na   a "  4 c $/a SU  a LNombres de Fibonacci   4 LA ?ch1-Z-G-13"!H 4 0޽h ? 3333___PPT10i.)-=+D=' = @B +  0  <0(  <x < c $\a U  a x < c $@]a   a H < 0޽h ? 3333___PPT10i.)-=+D=' = @B +  0 ` L0(  Lx L c $ea U  a x L c $ea   a H L 0޽h ? 3333___PPT10i.)-=+D=' = @B +  0 p PB(  Px P c $oa U  a x P c $;a   a   P Tpa ??"~   Complexit proportionnelle n(  H P 0޽h ? 3333___PPT10i.)-=+D=' = @B +  0  T0(  Tx T c $0ya U  a x T c $ya   a H T 0޽h ? 3333___PPT10i.)-=+D=' = @B +  0 0 @0(  @x @ c $Āa U  a x @ c $a   a H @ 0޽h ? 3333___PPT10i.)-=+D=' = @B +}  0  X$(  Xr X S \a U  a r X S (a   a H X 0޽h ? 3333___PPT10i.3iO+D=' = @B +  0  \0(  \x \ c $@{a U  a x \ c $\_a   a H \ 0޽h ? 3333___PPT10i.3iO+D=' = @B +1  0 H@ d(  dx d c $a U  a ~ d s *a   a  d0 NA ? ? s &   aH d 0޽h ? 3333___PPT10i.3iO+D=' = @B +  0  `0(  `x ` c $xa U  a x ` c $a   a H ` 0޽h ? 3333___PPT10i.3iO+D=' = @B +7  0 NF h(  hx h c $a U  a ~ h s *a   a  h0 TA *? ?  : * aH h 0޽h ? 3333___PPT10i.3iO+D=' = @B +  0  l0(  lx l c $a U  a x l c $a   a H l 0޽h ? 3333___PPT10i.3iO+D=' = @B +  0  p(  px p c $Ta U  a ~ p s *4a   a  p0 TA  ? ? z {   a p0 TA ? ? 6 -   aH p 0޽h ? 3333___PPT10i.3iO+D=' = @B +=  0 TL t(  tx t c $a U  a  t s *a 7I  a 0 t S ,a   a 0  t Ta ?? G#   Complexit proportionnelle kn2(!   H t 0޽h ? 3333___PPT10i.3iO+D=' = @B +  0 0 0(  x  c $m U  m x  c $m   m H  0޽h ? 3333___PPT10i.3iO+D=' = @B +  0 @ F(  x  c $m U  m   c $*m   m "  @H  0޽h ? 3333___PPT10i.3iO+D=' = @B +9  0 PHP  (  x  c $> U   x  c $H      Z ??J   Z ??p9 B   fD??v vB   fD??v# CvB   fD??vpv    `ȟ ??% :&  UM      `\ ??S p:  UD  H  0޽h ? 3333___PPT10i.3iO+D=' = @B +}  0  $(  r  S 2m U  m r  S dm   m H  0޽h ? 3333___PPT10i. +D=' = @B +  0  0(  x  c $@.m U  m x  c $x   m H  0޽h ? 3333___PPT10i. +D=' = @B +^  0  r(  x  c $(Am U  m   c $Jm  <$0 m "p`PpH  0޽h ? 3333$___PPT10. +[W_D' = @B DS' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*9%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*9w%(+8+0+0 +/  0 6... 1-(  x  c $[m U  m ~  s *\\m    m , dS L   #"kGS dL  m+  C xm_ж_ж ??"`7 L  m6   @`+  C x bm_ж_ж ??"` 7L  m6   @`+  C xqm_ж_ж ??"` L  m-   @`+  C xym_ж_ж ??"`h L  m3   @`+  C xm_ж_ж ??"`  hL  m2   @`+  C x8m_ж_ж ??"`5  L  m2   @`+  C xؓm_ж_ж ??"`  5 L  m-   @`+  C xxm_ж_ж ??"` L  m-   @`+  C x̤m_ж_ж ??"`f L  m-   @`   `Tm ??d fL  x Prdcesseur      @`+  C xm_ж_ж ??"`7   m3   @`+  C x(m_ж_ж ??"`7S   m4   @`+  C xm_ж_ж ??"` 7  m3   @`+  C xXm_ж_ж ??"`S 7  m6   @`+  C xm_ж_ж ??"`   m1   @`+  C xm_ж_ж ??"`S   m1   @`+  C x8m_ж_ж ??"`h   m2   @`+ } C xm_ж_ж ??"`hS   m3   @`+ z C xxm_ж_ж ??"` h  m2   @`+ x C xln_ж_ж ??"` S h  m7   @`+ u C x n_ж_ж ??"`5   m2   @`+ s C xn_ж_ж ??"`5 S  m8   @`+ p C xln_ж_ж ??"` 5   m1   @`+ n C x,n_ж_ж ??"` S 5  m2   @`+ k C x4n_ж_ж ??"`   m1   @`+ i C x=n_ж_ж ??"`S  m5   @`+ @ C x6n_ж_ж ??"`f   m1   @` ?  `@n ??d f   Longueur li"       @`+ 6 C xTZn_ж_ж ??"`fS   m9   @`  5  `4^n ??dS f  tSquence     @`B I Zo ??dS S B J T1 ??d  B K Zo ??dL L B L Zo ??dS dL B M T1 ??fS fL B V Zo ??S L B j T1 ??S L B o T1 ?? S L B t T1 ??5 S 5 L B y T1 ?? S L B ~ T1 ??hS hL B  T1 ??S L B  T1 ??S L B  T1 ??7S 7L B  T1 ??d  H  0޽h ? 3333___PPT10i. +D=' = @B +b  0 nf (  x  c $>n U  n   s *n  <$0 n  0 NA ,? ? 2 H ,$D0 n 0 NA ? ? ) )H $D0 nH  0޽h ? 3333  ___PPT10t . ++ڲD ' = @B D ' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*2%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(+8+0+0 +   0  \(  x  c $n U  n   c $n  <$0 n H  0޽h ? 3333me___PPT10E. +[W_D' = @B D' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%B%(+8+0+0 +}  0 P $(  r  S ȓn U  n r  S $n   n H  0޽h ? 3333___PPT10i.+D=' = @B +  0 ` 0(  x  c $Hn U  n x  c $ n   n H  0޽h ? 3333___PPT10i.+D=' = @B +X   0  0(  x  c $+B#style.visibility<*d%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*d%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(+8+0+0 +h  0 zr  (  x  c $n U  n ~  s *įn   n  0 TA ? ?  H $D0 nH  0޽h ? 3333___PPT10n.+|3DB' = @B D' = @BA?%,( < +O%,( < +D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(+  0 p 0(  x  c $n U  n x  c $(n   n H  0޽h ? 3333___PPT10i.+D=' = @B +~  0  %(  x  c $n U  n x  c $n   n B   `D??    `xn ?? xl  U1  B   `D??2}    `n ??2 g   U2     `n ?? G  cOrdre de calcul  H  0޽h ? 3333___PPT10i.+D=' = @B +7  0 66 @T =6(   x   c $n U  n ~   s *hn T  n z-    I  #"* s2 n (  Zn??yg  m0   @` '  Zn ??g y m0   @` &  ZLn ??Yg  m0   @` %  ZDs ??g Y m0   @` $  Z s ??9g  m0   @` #  Zs ?? g 9 m0   @` "  Zps??y g  o900   @` !  Z$s?? yg  m0   @`   ZP.s ??Y g  m0   @`   Z7s ?? Yg  m0   @`   Z@s ??9 g  m0   @`   ZLJs ?? 9g  m0   @`   ZSs??y   o420   @`   Z\s?? y  o150   @`   Zlfs??Y   m0   @`   Zps ?? Y  m0   @`   Zxs ??9   m0   @`   ZHs ??  9  m0   @`   Zs??yW   p1500   @`   Zs??Wy  o450   @`   Z$s??YW  o600   @`   Zxs??WY  m0   @`   Ẕs ??9W  m0   @`   Z s ?? W9  m0   @`   Zts??y W p1788   @`   Zs??yW p1050   @`   Zs??YW p1080   @`   Zps??YW o720   @`   Zs??9W m0   @`   Zs ?? 9W m0   @`   Zls??y  p1680   @`   Zu??y p1176   @`   Zu??Y p1116   @`   Zu??Y o936   @`   Z`"u??9 p1440   @`   Zh+u?? 9 m0   @`B )  Zo ??  B *  T1 ??  B +  T1 ?? W WB ,  T1 ??   B -  T1 ??  B .  T1 ?? g g B /  Zo ??  B 0  Zo ??  B 1  T1 ??99B 2  T1 ??B 3  T1 ??YYB 4  T1 ??B 5  T1 ??yyB 6  Zo ??  B J   `D??P YI K   `l1u ?? Y Y1  B L   `D?? ,  M   `t6u ?? Yj  Y2  B N   `D??,  O   `;u ?? Y  Y3  B P   `D??,S  Q   `<@u ??% Y  Y4  B R   `D??, S   `HEu ??`YG Y5  H   0޽h ? 3333___PPT10i.+D=' = @B +  0 P=(  x  c $u U  u r  S \ u   u    Tn ??p W  Complexit proportionnelle n3(   H  0޽h ? 3333___PPT10i.+D=' = @B +  0 @0(  x  c $mu U  u x  c $mu   u H  0޽h ? 3333___PPT10i.+D=' = @B +  0 `Z(  x  c $@pu U  u   c $zu   u "(    `4~u ?? a  |(Appel : print_matrix_chain_multiply(1,n))) ! H  0޽h ? 3333___PPT10i.+D=' = @B +  0 00(  x  c $u U  u x  c $u   u H  0޽h ? 3333___PPT10i.+D=' = @B +  0 80(  8x 8 c $,u U  u x 8 c $u   u H 8 0޽h ? 3333___PPT10i.+D=' = @B +  0 <0(  <x < c $u U  u x < c $u   u H < 0޽h ? 3333___PPT10i.+D=' = @B +  0 @0(  @x @ c $u U  u x @ c $u   u H @ 0޽h ? 3333___PPT10i.+D=' = @B +  0 Dd(  Dx D c $u U  u x D c $pu   u , D Tu ??p W   Complexit proportionnelle mn0!4   H D 0޽h ? 3333___PPT10i.+D=' = @B +  0 H0(  Hx H c $u U  u x H c $|u   u H H 0޽h ? 3333___PPT10i.+D=' = @B +   0 ! L(  Lx L c $Du U  u x L c $u   u  L  `Pu ?? d@ Ydbut  B L  `D??H L 0޽h ? 3333___PPT10i.+D=' = @B +  0 0PF(  Px P c $u U  u  P c $u   u "  @H P 0޽h ? 3333___PPT10i.+D=' = @B +}  0 $(  r  S (v U  v r  S v   v H  0޽h ? 3333___PPT10i.ߤ@rs+D=' = @B +}  0 $(  r  S <v U  v r  S v   v H  0޽h ? 3333___PPT10i.ߤ@c+D=' = @B +  0   (  x  c $p(v U  v r  S H)v I  v r  S  *v   v H  0޽h ? 3333___PPT10i.ߤ@+D=' = @B +xXMhSAݗMyi- `VQC}UxbT_i6I ⥂x&xICU$V"xQCxqfn|F-R5o~;Օ5!Ov3 X`ctfj>[J!^Χe@w ctޖ1qe>HIvqgvyu !&!qN+?;+_A&Vč07R{(娦iӶHYZV~ߔ?=rϯWVup]HB/>d}b[,'+s)3TбP} Սu +xjRj*Պk5j *9V%O٫7.q>v2AĖbbAa5j9V}n~Ⱥ쿄iAch@mx.7tSǃlÓb ZצϼNrQ9A3I;#x4W?G7}%_72[\* 61k)Z6񜜅a=a`y}9Z/̕B-$i<3qbV/Ja< ~JMB\ daqQ)^߯3''onzwHWX$ ^g~܍JM'S0VEk7m]ݳ;f5=Z.Ff}hOfT4Cm!#C`0,}@Lm %H;6C3& f9î޺ g?'Tt^I'S(ܥ] 癊*?{ /ν~" fAumM~cp(21Is3Fjذ2;n OzwmĘB-en}˭S|;64x[LWܻ.< n+aժP"~.X ?PkcLiZcӤ6ibhUm4釤B/K=g;˾wQT;>ߞ[:>P :6Bf!r&@/MMOOӔqz+ =0 A0xlN&yȨYlKG^f d|=GD4`B;9(zp廏i>ˁĠv>nu/HCzpyQljOŔF !xg,ÏrHt>̭GE&;Xvt۝p~E=]?-Gj]`h 'oxXnQ[a6Q+hr#ph F3Ќ..焠&EC1tu_iڻBP#XwT]|,R=%'zqw#T@[Q0qYﭥ kRcTc%'A4x-r K473\*/R'5#9Y34qϴ}kglSm`[~IpOoĐG CY~lCDlgm<ӯ sCË!Eo9meBOO<|Dx t>7K#"xXKlEgv6!q#C)@.5)1nq&#Cr0R" .CP P !*!Pߝ?GHgη7ȣ# A* M9} o,FїJ%aK7hS / 6pC3WUi2{.|iȼ6|,فkA7uz_f.3uwa|(uwVU6 CL "n¸aWPk )ov=Ivhnƫ ߴ ͆o,+5 AC_^0TRj'mf|='Irmf|dd+ O%߰G\ځݢ/NzܠI{&tIbخ4 sҖ(i gLp*:D_ ן3dIGm2c%HK4elfY4zCٱXmufߔx׵2۰v"ᓋ}bt>nbW62X fU]`Ga`y8Kc6aBt8k(T}%( |Z bCSkR}1#u@S 㢥$J)IqL'-]Ccч>SSG}`iUJk⟡ACc6sz{Α9[O7NH^,A$Ʉ3#uyIsM ` |+j$V[LeI @V!vA*i]\'!d+5*\U ~Mh, ^85b^4~Pb$7k^ӳ 43>FS}~H>t2 sgЅ|CVVi=@gT:DUޯoC2C\/9Le0bߋ$#KHl`''wm_~dJ&3ȤxԔY嶪B߅ exߠߪu@o[%o4RRwKU<1]?Zzғ=eimN2Ou#PC19L d#,!gOnHygv4Ƒ#̓RZSiRr\grg(kX xXKPU>&y(PmU4ء3tH!X S.)BYLnp3.NMǙע¨Ӆ-?7/ t(I|o={^7׿_ N6PN`P62`KӞ38aYX6mL37 |[Ȫ=['|zMT Wl9A2 RlɶϘlՠ!:T@r(T>&'6~[%lVO!@;6}5*np-39EE) ʁ*3 30>#0O+No#BոRȌD*ς*}/~ɎfnuvT# ?2-)ެފa:!^Csxz +̐޶dg{׻a6WFOP3ɑ+ThVfЈAtU+"m9zFkPoCY.Ǯ?qj91RHcVu[+ΉkUY٢ݯ=idY>眃$_#X!]'|t,t#?$Z]to{!Ձt8zM]t's{c"ھT_4~H?xaGD}h ˒K~ā!EU>E EF) k<,2Ra7bː,4$Z.ɏLzXW$!9_p|aW؜]~>?rQ2nMĠnq^jK( RE3L-^5yQLF*e&e4LMsRF0BIY}"5)EAؐDTLMڿ=FC"x5O7=V!Gn)2wUeT|/&wd5Yw-/? OgϞ&&90:4֍@==} LG^^n>5Wc7GgYqhy}nևӳ<۬x#4#_cuC?_>Ef'X۽ڛ>7N#nx=qrmUu*~u5{fRYQVgrzf}sHXzNcgPWAVu =_Τ+F5p}}`7 4"ltϭmI[m#'Pb-Z0JFXXXXhf0V0V2V1ZmvFjZƃu [m1>x#2>8.N.'2>xiyolwecoc #Bz&xXMlU֛iZ')JAr:KH8T .uFIlJ+"DJ BE [U{رc;ǞݷٙY޶!NT342/-Z_2JQSMY/@BaS bziT,ç:|o)IdIΌ2(r ̂5!èvRIo@&`j 4L2=(_R?,kmz Kj܈M͠.UrqX^wPusO)sY9U-7> q a`C~yVk7(8_Vz #TO"2r?)FS ߎԘ('~vƍفN.䇐#A{go.C$1вRԽ'ljJZ~?F,i AKy/&itF|iLFOiqjI~]V3*WQl8 ~ \{R?z~Dҽgޅʞ{Der_TePO7>9MU(>U#Srxi붛? #eeȬPZ\vPL óhM4-ժTn ȺI~tPxVbze`Aȩ|r@ZꎽnonIg}=l*͊quw"xWMlE~3Ώ⟦nFZ*JMӊ MӤRl u;$j{ kRzD8VŜ1k@\Kv޼7ooZbOPAJ7t86nTٷ\TKVV89+@409 zSX=s;a!%1|9;?&#*u6d O'S7kvb듴0:JnLCB}T&ov 0Y)xnofHڏ vщ]zˎA+lp5}S_sܬi;*4} J>jS=7ܡH"; ״?*l,!d٠>s;~l;dg+\$F4as&/+&kD;53n㽅@ÁJc 9E(E {b5vȾnKJGyَ L"H ϰ+44F{ųMqeǤ!8ndh"==&| lѡߧ'Y1Rp$?PvlD%HHT*8qR={)BH=pqBRy̛ogywz4(WƐ+[RICthWg=3,~dPԘ c1Jiw)k? q[6{A]&jic!ڍWXEc:CaF=}Ҫ3h &u׀H2|yѿU[YWn/i h)e8'f8i>_|HasYQ9(gK,Ad]G+n19229rfb?|c&__hVdEڌLzgJtz*`8_8Ts|zSF*害 8,]J]4;GFk/iwn?`ymMs;Ź,@`~WFmSKfkΧ槣'0G~gxAp2Qb6~)Qq=Z>]<56Gq̸{F֦Fóf,<>Ẅv*5Ib-b1ׄ$OϠ>EL]N8n x51;h>3gi:i#%In[IU Oj:dJ=ԬUPP%G9)y[--pKb€{G5FiМf3oYa5OAF ,W4̻N;,,OxQfDNjl5m k *!%GCGnW߅u8z v%%zQK?ZT)%JJf̢cb]*x[LU;idBL0Ug(/5ٿ` x"Ю=ש44}u P}j] l/P7_#%tS:`a ?fzot/%g|@-}-,ꇤXM_b!|b+?|bEY&M {G LA#ՍLkiǯ~7LJ-07-[ csY~G2>e;z+8;qbU S-Pa'khO0fjs" tDS";jga3>없F/3xFBW|0OPpZzc$+5l@rA( tnl@ c/S܋mU`Vr3A;Pt¡&WҖe K"~1 ^+TvpuOXKHGȃ+RA9ZȚFYW2{\7N9):V(0t߈7:>Gğrg5E&ңĶ6GYTEMeECM%s$dZ$bQբ=LU.QZ434nۻap#?)&4#7QҸ)S"- ^s0fx>?&-&Cbϱt{,^maJdVkDniLx:Yl[;ۺb }Jwϴ <>\QrB֖a7LHȵu?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmopqrstuwxyz{|}Root EntrydO)PicturesFCurrent UservSummaryInformation(CUPowerPoint Document($`<DocumentSummaryInformation8n