0 μέλη και 1 επισκέπτης διαβάζουν αυτό το θέμα.
Τα πράγματα είναι πολύ απλά σε σχέση με την περιβόητη ερώτηση 17. Το θέμα δεν είναι ποια απάντηση είναι επιστημονικά ορθή γιατί πολύ απλά είναι κακοδιατυπωμένη η ερώτηση. Ε
Καλά για τα παραδείγματα του βιβλίου που αναφέρονται δε θα μπω στη διαδικασία να τα περιγράψω γιατί όλοι καταλαβαίνουν ότι είναι άσχετα με τη συγκεκριμένη ερώτηση. Ας δώσω κάποια σχόλια για τη συγκεκριμένη ερώτηση.
Και καθόμαστε όλοι εδώ και προσπαθούμε να πείσουμε για τα αυτονόητα.
Παράθεση από: thymiaras στις Φεβρουαρίου 09, 2009, 10:11:44 pm Καλά για τα παραδείγματα του βιβλίου που αναφέρονται δε θα μπω στη διαδικασία να τα περιγράψω γιατί όλοι καταλαβαίνουν ότι είναι άσχετα με τη συγκεκριμένη ερώτηση. Ας δώσω κάποια σχόλια για τη συγκεκριμένη ερώτηση.Καθόλου άσχετα δεν είναι τα παραδείγματα. Η διαφορά είναι ότι το σχολικό βιβλίο ξεκινάει από συγκεκριμένους αλγόριθμους (ταξινόμηση και αναζήτηση), στη συνέχεια βρίσκει τις συναρτήσεις και στο τέλος υπολογίζει την πολυπλοκότητα. Στην ερώτηση του ΑΣΕΠ μας δίνεται απ' ευθείας η συνάρτηση οπότε πηγαίνουμε αμέσως στο δεύτερο στάδιο και υπολογίζουμε την πολυπλοκότητα με τον ίδιο ακριβώς τρόπο που την υπολογίζει το βιβλίο.
Αυτονόητο δεν είναι επίσης ότι ορθή είναι η απάντηση που πηγάζει από το τρέχον σχολικό βιβλίο Πληροφορικής. Ένα τέτοιο βιβλίο μπορεί να έχει γραφεί πριν από 5-10 χρόνια, να κυκλοφορεί ως 5-10η έκδοση στα σχολεία και να αναφέρει το δίσκο DVD ως το πλέον σύγχρονο μέσο για την αποθήκευση βίντεο, ενώ όλοι γνωρίζουμε σήμερα για την ύπαρξη των δίσκων Blue-ray. Όταν το ΑΣΕΠ ανακοινώνει ύλη θα πρέπει να είναι πιο συγκεκριμένο παραθέτοντας σχετική βιβλιογραφία (είτε σχολική είτε ακαδημαϊκή είτε οποιαδήποτε άλλη).
Και η ερώτηση για συγκεκριμένο αλγόριθμο μιλάει, τον αλγόριθμο του αθροίσματος (ένας είναι όλος και όλος). Αν μπορεί κάποιος να μου βγάλει άλλο αλγόριθμο υπολογισμού (που να έχει λογική εννοείται) του αθροίσματος είναι μάγκας.
Συγνώμη παιδιά που θα σας "την σπάσω" για ακόμη μια φορά αλλά πάλι κάνετε λάθος. Καλά για τα παραδείγματα του βιβλίου που αναφέρονται δε θα μπω στη διαδικασία να τα περιγράψω γιατί όλοι καταλαβαίνουν ότι είναι άσχετα με τη συγκεκριμένη ερώτηση. Ας δώσω κάποια σχόλια για τη συγκεκριμένη ερώτηση.Όταν δίνει το σύμβολο του αθροίσματος Σ και ζητάει να πούμε αν είναι Ο(n) ή Ο(n^2) φυσικά και δεν ζητάει συγκεκριμένο αλγόριθμο υλοποίησης απλά μας λέει να βασιστούμε στον ορισμό του αθροίσματος τον οποίο υποθέτει ότι όλοι μας τον ξέρουμε. Γιατί ο ορισμός του αθροίσματος αποτελεί από μόνος του αλγόριθμο υπολογισμού του αθροίσματος. Το δ είναι ΛΑΘΟΣ γιατί το n(n-1)/2 στο οποίο βασίζονται όσοι επιλέγουν το Δ ΔΕΝ μας δίνει πολυπλοκότητα, μας δίνει το αποτέλεσμα (με τι ισούται δηλαδή το αριστερό μέρος της ισότητας). Δηλαδή αν π.χ. μας δίναν ότι το n=10 τότε ο παραπάνω τύπος θα μας έδινε: Σk για k=1 μέχρι 10 =45, OXI ME O(45). Αν δεν μπορείτε να το καταλάβετε αυτό με γεια σας με χαρά σας.
Παράθεση από: thymiaras στις Φεβρουαρίου 09, 2009, 11:56:30 pmΚαι η ερώτηση για συγκεκριμένο αλγόριθμο μιλάει, τον αλγόριθμο του αθροίσματος (ένας είναι όλος και όλος). Αν μπορεί κάποιος να μου βγάλει άλλο αλγόριθμο υπολογισμού (που να έχει λογική εννοείται) του αθροίσματος είναι μάγκας.Αναφέρει η ερώτηση ότι πρόκειται για αλγόριθμο του αθροίσματος; Ούτε καν τον αλγόριθμο δεν δίνει. Αντίθετα η σχέση που ζητά υπάρχει στα περισσότερα βιβλία αλγορίθμων και Δομών Δεδομένων αυτούσια, ως έχει (οπότε ναι, είναι εντός ύλης). Για παράδειγμα, ένα από τα καλύτερα βιβλία που υπάρχουν στον τομέα αυτό, το Introduction to Algorithms, Second Edition Thomas H. Cormen Charles E. Leiserson Ronald L. Rivest Clifford Stein The MIT Press, στη σελίδα 1059 έχει ακριβώς αυτή τη σχέση. Μπορείτε να τη δείτε και όσοι δεν έχετε το βιβλίο από τη σελίδα αυτή. Υπάρχει ακόμα κανένας που πιστεύει ότι η πολυπλοκότητα είναι Ο(n);
Παράθεση από: Alexhs_27 στις Φεβρουαρίου 09, 2009, 11:40:59 pmΠαράθεση από: thymiaras στις Φεβρουαρίου 09, 2009, 10:11:44 pm Καλά για τα παραδείγματα του βιβλίου που αναφέρονται δε θα μπω στη διαδικασία να τα περιγράψω γιατί όλοι καταλαβαίνουν ότι είναι άσχετα με τη συγκεκριμένη ερώτηση. Ας δώσω κάποια σχόλια για τη συγκεκριμένη ερώτηση.Καθόλου άσχετα δεν είναι τα παραδείγματα. Η διαφορά είναι ότι το σχολικό βιβλίο ξεκινάει από συγκεκριμένους αλγόριθμους (ταξινόμηση και αναζήτηση), στη συνέχεια βρίσκει τις συναρτήσεις και στο τέλος υπολογίζει την πολυπλοκότητα. Στην ερώτηση του ΑΣΕΠ μας δίνεται απ' ευθείας η συνάρτηση οπότε πηγαίνουμε αμέσως στο δεύτερο στάδιο και υπολογίζουμε την πολυπλοκότητα με τον ίδιο ακριβώς τρόπο που την υπολογίζει το βιβλίο. Και η ερώτηση για συγκεκριμένο αλγόριθμο μιλάει, τον αλγόριθμο του αθροίσματος (ένας είναι όλος και όλος). Αν μπορεί κάποιος να μου βγάλει άλλο αλγόριθμο υπολογισμού (που να έχει λογική εννοείται) του αθροίσματος είναι μάγκας.
Είσαι πολύ λάθος και επιμένεις χωρίς λόγο. Μπορείς να μας δώσεις έναν αλγόριθμο σε οποιαδήποτε γλώσσα που να υπολογίζει το άθροισμα n όρων αριθμητικής προόδου, το οποίο είναι και ζητούμενο στην περιβόητη ερώτηση 17, με πολυπλοκότητα Ο(n); Εγώ προκαταβολικά θα σου πω ότι δεν υπάρχει για τον πολύ απλό λόγο ότι κάτι τέτοιο θα ίσχυε μόνο αν επρόκειτο για άθροισμα n ίδιων αριθμών (π.χ. c+c+...+c=c*n=O(n)). Εδώ όμως έχουμε διαφορετικούς αριθμούς και για να υπολογίσουμε το άθροισμά τους πρέπει να εφαρμόσουμε διπλή επανάληψη στον αλγόριθμο. Παραθέτω κι ένα παράδειγμα σε C που υπολογίζει το άθροισμα αυτό:for (k=1; k <=n; k++) { for (j=1; j <= k; j++) sum=sum+j;}Η πολυπλοκότητά του είναι: n επαναλήψεις από το πρώτο for loop και n+1 προσθέσεις σε κάθε επανάληψη (n για τον υπολογισμό του όρου j που θα προστεθεί στο μερικό άθροισμα sum και 1 για τον υπολογισμό του νέου μερικού αθροίσματος. Οπότε συνολικά n*(n+1) πράξεις και άρα O(n2). Περιμένω τη δική σου υλοποίηση με πολυπλοκότητα O(n).
Παράθεση από: anastasi21 στις Φεβρουαρίου 10, 2009, 12:51:04 amΕίσαι πολύ λάθος και επιμένεις χωρίς λόγο. Μπορείς να μας δώσεις έναν αλγόριθμο σε οποιαδήποτε γλώσσα που να υπολογίζει το άθροισμα n όρων αριθμητικής προόδου, το οποίο είναι και ζητούμενο στην περιβόητη ερώτηση 17, με πολυπλοκότητα Ο(n); Εγώ προκαταβολικά θα σου πω ότι δεν υπάρχει για τον πολύ απλό λόγο ότι κάτι τέτοιο θα ίσχυε μόνο αν επρόκειτο για άθροισμα n ίδιων αριθμών (π.χ. c+c+...+c=c*n=O(n)). Εδώ όμως έχουμε διαφορετικούς αριθμούς και για να υπολογίσουμε το άθροισμά τους πρέπει να εφαρμόσουμε διπλή επανάληψη στον αλγόριθμο. Παραθέτω κι ένα παράδειγμα σε C που υπολογίζει το άθροισμα αυτό:for (k=1; k <=n; k++) { for (j=1; j <= k; j++) sum=sum+j;}Η πολυπλοκότητά του είναι: n επαναλήψεις από το πρώτο for loop και n+1 προσθέσεις σε κάθε επανάληψη (n για τον υπολογισμό του όρου j που θα προστεθεί στο μερικό άθροισμα sum και 1 για τον υπολογισμό του νέου μερικού αθροίσματος. Οπότε συνολικά n*(n+1) πράξεις και άρα O(n2). Περιμένω τη δική σου υλοποίηση με πολυπλοκότητα O(n).Ρε παιδιά μήπως μου κάνετε ομαδική πλάκα εδώ μέσα? Τώρα σοβαρά πιστεύεις ότι ο παραπάνω αλγόριθμος υπολογίζει το ζητούμενο άθροισμα? Δοκίμασε να τον τρέξεις για κάποιο μικρό n και δες τι αποτέλεσμα θα σου βγάλει. Τέλος πάντων αν και με έχετε κουράσει και εμένα να ένας γραμμικός αλγόριθμος (ο μόνος που υπάρχει, όλοι οι άλλοι είναι απλά παραλλαγές του) που υπολογίζει το ζητούμενο άθροισμα. Και εφόσον υπάρχει τέτοιος αλγόριθμος τότε σύμφωνα με τον ορισμό του Ο η πολυπλοκότητα θα είναι Ο(n).sum=0;for(i=1;i<=n;i++) sum=sum + i;Αυτό είναι όλο και όλο. Απλά κάποιοι δεν ξέρουν πραγματικά τι πάει να πει το Σ.Υ.Γ. Περιμένω ακόμα διαφορετικό αλγόριθμο υπολογισμού του αθροίσματος (σωστό αυτή τη φορά)
Παράθεση από: thymiaras στις Φεβρουαρίου 10, 2009, 01:19:04 amΠαράθεση από: anastasi21 στις Φεβρουαρίου 10, 2009, 12:51:04 amΕίσαι πολύ λάθος και επιμένεις χωρίς λόγο. Μπορείς να μας δώσεις έναν αλγόριθμο σε οποιαδήποτε γλώσσα που να υπολογίζει το άθροισμα n όρων αριθμητικής προόδου, το οποίο είναι και ζητούμενο στην περιβόητη ερώτηση 17, με πολυπλοκότητα Ο(n); Εγώ προκαταβολικά θα σου πω ότι δεν υπάρχει για τον πολύ απλό λόγο ότι κάτι τέτοιο θα ίσχυε μόνο αν επρόκειτο για άθροισμα n ίδιων αριθμών (π.χ. c+c+...+c=c*n=O(n)). Εδώ όμως έχουμε διαφορετικούς αριθμούς και για να υπολογίσουμε το άθροισμά τους πρέπει να εφαρμόσουμε διπλή επανάληψη στον αλγόριθμο. Παραθέτω κι ένα παράδειγμα σε C που υπολογίζει το άθροισμα αυτό:for (k=1; k <=n; k++) { for (j=1; j <= k; j++) sum=sum+j;}Η πολυπλοκότητά του είναι: n επαναλήψεις από το πρώτο for loop και n+1 προσθέσεις σε κάθε επανάληψη (n για τον υπολογισμό του όρου j που θα προστεθεί στο μερικό άθροισμα sum και 1 για τον υπολογισμό του νέου μερικού αθροίσματος. Οπότε συνολικά n*(n+1) πράξεις και άρα O(n2). Περιμένω τη δική σου υλοποίηση με πολυπλοκότητα O(n).Ρε παιδιά μήπως μου κάνετε ομαδική πλάκα εδώ μέσα? Τώρα σοβαρά πιστεύεις ότι ο παραπάνω αλγόριθμος υπολογίζει το ζητούμενο άθροισμα? Δοκίμασε να τον τρέξεις για κάποιο μικρό n και δες τι αποτέλεσμα θα σου βγάλει. Τέλος πάντων αν και με έχετε κουράσει και εμένα να ένας γραμμικός αλγόριθμος (ο μόνος που υπάρχει, όλοι οι άλλοι είναι απλά παραλλαγές του) που υπολογίζει το ζητούμενο άθροισμα. Και εφόσον υπάρχει τέτοιος αλγόριθμος τότε σύμφωνα με τον ορισμό του Ο η πολυπλοκότητα θα είναι Ο(n).sum=0;for(i=1;i<=n;i++) sum=sum + i;Αυτό είναι όλο και όλο. Απλά κάποιοι δεν ξέρουν πραγματικά τι πάει να πει το Σ.Υ.Γ. Περιμένω ακόμα διαφορετικό αλγόριθμο υπολογισμού του αθροίσματος (σωστό αυτή τη φορά)Δεν είπε ότι υπολογίζει το άθροισμα, αλλά ότι ο αλγόριθμος έχει πολυπλοκότητα όσο το άθροισμα. Καλά, δεν διαβάζεις τίποτα, απλά βιάζεσαι να απαντήσεις; thymiaras ειλικρινά, πες μου ότι είσαι κανένας φιλόλογος κι ότι έχεις μπει εδώ μέσα για να μας σπάσεις τα νεύρα...
Εδώ όμως έχουμε διαφορετικούς αριθμούς και για να υπολογίσουμε το άθροισμά τους πρέπει να εφαρμόσουμε διπλή επανάληψη στον αλγόριθμο. Παραθέτω κι ένα παράδειγμα σε C που υπολογίζει το άθροισμα αυτό: