MÄLARDALENS HÖGSKOLA 2002-06-29 INSTITUTIONEN FÖR DATATEKNIK KJELL POST Tetame CD370 Algoritmaalys, p 8 aug 2002 kl. 08.30 13.30 Tetame omfattar 6 uppgifter och totalt 3 poäg. För godkät krävs cirka 17 poäg. Avisigar 1. Alla svar skall motiveras och om förutsättigar sakas skall rimliga atagade göras. 2. Iga hjälpmedel tillåta förutom bifogad formelsamlig. 3. Uppgift 1 behöver ej lösas om du klarat kotrollskrivige. Jour: Kjell Post, 070-332779 Lösigsförslag kommer att fias på kurses hemsida efter tetame. Lycka till! Kjell
p 1. Följade algoritm är e divide-ad-coquer-metod för att hitta det största elemetet i e array S. De aropas med MAXIMUM. MAXIMUM x y 1. retur maximum i S x y 2. if y x 3. the retur max S x S y. else m MAXIMUM x x y. m MAXIMUM x y y 6. retur max m m 1p Låt T vara löptide för MAXIMUM. (a) Beskriv T med e rekursiosekvatio. T T för! samt T. (b) Lös rekursiosekvatioe exakt, uder atagadet att är e jäm tvåpotes. T. 1p (c) Uttryck T så ekelt som möjligt med hjälp av Θ. T Θ p 2. Neda följer ett atal påståede som atige är korrekta eller felaktiga. Om påståedet är korrekt, förklara kortfattat varför. Om påståedet är felaktigt, förklara varför och (om möjligt) korrigera svaret. Di motiverig påverkar poäge mer ä ditt beslut om rätt/fel. 1p (a) Betrakta e max-heap med två elemet x och y, där x befier sig på höjd k och y på höjd k. Ma ka då dra slutsatse att x" y. (Höjde för e lövod är#, meda höjde för rotode är Θ lg.) Nej, påståedet är ite sat för t ex x%$ och y'& i edaståede max-heap. ( ) * +, -. 2
1p 1p 1p (b) Både Prims algoritm (för att hitta ett miimalt uppspäade träd) och Dijkstras algoritm (för att hitta kortaste väge frå e od) är exempel på dyamiska algoritmer. Nej, båda är giriga. Dijkstras algoritm väljer ästa od geom att se vilke som har de kortaste käda väge, meda Prims algoritm väljer ästa båge som leder utaför MST med de mista kostade. (c) I bästa fallet har både Quicksort och Mergesort följade rekursiosformel, T/0213 T/ 3 06 Θ/780 där är storleke på sekvese som ska sorteras. Nej, Mergesort är e divide-ad-coquer-algoritm som delar upp problemet i två lika delar, löser dessa rekursivt och seda kombierar ihop resultate i lijär tid, dvs T/091:3 T/ 3 086. Quicksort får i bästa fallet e perfekt partitioerig som delar sekvese i två lika stora delar. Partitioerige sker alltid i lijär tid och resultatet blir äve här T/013 T/3 06. (d) E algoritm som tar O/ ;<0 tid i värsta fallet är alltid att föredra framför e algoritm som tar O/ =0 tid i värsta fallet. Nej, de ea algoritme ka t ex ta 7?> > > ; tid och därför bli slage av e algoritm som tar 7?> = tid för @A7?> >. p 3. Förutom sorterig är e heap mycket praktisk för att lagra e prioritetskö. E prioritetskö stöder som bekat följade operatioer. INSERT/ SB x0 stoppar i elemetet x i mägde S. MAXIMUM/ S0 returerar det största elemetet i S. EXTRACT-MAX/ S0 tar bort och returerar det största elemetet i S. Dr Drummel påstår sig ha utvecklat e y datastruktur för att lagra e prioritetskö som stöder operatioera INSERT, MAXIMUM och EXTRACT-MAX, alla i O/780 värsta tid. Visa att ha har fel. Ledtråd: ditt argumet behöver ite vara ivecklat, täk istället på vad has resultat skulle göra för sorterig. 3
Med Dr Drummels datastruktur skulle vi i så fall kua sortera e godtycklig array A CED F F F G i Θ H I med edaståede metod, vilket är e omöjlighet eftersom sorterig är Ω H lgi. SORTH ACEDJFF F GI 1. SK /0 2. for ikld to 3. do INSERTH SM AC igni. for ikld to. do prit EXTRACT-MAXH SI. Mediae för e sekves av värde är det OP :te mista värdet. Atag att Quicksort kude aväda mediae som pivot-elemet. Hur måga jämförelser skulle då ske, i värsta fallet? Med hjälp av mediae ka ma partitioera perfekt och få till ståd följade rekursiosformel som beskriver atalet jämförelser. TH IQRP THOP IS Lösige till formel är TH IQ ΘH lgi.
10p. Betrakta de riktade grafe eda. a b 6 8 c 7 9 e f 10 d 6 g 9 h (a) Bestämt ett miimalt uppspäade träd för grafe med hjälp av Prims algoritm. Börja i od a och visa i vilke ordig du väljer bågar!
MST visas i figure eda. Bågara valdes i följade ordig: at bu at fu f T gu f T hu bt cu ct eu bt dv a b 6 8 c 7 9 e f 10 d 6 g 9 h (b) Är väge mella två oder i ett miimalt uppspäade träd desamma som de kortaste väge mella de två odera i de fullstädiga grafe? Ge ett bevis eller motexempel. Nej, det är ite sat. MST för följade graf är W a T bu b T cx där väge frå a till c kostar Y?Z i MST, me bara Y?[ i de ursprugliga grafe. a b 10 8 c (c) Är det möjligt att e djupförstsökig av dea graf skulle kua producera bakåtbågar? Nej, för bakåtbågar idikerar cykler och dea graf är e DAG (riktad acyklisk graf). (d) Vad ka ma dra för slutsats om det ite fis bakåtbågar? Det fis iga cykler i grafe. 6
10p 6. Doktor Drummel ska (ågot förseat) skicka julkort till tjocka släkte. Till sitt förfogade har ha frimärke i följade valörer: d\ ]_^?` örea dbc]rd8` örea dec]f` öre Doktor Drummel vill gära miimera atalet frimärke som måste slickas. Därför öskar ha välja ut det mista atalet frimärke vars summa är N, där N är portot som ska betalas. (a) Beskriv e girig algoritm som löser problemet, uta att för de skull göra aspråk på att vara optimal. Aväd det största frimärket så mycket det går, fortsätt seda med det äst mista frimärket, osv. Låt d\hg g g d k vara de frimärke som står till förfogade, sorterat i ökade ordig. GREEDY-MAKE-CHANGE i N j 1. j k k 2. while N lm` 3. do while N d j. do N k No d j. prit d j 6. j k jop^ Dea algoritm loopar olyckligtvis om ite portot är e multipel av ^?`. 1p 7p (b) Visa med ett exempel (giva värde på N och frimärkes valörer) att de giriga strategi ite är optimal. För t ex 80 öre kommer de giriga strategi att returera f`rq ^?`rq^?`rq ^?` meda det optimala vored8`rqsd8`. (c) Aväd dyamisk programmerig för att formulera e e effektiv algoritm som bestämmer det mista atalet frimärke som krävs för N. Visa hur svaret i (b) förbättras med di lösig. (Ledtråd: aväd c tiq ju för att betecka atalet frimärke som krävs för att betala porto j, där edast frimärke f\rg g g f i aväds.) 7
Aväd e tabell cv w x xx kyzcx x x N{ med e rad för varje mytslag och e kolum för varje växelvärde fråz till N. Låt cv iy j{ vara det mista atal myt som behövs för att ge växel på j öre, där bara myt d }x x x d i aväds. Speciellt gäller då att cv ky N{ är lösige till problemet. Rekursiosekvatioe blir då cv iy j{ ~ mi cv i pw y j{ny w cv iy j d i {N där det första argumetet till mi betyder att myt d i ite aväds och det adra argumetet betyder att myt d i aväds. Då j d i ƒ z eller i ƒ w är det bekvämt att låta cv iy j{ ~ för att hidra mi att välja det alterativet. I ett traditioellt program är det mer praktiskt att testa om ågo av dessa fall iträffar, ia vi aväder rekursiosformel. DYN-MAKE-CHANGE N 1. for i w to k 2. do cv iyz {2 ˆz 3. for i w to k. do for j Lw to N. do if i~_w the cv iy j{2 Lw cv iy j d { 6. else if j ƒ d i the cv iy j{2 cv i pw y j{ 7. else cv iy j{2 mi cv i pw y j{nyw cv iy j d i {N 8. retur c v ky N{ Tidskomplexitete för dea algoritm är Θ k. För exemplet i (b) ova får vi följade tabell som säger att blott två frimärke behövs. 0 10 20 30 0 0 60 70 80 d J~Aw?z 0 1 2 3 6 7 8 dš ~mœ8z 0 1 2 3 1 2 3 2 d ~Žz 0 1 2 3 1 1 2 3 2 8
Formelsamlig för Algoritmaalys Kjell Post Istitutioe för Datatekik Mälardales Högskola PO Box 883, S 721 73 Västerås E-mail: kpt@mdh.se 1 Löptider Ett programs löptid defiieras som e fuktio T, där är ett mått på storleke av idata. Låt c I vara kostade för att köra ett program med idata I. best case: T mi c I I worst case: T max c I < I average case 1 : T š p I c I Iš där p I är saolikhete för att idata I förekommer. 2 Asymptotisk otatio œ f O g ž Ÿ c m ª «< œ f œ cg «f Ω g Ÿ c ± m ª «< 9 œ cg 9œ f f Θ g ² ³Ÿ c cµ< m ª «œ c g 9œ f œ cµ g ¹ f o g ² ³Ÿ f lim º» g f ω g ž Ÿ g o f ž Ÿ f lim º» g ½¼ 1 eller expected ruig time. 9
2.1 Ragordig ¾À lgá lg lg  RÃ Ä Rà  3 Räkelagar 3.1 Heltalsdel 1. xå ¾ÀÆÈÇ xé Æ xæèê xë Æ xì ¾ 2. Ê Í Ã Ë Ì Ç Í Ã É±Î 3. ÊÏÊ Í aë<í bë Î Ê Í abë Ð Ñ bôrò Õ. ÇÏÇ Í aé<í bé Î Ç Í abé Ð aîòró Ñ bôrò Õ 3.2 Expoeter 1. Ð a m Õ Î Ð a Õ m Î a m 2. a m a Î a mö 3. e x ¾ Ì x. ¾ Ì xæ e x Æ:¾ Ì xì xâ ÐÙØ xøïú ¾ Õ 3.3 Logaritmer För alla aôròró bôròró côrò samt : 1. log  eû ¾ ÜEÝ Ý 2. aî b log b a 3. log c Ð abõî log c aì log c b. log b a Î log b a. log b aî Ð log c aõí Ð log c bõ2î ¾ Í log a b 6. log b Ð ¾ Í aõîå log b a 7. a log b Î log b a 8. xí Ð ¾ Ì xõ Æ lð ¾ Ì xõ Æ x Ð x ÔRÅ ¾ Õ 9. lgþ iß om Îáà iîò lgð lgþ iâjãäß Õ om iôrò 10. lgá Î miå i Òçæ lgþ iß ÆA¾éè 10
ì ð 3. Fakultet 1. êë k kíjî 2. êëaï ð πñ ò eó ñsô õ Θñô<ò ó ó 3. êë oñ ó. êë ωñ ð ó. lgñ êöó ë Θñ lgó 3. Fiboacci-tal 1. F cëø8ù Fî ëaô<ù F i ë F iújî õ F iú2û för i ürð. φ 2. F i ë iýÿþ φ ï i, där φë ñô õ ï ó ð Kombiatorik 1. ñ xõ yó ë x kí k ú k y k 2. k ë ê kê ñ ý kó ê ë ý k k 3. e k k k k Summor 1. 2. 3. kíjî kíjî kíjî kë ñ õpô8ó kû ë ñ õ%ô8ó ñ ð õ%ô8ó k m ë Θñ m î ó þφë ñô ý ï ó ð 11
.. 6. 7. k k k k x k x x x k k k k! 8. H x x #" k l$ O.1 Approximatio med itegral 1. % 2. % f m&! x dx '! f x dx ' m k m k m f k '(% f k ')% 6 Master-metode! m f x dx f m&! x dx om f k är mootot växade. om f k är mootot avtagade. Givet e rekursiv formel: T at " b $ f a*,+ b* - Om f O a& ε log b för gt ε.0/, T Θ a log b - Om f Θ a log b, T Θ log b lg - a Om f Ω a ε log b för gt ε.0/ och 21 c a f " b ' c f för stora, T Θ f 3 12