ÌÜèçìá 1ï: ÅÉÓÁÃÙÃÇ. Ï Áëãüñéèìïò ùò Ðñþôç ¾ëç

Σχετικά έγγραφα
ÓÕÍÄÕÁÓÔÉÊÇ É, ÓÅÐÔÅÌÂÑÉÏÓ ÏÌÁÄÁ ÈÅÌÁÔÙÍ Á

ÓÕÍÄÕÁÓÔÉÊÇ É, ÓÅÐÔÅÌÂÑÉÏÓ ÏÌÁÄÁ ÈÅÌÁÔÙÍ B

ÊåöÜëáéï 4 ÄÉÁÍÕÓÌÁÔÁ. 4.1 ÅéóáãùãÞ (ÃåùìåôñéêÞ)

Áóõìðôùôéêïß Óõìâïëéóìïß êáé Éåñáñ ßá ÓõíáñôÞóåùí

ÊåöÜëáéï 3 ÏÑÉÆÏÕÓÅÓ. 3.1 ÅéóáãùãÞ

ÊåöÜëáéï 5 ÄÉÁÍÕÓÌÁÔÉÊÏÉ ÙÑÏÉ. 5.1 ÅéóáãùãÞ. 56 ÊåöÜëáéï 5. ÄÉÁÍÕÓÌÁÔÉÊÏÉ ÙÑÏÉ

3.1 Íá âñåèåß ôï ðåäßï ïñéóìïý ôçò óõíüñôçóçò f: 4 x. (iv) f(x, y, z) = sin x 2 + y 2 + 3z Íá âñåèïýí ôá üñéá (áí õðüñ ïõí): lim

1. i) ÊÜèå üñïò ðñïêýðôåé áðü ôçí ðñüóèåóç ôïõ óôáèåñïý áñéèìïý 3 óôïí ðñïçãïýìåíï, ïðüôå Ý ïõìå áñéèìçôéêþ ðñüïäï á í ìå ðñþôï üñï

Óõíå Þ êëüóìáôá & Áöáéñåôéêüò Åõêëåßäåéïò áëãüñéèìïò

Ó ÅÄÉÁÓÌÏÓ - ÊÁÔÁÓÊÅÕÇ ÓÔÏÌÉÙÍ & ÅÉÄÉÊÙÍ ÅÎÁÑÔÇÌÁÔÙÍ ÊËÉÌÁÔÉÓÌÏÕ V X

16. ÌåëÝôç ôùí óõíáñôþóåùí y=çìx, y=óõíx êáé ôùí ìåôáó çìáôéóìþí ôïõò.

ÄéáêñéôÝò êáé óõíå åßò ôõ áßåò ìåôáâëçôýò ÁóêÞóåéò

ΕΛΕΝΗ ΓΕΡΟΥΛΑΝΟΥ. Εικονογράφηση ΔΡΑΣΤΗΡΙΟΤΗΤΕΣ ΓΙΑ ΠΑΙΔΙΑ ΝΗΠΙΑΓΩΓΕΙΟΥ ΛΗΔΑ ΒΑΡΒΑΡΟΥΣΗ ΕΚΔΟΣΕΙΣ ΠΑΠΑΔΟΠΟΥΛΟΣ

ÌÅÑÏÓ 3 ΥΠΗΡΕΣΙΕΣ ΥΠΟΣΤΗΡΙΞΗΣ ΤΗΣ ΚΛΙΝΙΚΗΣ ΠΡΑΞΗΣ ÁÐÁÉÔÇÓÅÙÍ ÕÐÇÑÅÓÉÙÍ. Υπηρεσίες Ιατρικής Πληροφορικής και Τηλεϊατρικής 9 ÂÁÓÉÊÅÓ ÊÁÔÅÕÈÕÍÓÅÉÓ

Ανώτερα Μαθηματικά Ι. Ανοικτά Ακαδημαϊκά Μαθήματα. Ενότητα 7: Οριακή Τιμή Συνάρτησης. Αθανάσιος Μπράτσος. Τμήμα Ναυπηγών Μηχανικών ΤΕ

ÓÕÍÈÇÊÇ ÁÌÅÔÁÈÅÔÏÔÇÔÁÓ ÓÕÓÔÇÌÁÔÏÓ ÔÏÉ ÙÌÁÔÙÍ ÐÁÑÁÑÔÇÌÁ Â

( ) ξî τέτοιο, + Ý åé ìßá ôïõëü éóôïí ñßæá óôï äéüóôçìá ( ) h x =,να δείξετε ότι υπάρχει ( α,β) x ΕΦΑΡΜΟΓΕΣ ΣΤΙΣ ΠΑΡΑΓΩΓΟΥΣ

ÌÜèçìá 3ï: ÁíáäñïìéêÝò Åîéóþóåéò

ÌÜèçìá 2ï: Èåùñçôéêü Õðüâáèñï

ÅÍÏÔÇÔÁ 6ç ÑÏÍÏÓ-ÄÉÁÄÏ Ç

3.1 H Ýííïéá ôçò óõíüñôçóçò ÐÁÑÁÄÅÉÃÌÁÔÁ - ÅÖÁÑÌÏÃÅÓ

Ðñïêýðôïõí ôá ðáñáêüôù äéáãñüììáôá.

ÏÑÉÁÊÇ ÔÉÌÇ ÓÕÍÁÑÔÇÓÇÓ

Íá èõìçèïýìå ôç èåùñßá...

å) Íá âñåßôå ôï äéüóôçìá ðïõ äéáíýåé ôï êéíçôü êáôü ôï ñïíéêü äéüóôçìá áðü ôï ðñþôï Ýùò ôï Ýâäïìï äåõôåñüëåðôï ôçò êßíçóþò ôïõ.

Chi-Square Goodness-of-Fit Test*

1.1 Ïé öõóéêïß áñéèìïß - ÄéÜôáîç öõóéêþí, Óôñïããõëïðïßçóç

ÌÜèçìá 7ï: ÁËÃÏÑÉÈÌÏÉ ÁÍÁÆÇÔÇÓÇÓ

Μαθηματικά ΙΙΙ. Ανοικτά Ακαδημαϊκά Μαθήματα. Ενότητα 16: Προσέγγιση συνήθων διαφορικών εξισώσεων Μέρος ΙΙ. Αθανάσιος Μπράτσος

Μαθηματικά ΙΙΙ. Ανοικτά Ακαδημαϊκά Μαθήματα. Ενότητα 15: Προσέγγιση συνήθων διαφορικών εξισώσεων Μέρος Ι. Αθανάσιος Μπράτσος

9. ÁíÜðôõîç ðñïãñáììüôùí ìå ñïíéêýò ëåéôïõñãßåò.

Estimation Theory Exercises*

4.5 ÁóêÞóåéò çìéêþò éóïññïðßáò ìå åðßäñáóç óôç èýóç éóïññïðßáò

1. Íá ëõèåß ç äéáöïñéêþ åîßóùóç (15 ìïí.) 2. Íá âñåèåß ç ãåíéêþ ëýóç ôçò äéáöïñéêþò åîßóùóçò (15 ìïí.)

ÐïëëÝò åôáéñßåò ðñïóöýñïõí õðçñåóßåò

ÁÑÉÈÌÇÔÉÊÇ ËÕÓÇ ÓÕÍÇÈÙÍ ÄÉÁÖÏÑÉÊÙÍ ÅÎÉÓÙÓÅÙÍ

2.4 ñçóéìïðïéþíôáò ôïí êáíüíá áëõóßäáò íá âñåèåß ç dr

Ανώτερα Μαθηματικά Ι. Ανοικτά Ακαδημαϊκά Μαθήματα. Ενότητα 8: Συνέχεια Συνάρτησης. Αθανάσιος Μπράτσος. Τμήμα Ναυπηγών Μηχανικών ΤΕ

B i o f l o n. Ãéá åöáñìïãýò ìåôáöïñüò çìéêþí

ÌÜèçìá 10ï: ÁËÃÏÑÉÈÌÏÉ ÄÅÍÄÑÙÍ

ÌÁÈÇÌÁÔÉÊÇ ËÏÃÉÊÇ Ë1 5ï ðáêýôï áóêþóåùí

3524 ÅÖÇÌÅÑÉÓ ÔÇÓ ÊÕÂÅÑÍÇÓÅÙÓ (ÔÅÕ ÏÓ ÄÅÕÔÅÑÏ)

ÐÏËÕÙÍÕÌÉÊÇ ÐÁÑÅÌÂÏËÇ

ÓÕÍÅ ÅÉÁ ÓÕÍÁÑÔÇÓÇÓ. 8.1 ÃåíéêÝò Ýííïéåò êáé ïñéóìïß

8. ÅðéëïãÞ êáé åðáíüëçøç

Cel animation. ÅöáñìïãÝò ðïëõìýóùí

ÁÑÉÈÌÇÔÉÊÇ ËÕÓÇ ÅÎÉÓÙÓÅÙÍ

Üóêçóç 15. ÕëéêÜ - åîáñôþìáôá äéêôýïõ ðåðéåóìýíïõ áýñá êáé ðíåõìáôéêýò óõóêåõýò

ÓÕÍÁÑÔÇÓÅÉÓ ÐÏËËÙÍ ÌÅÔÁÂËÇÔÙÍ

ιαδικασία åãêáôüóôáóçò MS SQL Server, SingularLogic Accountant, SingularLogic Accountant Ìéóèïäïóßá

SPLINES. ÌÜèçìá ÓõíÜñôçóç spline Ïñéóìïß êáé ó åôéêü èåùñþìáôá

Áíáìüñöùóç ôïõ ÐñïãñÜììáôïò Ðñïðôõ éáêþí Óðïõäþí ôïõ ÔìÞìáôïò Ìáèçìáôéêþí ôïõ

Ανώτερα Μαθηματικά Ι. Ανοικτά Ακαδημαϊκά Μαθήματα. Ενότητα 11: Διανυσματική Συνάρτηση. Αθανάσιος Μπράτσος. Τμήμα Ναυπηγών Μηχανικών ΤΕ

Ìáèáßíïõìå ôéò áðïäåßîåéò

ÏñãÜíùóç ÐñïãñÜììáôïò

ÐÉÍÁÊÅÓ ÔÉÌÙÍ ÁÍÔÉÊÅÉÌÅÍÉÊÙÍ ÁÎÉÙÍ

Ανώτερα Μαθηματικά Ι. Ανοικτά Ακαδημαϊκά Μαθήματα. Ενότητα 15: Ορισμένο Ολοκλήρωμα Μέρος ΙΙΙ - Εφαρμογές. Αθανάσιος Μπράτσος

ÓÅÉÑÅÓ TAYLOR ÊÁÉ LAURENT

ÐÑÏÓÅÃÃÉÓÇ ÅËÁ ÉÓÔÙÍ ÔÅÔÑÁÃÙÍÙÍ

Ç íýá Ýííïéá ôïõ ýðíïõ!

Union of Pure and Applied Chemistry).

Προτεινόμενα θέματα Πανελλαδικών εξετάσεων. Χημεία Θετικής Κατεύθυνσης ΕΛΛΗΝΟΕΚΔΟΤΙΚΗ

4. ÁíÜðôõîç ðñïãñüììáôïò óå ðñïãñáììáôéæüìåíï ëïãéêü åëåãêôþ.

Ανώτερα Μαθηματικά Ι. Ανοικτά Ακαδημαϊκά Μαθήματα. Ενότητα 6: Γραμμική Άλγεβρα. Αθανάσιος Μπράτσος. Τμήμα Ναυπηγών Μηχανικών ΤΕ

ÌÉÃÁÄÉÊÅÓ ÓÕÍÁÑÔÇÓÅÉÓ

Τυπικές Γλώσσες. Μεταγλωττιστές. (μέρος 1ο) Νίκος Παπασπύου, Κωστής Σαγώνας

Èåùñßá ÃñáöçìÜôùí: Óýíïëá Áíåîáñôçóßáò, Óýíïëá ÊÜëõøçò, êáé ñùìáôéêüò Áñéèìüò

Ανώτερα Μαθηματικά Ι. Ανοικτά Ακαδημαϊκά Μαθήματα. Ενότητα 10: Παράγωγος Συνάρτησης Μέρος ΙI. Αθανάσιος Μπράτσος. Τμήμα Ναυπηγών Μηχανικών ΤΕ

ÐÑÏÓÅÃÃÉÓÇ ÐÁÑÁÃÙÃÙÍ

Συντακτική ανάλυση. Μεταγλωττιστές. (μέρος 3ον) Νίκος Παπασπύου, Κωστής Σαγώνας

ÄÉÁÍÕÓÌÁÔÉÊÏÓ ÄÉÁÖÏÑÉÊÏÓ ËÏÃÉÓÌÏÓ

ÁðáñéèìçôÝò- ÓõãêñéôÝò

[ ] ÐáñÜñôçìá É : Éóüôñïðåò ôáíõóôéêýò óõíáñôþóåéò 1. Ïñéóìüò: Ï óõììåôñéêüò ôáíõóôþò B êáëåßôáé éóüôñïðç óõíüñôçóç ôïõ óõììåôñéêïý ôáíõóôþ A (Á.

¼ñãáíá Èåñìïêñáóßáò - ÓõóêåõÝò Øõêôéêþí Ìç áíçìüôùí

ÂáóéêÝò ííïéåò Áëãïñßèìùí

ÓÅÉÑÅÓ. ÌÜèçìá Áêïëïõèßåò áñéèìþí Ïñéóìüò áêïëïõèßáò

ÁÏÑÉÓÔÏ ÏËÏÊËÇÑÙÌÁ. ÌÜèçìá ÅéóáãùãéêÝò Ýííïéåò ÐáñÜãïõóá óõíüñôçóç

Ανώτερα Μαθηματικά Ι. Ανοικτά Ακαδημαϊκά Μαθήματα. Ενότητα 12: Αόριστο Ολοκλήρωμα. Αθανάσιος Μπράτσος. Τμήμα Ναυπηγών Μηχανικών ΤΕ

ÄÉÁÍÕÓÌÁÔÉÊÅÓ ÓÕÍÁÑÔÇÓÅÉÓ

ÓÔÁÔÉÊÏÓ ÇËÅÊÔÑÉÓÌÏÓ Ðåñéå üìåíá

Εφαρμοσμένα Μαθηματικά

8.1 Ãåíéêüò äéäáêôéêüò óêïðüò

Σχολή Εφαρμοσμένων Μαθηματικών και Φυσικών Επιστημών Εθνικό Μετσόβιο Πολυτεχνείο. Μαθηματική Λογική. Αποδεικτικό Σύστημα.

ÅðåéäÞ ïé äõíüìåéò F 1 êáé F 2 åßíáé ïìüññïðåò (ó Þìá) èá éó ýåé: F ïë = F 1 + F 2. ÔåëéêÜ: F ïë = 1.500Í.

Èåùñßá ÃñáöçìÜôùí: ÔáéñéÜóìáôá

Αποκαλύπτουµε το µυστικό υπερόπλο του Μεσαίωνα

ÁÑÉÈÌÇÔÉÊÇ ÏËÏÊËÇÑÙÓÇ

Ανώτερα Μαθηματικά Ι. Ανοικτά Ακαδημαϊκά Μαθήματα. Ενότητα 5: Μιγαδικές Συναρτήσεις. Αθανάσιος Μπράτσος. Τμήμα Ναυπηγών Μηχανικών ΤΕ

ÅõñùðáúêÞ íùóç Áëïõìéíßïõ Ý åé äçìïóéåýóåé Ýíáí ìßíé - ïäçãü åðåîþãçóçò

1.1 ÊáñôåóéáíÝò óõíôåôáãìýíåò óôï 3-äéÜóôáôï þñï

ÖÅÊ 816 ÅÖÇÌÅÑÉÓ ÔÇÓ ÊÕÂÅÑÍÇÓÅÙÓ (ÔÅÕ ÏÓ ÄÅÕÔÅÑÏ) ÏÄÇÃÉÅÓ ÐÁ ÔÇ ÓÕÌÐËÇÑÙÓÇ ÔÇÓ ÁÉÔÇÓÇÓ ÅÃÊÅÊÑÉÌÅÍÏÕ ÁÐÏÈÇÊÅÕÔÇ Ï ÇÌÁÔÙÍ 1. ÇÌÅÑÏÌÇÍÉÁ: ÁíáãñÜöåô

ÐïëõìåóéêÝò ÂÜóåéò ÄåäïìÝíùí Åñãáóßá

Σχολή Εφαρμοσμένων Μαθηματικών και Φυσικών Επιστημών Εθνικό Μετσόβιο Πολυτεχνείο. Μαθηματική Λογική. Αναδρομικές Συναρτήσεις.

Åîéóþóåéò 1ïõ âáèìïý

ÅÍÏÔÇÔÁ 5ç ÔÁ Ó ÇÌÁÔÁ

7. ÂáóéêÜ óôïé åßá ðñïãñáììáôéóìïý

ôéò óçìåéþóåéò Þ ôï âéâëßï ôïõ ìáèþìáôïò (åöüóïí Ý ïõí ìïéñáóôåß).

ÊÅÖÁËÁÉÏ 4 ÅËÅÃ ÏÓ ÊÁËÇÓ ÐÑÏÓÁÑÌÏÃÇÓ

J-Y(St)Y Ôçëåöùíéêü êáëþäéï åóùôåñéêïý þñïõ ìå èùñüêéóç êáôü VDE 0815

ΕΛΛΗΝΙΚΗ ΗΜΟΚΡΑΤΙΑ ΥΠΟΥΡΓΕΙΟ ΕΘΝ. ΠΑΙ ΕΙΑΣ & ΘΡΗΣΚ/ΤΩΝ ΕΝΙΑΙΟΣ ΙΟΙΚΗΤΙΚΟΣ ΤΟΜΕΑΣ ΣΠΟΥ ΩΝ ΕΠΙΜΟΡΦΩΣΗΣ ΚΑΙ ΚΑΙΝΟΤΟΜΙΩΝ /ΝΣΗ ΣΠΟΥ ΩΝ Π.Ε.

Transcript:

ÌÜèçìá 1ï: ÅÉÓÁÃÙÃÇ Ï Áëãüñéèìïò ùò Ðñþôç ¾ëç Ç Ýííïéá ôïõ áëãïñßèìïõ (algorithm) ìáò åßíáé ãíùóôþ áðü áñêåôü ìáèþìáôá ôùí ðñïçãïõìýíùí åîáìþíùí. Ç Ýííïéá áõôþ åßíáé êåíôñéêþ ãéá ôçí ÐëçñïöïñéêÞ, êáé ç ìåëýôç ôçò åßíáé ðïëý åíäéáöýñïõóá ãéáôß áðïôåëåß ôçí ðñþôç ýëç ãéá ôçí åìâüèõíóç, áí ü é óå üëåò, ôïõëü éóôïí óå ðïëëýò ãíùóôéêýò ðåñéï Ýò ôçò ÐëçñïöïñéêÞò, üðùò óôéò ÂÜóåéò ÄåäïìÝíùí, ôá Äßêôõá, ôçí Åðåîåñãáóßá Åéêüíáò, ôçí Ôå íçôþ Íïçìïóýíç, ôçí Êñõðôïãñáößá êïê. Åî Üëëïõ åßíáé ãíùóôþ ç åîßóùóç: Áëãüñéèìïé + ÄïìÝò ÄåäïìÝíùí = ÐñïãñÜììáôá ðïõ äéáôõðþèçêå ôï 1976 áðü ôïí Niklaus Wirth (ðïõ ðáñïõóßáóå ôçí ðñþôç äïìçìýíç ãëþóóá ðñïãñáììáôéóìïý, ôçí Pascal) êáé äçëþíåé üôé ïé áëãüñéèìïé óõíõöáóìýíïé ìå ôéò áðáñáßôçôåò äïìýò óå ìßá áäéüóðáóôç åíüôçôá, áðïôåëïýí ôç âüóç êüèå ðñïãñüììáôïò, äçëáäþ ôåëéêü êüèå åöáñìïãþò. Óôï óçìåßï áõôü ãéá ëüãïõò ðëçñüôçôáò õðåíèõìßæïõìå ìåñéêü âáóéêü óôïé åßá ãéá ôï áíôéêåßìåíï ôçò ìåëýôçò ìáò. Ãéá ôçí éóôïñßá áíáöýñåôáé üôé ç ëýîç áëãüñéèìïò ðñïýñ åôáé áðü ôï üíïìá åíüò ÐÝñóç ìáèçìáôéêïý, ôïõ Abu Ja far Mohammed ibn Musa al Khowarizmi, ï ïðïßïò Ýæçóå ôïí 9ï áéþíá ì.. Ç ëýîç "al Khowarizmi" óçìáßíåé "áðü ôï Khowarazm" ðïõ åßíáé ç óçìåñéíþ ðüëç Khiva ôïõ OõæìðåêéóôÜí. Ç ëýîç, ëïéðüí, áëãüñéèìïò ðñïýñ åôáé áðü ôï Khowarizmi, ðïõ Þôáí ç ðáôñßäá ôïõ ìáèçìáôéêïý áõôïý. Ìïëïíüôé ç Ýííïéá êáé ç ëýîç áëãüñéèìïò äåí áíüãïíôáé óôï áðþôáôï ðáñåëèüí, åíôïýôïéò ïõóéáóôéêü åß áí óõëëçöèåß óôçí Áñ áßá ÅëëÜäá. Áñêåß íá èõìçèïýìå ôï ãíùóôü ìáò êüóêéíï ôïõ ÅñáôïóèÝíç ãéá ôçí åýñåóç ðñþôùí áñéèìþí Þ ôç ìýèïäï ôïõ Åõêëåßäç ãéá ôçí åýñåóç ôïõ ìýãéóôïõ êïéíïý äéáéñýôç äýï áñéèìþí. ÁëëÜ ìþðùò êüèå åíýñãåéá óôçí êáèçìåñéíþ ìáò æùþ äåí ìðïñåß íá áñáêôçñéóèåß ùò áëãüñéèìïò; Ãéá ðáñüäåéãìá, ôé åßíáé ìßá óõíôáãþ ìáãåéñéêþò Þ ç äéáäéêáóßá áíüëçøçò ñçìüôùí áðü ìßá áõôüìáôç ôáìåéáêþ ìç áíþ óå ìßá ôñüðåæá, Þ ôýëïò ç äéáäéêáóßá ðïëëáðëáóéáóìïý äýï áêåñáßùí, ðñüîç ðïõ ìáèáßíïõìå áðü ôçí ðñþôç äçìïôéêïý; Ó åäüí üëïé ïé áëãüñéèìïé üìùò, ðïõ èá åîåôáóèïýí óôéò óçìåéþóåéò áõôýò, Ý ïõí ðñïôáèåß ôá ôåëåõôáßá 25 ñüíéá. Ï üñïò áëãüñéèìïò ñçóéìïðïéåßôáé ãéá íá äçëþóåé ìåèüäïõò ðïõ åöáñìüæïíôáé óå ðñïãñüììáôá ãéá ôçí åðßëõóç ðñïâëçìüôùí. Ùóôüóï, Ýíáò áíáëõôéêüôåñïò ïñéóìüò ôçò Ýííïéáò áõôþò åßíáé ï åîþò. Ïñéóìüò. Áëãüñéèìïò åßíáé Ýíá ðåðåñáóìýíï óýíïëï åíôïëþí, áõóôçñü êáèïñéóìýíùí êáé åêôåëýóéìùí óå ðåðåñáóìýíï ñüíï, ïé ïðïßåò üôáí áêïëïõèçèïýí åðéôõã Üíåôáé Ýíá åðéèõìçôü áðïôýëåóìá Þ åðéëýåôáé Ýíá óõãêåêñéìýíï ðñüâëçìá. ÅðéðñïóèÝôùò, ìßá áêïëïõèßá åíôïëþí ðñýðåé íá éêáíïðïéåß ôá áêüëïõèá êñéôþñéá þóôå íá èåùñåßôáé áëãüñéèìïò: 4

1. Åßóïäïò (input). Êáìßá, ìßá Þ ðåñéóóüôåñåò ðïóüôçôåò íá äßíïíôáé ùò åßóïäïé óôïí áëãüñéèìï. 2. Åîïäïò (output). Ï áëãüñéèìïò íá äçìéïõñãåß ôïõëü éóôïí ìßá ðïóüôçôá ùò áðïôýëåóìá. 3. Êáèïñéóôéêüôçôá (definiteness). ÊÜèå åíôïëþ íá êáèïñßæåôáé ùñßò êáìßá áìöéâïëßá ãéá ôïí ôñüðï åêôýëåóþò ôçò. 4. Ðåñáôüôçôá (finiteness). Ï áëãüñéèìïò íá ôåëåéþíåé ìåôü áðü ðåðåñáóìýíá âþìáôá åêôýëåóçò ôùí åíôïëþí ôïõ. Ìßá äéáäéêáóßá ðïõ äåí ôåëåéþíåé ìåôü áðü Ýíá ðåðåñáóìýíï áñéèìü âçìüôùí ëýãåôáé áðëþò õðïëïãéóôéêþ äéáäéêáóßá (computational procedure). 5. Áðïôåëåóìáôéêüôçôá (effectiveness). ÊÜèå ìåìïíùìýíç åíôïëþ ôïõ áëãïñßèìïõ íá åðáñêþò áðëþ Ýôóé þóôå íá ìðïñåß íá åêôåëåóôåß áðü Ýíá Üôïìï ìå ñþóç áñôéïý êáé ìïëõâéïý. Äåí áñêåß äçëáäþ íá åßíáé ïñéóìýíç (êñéôþñéï 3) áëëü ðñýðåé íá åßíáé êáé åêôåëýóéìç. Óôçí ðñüîç äéáêñßíåé êáíåßò áíüìåóá óå áëãïñßèìïõò êáé ðñïãñüììáôá. Ôá äåýôåñá åßíáé õëïðïéþóåéò ôùí ðñþôùí ìå ôéò åíôïëýò êáé ôá åñãáëåßá åíüò ðñïãñáììáôéóôéêïý ðåñéâüëëïíôïò. Ç äéáöïñü åßíáé üôé Ýíá ðñüãñáììá äåí éêáíïðïéåß áíáãêáóôéêü ôï 4ï êñéôþñéï ôçò ðåñáôüôçôáò (óêåöèåßôå ð.. ôï ëåéôïõñãéêü óýóôçìá, ôï ïðïßï åêôåëåß äéáñêþò Ýíáí áôýñìïíá âñü ï ðåñéìýíïíôáò åíôïëýò íá åéóýëèïõí óôï óýóôçìá). Óôï âéâëßï áõôü èá áó ïëçèïýìå ìå áëãïñßèìïõò ðïõ ðëçñïýí ôï êñéôþñéï áõôü (ðüíôá ôåñìáôßæïõí). Ëüãù ôçò óçìáíôéêüôçôáò ôïõ áíôéêåéìýíïõ êáé ôçò êåíôñéêüôçôáò ôïõò óôçí åðéóôþìç, ç ÐëçñïöïñéêÞ óõ íü ïñßæåôáé ùò ç åðéóôþìç ðïõ ìåëåôü ôïõò áëãïñßèìïõò áðü ôç óêïðéü: 1. ôïõ õëéêïý. Ïé äéüöïñåò ôå íïëïãßåò õëéêïý åðçñåüæïõí ôçí áðïäïôéêüôçôá åíüò áëãïñßèìïõ (üðùò ð.. óôïí ôïìýá ôçò ó åäßáóçò ïëïêëçñùìýíùí êõêëùìüôùí VLSI). 2. ôùí ãëùóóþí ðñïãñáììáôéóìïý. Ôï åßäïò ôçò ãëþóóáò ðñïãñáììáôéóìïý ðïõ ñçóéìïðïéåßôáé ( áìçëïý Þ õøçëïý åðéðýäïõ) áëëüæåé ôç ìïñöþ êáé ôïí áñéèìü ôùí åíôïëþí åíüò áëãïñßèìïõ (óå ãëþóóá assembly ð.. ç õëïðïßçóç ôùí äïìþí åðáíüëçøçò ãßíåôáé ìå ñþóç ôçò åíôïëþò äéáêëüäùóçò jump). 3. ôç èåùñçôéêþ óêïðéü. Ôï åñþôçìá ðïõ ôßèåôáé åßíáé áí ðñüãìáôé õðüñ åé áðïäïôéêüò áëãüñéèìïò ãéá ôçí åðéôõ ßá åíüò áðïôåëýóìáôïò. Ç åñþôçóç åßíáé ðïëý óçìáíôéêþ êáé èá óõæçôçèåß ìå ðåñéóóüôåñç ëåðôïìýñåéá óôá ôåëåõôáßá ìáèþìáôá. 4. ôçí áíáëõôéêþ óêïðéü. Ìåëåôþíôáé ïé õðïëïãéóôéêïß ðüñïé (computer resources) ðïõ ñçóéìïðïéïýíôáé áðü Ýíáí áëãüñéèìï, üðùò ôï ìýãåèïò ôçò êýñéáò êáé ôçò äåõôåñåýïõóáò ìíþìçò, ï ñüíïò ãéá CPU êáé ãéá É/Ï êëð. Ôï áíôéêåßìåíï áõôü èá åîçãçèåß ðëçñýóôåñá óôç óõíý åéá. 5

Ðñïöáíþò åìåßò óôá ðëáßóéá áõôïý ôïõ ìáèþìáôïò èá óôáèïýìå óôçí ôåëåõôáßá ïðôéêþ ãùíßá. ÔÝëïò, ãéá íá ôåëåéþíïõìå ìå áõôü ðïõ ðñýðåé íá èõìçèïýìå êáé íá ðåñüóïõìå óå íýá èýìáôá, ðñýðåé íá áíáöýñïõìå êáé ôïõò ôñüðïõò ðáñïõóßáóçò ôùí áëãïñßèìùí, ïé ïðïßïé åßíáé ïé åîþò ôñåßò: 1. ìå ôçí ðåñéãñáöþ ôïõ óå öõóéêþ ãëþóóá (natural language) Þ ìå åëåýèåñï êåßìåíï (free text). Óôçí ðåñßðôùóç áõôþ ñåéüæåôáé ðñïóï Þ ãéáôß ìðïñåß íá ðáñáâéáóèåß ôï ôñßôï êñéôþñéï ôïõ ïñéóìïý. 2. ìå ôç ñþóç åíüò äéáãñüììáôïò ñïþò (flow chart). 3. ìå êùäéêïðïßçóç (coding), äçëáäþ ìå Ýíá ðñüãñáììá ðïõ üôáí åêôåëåóèåß èá äþóåé ôá ßäéá áðïôåëýóìáôá ìå ôïí áëãüñéèìï. Ôá äéáãñüììáôá ñïþò ñçóéìïðïéïýíôáí êáôü êüñïí óå ðñïçãïýìåíåò äåêáåôßåò ãéá ôçí áëãïñéèìéêþ ðåñéãñáöþ ðñïâëçìüôùí. Ùóôüóï óþìåñá Ý ïõí åãêáôáëåéöèåß äéüôé äåí ðëçñïýí ìßá óçìáíôéêþ éäéüôçôá ôïõ ðñïãñáììáôéóìïý, äçëáäþ äåí åßíáé äïìçìýíá. Ïé áëãüñéèìïé ôùí óçìåéþóåùí áõôþí åßíáé êùäéêïðïéçìýíïé åßôå óå øåõäïãëþóóá, åßôå óå ìßá ãëþóóá ðñïãñáììáôéóìïý (üðùò Pascal Þ C/C++), áëëü åßíáé áõôïíüçôï üôé üëïé áõôïß ïé áëãüñéèìïé ðïëý åýêïëá íá ãñáöïýí óå ïðïéáäþðïôå Üëëç ãëþóóá ðñïãñáììáôéóìïý. Ìßá Ðñþôç Ãåýóç Áëãïñßèìïõ Óõ íü ãéá ôçí åðßëõóç êüðïéïõ ðñïâëþìáôïò ìðïñïýí íá ðñïôáèïýí ðåñéóóüôåñïé ôïõ åíüò áëãüñéèìïé. Óå áõôýò ôéò ðåñéðôþóåéò ðñýðåé íá äéáðéóôùèåß ðïéüò åßíáé ï êáëýôåñïò êáé õðü ðïßåò óõíèþêåò. Áò ðñïóýîïõìå ôïí åðüìåíï áëãüñéèìï ðïõ äßíåôáé óå øåõäïêþäéêá êáé áò ðñïóðáèþóïõìå íá êáôáíïþóïõìå ôç ëåéôïõñãßá ôïõ. function russe(,õ) 1. Á[1] <-- ; Â[1] <-- Õ 2. i <-- 1; 3. while Á[i]>1 do 4. Á[i+1] <-- Á[i] div 2; 5. Â[i+1] <-- Â[i]+Â[i]; 6. i <-- i+1 7. prod <-- 0 8. while i>0 do 9. if Á[i] is odd then prod <-- prod+b[1] 10. i <-- i-1 11. return prod Ï áëãüñéèìïò áõôüò äý åôáé óôçí åßóïäï äýï áêåñáßïõò áñéèìïýò êáé Õ, ðïõ êáôá ùñåß óôéò ðñþôåò èýóåéò äýï ðéíüêùí Á êáé Â, áíôßóôïé á óôéò äýï åíôïëýò 2. Óôéò åðüìåíåò èýóåéò ôïõ ðßíáêá Á êáôá ùñåß ôï áêýñáéï ðçëßêï ôçò äéáßñåóçò ôïõ ðåñéå ïìýíïõ ôçò ðñïçãïýìåíçò èýóçò äéá ôïõ äýï (óôçí åíôïëþ 5), åíþ óôïí ðßíáêá 6

 êáôá ùñåß äýï öïñýò ôï ðåñéå üìåíï ôçò ðñïçãïýìåíçò èýóçò ôïõ ßäéïõ ðßíáêá (åíôïëþ 6). ÔÝëïò, ìå ôç âïþèåéá ôçò ìåôáâëçôþò prod áèñïßæåé ôá ðåñéå üìåíá ôùí èýóåùí ôïõ ðßíáêá Â, üôáí ôï ðåñéå üìåíï ôùí áíôßóôïé ùí èýóåùí ôïõ ðßíáêá Á åßíáé ðåñéôôü (åíôïëýò 8-11). Óå ðñþôç áíüãíùóç äåí åßíáé åýêïëï íá ãßíåé áíôéëçðôüò ï óêïðüò ôïõ áëãïñßèìïõ áõôïý. Áò åîåôüóïõìå Ýíá ðñáêôéêü ðáñüäåéãìá ãéá íá êáôáëüâïõìå ôï ìç áíéóìü ôïõ. óôù üôé äßíïíôáé ïé áñéèìïß 35 êáé 29. Ôï ðåñéå üìåíï ôùí äýï ðéíüêùí êáé ç ôéìþ ôçò ìåôáâëçôþò prod äéáäï éêü Ý ïõí ùò åîþò. X Y prod i=1 35 29 29 i=2 17 58 58 i=3 8 116 i=4 4 232 i=5 2 464 i=6 1 928 928 ----- 1015 Ó Þìá 1: ÐáñÜäåéãìá ðïëëáðëáóéáóìïý áëü ñùóéêü. Ìðïñïýìå ðïëý åýêïëá íá äéáðéóôþóïõìå üôé ç ôåëéêþ ôéìþ (äçëáäþ, ôï 1015) ôçò ìåôáâëçôþò prod éóïýôáé ìå ôï áðïôýëåóìá ôïõ ðïëëáðëáóéáóìïý 35x29. Óå åðéâåâáßùóç, ëïéðüí, áõôïý ðïõ äéáôõðþèçêå ðñïçãïõìýíùò (äçëáäþ, üôé ãéá ôçí åðßëõóç êüðïéïõ ðñïâëþìáôïò ìðïñïýí íá ðñïôáèïýí ðåñéóóüôåñïé ôïõ åíüò áëãüñéèìïé) ç óõíüñôçóç russe åßíáé Ýíáò åíáëëáêôéêüò ôñüðïò ãéá ôçí åêôýëåóç ôïõ ðïëëáðëáóéáóìïý óå ó Ýóç ìå ôçí ôå íéêþ ðïõ Ý ïõìå äéäá èåß óôï äçìïôéêü ó ïëåßï, êáé åßíáé ãíùóôüò óôç âéâëéïãñáößá ùò "ðïëëáðëáóéáóìüò áëü ñùóéêü". Áîßæåé íá óçìåéùèåß üôé áõôüò ï ôñüðïò ðïëëáðëáóéáóìïý áêåñáßùí åßíáé ç âüóç ôïõ áëãïñßèìïõ ðïõ ðñáêôéêü ñçóéìïðïéåßôáé óå åðßðåäï êõêëùìüôùí ôïõ õðïëïãéóôþ, ãéáôß åßíáé ôá ýôåñïò áðü áõôüí ðïõ ãíùñßæïõìå. Ï ëüãïò ôçò ôá ýôçôüò ôïõ åßíáé üôé óôçí ïõóßá äåí åêôåëåß ðïëëáðëáóéáóìïýò áëëü ðñïóèýóåéò êáé ðñüîåéò ïëßóèçóçò ðïõ ãßíïíôáé åýêïëá óå áìçëü åðßðåäï (üðùò, ãéá ðáñüäåéãìá, óå ãëþóóá C/C++). ¼ðùò áíáöýñèçêå, óôéò óçìåéþóåéò áõôýò èá ðáñïõóéüóïõìå ôïõò áëãïñßèìïõò ôüóï ìå øåõäïêþäéêá üóï êáé êüðïéá óõãêåêñéìýíç ãëþóóá ðñïãñáììáôéóìïý. Ùóôüóï, ðñýðåé ç äéáöïñü ìåôáîý áëãïñßèìïõ êáé ðñïãñüììáôïò íá åßíáé óáöþò: ï ðñþôïò åßíáé ãåíéêüôåñïò, ôï äåýôåñï åßíáé åéäéêüôåñï ôïõ ðñþôïõ. Áõôü ãßíåôáé êáôáíïçôü áí èåùñþóïõìå ôá üñéá ôïõ õëéêïý. Ãéá ðáñüäåéãìá, Ýíáò áêýñáéïò áðïèçêåýåôáé óå 4 áñáêôþñåò êáé åðïìýíùò ìðïñåß íá ðüñåé ôéìýò áðü -65.000 ìý ñé 65.000. ÅðïìÝíùò, ðùò ìðïñïýìå íá åöáñìüóïõìå ôïí áëãüñéèìï áëü ñùóéêü ãéá áêåñáßïõò ìå ôéìýò åêôüò áõôþí ôùí ïñßùí Þ áêüìç êáé ãéá áñíçôéêïýò áñéèìïýò åíôüò ôùí áíùôýñù ïñßùí; ÊáôáëÞãïõìå óôï óõìðýñáóìá üôé ãéá êüèå áëãüñéèìï ðñýðåé íá ðñïóäéïñßæïõìå êáé ôï áíôßóôïé ï ðåäßï ïñéóìïý (domain of definition). 7

ÐñïçãïõìÝíùò áíáöåñèþêáìå óå äýï áëãïñßèìïõò ðïëëáðëáóéáóìïý áêåñáßùí ðïõ, áí êáé ôåëåßùò äéáöïñåôéêïß, êáôáëþãïõí óôï óùóôü áðïôýëåóìá. Óôï óçìåßï áõôü ðñýðåé íá åßìáóôå ðñïóåêôéêïß êáôü ôç óýãêñéóç áëãïñßèìùí ãéáôß ìðïñåß äýï áëãüñéèìïé íá äéáöýñïõí åëü éóôá ìåôáîý ôïõò áëëü åíäý åôáé íá åêôåëïýí ðïëý äéáöïñåôéêýò ëåéôïõñãßåò. ÁíÜëõóç Áëãïñßèìùí. Ãéáôß; ¼ðùò áíáöýñáìå, óõíþèùò óå êüðïéï äåäïìýíï ðñüâëçìá ìðïñïýìå íá åöåýñïõìå ðïëëýò åíáëëáêôéêýò ëýóåéò. Åßíáé áíáãêáßï åðïìýíùò ç áîéïëïãéêþ êáôüôáîç ôùí åíáëëáêôéêþí ëýóåùí þóôå íá åðéëåãåß ç ðñïóöïñüôåñç. Ìéëþíôáò ìå ôå íéêïýò üñïõò, óêïðüò ìáò åßíáé íá ðñïóäéïñßóïõìå ôçí åðßäïóç (performance) Þ ôçí áðïäïôéêüôçôá (efficiency) ôïõ êüèå áëãïñßèìïõ. Ôá âáóéêü êñéôþñéá ãéá ôçí åðéëïãþ åíüò áëãoñßèìïõ åßíáé ïé áðáéôþóåéò ôïõ óå õðïëïãéóôéêïýò ðüñïõò, äçëáäþ: ï áðáéôïýìåíïò ñüíïò åêôýëåóçò, êáé ï áðáéôïýìåíïò þñïò áðïèþêåõóçò. Êáèþò ðëýïí ç ìíþìåò (êýñéåò êáé äåõôåñåýïõóåò) ãßíïíôáé óõíå þò ìåãáëýôåñåò êáé öèçíüôåñåò, ï áðáéôïýìåíïò ñüíïò åêôýëåóçò åßíáé ôåëéêü ôï óçìáíôéêüôåñï êñéôþñéï. ëëá êñéôþñéá, üðùò ç äéêôõáêþ ùñçôéêüôçôá Þ ï áñéèìüò ôùí ðõëþí, åßíáé ðïëý ìéêñüôåñçò óçìáóßáò. ÕðÜñ ïõí äýï ôñüðïé ãéá íá åîåôüóïõìå ôçí åðßäïóç åíüò áëãïñßèìïõ: ï ðñáêôéêüò Þ åê ôùí õóôýñùí (a posteriori), êáé ï èåùñçôéêüò Þ åê ôùí ðñïôýñùí (a priori). Óýìöùíá ìå ôïí ðñþôï ôñüðï, êüèå áëãüñéèìïò åîåôüæåôáé óå Ýíáí õðïëïãéóôþ êáé ñïíïìåôñåßôáé êáèþò ç åßóïäüò ôïõ ôñïöïäïôåßôáé ìå äéüöïñá äåäïìýíá. Áõôüò ï ôñüðïò äåí åßíáé óùóôüò áí èåùñþóïõìå üôé äåí ëáìâüíåé õð üøç ôïõ ìßá óåéñü ðáñáìýôñùí, üðùò: ôï ñçóéìïðïéïýìåíï õëéêü, äçëáäþ, ôá óõãêåêñéìýíá áñáêôçñéóôéêü ôïõ õðïëïãéóôþ, üðùò ôá ýôçôá ôïõ åðåîåñãáóôþ, ôï ìýãåèïò ôçò êýñéáò Þ ôçò äåõôåñåýïõóáò ìíþìçò, ôç ñþóç êñõöþò ìíþìçò (cache) êïê. ôç ñçóéìïðïéïýìåíç ãëþóóá ðñïãñáììáôéóìïý, êáèþò åßíáé ãíùóôü üôé õðüñ- ïõí ôá ýôåñåò êáé âñáäýôåñåò ãëþóóåò ìå ðåñéóóüôåñç Þ ëéãüôåñç ðñüóâáóç óôï öõóéêü åðßðåäï (üðùò, ãéá ðáñüäåéãìá ïé ðáëáéüôåñåò ãëþóóåò óå áíôßèåóç ìå ôéò íåüôåñåò C/C++). ôï ñçóéìïðïéïýìåíï ìåôáãëùôôéóôþ/åñìçíåõôþ, êáèþò åßíáé äõíáôüí íá õðüñ- ïõí äéáèýóéìïé åìðïñéêü (Þ êáé äùñåüí ìýóá áðü ôï äéáäßêôõï) ðåñéóóüôåñïé ôïõ åíüò ìåôáãëùôôéóôýò ðïõ ìüëéóôá ìðïñåß íá ôñý ïõí óå äéáöïñåôéêü ëåéôïõñãéêü óõóôþìáôá (üðùò, ãéá ðáñüäåéãìá, Unix, Linux, Windows êïê). ôïí ðñïãñáììáôéóôþ ðïõ ñçóéìïðïéåß üëá ôá ðñïçãïýìåíá, êáèþò ï áíèñþðéíïò ðáñüãïíôáò åßíáé óçìáíôéêüôáôïò óå êüèå ðåñßðôùóç, êáé ôýëïò 8

ôá ñçóéìïðïéïýìåíá äåäïìýíá, ãéáôß åðß ðáñáäåßãìáôé ãíùñßæïõìå üôé êüèå áëãüñéèìïò ôáîéíüìçóçò óõìðåñéöýñåôáé äéáöïñåôéêü áíüëïãá ìå ôç öýóç ôùí äåäïìýíùí óôçí åßóïäï. ÊáôáëÞãïõìå, ëïéðüí, üôé äåí ðñýðåé íá ñçóéìïðïéïýìå ôïí ðñáêôéêü ôñüðï áíüëõóçò áëãïñßèìùí áëëü ôï èåùñçôéêü ðïõ ìáò ãëéôþíåé ôïí áðáéôïýìåíï ñüíï ôïõ ðñïãñáììáôéóôþ êáé ôïõ ìç áíþìáôïò. Ìßá âáóéêþ ðáñüìåôñïò ãéá ôç èåùñçôéêþ áíüëõóç åßíáé ôï ìýãåèïò ôïõ ðñïâëþìáôïò (problem size). Ãéá ðáñüäåéãìá, óôçí ðåñßðôùóç ôçò ôáîéíüìçóçò n áñéèìþí, ôïõ ðïëëáðëáóéáóìïý äýï ôåôñáãùíéêþí ðéíüêùí n n, Þ ôçò äéüó éóçò åíüò äýíäñïõ ìå n êüìâïõò, ëýãåôáé üôé ôï ìýãåèïò ôïõ ðñïâëþìáôïò åßíáé n. Åßíáé äõíáôüí ôï ìýãåèïò åíüò ðñïâëþìáôïò íá åêöñüæåôáé ìå äýï áñéèìïýò áíôß ãéá Ýíáí. Ãéá ðáñüäåéãìá, Ýíáò ãñüöïò äéáêñßíåôáé áðü ôï ðëþèïò ôùí êïñõöþí n áëëü êáé ôï ðëþèïò ôùí áêìþí m. ÄåäïìÝíïõ, ëïéðüí, åíüò ðñïâëþìáôïò êáé åíüò Þ ðåñéóóïôýñùí áëãïñßèìùí ãéá ôçí åðßëõóç áõôïý ôïõ ðñïâëþìáôïò, óêïðüò ìáò åßíáé ç åýñåóç ôçò ñïíéêþò ðïëõðëïêüôçôáò (time complexity) êáé ôçò ùñéêþò ðïëõðëïêüôçôáò (space complexity) ôïõò ùò óõíüñôçóçò ôïõ n. Ôçí ðïëõðëïêüôçôá åêöñüæïõìå ìå ôç âïþèåéá åéäéêþí óõìâïëéóìþí (notation), ðïõ ßóùò ãíùñßæïõìå áðü ôá ìáèþìáôá ôùí ðñïçãïõìýíùí åîáìþíùí. Áõôïß ïé óõìâïëéóìïß åßíáé: Ï, Ù, È, ï êáé ù, êáé åî áõôþí ïé óðïõäáéüôåñïé êáé óõ íüôåñá ñçóéìïðïéïýìåíïé åßíáé ïé ôñåéò ðñþôïé. Ç Ýííïéá ôçò ðïëõðëïêüôçôáò êáé ïé Ýííïéåò ôùí óõìâïëéóìþí åßíáé ôå íéêýò êáé ãéá ôï ëüãï áõôü ðñýðåé íá ïñéóèïýí ðñïóåêôéêü óå åðüìåíï ìüèçìá. Êïóôïëüãçóç ÐñÜîåùí êáé Åíôïëþí Ãéá íá èåìåëéþóïõìå ôç ìýèïäï ôçò èåùñçôéêþò áíüëõóçò ðñýðåé íá Ý ïõìå õð üøç ìáò ôï ìïíôýëï ôçò ìç áíþò üðïõ ïé áëãüñéèìïß èá åêôåëïýíôáé (èåùñçôéêü). Ôï ìïíôýëï áõôü ëýãåôáé ìïíôýëï RAM (Random-Access Machine model) êáé èåùñåß üôé ïé áëãüñéèìïé ìáò åêôåëïýíôáé óå ìßá ìç áíþ ìå Üðåéñç ìíþìç êáé Ýíáí åðåîåñãáóôþ üðïõ ïé åíôïëýò åêôåëïýíôáé ç ìßá ìåôü ôçí Üëëç êáé ü é ôáõôü ñïíá. ÊÜèå åíôïëþ ðåñéëáìâüíåé ôçí åêôýëåóç âáóéêþí ðñüîåùí óå äýï ôéìýò (üðùò, áñáêôþñåò, áêåñáßïõò êëð) ðïõ åßíáé áðïèçêåõìýíåò óôç ìíþìç ôïõ õðïëïãéóôþ. Óçìåéþíåôáé üôé õðü åé êáé ôï ëåãüìåíï ìïíôýëï PRAM (Parallel Random-Access Machine model), üðïõ èåùñåßôáé üôé õðüñ ïõí ðïëëïß åðåîåñãáóôýò, åíþ åßíáé äõíáôüí åíôïëýò ðåñéóóüôåñåò ôçò ìßáò íá åêôåëïýíôáé ôáõôü ñïíá. Ôï ìïíôýëï PRAM äåí èá ìáò áðáó ïëþóåé óôç óõíý åéá. Ãéá íá åêöñüóïõìå ôçí áðïôåëåóìáôéêüôçôá åíüò áëãïñßèìïõ (ìå âüóç ôï ìïíôýëï RAM) ðñýðåé íá åêôéìþóïõìå ôï êüóôïò åêôýëåóçò êüèå ðñüîçò Þ/êáé êüèå åíôïëþò, íá õðïëïãßóïõìå ðüóåò öïñýò èá åêôåëåóèåß êüèå åíôïëþ êáé íá áèñïßóïõìå ôá åðß ìýñïõò êüóôç þóôå íá âñïýìå ôï óõíïëéêü êüóôïò. Áñ éêü áò èåùñþóïõìå ôï êüóôïò ôùí ðñüîåùí. íá ðñüãñáììá Þ Ýíáò áëãüñéèìïò ìðïñåß íá áðïôåëåßôáé áðü ðïëëþí åéäþí ðñüîåéò, üðùò: áñéèìçôéêýò ðñüîåéò (ðñüóèåóç, áöáßñåóç, ðïëëáðëáóéáóìüò, äéáßñåóç, ðñüîç modulo), ëïãéêýò (boolean) ðñüîåéò, óõãêñßóåéò (åíôïëýò if, for, while, repeat until), êáôá ùñþóåéò (assignment) êïê. ¼ëåò áõôýò ôéò ðñüîåéò ïíïìüæïõìå óôïé åéþäåéò (elementary). Áðáñáßôçôç ðñïûðüèåóç ãéá íá èåùñçèåß ìßá ðñüîç ùò 9

óôïé åéþäçò åßíáé íá áðáéôåß ñüíï åêôýëåóçò öñáãìýíï áðü åðüíù áðü ìßá óôáèåñü ðïõ íá åîáñôüôáé ìüíï áðü ôï óõãêåêñéìýíï ðåñéâüëëïí õëïðïßçóçò (üðùò, ôï ñçóéìïðïéïýìåíï ìç Üíçìá, ôç ãëþóóá ðñïãñáììáôéóìïý, ôï ìåôáãëùôôéóôþ, êëð). Óôçí ðñüîç åßíáé ãíùóôü üôé áõôýò ïé óôïé åéþäåéò ðñüîåéò ðïõ áíáöýñèçêáí äåí Ý ïõí ôï ßäéï ñïíéêü êüóôïò åêôýëåóçò. Ãéá ðáñüäåéãìá, ç ðñüîç ôïõ ðïëëáðëáóéáóìïý åßíáé ðëýïí ñïíïâüñá áðü ôçí ðñüîç ôçò ðñüóèåóçò. Ùóôüóï, ãéá ëüãïõò åõêïëßáò èåùñïýìå üôé üëåò ïé óôïé åéþäåéò ðñüîåéò Ý ïõí ìïíáäéáßï êüóôïò (unit cost). ñåéüæåôáé ðñïóï Þ þóôå íá ìçí ðáñåîçãçèåß áõôþ ç Ýííïéá ôïõ ìïíáäéáßïõ êüóôïõò. Ãéá ðáñüäåéãìá, ç åíôïëþ for i <-- 1 to n do Þ ç åíôïëþ x <-- n! áðïôåëïýíôáé áðü ðïëëýò áðëïýóôåñåò ðñüîåéò ðïõ ðñýðåé üëåò íá êáôáìåôñçèïýí. Ðéï óõãêåêñéìýíá, óôçí ðñþôç ðåñßðôùóç õðåéóýñ åôáé Ýíá ðëþèïò ðñïóèýóåùí, óõãêñßóåùí êáé êáôá ùñþóåùí, åíþ óôç äåýôåñç ðåñßðôùóç õðåéóýñ- åôáé áíôßóôïé á Ýíá ðëþèïò ðïëëáðëáóéáóìþí, óõãêñßóåùí êáé êáôá ùñþóåùí. Å åé óçìáóßá, åðßóçò, íá åîåôüóïõìå ôï ìýãåèïò ôùí ìåôáâëçôþí üðïõ åêôåëïýíôáé ïé ðñüîåéò áõôýò. Ãéá ðáñüäåéãìá, åßíáé ãíùóôü üôé éó ýåé 8!=40.320 áëëü 9!=362.880, áñéèìüò ðïõ õðåñâáßíåé ôá üñéá ôïõ áðëïý áêåñáßïõ. Ôï ßäéï ðñüâëçìá ìðïñåß íá ðñïêýøåé êáôü ôïí õðïëïãéóìü ôùí áñéèìþí Fibonacci, óýìöùíá ìå ôïí åðüìåíï áëãüñéèìï (èåùñþíôáò ôï n 0 áêýñáéï áñéèìü). function fib(n) 1. i <-- 1; j <-- 0; 2. for k <-- 1 to n do 3. j <-- i+j; 4. i <-- j-1 5. return j Áí, ëïéðüí, ñçóéìïðïéþóïõìå áõôü ôï áðëïýóôáôï êïììüôé øåõäïêþäéêá ãéá ôïí õðïëïãéóìü ôïõ F 47, ôüôå èá ðñïêýøåé õðåñ åßëéóç, åíþ ãéá ôçí êáôá þñçóç ôïõ áñéèìïý F 65535 áðáéôïýíôáé 45.496 bits. Áíôßóôïé á ðñïâëþìáôá ìðïñåß íá åìöáíéóèïýí óå ðñáãìáôéêïýò áñéèìïýò, üðïõ ìðïñåß íá áðáéôåßôáé ìéêñüôåñç Þ ìåãáëýôåñç áêñßâåéá. ÅðïìÝíùò, ìðïñåß ãéá Ýíáí áëãüñéèìï ï ðïëëáðëáóéáóìüò íá èåùñåßôáé ùò óôïé åéþäçò ðñüîç áëëü óå Ýíá ðñüãñáììá èá ðñýðåé íá åßìáóôå âýâáéïé ãéá ôï ðåñéâüëëïí ðñáãìáôéêþò ëåéôïõñãßáò ôïõ. Ï ëüãïò åßíáé üôé ßóùò äåí èá áñêïýí ôá ìåãýèç ôùí áíôßóôïé ùí ôýðùí, ïðüôå ãéá ôçí áðïöõãþ áñéèìçôéêþò õðåñ åßëéóçò èá ðñýðåé íá ñçóéìïðïéçèïýí ôýðïé ìåãáëýôåñïõ ìåãýèïõò, êáé åðïìýíùò ìåãáëýôåñïõ êüóôïõò. Ç ïðôêþ ãùíßá Ýêöñáóçò ôçò åðßäïóçò åíüò áëãïñßèìïõ åêôéìþíôáò êáé áèñïßæïíôáò ôá åðß ìýñïõò êüóôç ôùí ðñüîåùí ñçóéìïðïéþèçêå óå ìåãüëç Ýêôáóç áðü ôïí Donald Knuth óôï ôñßôïìï éóôïñéêü ôïõ âéâëßï The Art of Computer Programming, ôï ïðïßï åêäüèçêå ôï 1967. Ç ðñïóýããéóç áõôþ åßíáé ç ëåðôïìåñýóôåñç êáé áêñéâýóôåñç áëëü êáé ç ðëýïí åðßðïíç. Áí êáé ç èåþñçóç ôïõ êüóôïõò ôùí ðñüîåùí âïçèü óôçí êáôáíüçóç ôùí åðß ìýñïõò ðáñáãüíôùí êüóôïõò êáé ôåëéêü óôç ìåßùóç ôïõ óõíïëéêïý êüóôïõò, åí ôïýôïéò äåí ñçóéìïðïéåßôáé óôç âéâëéïãñáößá êáèþò Ý åé åðéêñáôþóåé ìßá ìáêñïóêïðéêüôåñç ðñïóýããéóç ðïõ åîåôüæåé ôï êüóôïò ôùí åíôïëþí. 10

Ãéá íá åêöñüóïõìå ôçí ðïëõðëïêüôçôá åíüò áëãïñßèìïõ èåùñþíôáò ôï êüóôïò ôùí åíôïëþí (êáé ìå âüóç ôï ìïíôýëï RAM) ðñýðåé íá åêôéìþóïõìå ôï êüóôïò åêôýëåóçò êüèå åíôïëþò, íá õðïëïãßóïõìå ôï ðëþèïò åêôåëýóåùí êüèå åíôïëþò êáé íá áèñïßóïõìå ôá åðß ìýñïõò êüóôç þóôå íá âñïýìå ôï óõíïëéêü êüóôïò. Êáé ðüëé åßíáé åõíüçôï üôé ôï êüóôïò êüèå åíôïëþò ìðïñåß íá åßíáé äéáöïñåôéêü. Ãéá ðáñüäåéãìá, áðü ôç óõíüñôçóç russe áîßæåé íá ðñïóýîïõìå ôéò ôñåéò åíôïëýò: i <-- 1 (åíôïëþ 3), X[i+1] <-- X[i] div 2 (åíôïëþ 5) êáé if X[i] is odd then prod <-- prod+y[1] (åíôïëþ 10), þóôå áìýóùò íá äéáðéóôþóïõìå ôçí áëþèåéá ôçò ðñüôáóçò áõôþò. Ãéá ôï ëüãï áõôü èåùñïýìå üôé ç i-ïóôþ åíôïëþ åíüò áëãïñßèìïõ Ý åé Ýíá óôáèåñü êüóôïò c i ðïõ åßíáé öñáãìýíï áðü åðüíù ãéá ïðïéïäþðïôå ðåñéâüëëïí õëïðïßçóçò. Óôç óõíý åéá èá åîåôüóïõìå ôçí ðñïçãïýìåíç êïóôïëüãçóç åíôïëþí óå Ýíá ëåðôïìåñýò ðñüãñáììá (êáô åîáßñåóç êáé ü é óå Ýíáí áðëü áëãüñéèìï). ÄçëáäÞ, èá åöáñìüóïõìå ìßá åðáêñéâþ (exact) áíüëõóç óå Ýíá ðñüãñáììá C õðïëïãßæïíôáò ôï êüóôïò åêôýëåóçò ãñáììþ-ãñáììþ óå óõíäõáóìü ìå ôï ðëþèïò ôùí åêôåëýóåùí ôçò êüèå ãñáììþò. Ôï ðñüãñáììá ðïõ èá äïêéìüóïõìå õëïðïéåß ôçí ôáîéíüìçóç åðéëïãþò, ðïõ ãíùñßæïõìå áðü ôï ìüèçìá ôùí Äïìþí ÄåäïìÝíùí. procedure select 1. for (i=0; i<n; ++i) { 2. min=i; 3. for (j=i+1; j<=n; ++j) 4. if (A[j]<A[min]) min=j; 5. temp=a[i]; 6. A[i]=A[min]; 7. A[min]=temp; 8. } Ï åðüìåíïò ðßíáêáò äßíåé ãéá êüèå ãñáììþ ôï êüóôïò ôçò ãñáììþò êáé ôïí áíôßóôïé ï áñéèìü åðáíáëþøåùí. ÃñáììÞ Êüóôïò Áñéèìüò ÅêôåëÝóåùí 1 c 1 n + 1 2 c 2 n n 3 c 3 j=1 j n 4 c 4 j=1 j 1 5 c 5 n 6 c 6 n 7 c 7 n Ãéá íá âñïýìå ôç óõíïëéêþ åðßäïóç ôïõ ðñïãñüììáôïò áèñïßæïõìå ôá åðéìýñïõò êüóôç êáé Ý ïõìå: n T (n) = c 1 (n + 1) + c 2 n + c 3 j + c 4 j=1 n j=1 (j 1) + c 5 n + c 6 n + c 7 n 11

n(n + 1) n(n + 1) = c 1 n + c 1 + c 2 n + c 3 + c 4 c 4 n + c 5 n + c 6 n + c 7 n 2 2 = (c 3 /2 + c 4 /2)n 2 + (c 1 + c 2 + c 3 /2 c 4 /2 + c 5 + c 6 + c 7 )n + c 1 = an 2 + bn + c Ðáñáôçñïýìå üôé ôï ôåëéêü êüóôïò åßíáé ìßá ôåôñáãùíéêþ óõíüñôçóç êáé üôé åîáñôüôáé áðü ôï ìýãåèïò ôçò åéóüäïõ, äçëáäþ ôï n, êáé ü é áðü ôï åßäïò ôçò åéóüäïõ áëëü êõñßùò äåí åîáñôüôáé áóõìðôùôéêü áðü óõãêåêñéìýíåò ôéìýò ôùí êïóôþí c i. Óôç óõíý åéá èá åöáñìüóïõìå ôçí ßäéá ôå íéêþ ãéá ôï ðñüãñáììá óå C ôçò ôáîéíüìçóç ìå åéóáãùãþ, ðïõ åðßóçò ãíùñßæïõìå áðü ôï ìüèçìá ôùí Äïìþí ÄåäïìÝíùí. Ìå ðáñüìïéï ôñüðï èá ðáñïõóéüóïõìå óå áíôßóôïé ï ðßíáêá ôá áíôßóôïé á êüóôç áíü ãñáììþ. Óôïí ðßíáêá áõôüí ìå t j óõìâïëßæåôáé ôï ðëþèïò ôùí åêôåëýóåùí ôïõ âñü ïõ while ãéá ôéò äéüöïñåò ôéìýò ôïõ j. procedure insert 1. for(j=2; j<=n; ++j) { 2. key=a[j]; 3. i=j-1; 4. while (i>0 && A[i]>key) 5. A[i+1]=A[i] 6. i=i-1; 7. A[i+1]=key 8. } ÃñáììÞ Êüóôïò Áñéèìüò ÅêôåëÝóåùí 1 c 1 n 2 c 2 n 1 3 c 3 n 1 n 4 c 4 j=2 t j n 5 c 5 j=2 t j 1 n 6 c 6 j=2 t j 1 7 c 7 n 1 ¼ðùò ðñïçãïõìýíùò, ãéá íá âñïýìå ôï óõíïëéêü êüóôïò ôïõ ðñïãñüììáôïò áèñïßæïõìå ôá åðß ìýñïõò êüóôç êáé Ý ïõìå: n T (n) = c 1 n + c 2 (n 1) + c 3 (n 1) + c 4 t j + c 5 + c 7 (n 1) = (c 4 + c 5 + c 6 ) j=2 n j=2 n t j + (c 1 + c 2 + c 3 c 5 c 6 + c 7 )n j=2 + ( c2 c3 + c5 + c6 c7) n (t j 1) + c 6 (t j 1) j=2 12

ÅðïìÝíùò ãéá íá åðéëõèåß ðåñáéôýñù ç åîßóùóç T (n) ðñýðåé íá åóôéüóïõìå óôçí ôéìþ ôçò ìåôáâëçôþò t j. Áí ï ðßíáêáò åßíáé Þäç ôáîéíïìçìýíïò, ôüôå éó ýåé t j = 1, ïðüôå ìå åýêïëç Üëãåâñá êáôáëþãïõìå üôé ç óõíüñôçóç T (n) åßíáé ãñáììéêþ. ÁõôÞ åßíáé ç êáëýôåñç äõíáôþ ðåñßðôùóç. H åéñüôåñç ðåñßðôùóç óõìâáßíåé üôáí èýëïõìå íá ôáîéíïìþóïõìå êáôü áýîïõóá óåéñü áëëü ôá óôïé åßá åéóýñ ïíôáé óôçí åßóïäï êáôü öèßíïõóá óåéñü. Ôüôå éó ýåé t j = j, ïðüôå êáé ðüëé ìå åýêïëç Üëãåâñá êáôáëþãïõìå üôé ç óõíüñôçóç T (n) åßíáé ôåôñáãùíéêþ. Ç ìýóç ðåñßðôùóç åîáñôüôáé áðü ôçí êáôáíïìþ ôùí óôïé åßùí êáé ôéò ìåôáîý ôïõò ó Ýóåéò êáé åßíáé äõóêïëüôåñï íá âñåèåß åðáêñéâþò. Åðß ôïõ ðáñüíôïò, áò áñêåóèïýìå óôç äéáâåâáßùóç üôé êáé óôçí ðåñßðôùóç áõôþ ç áíôßóôïé ç T (n) åßíáé ôåôñáãùíéêþ óõíüñôçóç. ¼ðùò êáé óôï ðñïçãïýìåíï ðáñüäåéãìá, êáôáëþãïõìå êáé ôþñá óôï áðëü óõìðýñáóìá üôé ôï óõíïëéêü êüóôïò äåí åîáñôüôáé áðü ôéò ôéìýò ôùí åðß ìýñïõò êïóôþí c i êáèþò áõôü åìöáíßæïíôáé óôïõò óôáèåñïýò óõíôåëåóôýò êáé äåí åðçñåüæïõí ôçí áóõìðôùôéêþ óõìðåñéöïñü ôïõ áëãïñßèìïõ/ðñïãñüììáôïò, êüôé ðïõ éó ýåé ãéá ôï ìýãåèïò ôïõ ðñïâëþìáôïò n. ÅðïìÝíùò óõìðåñáßíïõìå üôé ï ôñüðïò áõôüò êïóôïëüãçóçò, áí êáé åðáêñéâþò, åßíáé õðåñâïëéêüò êáé ôåëéêü ìç ðñáêôéêüò. ÐñïêåéìÝíïõ, ëïéðüí, íá åêôéìþóïõìå ôçí åðßäïóç åíüò áëãïñßèìïõ, ðñýðåé íá áðëïðïéþóïõìå ôçí êáôüóôáóç áêüìç ðåñéóóüôåñï êáé íá åóôéüóïõìå óôá êñßóéìá óçìåßá ôïõ áëãïñßèìïõ. ÅðéëïãÞ ôïõ Âáñüìåôñïõ Ðáñáôçñþíôáò ðñïóåêôéêüôåñá ôá äýï ðñïçãïýìåíá ðñïãñüììáôá, ðáñáôçñïýìå üôé ôï ìåãáëýôåñï êïììüôé ôïõ êüóôïõò ðñïýñ åôáé áðü ôçí åêôýëåóç åíôïëþí ìýóá óå âñüã ïõò êáé ü é áðü ôçí åêôýëåóç åíôïëþí áñ éêïðïßçóçò. ñá ðñýðåé íá åóôéüóïõìå åêåß êáé íá áãíïþóïõìå ôá óçìåßá ôïõ ðñïãñüììáôïò/áëãïñßèìïõ üðïõ ôï êüóôïò èá åßíáé ìéêñüôåñï áðü ôá ðñïáíáöåñèýíôá óçìåßá. Áò èåùñþóïõìå ôçí åðüìåíç åêäï Þ áëãïñßèìïõ ôáîéíüìçóçò ìå åðéëïãþ êáé áò åóôéüóïõìå óôçí åíôïëþ 3 ôïõ åóùôåñéêïý âñü ïõ êáé ðéï óõãêåêñéìýíá ôüóï óôéò åíôïëýò êáôá þñçóçò 5-6 ìýóá óôçí åíôïëþ åëýã ïõ if (åíôïëþ 4), üóï êáé óôçí ßäéá åíôïëþ if ðïõ åíóùìáôþíåé Üëëåò åíôïëýò. procedure select 1. for i <-- 1 to n-1 do 2. minj <-- i; minx <-- A[i]; 3. for j <-- i+1 to n do 4. if A[j]<minx then 5. minj <-- j 6. minx <-- A[j] 7. A[minj] <-- A[i] 8. A[i] <-- minx Áí õðïèýóïõìå üôé ôï êüóôïò ìßáò åêôýëåóçò ôïõ åóùôåñéêïý ôìþìáôïò ôïõ åóùôåñéêïý âñü ïõ (äçëáäþ, ìßáò åêôýëåóçò ôùí åíôïëþí 4-6) åßíáé öñáãìýíï áðü åðüíù áðü ìßá óôáèåñü c 1. Ãéá ìßá óõãêåêñéìýíç ôéìþ ôçò ìåôáâëçôþò i, ï áñéèìüò ôùí åêôåëýóåùí èá åßíáé n i êáé åðïìýíùò ôï áèñïéóôéêü êüóôïò åêôýëåóçò ôùí 13

åíôïëþí 4-6 èá åßíáé c 1 (n i). Áí óõíõðïëïãßóïõìå ôï êüóôïò áñ éêïðïßçóçò ôçò åíôïëþò 3, ôüôå ôï ìý ñé óôéãìþò êüóôïò ãéá ôéò åíôïëýò 3-6 åßíáé c 2 + c 1 (n i). Óôç óõíý åéá åîåôüæïíôáò ôïí åîùôåñéêü âñü ï, äéáêñßíïõìå Ýíá óôáèåñü êüóôïò c 3 ëüãù ôùí äýï åíôïëþí 2, ïðüôå ôï êüóôïò åêôýëåóçò ôïõ åóùôåñéêïý ôìþìáôïò ôïõ åîùôåñéêïý âñü ïõ (äçëáäþ ôùí åíôïëþí 2-8) èá åßíáé: n 1 i=1 (c 3 + c 2 + c 1 (n i)). ÔÝëïò, óôï êüóôïò áõôü ðñýðåé íá ðñïóèýóïõìå Ýíá óôáèåñü êüóôïò c 4 ãéá ôçí áñ éêïðïßçóç ôçò åíôïëþò 1. Áí áðëïðïéþóïõìå ôçí ðñïêýðôïõóá Ýêöñáóç, ôüôå åýêïëá öèüíïõìå óôçí åðüìåíç Ýêöñáóç: T (n) = c 1 2 n2 + (c 2 + c 3 c 1 2 ) n + (c 4 c 3 c 2 ) ðïõ äéáðéóôþíïõìå üôé åßíáé êáé ðüëé ôåôñáãùíéêþ. ÊáôáëÞîáìå, ëïéðüí, óôï ßäéï óõìðýñáóìá ìýóá áðü Ýíáí Üëëï äñüìï, áíáæçôþíôáò ôï êñßóéìï óçìåßï êüóôïõò ðïõ ïíïìüæïõìå âáñüìåôñï (barometer). Óå ðñáêôéêü åðßðåäï ç åðéëïãþ ôïõ âáñüìåôñïõ åßíáé ó åôéêü åýêïëç õðüèåóç, áñêåß íá åöáñìüóïõìå ìßá óåéñü áðëþí êáíüíùí: ôï êüóôïò åêôýëåóçò ìßáò åíôïëþò åíôüò åíüò âñü ïõ ðñïêýðôåé áðü ôï ãéíüìåíï ôïõ êüóôïõò ìßáò åêôýëåóçò ôçò åíôïëþò åðß ôïí áñéèìü ôùí åðáíáëþøåùí, ôï êüóôïò åêôýëåóçò ìßáò åíôïëþò åíôüò åíüò öùëéáóìýíïõ âñü ïõ ðñïêýðôåé áðü ôï ãéíüìåíï ôïõ êüóôïõò ìßáò åêôýëåóçò ôçò åíôïëþò åðß ôïí áñéèìü ôùí åðáíáëþøåùí üëùí ôùí âñü ùí (åðé åéñïýìå ôçí áíüëõóç áðü ìýóá ðñïò ôá Ýîù). óå ðåñßðôùóç äéáäï éêþí åíôïëþí åóôéáæüìáóôå óôçí åíôïëþ ìå ôï ìåãáëýôåñï êüóôïò, ôï êüóôïò åêôýëåóçò ìßáò åíôïëþò åëýã ïõ (if) éóïýôáé ìå ôï êüóôïò ôïõ åëýã- ïõ óõí ôï êüóôïò ôçò äéáêëüäùóçò ìå ôï ìåãáëýôåñï êüóôïò. ÓõíÞèùò åóôéáæüìáóôå óôï åóùôåñéêüôåñï óçìåßï ôùí âñü ùí, ìå ðñïôßìçóç óôïõò ðïëõðëïêüôåñïõò (äçëáäþ, óôïõò öùëéáóìýíïõò ìå ðåñéóóüôåñá åðßðåäá). Ùóôüóï, ñåéüæåôáé éäéáßôåñç ðñïóï Þ óôï åéñéóìü ôùí ïñßùí ôùí âñü ùí. Ôï åðüìåíï ðáñüäåéãìá åßíáé áñáêôçñéóôéêü. Ï ìéêñüò áõôüò øåõäïêþäéêáò õðïèýôåé üôé õðüñ åé Ýíáò ðßíáêáò A ìå n áêåñáßïõò, ãéá ôïõò ïðïßïõò éó ýåé 0 A[i] i, åíþ åðßóçò äßíåôáé üôé ôï Üèñïéóìá áõôþí ôùí áêåñáßùí éóïýôáé ìå s. 1. k <-- 0 2. for i <-- 1 to n do 3. for j <-- 1 to A[i] do 4. k <-- k + A[j] Ãéá êüèå ôéìþ ôçò ìåôáâëçôþò i, ç åíôïëþ 4 èá åêôåëåóèåß A[i] öïñýò, åðïìýíùò óõíïëéêü ãéá üëåò ôéò ôéìýò ôçò ìåôáâëçôþò i (äçëáäþ áðü 1 ìý ñé n), ôï ðëþèïò ôùí åðáíáëþøåùí èá åßíáé n i=1 A[i] = s. Èá ìðïñïýóå êüðïéïò íá õðïóôçñßîåé üôé ç åðßäïóç ôïõ ìéêñïý áõôïý øåõäïêþäéêá åßíáé ôçò ôüîçò ôïõ s. Ãéá áíôéðáñüäåéãìá, 14

üìùò, áò õðïèýóïõìå üôé A[i] = 1 áí ôï i åßíáé ôýëåéï ôåôñüãùíï, áëëéþò éó ýåé A[i] = 0. Óôçí ðåñßðôùóç áõôþ éó ýåé s = n. ¼ìùò êüôé ôýôïéï äåí ìðïñåß íá éó ýåé ãéáôß ïðùóäþðïôå èá åëåã èïýí üëåò ïé èýóåéò ôïõ ðßíáêá A ìåãýèïõò n (êáé ôïõëü éóôïí ìßá öïñü ç êüèå ìßá). Áõôü ðïõ äåí åëþöèç õð üøç óôçí ðñïçãïýìåíç ðñïóýããéóç åßíáé üôé óå êüèå ðåñßðôùóç èá ãßíïõí ïé áðáñáßôçôïé Ýëåã ïé óôçí åíôïëþ 3, áíåîáñôþôùò áí èá åêôåëåóèåß ç åíôïëþ 4. Óå åíßó õóç ôïõ ãåãïíüôïò áõôïý, áò ðñïóýîïõìå êáé ðüëé ôá ðáñáäåßãìáôá ôçò ôáîéíüìçóçò ìå åðéëïãþ êáé åéóáãùãþ ôçò ðñïçãïõìýíçò ðáñáãñüöïõ, üðïõ ïé åíôïëýò ôùí âñü ùí åêôåëïýíôáé ìßá öïñü ðåñéóóüôåñï áðü ôéò åíôïëýò åíôüò ôïõ âñü ïõ. Ç ïñèþ ðñïóýããéóç, ëïéðüí, ðñýðåé íá áêïëïõèþóåé ôç ìåèïäïëïãßá ôïõ ðáñáäåßãìáôïò ôçò ôáîéíüìçóçò ìå åðéëïãþ. Áí c 1 åßíáé ôï êüóôïò ìßáò åêôýëåóçò ôçò åóùôåñéêïý âñü ïõ, åíþ c 2 åßíáé ôï êüóôïò áñ éêïðïßçóçò ôïõ âñü ïõ áõôïý, ôüôå ôï êüóôïò ôùí åíôïëþí 3-4 åßíáé c 2 + c 1 A[i]. Ìå ðáñüìïéï ôñüðï, áí c 3 åßíáé ôï êüóôïò ìßáò åêôýëåóçò ôïõ åîùôåñéêïý âñü ïõ, åíþ c 4 åßíáé ôï êüóôïò áñ éêïðïßçóçò ôïõ âñü ïõ áõôïý, ôüôå åýêïëá ðñïêýðôåé üôé ôï êüóôïò ôùí åíôïëþí 2-4 åßíáé c 4 + n i=1 (c 3 + c 2 + c 1 A[i]). Áí áðëïðïéçèåß ç Ýêöñáóç áõôþ, ôüôå ðñïêýðôåé (c 3 + c 2 )n + c 1 s + c 4. Óõíåðþò, ôï êüóôïò ôïõ ðñïçãïýìåíïõ øåõäïêþäéêá åßíáé ãñáììéêþ óõíüñôçóç äýï ìåôáâëçôþí, ôïõ n êáé ôïõ s. ÁíåîáñôÞôùò ôçò éäéáéôåñüôçôáò ôïõ ðñïçãïýìåíïõ ðáñáäåßãìáôïò, éó ýåé ç ðáñáôþñçóç ôçò áñ Þò ôçò ðáñïýóáò ðáñáãñüöïõ, äçëáäþ üôé ôï ìåãáëýôåñï êïììüôé ôïõ êüóôïõò ðñïýñ åôáé áðü ôçí åêôýëåóç åíôïëþí ìýóá óå âñüã ïõò êáé åêåß èá ðñýðåé óå êüèå ðåñßðôùóç íá åóôéüæïõìå. Ðéï óõãêåêñéìýíá, óå ðïëëïýò áëãïñßèìïõò (êáé êáô åîï Þí óå áëãïñßèìïõò ôáîéíüìçóçò) åßíáé ôï ðëþèïò ôùí ðñáãìáôïðïéïýìåíùí óõãêñßóåùí ìýóá óå Ýíá âñü ï ç óçìáíôéêüôåñç ðñüîç ðïõ èá ðñýðåé íá õðïëïãßæåôáé ìå óêïðü ôçí åýñåóç ôçò åðßäïóçò ôïõ áëãïñßèìïõ. ÁíÜëõóç ÌÝóçò êáé åéñüôåñçò Ðåñßðôùóçò Ìßá óõìâïëïóåéñü (string) ëýãåôáé ðáëßíäñïìï (palindrome) áí äéáâüæåôáé ôï ßäéï åßôå áðü ôçí áñ Þ åßôå áðü ôï ôýëïò ( íßøïí áíïìþìáôá ìç ìüíáí üøéí"). Ï øåõäïêþäéêáò ðïõ áêïëïõèåß âñßóêåé Ýíá ðáëßíäñïìï óå ìßá óõìâïëïóåéñü åéóüäïõ ðïõ áðïèçêåýåôáé óå Ýíá ðßíáêá S ìþêïõò n. Ôïí áëãüñéèìï áõôü èá áíáëýóïõìå þóôå íá ãíùñßæïõìå ôç óõìðåñéöïñü ôïõ óå ôñåéò ðåñéðôþóåéò: ôçí êáëýôåñç, ôç åéñüôåñç êáé ôç ìýóç. procedure palindrome 1. left <-- 1; right <-- n; flag <-- false; 2. while (left<right) and (S[left]=S[right]) do 3. left <-- left+1; right <-- right-1; 4. if (left>=right) then flag <-- true Ãéá åõêïëßá ôçò áíüëõóçò èá õðïèýóïõìå üôé ç óõìâïëïóåéñü åßíáé äõáäéêþ. Ç êñßóéìç åíôïëþ âáñüìåôñï åßíáé ç åíôïëþ 3 ìýóá óôï âñü ï while. Áí éó ýåé S[1]<>S[n], äçëáäþ äéáöýñåé ï ðñþôïò êáé ï ôåëåõôáßïò áñáêôþñáò, ôüôå äåí åêôåëåßôáé ï âñü ïò êáé ï áëãüñéèìïò ôåñìáôßæåé. ÁõôÞ åßíáé ç êáëýôåñç ðåñßðôùóç êáé åðïìýíùò óõìðåñáßíïõìå üôé óôçí ðåñßðôùóç áõôþ ç ðïëõðëïêüôçôá åßíáé È(1). 15

Ç åéñüôåñç ðåñßðôùóç óõìâáßíåé üôáí ç óõìâïëïóåéñü åßíáé Ýíá ðáëßíäñïìï, ïðüôå ï âñü ïò èá åêôåëåóèåß n/2 öïñýò. Óôçí ðåñßðôùóç áõôþ ç ðïëõðëïêüôçôá åßíáé È(n). Ãéá íá ìåëåôþóïõìå ôç ìýóç ðåñßðôùóç èá ðñýðåé íá åîåôüóïõìå üëåò ôéò óõìâïëïóåéñýò ìþêïõò n. Êáèþò õðïèýôïõìå üôé ôï áëöüâçôü ìáò Ý åé ìüíï äýï áñáêôþñåò, Ýðåôáé üôé õðüñ ïõí 2 n äéáöïñåôéêýò óõìâïëïóåéñýò. Êáô áñ Þí õðïèýôïõìå üôé ôï n åßíáé Üñôéïò áñéèìüò. ÅðïìÝíùò 2 n /2 óõìâïëïóåéñýò äéáöýñïõí óôïí ðñþôï êáé ôåëåõôáßï áñáêôþñá, üðïôå äåí èá åêôåëåóèåß ôï óþìá ôïõ âñü- ïõ while (åíôïëþ 3). Åðßóçò, 2 n /2 2 óõìâïëïóåéñýò äéáöýñïõí óôï äåýôåñï êáé ðñïôåëåõôáßï áñáêôþñá, üðïôå ôï óþìá ôïõ âñü ïõ while èá åêôåëåóèåß ìßá öïñü. Ìå ôï ßäéï óêåðôéêü, 2 n /2 n/2 óõìâïëïóåéñýò äéáöýñïõí óôïõò äõï êåíôñéêïýò áñáêôþñåò, üðïôå ôï óþìá ôïõ âñü ïõ èá åêôåëåóèåß n/2 1 öïñýò. ÔåëéêÜ, ï áñéèìüò ôùí ðáëßíäñïìùí åßíáé 2 n/2, ïðüôå èá ãßíïõí n/2 åðáíáëþøåéò ôïõ âñü ïõ. Óõíåðþò, ç ìýóç ôéìþ ôùí åðáíáëþøåùí äßíåôáé áðü ôç ó Ýóç: T even (n) = 1 2 n n/2 1 i=0 2 n 2 i+1 i + n 2n/2 = 2 n/2 1 i=1 i n/2 + 2i+1 2 n/2 Ôþñá èá åðéëýóïõìå ôï Üèñïéóìá êáé èá åðáíýëèïõìå. Ðñþôïí, áíáðôýóóïõìå ôï Üèñïéóìá êáé äåýôåñïí ðïëëáðëáóéüæïõìå åðß äýï. n/2 1 i=0 i 2 i+1 = A = 1 2 2 + 2 2 3 + 3 2 4 +... + n/2 1 2 n/2 Áöáéñþíôáò êáôü ìýëç ðñïêýðôåé: 2A = 1 2 1 + 2 2 2 + 3 2 3 +... + n/2 1 2 n/2 1 (1) A = 1 2 1 + 1 2 2 + 1 2 3 +... + 1 n/2 1 = 2n/2 1 2 n/2 n/2 i=1 1 2 i n/2 2 n/2 Ôþñá ðñýðåé íá åðéëõèåß ôï ôåëåõôáßï Üèñïéóìá. Êáé ðüëé ìå áíüðôõîç êáé ðïëëáðëáóéáóìü åðß äýï êáé áöáßñåóç êáôü ìýëç ðñïêýðôåé: n/2 i=1 ÅðïìÝíùò ôåëéêü éó ýåé: 1 2 i = B = 1 2 1 + 1 2 2 + 1 2 3 +... + 1 2 n/2 2B = 1 2 0 + 1 2 1 + 1 2 2 +... + 1 2 n/2 1 B = 1 2 0 1 2 n/2 T even (n) = 1 1 2 n/2 16

¼ôáí ôï n åßíáé ðåñéôôü ðñýðåé íá ëüâïõìå õð üøç ìáò üôé ôþñá õðüñ ïõí äýï öïñýò 2 n 1 2 ðáëßíäñïìá ìå äéáöïñåôéêïýò áñáêôþñåò óôçí êåíôñéêþ èýóç êáé üôé ôï ðñïçãïýìåíï Üèñïéóìá Ý åé ðëýïí n 1 2 üñïõò. Ìå êáôüëëçëç Üëãåâñá ðñïêýðôåé üôé: T odd (n) = 1 1 2 n 1 2 ÅðïìÝíùò, ôåëéêü ðñïêýðôåé üôé ç ðïëõðëïêüôçôá óôç ìýóç ðåñßðôùóç åßíáé ãñáììéêþ È(1). Ç áíüëõóç ãéá êüèå ìßá áðü ôéò ôñåéò ðåñéðôþóåéò (êáëýôåñç, åéñüôåñç êáé ìýóç) Ý åé ôç äéêþ ôçò áîßá êáé ñçóéìüôçôá. ÓõíÞèùò ç êáëýôåñç ðåñßðôùóç äåí ìáò åíäéáöýñåé üóï ïé Üëëåò äýï: ç åéñüôåñç êáé ç ìýóç. Åéäéêüôåñá, óôçí ðñüîç ìáò åíäéáöýñåé êáô áñ Þí ç ìýóç ðåñßðôùóç áëëü óå ðïëëýò êñßóéìåò åöáñìïãýò ìáò åíäéáöýñåé êáé ç åéñüôåñç. Ãéá ðáñüäåéãìá, áí öáíôáóèïýìå Ýíá óýóôçìá åëýã ïõ ðõñçíéêïý áíôéäñáóôþñá, ôüôå åßíáé âýâáéï üôé åêåß èá ìáò åíäéýöåñå ç åéñüôåñç ðåñßðôùóç ôùí åöáñìïæüìåíùí áëãïñßèìùí êáé ü é ç ìýóç óõìðåñéöïñü ôïõò. Óôï óçìåßï áõôü, ëïéðüí, èåùñïýìå üôé åßíáé ðëýïí êáôáíïçôýò ïé Ýííïéåò ôçò áíüëõóçò ôçò êáëýôåñçò, ìýóçò êáé åéñüôåñçò ðåñßðôùóçò. Óôï åðüìåíï ìüèçìá èá åéóá èïýí ìå ôõðéêüôåñï ôñüðï ïé Ýííïéåò ôçò ðïëõðëïêüôçôáò êáé ôùí óõìâïëéóìþí, üðïôå èá åêöñüæïõìå ôçí åðßäïóç ôùí áëãïñßèìùí ìå ôç âïþèåéü ôïõò. 17