ΠΑΝΕΠΙΣΤΗΜΙΟΚΥΠΡΟΥ ΕΠΛ231 ΔΟΜΕΣΔΕΔΟΜΕΝΩΝΚΑΙΑΛΓΟΡΙΘΜΟΙ ΚΑΤ ΟΙΚΟΝΕΡΓΑΣΙΑ1 ΗΜΕΡΟΜΗΝΙΑΠΑΡΑΔΟΣΗΣ:22/02/10 1.Νααποφασίσετεποιεςαπότιςπιοκάτωπροτάσειςείναιαληθείςαποδεικνύοντας τιςαπαντήσειςσας. (i)αν και,τότε (ii)f(n) O(g(n))ανκαιμόνοανg(n)=Ω(f(n)) (iii)aνf(n) Θ(g(n))τότε ) (ιω)ανf(n) Θ(g(n))τότε 2.Ναλύσετετιςπιοκάτωαναδρομικέςεξισώσειςμετημέθοδοτης αντικατάστασης: α)τ(n)=2t(n/2)+,τ(1)=1 β)t(n)=3t(n/2)+nlgn,τ(1)=1 3.Ναδείξετεμετημέθοδοτηςεπαγωγήςότι: α)οχρόνοςεκτέλεσηςτηςαναδρομικήςεξίσωσηςτ(n)=t(n/2)+1είναιτηςτάξεως O(nlgn) β)οχρόνοςεκτέλεσηςτηςαναδρομικήςεξίσωσηςτ(n)=3t(n/4)+ είναιτης τάξεωςo( ) 4.ΔείξετετηνυλοποίησητουΑΤΔουρά(μεέναάκρο)χρησιμοποιώνταςόμωςδύο στοίβεςακαιβ.οιστοίβεςείναιυλοποιημένεςμεδυναμικήχορήγησημνήμηςκαι σαςείναιδιαθέσιμεςοιβασικέςπράξειςτηςστοίβας:makeempty,isempty, Pop,Push,Top. ΔείξετετηνυλοποίησητωνβασικώνπράξεωντηςουράςQ:MakeEmptyQueue(), IsEmptyQueue(),EnQueue(),DeQueue(),Τop()χρησιμοποιώνταςτιςβασικέςπράξεις τηςστοίβας.
5. Προτεινόμενεςλύσεις Άσκηση1 (i) T1(n) Ω(f(n)) και T2(n) Ω(g(n)) (από τον ορισµό της τάξης Ω) υπάρχουν σταθερές c1 >0, c2>0, n1 και n2, τέτοιες ώστε T1(n) c1 f(n) για κάθε n n1 (1) και T2(n) c2 g(n) για κάθε n n2 (2) (από (1)) T1(n) T2(n) c1 f(n) T2(n) για κάθε n n1 (από (2)) T1(n) T2(n) c1 f(n) c2 g(n) για κάθε n n2 υπάρχουν σταθερές c>0 και n0, τέτοιες ώστε T1(n) T2(n) c f(n) g(n) για µε c= c1 c2 και n0 = max(n1, n2) (από τον ορισµό της τάξης Ω) T1(n) T2(n) Ω(f(n) g(n)). (ii) Η πρόταση είναι ορθή. f O(g) υπάρχουν σταθερές n0 και c >0 τέτοιες ώστε f(n) c g(n), για κάθε n n0 υπάρχουν σταθερές n0 και c τέτοιες ώστε g(n) (1/c) f(n), για κάθε n n0
υπάρχουν σταθερές n0 και c = 1/c >0 τέτοιες ώστε g(n) c f(n), για κάθε n n0 g(n) Ω (f (n)). (iii) Η πρόταση είναι ορθή. Αφού f(n) =Θ(g(n)), τότε f (n) =O (g(n)) και f (n) = Ω (g(n)). Άρα υπάρχουν n1, n2, και c1>0, c2 >0 τέτοια ώστε f(n) c1 g(n), για κάθε n n1 (1) και f(n) c2 g(n), για κάθε n n2. (2) Θέτουµε c1 = c1 και c2 = c2 Τότε επειδή τα µέλη της (1) είναι µη αρνητικά f(n) (c1 g(n)) = c1 g(n) = c1 g(n), για κάθε n n1 Όµοια, από την (2) έχουµε f(n) (c2 g(n)) = c2 g(n) = c2 g(n), για κάθε n n2. Εποµένως f(n)2 = O(g(n)²) και f(n) ² = Ω(g(n) ²) και άρα f(n) ² = Θ(g(n) ²). (iv) Η πρόταση είναι λανθασµένη όπως φαίνεται στο πιο κάτω αντιπαράδειγµα. Για f(n) = 2n και g(n) = n έχουµε ότι f(n) =Θ(g(n)), αλλά 2 / 2 =2 / 2 = 2 n Θ(1).
Άσκηση 2 2α) T (n) = 2T (n/2) + n 3, T (1) = 1 = 2(2T (n/4) + (n/2) 3 ) + n 3 = 2 2 (T (n/2 2 ) + (n/2 2 ) 3 ) + n 3 = 2 2 (2T (n/2 3 ) + (n/2 2 ) 3 ) + (n/2 2 ) 3 + n 3 =... = 2 k T (n/2 k ) + n 3 n k=0 1/2 k lim n k=0 1/2 k = 2 Θέτω n = 2 k, k = lgn = n.t (1) + n 3.2 => T (n)ϵo(n 3 ) 2β) T (n) = 3T (n/2) + nlgn, T (1) = 1 T (n) = 3(3T (n/2) + n/2lg(n/2)) + nlgn = 3 2 T (n/4) + 3(n/2)lg(n/2) + nlgn = 3 2 (3T (n/2 3 ) + n/2 2 lg(n/2 2 )) + 3n/2lg(n/2) + nlgn =... = 3 k.t ( n ) + 3n n 1 2 k k=0.lg( n ) 2 k 2 k = 3 k.t ( n ) + 3n n 1 2 k k=0.(lgn lg2 k ) 2 k Θέτω n = 2 k, k = lgn = 3 lgn T (1) + 3n.2(lgn 1) = 3 lgn + 6n.(lgn) 3n
=> T (n)ϵo(nlgn) Άσκηση 3 3α) T (n) = T (n/2) + 1, T (1) = 1 Απόδειξη ότι είναι της τάξεως Ο(nlgn) με τη μέθοδο της επαγωγής. T (n) c.nlgn T (n) = T (n/2) + 1 Επαγωγική Υπόθεση: Η συνθήκη T (n) = T (n/2) + 1 c.nlgn ισχύει για τιμές n < k. Πρέπει να αποδείξω ότι ισχύει για n = k: T (k) = T (k/2) + 1 c.klgk Από την επαγωγική υπόθεση και αφού το k/2 είναι μικρότερο του k: T (k) = c(k/2)lg(k/2) + 1 + 1 c(k/2)lg(k/2) + 2 = (c/2)klgk clg2 + 2 = cklgk 2(c 2) ck.nlgk => Για τιμές του c 2 ισχύει ότι T (n)ϵo(nlgn).
3β) T (n) = 3T (n/4) + n 2 Απόδειξη ότι είναι της τάξεως O(n 2 ) με τη μέθοδο της επαγωγής. Δηλαδή, υπάρχουν c, m τέτοια ώστε T (n) cn 2 n > m Επαγωγική Υπόθεση: Η συνθήκη T (n) = 3T (n/4) + n 2 c.n 2 ισχύει για τιμές n < k. Πρέπει να αποδείξω ότι ισχύει για n = k : T (k) = 3T (k/4) + k 2 c.k 2 Από την επαγωγική υπόθεση και αφού το k/4 είναι μικρότερο του k: T (k) = 3T (k/4) + n 2 3c k2 16 + k2 = ck 2 13c k2 16 + k2 ck 2 (13c k2 16 k2 ) ck 2 Για να ισχύει η τελευταία ανίσωση πρέπει 13c k2 16 k2 > 0 => Για τιμές του c > 16/13 ισχύει ότι T (n)ϵo(n 2
Άσκηση4 ΘεωρούμεότιοιδυοστοίβεςΑκαιΒείναιυλοποιημένεςμαζίμετιςβασικέςτους πράξεις.οιβασικέςπράξειςτηςουράςμεέναάκροχρησιμοποιώνταςδυο στοίβεςμπορούνναγίνουνμετιςπιοκάτωμεθόδους: MakeEmptyQueue(){ MakeEmpty(A); MakeEmpty(B); Q >size=0; { IsEmptyQueue(){ ifq >size==0 return1; elsereturn0; } EnQueue(typex){ Push(x,A); } //ΣτηνDequeueμεταφέρουμεταστοιχείααπότηστοίβαΑστηστοίβαΒ, αφαιρούμετοστοιχείοστηκορυφήτηςστοίβαςβ(πουείναιτοπρώτοπου εισήχθηάρακαιαυτόπουπρέπεινααφαιρεθεί)καιστησυνέχεια επαναφέρουμεταστοιχείαστηστοίβααγιαναείναιέτοιμηγιαεπόμενη εισαγωγή. Dequeue(){ while(!isempty(a)){ Push(Pop(A),B); } Pop(B); while(!isempty(b)){ Push(Pop(B),A); } Top(){ while(!isempty(a)){ Push(Pop(A),B); } typex=top(b); while(!isempty(b)){ Push(Pop(B),A); returnx;}
Άσκηση5 Α.Οισυνθήκεςείναιανεξάρτητες.Αρχίζουμεαπόμέσαπροςταέξω: ΕσωτερικόςΒρόχος:Τ1= n +1 ΜεσαίοςΒρόχος:T2=2n( n +1) ΕξωτερικόςΒρόχος:T3=(lgn+4)2n( n +1) O(n 3 / 2 lgn) Β.Οχρόνοςεκτέλεσηςτηςδιαδικασίαςδίνεταιαπότοπιοκάτωάθροισμα