Parcours n proondur t rcrc d crcuts. On s'ntérss dans c cours au prolèm suvant: étant donné un rap G ornté, dont on suppos qu l'on connat un sommt s duqul tous ls autrs sont accssls, on crc à savor s G comport un crcut. NB: A quo ça srt?par xmpl, s vous prnz un rap dont ls sommts rprésntnt ds tâcs t ls arcs ds contrants d précédnc: un arc (x,y) sn qu la tâc x dot êtr trmné avant qu y n puss commncr, détctr un crcut prmt d détctr un contradcton dans ls contrants. Détcton d crcut: un alortm na On a vu qu'un parcours à partr d'un sommt x prmttat d répondr à la quston suvant: Quls sont ls sommts accssls à partr d x par un cmn? Pour savor s un rap comport un crcut, on put s posr la quston suvant pour caqu arc (x,y) d G: xst-t-l un crcut passant par ct arc? Or un crcut passant par un arc (x,y) st composé d ct arc t d'un cmn d y à x. autrmnt dt, la quston : xst-t-l un crcut passant par (x,y)? put-êtr ramné à la quston: x st-l accssl à partr d y? On vot c apparaîtr l'éauc d'un alortm qu pourrat s'écrr ans: pour tout arc (x,y) d G Ectur un parcours à partr du sommt y. S x st vsté lors du parcours, alors G comport un crcut. Analysons la complxté dans l pr ds cas d ctt détcton d crcut: la oucl pour comport au maxmum m (nomr d'arcs) tératons. Pour cacun on ctu un parcours à partr d'un sommt (complxté O(m+n)). Par conséqunt, la complxté d ct alortm st n O(m 2 +mn) Nous allons vor par la sut qu l'on put ar aucoup mux. Parcours n proondur récurs Consdérons l'alortm d parcours n proondur récurs suvant, où G st un rap ornté, statut st un talau d sommt qu consrv l'état ds sommts (-1 pour lr, 0 pour ouvrt, 1 pour rmé) Intalmnt, tous ls sommts sont lrs, sau s sommt d départ du parcours. proondur (rap G, talau statut, sommt x) {pour tout succssur y d x statut[x]=1 } {s y st lr statut[y]=0 proondur (G,statut,y)}
Applcaton à un rap : a c d Parcours à partr d a: acd n rou: l'arorscnc du parcours a c d Analys d la complxté Supposons qu l rap st rprésnté à l'ad d lsts d'adacnc. On vut analysr la complxté d l'appl à proondur (G, statut,s). Pour cla, on rmarqu tout d'aord qu pour caqu sommt x, l n put y avor qu'un sul appl récurs à proondur(g,statut,x). En t, lorsqu'un appl récurs a lu, l sommt x pass d lr à ouvrt, t l n'y a amas dans l'alortm d canmnt d'état d'ouvrt ou d rmé vrs lr. A l'ntérur d caqu appl récurs, l y a un oucl qu parcourt ls succssurs d x t qu réals un tst à caqu os t évntullmnt un actaton. La complxté d cs opératons pour un appl à proondur(g, statut,x) st donc proportonnll au dré xtérur d x d+(x). La complxté total s'xprm donc comm l coût d appls d oncton ( O(n)) plus l coût ds autrs opératons qu st proportonnl à la somm pour tous ls sommts ds drés xtérurs, donc au nomr d'arcs m du rap. D'où un complxté n O(n+m). Typolo ds arcs. Supposons qu l'on a ctué un parcours n proondur d'un rap ornté G. C parcours va ndur un partton ds arcs d G n plusurs typs: 1) ls arcs d l'arorscnc du parcours A : ls arcs (x,y) tls qu proondur(g,statut,y) st applé dans la oucl d proondur(g,statut,x). 2) ls arcs dts «avant», qu sont d la orm (x,y) avc y dscndant d x dans A 3) ls arcs dts «arrèr» qu sont d la orm (x,y) avc x dscndant d y dans A 4) ls autrs arcs d G sont applés arcs transvrss. La ur suvant ndqu la typolo ds arcs sur l'xmpl précédnt:
a c d Typolo ds arcs: n rou arcs d l'arorscnc du parcours n aun arcs avant, n lu arcs transvrss t n vrt arcs arrèr Proprétés du parcours n proondur On suppos c qu'un parcours n proondur du rap a été ctué, t qu'l a condut à dénr un partton ds arcs d G slon la typolo précédnt. Proprété 1: S (x,y) st un arc avant ou un arc d l'arorscnc, alors l'appl à proondur(g,statut,y) a commncé après l'appl à proondur(g,statut,x) t s'st trmné avant la n d ct appl. On dt qu l'appl à proondur (G,statut,y) st mrqué dans l'appl à proondur(g,statut,y). Récproqumnt, s (x,y) st un arc d G t qu l'appl à proondur(g,statut,y) st mrqué dans l'appl à proondur(g,statut,x), alors (x,y) st un arc avant ou un arc d l'arorscnc. Pruv. Supposons qu (x,y) st un arc avant. Cla mplqu qu'l xst un cmn dans l'arorscnc du parcours d x à y. Sot x 0 =x,x 1,...x =y c cmn. Par dénton d l'arorscnc du parcours, pour tout, x a été ouvrt à partr d x -1, c'st à dr qu l'appl à proondur(g,statut,x ) a été at pndant l'appl à proondur(g,statut,x -1 ). Or, ls appls récurss étant nécssarmnt mrqués, on vot qu dans c cas proondur(g,statut,x ) s trmn avant proondur(g,statut,x -1 ). Par conséqunt proondur(g,statut,y) commnc après t s trmn avant proondur(g,statut,x). Récproqumnt, Supposons l'appl à proondur(g,statut,y) st mrqué dans proondur(g,statut,x). proondur(g,statut,y) a été applé à partr d'un xécuton d proondur(g,statut,y 1 ), qu a lu mêm été applé par un xécuton proondur(g,statut,y 2 )...usqu'à l'appl ntal proondur(g,statut,y ) avc y =x. Par dénton d l'arorscnc du parcours, y st un succssur d y+1 dans ctt arorscnc. On a donc n un cmn d y =x à y dans A. Proprété 2 S (x,y) st un arc arrèr, alors proondur(g,statut,x) st mrqué dans proondur(g,statut,y). Récproqumnt, s (x,y) st un arc t qu proondur(g,statut,x) st mrqué dans proondur(g,statut,y) alors (x,y) st un arc arrèr. Pruv: l rasonnmnt st dntqu.
Proprété 3 S (x,y) st un arc transvrs alors proondur(g,statut,y) s'st trmné avant l déut d l'appl à proondur(g,statut,x). Pruv : En vrtu ds dux proprétés précédnts, comm (x,y) n'st n avant n arrèr n un arc d l'arorscnc, l st mpossl qu ls dux appls à proondur(g,statut,y) t proondur(g,statut,x) sont mrqués. Sot z l sommt prdcssur d y dans l'arorscnc (c'st à dr l sommt tl qu proondur(g,statut,y) a été applé dans la oucl d proondur(g,statut,z)). S z n'xst pas, c'st qu y=s. Or tous ls appls récurss sont nécssarmnt mrqués dans proondur(g,statut,s) qu st l prmr. D'où un contradcton. Donc z xst. Et par constructon, pndant la oucl d proondur(g,statut,z), on a un appl récurs à proondur(g,statut,y) parc qu y st lr. Lorsqu proondur(g,statut,x) s trmn, par dénton d l'alortm, aucun d ss succssurs n put plus êtr lr. Par conséqunt, comm y st un succssur d x, l st mpossl qu proondur(g,statut,x) sot trmné lorsqu proondur(g,statut,y) st lancé. Comm ls dux appls n sont pas mrqués, c'st qu proondur(g,statut,x) commnc après la n d proondur(g,statut,y). Crcuts t typolo ds arcs. Ds proprétés précédnts on dédut un proprété ondamntal: Proprété 4 L rap G comport un crcut s t sulmnt s, après un parcours n proondur, G possèd au mons un arc arrèr. Pruv : Il st assz évdnt qu s G possèd un arc arrèr (x,y) alors l comport un crcut. En t, comm x st un dscndant d y dans l'arorscnc du parcours, on a un cmn d y à x dans G, qu orm un crcut lorsqu'on l complèt par l'arc (x,y). Récproqumnt, supposons qu G n'a aucun arc arrèr lors d'un parcours n proondur. Cla mplqu qu tous ss arcs sont sot ds arcs d l'arorscnc, sot avant sot transvrs. D'après ls proprétés 1 t 3, un arc (x,y) qu n'st pas arrèr vér qu lors d l'alortm, proondur(g,statut,y) st trmné avant qu proondur(g,statut,x) n s trmn. Dans l prmr cas ls dux appls sont mrqués dans l scond (transvrs) l n l sont pas. Supposons mantnant qu G possèd un crcut x 1,...x. On sat donc qu : proondur(g,statut,x ) s trmn avant proondur(g,statut,x -1 ),... qu s trmn avant proondur(g,statut, x 1 ). Or l crcut comport un arc (x,x 1 ), qu mplqu qu proondur(g,statut,x 1 ) s trmn avant proondur(g,statut,x ). D'où un contradcton. Alortm d détcton d crcut Ctt proprété ssntll prmt d'utlsr l parcours n proondur pour détctr la présnc d'un crcut dans un rap. En t, pour détctr un crcut, l sut d détctr la présnc d'un arc
arrèr (X,Y). La proprété 2 nous dt qu lors du parcours, l'appl à proondur(g,statut,x) st mrqué dans l'appl à proondur(g,statut,y). Or au cours d l'appl à proondur(g,statut,x), on va parcourr tous ls succssurs d X. l sommt Y s'y trouvra nécssarmnt. On dot donc trouvr un moyn d savor, à c stad, s l'appl à proondur(g,statut,y) st commncé t pas ncor trmné. Or s l'on osrv l talau statut, pour tout sommt x, statut[x] vaut -1 lorsqu l'appl à proondur(g,statut,x) n'st pas commnçé, 0 lorsqu'l commnc t 1 lorsqu'l s trmn. Par conséqunt l contnt tout l'normaton nécssar. On n dédut l'alortm suvant, sous orm d'un oncton qu rtourn 1 s'l y a un crcut dans l sous rap ds sommts accssls à partr d s 0 snon. L'ntalsaton st la mêm qu précédmmnt (tous sommts lrs sau s ouvrt). Entr crcut (rap G, talau statut, sommt x) {ntr r pour tout succssur y d x statut[x]=1 rtournr 0 } {s y st lr statut[y]=0 r=crcut (G,statut,y) s r=1 rtournr 1 snon s statut[y]=0 rtournr 1} Pour l'xmpl: a c d statut[a]=0 Crcut(G,statut,a) lr: statut[]=0 crcut(g,statut,) c lr: statut[c]=0 crcut(g,statut,c) d lr: statut[d]=0 crcut(g,statut,d) lr: statut[]=0 crcut(g,statut,) lr: statut[]=0 crcut(g,statut,) d succ d pas lr t statut[d]=0 rtourn 1 crcut(g,statut,)=1 crcut(g,statut,d)=1 crcut(g,statut,c)=1 crcut(g,statut,)=1 Crcut(G,statut,a)=1 Notz qu la complxté d ct alortm st ncané par rapport au parcours précédnt: on aout ust un tst t un actaton par succssur au maxmum. O(n+m). On rmarqu qu c'st consdéralmnt mux qu l'alortm na.
Graps sans crcut Nous allons vor qu ct alortm d détcton d crcut put êtr éalmnt utlsé pour travallr sur ls raps sans crcut. Sot G un rap sans crcut. On suppos qu ss sommts rprésntnt ds tâcs à ar t ss arcs ds rlatons d précédnc. On suppos éalmnt qu'un prsonn dot ar touts cs tâcs, t qu'll n put pas n ar plusurs à la os. Ell s dmand donc dans qul ordr ctur ls tâcs sans ntrr n contradcton avc ls contrants d précédnc. Numérotaton topoloqu Dénton: On appll numérotaton topoloqu d'un rap d n sommts un cton qu à caqu sommt x assoc un numéro N(x) dans {1,..n} d sort qu tous ls numéros sont dstncts t qu: pour tout arc (x,y) d G, N(x)<N(y) On put montrr qu'un rap sans crcut possèd touours un numérotaton topoloqu. En t: Proprété 4 Sot G un rap sans crcut. Alors G possèd un sommt sans succssur. Pruv S caqu sommt avat un succssur, alors n partant d'un sommt qulquonqu x1, on pourrat trouvr un succssur x2, qu lu-mêm aurat un sucssur x3,... Comm l rap n comport pas d crcut, on n pourrat pas avor x =x. Comm l n'y a qu'un nomr n d sommts, c'st mpossl. Proprété 5 Sot G un rap sans crcut. Alors G possèd un numérotaton topoloqu. Pruv Rasonnons par récurrnc sur l nomr d sommts d G. lorsqu n=1, l rap a un sommt s, pas d'arcs, t un numérotaton topoloqu: N(s)=1. Supposons qu la proprété st vra pour ls raps d n-1 sommts. Sot G un rap sans crcut d n sommts, t sot z un sommt sans succssur d G (qu xst d'après la proprété 4). L rap G' construt n rtrant l sommt x d G ans qu tous ss arcs ntrants st un rap d n-1 sommts sans crcut. Par ypotès d récurrnc, l possèd un numérotaton topoloqu N, qu assoc à caqu sommt un numéro ntr 1 t n-1. Etndons ctt numérotaton à G n posant N(z)=n. Consdérons mantnant un arc (x,y) d G. S ct arc st dans G', la numérotaton N vér N(x)<N(y). S ct arc n'st pas dans G', c'st qu y=z. Et comm N(x)<n=N(z), la proprété st véré.
Alortm na pour la numérotaton topoloqu. La proprété précdnt condut naturllmnt à dénr un alortm pour numérotr un rap sans crcut, qu put s'xprmr ans scématqumnt: num=n tant qu l rap G n'st pas vd cosr un sommt x sans succssur d G Posr N(x)=num num=num-1 rtrr x d G. Supposons qu l rap sot rprésnté à l'ad d lsts d'adacnc. Crcr un sommt sans succssur consst à parcourr la lst ds sommts usqu'à n trouvr un dont la lst d'adacnc st vd. Rtrr un sommt du rap consst à parcourr l rap n rtrant systématqumnt x d la lst d'adacnc ds sommts dont l st l succssur. Autrmnt dt, un tératon d la oucl tant qu a un complxté O(n+m). A caqu tératon on a un sommt d mons t qulqus arcs n mons éalmnt dans G. notons x 1,..x n ls sommts succssvmnt rtrés dans ls n tératons d la oucl. La prmèr tératon a un complxté n+m la scond un complxté n-1+m-d - (x 1 ) la trosèm n-2+m-d - (x 1 )-d - (x 2 )... la èm n-+1+m-d - (x 1 )...-d - (x -1 ). D'où un complxté, somm d précédnts d: n(n-1)/2+nm-(n-1)d - (x 1 )-(n-2)d - (x 2 )-...-d(x n-1 )=(n-1)/2+d - (x 1 )+2d - (x 2 )+..+(n-1)d(x n-1 ) On put n sur maorr ctt xprsson par n(n-1)/2+nm. En ranant un pu, pour évalur l pr ds cas on dot rardr quand l'xprsson d - (x 1 )+2d - (x 2 )+..+(n-1)d(x n-1 ) st la plus rand possl, sacant qu d - (x ) n- t qu la somm d cs drés st éal à m. On vot qu'on otnt un somm sur d (n-) (n(n-1)(2n-1))/6 = somm ds carrés ds ntrs usqu'à n-1, n(n-1)/2= somm ds ntrs usqu'à n-1 Donc somm ds (n-) usqu'à n-1= n(n-1) 2 /2-(n(n-1)(2n-1))/6 =n(n-1)(n-2)/6 En rmplaçant dans la prmèr xprsson, on vot qu l'ordr d randur d la complxté st O(n 3 ) Parcours n proondur t numérotaton topoloqu Rvnons sur l parcours n proondur étudé précédmmnt, n supposant qu G st sans crcut. Osrvons qu lorsqu l'on a un arc (x,y), l st sot dans l'arorscnc, sot avant sot transvrs, t qu dans cs tros cas l'appl à parcours(g,statut,y) s trmn avant la n d l'appl à parcours(g,statut,x).
Proprété 6: Consdérons ls sommts x dans l'ordr nvrs d trmnason d parcours(g,statut,x): s parcours(g,statut,x) st la èm trmnason d l'alortm, posons N(x)=n-+1. Alors N(x) st un numérotaton topoloqu du rap. Pruv: Sot (x,y) un arc, avc ctt dénton d la numérotaton, N(x)>N(y) équvaut à parcours(g,statut,x) s trmn avant parcours(g,statut,y), t nous avons vu qu c'état mpossl pour un arc du rap. Par conséqunt N(x)<N(y). Alortm d calcul d la numérotaton topoloqu d'un rap sans crcut. On dént c un alortm qu calcul un talau N n utlsant un varal loal tr, ntalsé à n avant l prmr appl: Intalmnt, tous ls sommts sont lrs, sau s sommt d départ du parcours. topoloqu (rap G, talau statut,n,sommt x) {pour tout succssur y d x statut[x]=1 N[x]=tr-- } {s y st lr statut[y]=0 topoloqu (G,statut,N,y)} A nouvau, on osrv qu la complxté d ct alortm st la mêm qu cll du parcours n proondur: on a ust aouté dux actatons par appl. D'où un O(n+m). L'xmpl suvant montr la numérotaton topoloqu calculé par l'alortm. En rou l'arorscnc du parcours. 1 a 4 3 c 2 5 d 8 9 7 6 10 11