Προγραμματισμός Ι (ΗΥ120)
|
|
- Σάρρα Ηλιόπουλος
- 5 χρόνια πριν
- Προβολές:
Transcript
1 Προγραμματισμός Ι (ΗΥ120) Διάλεξη 17: Λύση Προβλημάτων με Αναδρομή
2 Οι πύργοι του Hanoi Δίνεται ένα χώρος με τρεις θέσεις αποθήκευσης. Δίνεται μια στοίβα από Ν πλάκες σε φθίνον μέγεθος, σε μια από τις τρεις θέσεις. Ζητούμενο: μετακίνησε την στοίβα σε μια άλλη θέση χωρίς ποτέ να βάλεις μια μεγαλύτερη πλάκα πάνω από μια μικρότερη πλάκα. 2 Α Β Γ
3 Λύση με 1 πλάκα 3 Α Β Γ
4 Λύση με 2 πλάκες 4 Α Β Γ
5 Λύση με 2 πλάκες 5 Α Β Γ
6 Λύση με 2 πλάκες 6 Α Β Γ
7 Λύση με 2 πλάκες 7 Α Β Γ
8 Λύση με 2 πλάκες 8 Α Β Γ
9 Λύση για Ν πλάκες Θεωρούμε ότι οι μικρότερες Ν-1 πλάκες είναι μια πλάκα, η μετακίνηση της οποίας μπορεί να γίνει πλέον αναδρομικά (Ν-1 πλάκες πρέπει να μετακινηθούν από μια θέση σε μια άλλη μέσω μιας τρίτης). 9 Α Β Γ
10 Μοντελοποίηση της λύσης Μετακίνησε Ν πλάκες από την θέση Α μέσω της θέσης Β στην θέση Γ: Απλή περίπτωση: αν Ν==1 τότε μεταφέρουμε την πλάκα από την θέση Α απ ευθείας στην θέση Γ. Πολύπλοκη περίπτωση: αν Ν>1, τότε (α) μεταφέρουμε τις πάνω Ν-1 πλάκες από την θέση Α μέσω της θέσης Γ στην θέση Β, (β) μεταφέρουμε την (μια) πλάκα που απέμεινε από την θέση Α απ ευθείας στην θέση Γ, και (γ) μεταφέρουμε τις Ν-1 πλάκες από την θέση Β μέσω της θέσης Α στην θέση Γ. 10
11 11 void movetower(int from, int through, int to, int n) { if (n==1) { movepiece(from,to); else { movetower(from,to,through,n-1); movepiece(from,to); movetower(through,from,to,n-1);
12 Σχεδίαση αναδρομικών σχημάτων Η draw_cross(int x, int y, int len) ζωγραφίζει ένα σταυρό, με κέντρο το σημείο (x,y) και μήκος 2*len. 12 len x y
13 Σχεδίαση αναδρομικών σχημάτων Ζητούμενο: υλοποιήστε μια συνάρτηση που σχεδιάζει τα εξής σχήματα με βάση τις ακέραιες παραμέτρους x, y, len και level. level=1 level=2 level=3 13 len len len len x,y len x,y len x,y
14 Σχεδίαση αναδρομικών σχημάτων Παρατήρηση: το ίδιο σχέδιο επαναλαμβάνεται σε μικρότερη κλίμακα σε όλα τα τεταρτημόρια του σχεδίου της αμέσως μεγαλύτερης κλίμακας. level=1 level=2 level=3 14
15 void draw_grid(int x, int y, int len, int level) { if (level==1) { draw_cross(x,y,len); else { draw_cross(x,y,len); draw_drid(x-len/2,y+len/2,len/2,level-1); draw_grid(x-len/2,y-len/2,len/2,level-1); draw_grid(x+len/2,y-len/2,len/2,level-1); draw_grid(x+len/2,y+len/2,len/2,level-1); 15
16 Αναδρομή και επανάληψη Οι περισσότερες μορφές επανάληψης μπορεί να εκφραστούν με αναδρομή, αρκεί η συνάρτηση να περνά στον εαυτό της τις κατάλληλες παραμέτρους. Αντίθετα, υπάρχουν αρκετές μορφές αναδρομής που είναι δύσκολο να εκφραστούν με επανάληψη. Το κύριο πλεονέκτημα της αναδρομής είναι ότι η συνάρτηση κρατά δυναμική ενδιάμεση κατάσταση μέσα από τις τοπικές μεταβλητές (πλαίσιο εκτέλεσης) κάθε (αλυσιδωτής) αναδρομικής κλήσης. Παρόμοιο αποτέλεσμα μπορεί να επιτευχθεί και με συμβατικό τρόπο, αλλά η διαχείριση της κατάστασης πρέπει να γίνει από τον ίδιο τον προγραμματιστή (συνήθως χρησιμοποιώντας δυναμική μνήμη). 19
17 Συνδυαστικά προβλήματα
18 Επίλυση συνδυαστικών προβλημάτων 21 Συχνά ένα πρόβλημα μπορεί να εκφραστεί ως μια «αναζήτηση» ενός επιτρεπτού συνδυασμού κάποιων μεταβλητών μέσα από όλους τους δυνατούς συνδυασμούς που μπορεί να γίνουν. Κάποιες φορές, το ζητούμενο είναι να βρεθεί ο βέλτιστος συνδυασμός, που ελαχιστοποιεί ή μεγιστοποιεί κάποια συνάρτηση των μεταβλητών. Λύση με αναδρομή: 1. Κατασκευάζουμε το σύνολο των συνδυασμών αναδρομικά (με διεξοδική «αναζήτηση» σε βάθος). 2. Ελέγχουμε κάθε συνδυασμό για το κατά πόσο είναι επιτρεπτός ή/και καλύτερος σε σχέση με τους συνδυασμούς που έχουν κατασκευαστεί / εξεταστεί.
19 Δέντρα συνδυασμών και αποφάσεων Όλοι οι δυνατοί συνδυασμοί (μεταβλητών) μπορεί να μοντελοποιηθούν (αναπαρασταθούν) ως ένα δέντρο. Κάθε κόμβος του δέντρου σε επίπεδο L αντιστοιχεί σε ένα συγκεκριμένο συνδυασμό επιλογών (τιμών) για L διαφορετικές μεταβλητές. Ξεκινώντας από ένα κόμβο σε επίπεδο L, επιλέγουμε την επόμενη μεταβλητή, και για κάθε τιμή που αυτή μπορεί να λάβει κατασκευάσουμε ένα κόμβο παιδί σε επίπεδο L+1, κλπ. Ένας κόμβος αποτελεί «φύλλο» όταν δεν υπάρχουν άλλες «ελεύθερες» μεταβλητές όλες έχουν λάβει συγκεκριμένες τιμές. 22
20 (αναδρομική) παραγωγή όλων των δυνατών συνδυασμών 23 έλεγχος για επιθυμητούς ή βέλτιστους συνδυασμούς δυνατοί συνδυασμοί επιθυμητοί συνδυασμοί
21 Αποφυγή της συνδυαστικής έκρηξης Ο αριθμός των μεταβλητών μπορεί να είναι μεγάλος και οι πιθανές τιμές για κάθε μεταβλητή πολλές. Η παραγωγή όλων των δυνατών συνδυασμών απαιτεί πόρους (μνήμη, χρόνος) μπορεί να είναι πρακτικά ανέφικτη (ακόμα και με τη σημερινή τεχνολογία). Επιπλέον, οι περισσότεροι από τους συνδυασμούς που παράγονται «στα τυφλά» είναι καταδικασμένοι εκ των προτέρων (πολύ πριν δημιουργηθούν οι τερματικοί κόμβοι «φύλλα» του δέντρου) να μην επιλεγούν ποτέ ως επιθυμητοί (ή βέλτιστοι). Βελτιστοποίηση: πρόωρος αποκλεισμός ολόκληρων υποδέντρων από την ρίζα τους χωρίς υπολογισμό των αντίστοιχων συνδυασμών (branch and bound). 24
22 παραγωγή των συνδυασμών με αποκλεισμό όλων των «αδιάφορων» υποδέντρων 25 δεν παράγεται επιπλέον έλεγχος για επιθυμητούς ή/και βέλτιστους συνδυασμούς επιθυμητοί συνδυασμοί
23 Απλό παράδειγμα - 8 Queens Ζητούμενο: να βρεθεί λύση στο εξής πρόβλημα: να τοποθετηθούν 8 ντάμες σε μια σκακιέρα έτσι ώστε να μην απειλούνται μεταξύ τους 26
24 Εντοπισμός σύγκρουσης (col,row) ίδια στήλη: col==col διαγώνιος 1: col+row==col +row 27 (0,0) ίδια γραμμή: row==row διαγώνιος 2: col-row==col -row int check(int col1,int row1,int col2,int row2) { return((col1!=col2) && (row1!=row2) && (col1+row1!=col2+row2) && (col1-row1!=col2-row2));
25 Δύο προσεγγίσεις Προσέγγιση 1 (brute force): 1. Δημιουργούμε όλους τους συνδυασμούς θέσεων. 2. Διαγράφουμε τους συνδυασμούς όπου δύο ή περισσότερες ντάμες απειλούν η μια την άλλη. 3. Οι συνδυασμοί που απομένουν είναι αποδεκτοί. Προσέγγιση 2 (branch and bound - b&b): 1. Για κάθε νέα ντάμα που τοποθετούμε, ελέγχουμε προκαταβολικά κατά πόσο απειλεί μια από τις ντάμες που έχουν ήδη τοποθετηθεί στη σκακιέρα. 2. Σε αυτή τη περίπτωση, τερματίζουμε την αναδρομή (όλοι οι περαιτέρω συνδυασμοί είναι μη αποδεκτοί). 3. Οι συνδυασμοί που μένουν είναι οι επιθυμητοί. 28
26 αριθμός στήλης για τις ντάμες 0<=i<n που έχουν τοποθετηθεί μέχρι στιγμής αριθμός γραμμής για τις ντάμες 0<=i<n που έχουν τοποθετηθεί μέχρι στιγμής 29 void putnxtqueen(int cols[], int rows[], int n, int M) { αριθμός επόμενης ντάμας προς τοποθέτηση τελικός αριθμός από ντάμες προς τοποθέτηση /* κλήση */ #define Μ 8 int main (int argc, char *argv[]) { int cols[μ],rows[μ]; putnxtqueen(cols,rows,0,μ); return(0);
27 Προσέγγιση 1 (έλεγχος στο τέλος) void putnxtqueen(int cols[], int rows[], int n, int M) { int i,j; (άσκοπη) δημιουργία όλων των συνδυασμών (φύλλων του δέντρου) if (n<m) { for (i=0; i<m; i++) { for (j=0; j<m; j++) { cols[n]=j; rows[n]=i; putnxtqueen(cols,rows,n+1,m); απόρριψη συνδυασμού (φύλλου) αν υπάρχει κάποια σύγκρουση else { for (i=0; i<m; i++) { for (j=i; j<m; j++) { if (!check(cols[i],rows[i],cols[j],rows[j])) {return; for (i=0; i<m; i++) {printf("(%d,%d)\n",cols[i],rows[i]); εκτύπωση αποδεκτού συνδυασμού 30
28 Προσέγγιση 2 (έλεγχος στην τοποθέτηση) void putnxtqueen(int cols[], int rows[], int n, int M) { int i,j,k,ok; if (n<m) { for (i=0; i<m; i++) { for (j=0; j<m; j++) { ok = 1; for (k=0; (k<n) && (ok); k++) { ok = check(j,i,cols[k],rows[k]); if (ok) { col[n]=j; row[n]=i; putnxtqueen(cols,rows,n+1,m); εκτύπωση αποδεκτού συνδυασμού else { for (i=0; i<m; i++) {printf("(%d,%d)\n",cols[i],rows[i]); έλεγχος σύγκρουσης για την νέα τοποθέτηση j,i 31
29 Βελτιστοποίηση Ακόμα και ένας πρωτάρης σκακιστής, μπορεί να συμπεράνει ότι κάθε ντάμα πρέπει υποχρεωτικά να τοποθετηθεί σε ξεχωριστή γραμμή. Ιδέα: παράγουμε τους συνδυασμούς υπό τον περιορισμό ότι η i-οστή ντάμα τοποθετείται (κάπου) στην i-οστή γραμμή. Η λύση ακολουθεί τη φιλοσοφία της προσέγγισης 2, αλλά αποφεύγει με ιδιαίτερα αποδοτικό τρόπο πάρα πολλούς μη αποδεκτούς συνδυασμούς. Σημείωση: η συνάρτηση δεν χρειάζεται να δέχεται πλέον ως παράμετρο τους αριθμούς γραμμής από τις ντάμες που έχουν τοποθετηθεί, αφού row[i]==i. 32
30 αριθμός στήλης για τις ντάμες 0<=i<n που έχουν τοποθετηθεί μέχρι στιγμής ο αριθμός γραμμής για τις ντάμες 0<=i<n που έχουν τοποθετηθεί μέχρι στιγμής είναι row[i]==i 33 void putnxtqueen(int cols[], int n, int M) { αριθμός επόμενης ντάμας προς τοποθέτηση τελικός αριθμός από ντάμες προς τοποθέτηση /* κλήση */ #define Μ 8 int main (int argc, char *argv[]) { int cols[μ],rows[μ]; putnxtqueen(cols,0,μ); return(0);
31 Προσέγγιση 3 void putnxtqueen(int cols[], int n, int M) { int i,k,ok; if (n<m) { for (i=0; i<m; i++) { ok = 1; for (k=0; (k<n) && (ok); k++) { ok=check(i,n,cols[k],k); if (ok) { col[n]=i; putnxtqueen(col,n+1,m); έλεγχος σύγκρουσης για τη νέα τοποθέτηση i,n εκτύπωση αποδεκτού συνδυασμού else { for (i=0; i<m; i++) {printf("(%d,%d)\n",cols[i],i); 34
32 Σχόλιο Οι παραπάνω προσεγγίσεις βρίσκουν όλους τους επιτρεπτούς συνδυασμούς (συμπεριλαμβανομένων και ισοδύναμων «συμμετρικών» λύσεων). Όταν απορρίπτεται ένας συνδυασμός (φύλλο ή/και υποδέντρο) είναι εγγυημένα μη αποδεκτός. 35
33 Μονοπάτι σε γράφο 36 Ένας γράφος κωδικοποιείται μέσω ενός 2-διάστατου πίνακα c, όπου c[i][j]==1 αν υπάρχει ακμή από τον κόμβο i στον j, διαφορετικά c[i][j]==0. Επιθυμούμε να βρούμε ένα μονοπάτι από τον κόμβο n1 προς ένα άλλο κόμβο n2: path(n1,n2) Περίπτωση εύκολου τερματισμού: c[n1][n2]==1 Γενική περίπτωση: αν n:[n1][n]==1 και path(n,n2) τότε το ζητούμενο μονοπάτι είναι n+path(n,n2), διαφορετικά, δεν υπάρχει κανένα μονοπάτι που να οδηγεί από n1 προς n2.
34 c[0][0]=0; c[0][1]=0; c[0][2]=1; c[0][3]=0; c[1][0]=1; c[1][1]=0; c[1][2]=0; c[1][3]=0; c[2][0]=0; c[2][1]=1; c[2][2]=0; c[2][3]=0; c[3][0]=0; c[3][0]=0; c[3][2]=1; c[3][3]=0;
35 int path(int n1, int n2) { int n; 38 if (c[n1][n2]) { return(1); else { for (n=0; n<n; n++) { if ((c[n1][n]) && path(n,n2)) { return(1); return(0);
36 Σχόλια για την προηγούμενη λύση Η αναζήτηση του μονοπατιού γίνεται «σε βάθος» (depth first) Υπάρχει και αναζήτηση «σε πλάτος». Επιστρέφεται το πρώτο μονοπάτι που θα βρεθεί, χωρίς να εξερευνώνται οι υπόλοιπες πιθανές λύσεις. Δεν επιστρέφεται εγγυημένα η πιο σύντομη διαδρομή (μόνο κατά τύχη, αν αυτή τυχαίνει να είναι η πρώτη διαδρομή που βρέθηκε μέσω της αναδρομής). Δεν λαμβάνονται υπ όψη πιθανοί κύκλοι στον γράφο, οπότε υπάρχει πιθανότητα ατέρμονης αναδρομής. Η υλοποίηση μπορεί να επεκταθεί «σχετικά» εύκολα έτσι ώστε να αντιμετωπιστούν όλες οι παραπάνω αδυναμίες / ατέλειες. 39
37 Παράδειγμα Knapsack / Rucksack Δίνεται: αντικείμενα Ο[i] με βάρος W[i] και αξία V[i]. Ζητούμενο: να επιλεγούν τα αντικείμενα τα οποία μεγιστοποιούν την αξία ενός φορτίου με μέγιστο συνολικό βάρος ένα γνωστό άνω όριο maxweight. Προσέγγιση 1 (brute force): κατασκευή όλων των συνδυασμών, και επιλογή του συνδυασμού με την μεγαλύτερη αξία στα πλαίσια του επιτρεπτού βάρους. Προσέγγιση 2 (branch & bound): όπως 1, αλλά σε κάθε βήμα ελέγχεται το βάρος του συνδυασμού και αυτός απορρίπτεται (πρόωρα) αν υπερβαίνει το όριο. Προσέγγιση 3 (heuristic b&b): όπως 2, αλλά σε κάθε βήμα επιλέγεται (αμετάκλητα) το αντικείμενο με το μεγαλύτερο ειδικό βάρος που χωρά στο φορτίο. 45
38 Μη βέλτιστες (ευρετικές) λύσεις Μερικά προβλήματα είναι δύσκολο να λυθούν διεξοδικά, με έλεγχο όλων των επιτρεπτών συνδυασμών (με b&b). Ακόμα και για «σχετικά μικρά» Ν, π.χ , ένας σύγχρονος Η/Υ μπορεί να χρειαστεί μέρες ή και βδομάδες να ολοκληρώσει τον υπολογισμό (αν στο μεταξύ δεν του έχει ήδη σωθεί η διαθέσιμη μνήμη). Ευρετικές μέθοδοι: εκτός από τα υποδέντρα που σίγουρα δεν οδηγούν σε λύση, αποκλείουμε και τα υποδέντρα που πιστεύουμε, σύμφωνα με μια «κοινή» λογική, ότι δεν θα οδηγήσουν σε κάποια (καλή) λύση. Οι ευρεστικές μέθοδοι μειώνουν σημαντικά τον αριθμό των συνδυασμών προς έλεγχο, αλλά στην γενική περίπτωση δεν οδηγούν εγγυημένα σε βέλτιστη λύση. 46
39 αποκλεισμός υποδέντρων που σίγουρα δεν οδηγούν σε λύση αποκλεισμός υποδέντρων που μάλλον δεν οδηγούν σε λύση 47 βέλτιστος συνδυασμός
40 Λίστα ως αναδρομική δομή Μια λίστα μπορεί να θεωρηθεί ως αναδρομική δομή, όχι μόνο συντακτικά αλλά και ουσιαστικά: μια λίστα είναι είτε κενή, είτε αποτελείται από ένα κόμβο που δείχνει σε μια λίστα. Η αναζήτηση μπορεί να υλοποιηθεί αναδρομικά, π.χ. για λίστα χωρίς τερματικό στοιχείο ως εξής: 1. Αν το πρώτο στοιχείο της λίστας είναι NULL, τότε το στοιχείο που αναζητούμε δεν υπάρχει. 2. Αν το πρώτο στοιχείο της λίστας περιέχει την τιμή που αναζητούμε, τότε βρέθηκε. 3. Αν το πρώτο στοιχείο της λίστας δεν περιέχει την τιμή που αναζητούμε, συνέχισε την αναζήτηση στην λίστα στην οποία δείχνει ο πρώτος κόμβος. 49
41 50 root A nxt C nxt B nxt
42 int list_find_rec(struct list *root, int v) { 51 if (root == NULL) { return(0); else if (root->v == v) { return(1); else { return(list_find_rec(root->nxt,v));
Προγραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 17: Λύση Προβλημάτων με Αναδρομή Οι πύργοι του Hanoi Δίνεται ένα χώρος με τρεις θέσεις αποθήκευσης. Δίνεται μια στοίβα από Ν πλάκες σε φθίνον μέγεθος, σε μια από τις τρεις
Διαβάστε περισσότεραΠρογραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 19: Λύση Προβλημάτων με Αναδρομή Οι πύργοι του Hanoi Δίνεται ένα χώρος με τρείς θέσεις αποθήκευσης. Δίνεται μια στοίβα από Ν πλάκες σε φθίνων μέγεθος, σε μια από τις τρείς
Διαβάστε περισσότεραΟι πύργοι του Hanoi ίνεται ένα χώρος µε τρείς θέσεις αποθήκευσης. ίνεται µια στοίβα από Ν πλάκες σε φθίνων µέγεθος, σε µια από τις τρείς θέσεις. Ζητού
Προγραµµατισµός Ι (ΗΥ120) ιάλεξη 17: Λύση Προβληµάτων µε Αναδροµή Οι πύργοι του Hanoi ίνεται ένα χώρος µε τρείς θέσεις αποθήκευσης. ίνεται µια στοίβα από Ν πλάκες σε φθίνων µέγεθος, σε µια από τις τρείς
Διαβάστε περισσότεραΑναδροµή. Προγραµµατισµός Ι 1
Αναδροµή Προγραµµατισµός Ι lalis@inf.uth.gr 1 Συναρτήσεις που καλούν τον εαυτό τους Μια συνάρτηση ονοµάζεται αναδροµική όταν καλεί τον εαυτό της άµεσα ή έµµεσα (µέσα από άλλες συναρτήσεις). Μια αναδροµική
Διαβάστε περισσότεραδιεύθυνση πρώτου στοιχείου διεύθυνση i-οστού στοιχείου T t[n]; &t[0] είναι t &t[i] είναι t + i*sizeof(t)
Προγραµµατισµός Ι (ΗΥ120) ιάλεξη 18: ιασυνδεµένες οµές - Λίστες ιασυνδεδεµένες δοµές δεδοµένων Η µνήµη ενός πίνακα δεσµεύεται συνεχόµενα. Η πρόσβαση στο i-οστό στοιχείο είναι άµεσηκαθώς η διεύθυνση του
Διαβάστε περισσότεραΠρογραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 15: Διασυνδεμένες Δομές - Λίστες Διασυνδεδεμένες δομές δεδομένων Η μνήμη ενός πίνακα δεσμεύεται συνεχόμενα. Η πρόσβαση στο i-οστό στοιχείο είναι άμεση καθώς η διεύθυνση
Διαβάστε περισσότεραΔιασυνδεδεμένες Δομές. Λίστες. Προγραμματισμός II 1
Διασυνδεδεμένες Δομές Λίστες Προγραμματισμός II 1 lalis@inf.uth.gr Διασυνδεδεμένες δομές Η μνήμη ενός πίνακα δεσμεύεται συνεχόμενα η πρόσβαση στο i-οστό στοιχείο είναι άμεση καθώς η διεύθυνση του είναι
Διαβάστε περισσότεραΠρογραµµατισµός Ι (ΗΥ120)
Προγραµµατισµός Ι (ΗΥ120) Διάλεξη 15: Διασυνδεµένες Δοµές - Λίστες Δοµές δεδοµένων! Ένα τυπικό πρόγραµµα επεξεργάζεται δεδοµένα Πώς θα τα διατάξουµε? 2 Τι λειτουργίες θέλουµε να εκτελέσουµε? Πώς θα υλοποιήσουµε
Διαβάστε περισσότεραΠρογραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 9: Συναρτήσεις Ορισμός συναρτήσεων () { /* δήλωση μεταβλητών */ /* εντολές ελέγχου/επεξεργασίας */ o Μια συνάρτηση ορίζεται δίνοντας
Διαβάστε περισσότερα#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2017 (27/1/2017) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................
Διαβάστε περισσότεραΑναδρομικοί Αλγόριθμοι
Αναδρομικός αλγόριθμος (recursive algorithm) Επιλύει ένα πρόβλημα λύνοντας ένα ή περισσότερα στιγμιότυπα του ίδιου προβλήματος. Αναδρομικός αλγόριθμος (recursive algorithm) Επιλύει ένα πρόβλημα λύνοντας
Διαβάστε περισσότεραΑ. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Β Περιόδου 2015 (8/9/2015) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................
Διαβάστε περισσότεραΠρογραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 11: Δείκτες & Πίνακες Δείκτες και πίνακες Μια μεταβλητή «μονοδιάστατος πίνακας από αντικείμενα τύπου Τ» μπορεί να θεωρηθεί ως (είναι συντακτικά συμβατή με) μια μεταβλητή
Διαβάστε περισσότεραΔιδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ
Διάλεξη 4: Δείκτες και Πίνακες Στην ενότητα αυτή θα μελετηθούν τα εξής θέματα: Πίνακες Δεικτών, Παραδείγματα, Πολυδιάστατοι πίνακες Πέρασμα παραμέτρων σε προγράμματα C Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες:
Διαβάστε περισσότεραΕισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ
Εισαγωγή στον Προγραµµατισµό Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ Συναρτήσεις 19.11.16 Β. Ντουφεξή 2 Προβλήματα: Οσο μεγαλώνουν τα προγράμματα, γίνονται πιο πολύπλοκα.
Διαβάστε περισσότεραΔομές Δεδομένων & Αλγόριθμοι
Θέματα Απόδοσης Αλγορίθμων 1 Η Ανάγκη για Δομές Δεδομένων Οι δομές δεδομένων οργανώνουν τα δεδομένα πιο αποδοτικά προγράμματα Πιο ισχυροί υπολογιστές πιο σύνθετες εφαρμογές Οι πιο σύνθετες εφαρμογές απαιτούν
Διαβάστε περισσότεραΠρογραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 20: Δυαδικό Δέντρο Αναζήτησης Δυαδικό δέντρο Κάθε κόμβος «γονέας» περιέχει δύο δείκτες που δείχνουν σε δύο κόμβους «παιδιά» του ιδίου τύπου. Αν οι δείκτες προς αυτούς
Διαβάστε περισσότεραΑνάπτυξη και Σχεδίαση Λογισμικού
Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Δυναμική Κατανομή Μνήμης Δυναμική εκχώρηση μνήμης Σωρός Συναρτήσεις malloc(), calloc(), realloc(), free() Δυναμικές δομές
Διαβάστε περισσότεραΠρογραμματιστικές Ασκήσεις, Φυλλάδιο 1
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΕ C Προγραμματιστικές Ασκήσεις, Φυλλάδιο Εκφώνηση: 9/3/0 Παράδοση: 5/4/0,.59 Άσκηση 0 η : Το πρόβλημα της βελόνας του Buffon Θέμα της εργασίας
Διαβάστε περισσότεραΤεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή
Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή raniah@hua.gr 1 Αναζήτηση Δοθέντος ενός προβλήματος με περιγραφή είτε στον χώρο καταστάσεων
Διαβάστε περισσότεραΑνάπτυξη και Σχεδίαση Λογισμικού
Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Συναρτήσεις της C Τα Λοιπά Στοίβα και μηχανισμός κλήσης Αναδρομικές συναρτήσεις Στατικές μεταβλητές Άλλα θέματα Μηχανισμός
Διαβάστε περισσότεραSheet2. - Άσκηση 1 οκ - Άσκηση 2 οκ. Σκέψου πώς θα µπορούσες να την
AEM ΒΑΘΜΟΣ ΣΧΟΛΙΑ 1413. Σκέψου πώς θα µπορούσες να την 1417 κάνεις χωρίς χρήση της βοηθητικής µεταβλητής curr - Πρώτη άσκηση οκ - Στη δεύτερη άσκηση το free(head) δεν έπρεπε να είναι στο else, αλλά να
Διαβάστε περισσότεραΠρογραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 8: Πίνακες, Αλφαριθμητικά Πίνακες Ο πίνακας είναι μια ειδική δομή για την αποθήκευση μιας σειράς από δεδομένα του ίδιου τύπου. Η δήλωση ενός πίνακα γίνεται όπως για μια
Διαβάστε περισσότεραΔιασυνδεδεμένες Δομές. Δυαδικά Δέντρα. Προγραμματισμός II 1
Διασυνδεδεμένες Δομές Δυαδικά Δέντρα Προγραμματισμός II 1 lalis@inf.uth.gr Δέντρα Τα δέντρα είναι κλασικές αναδρομικές δομές Ένα δέντρο αποτελείται από υποδέντρα, καθένα από τα οποία μπορεί να θεωρηθεί
Διαβάστε περισσότεραΕπίλυση Προβλημάτων 1
Επίλυση Προβλημάτων 1 Επίλυση Προβλημάτων Περιγραφή Προβλημάτων Αλγόριθμοι αναζήτησης Αλγόριθμοι τυφλής αναζήτησης Αναζήτηση πρώτα σε βάθος Αναζήτηση πρώτα σε πλάτος (ΒFS) Αλγόριθμοι ευρετικής αναζήτησης
Διαβάστε περισσότεραΛειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Λειτουργικά
Διαβάστε περισσότεραΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ Η/Υ ΠΡΩΤΗ ΠΡΟΟΔΟΣ ΣΤΗΝ «ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Y»
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ Η/Υ ΠΡΩΤΗ ΠΡΟΟΔΟΣ ΣΤΗΝ «ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Y» Σάββατο, 31 Οκτωβρίου 2015 ΔΙΑΡΚΕΙΑ ΔΙΑΓΩΝΙΣΜΑΤΟΣ 150 ΛΕΠΤΑ ΘΕΜΑ 1.
Διαβάστε περισσότεραΠξνγξακκαηηζκόο Ι (ΗΥ120)
Πξνγξακκαηηζκόο Ι (ΗΥ120) Γηάιεμε 18: Λύζε Πξνβιεκάησλ κε Αλαδξνκή Οη πύξγνη ηνπ Hanoi Γίλεηαη έλα ρώξνο κε ηξείο ζέζεηο απνζήθεπζεο. Γίλεηαη κηα ζηνίβα από Ν πιάθεο ζε θζίλσλ κέγεζνο, ζε κηα από ηηο ηξείο
Διαβάστε περισσότεραΠανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων
Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 12/10/2017
Διαβάστε περισσότεραείκτες και Πίνακες (2)
είκτες και Πίνακες (2) Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Πολυδιάστατοι πίνακες Πέρασµα παραµέτρων σε προγράµµατα C ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 1-1 Πίνακες εικτών Πίνακας δεικτών είναι
Διαβάστε περισσότεραΔιαχείριση Εφοδιαστικής Αλυσίδας ΙΙ
Διαχείριση Εφοδιαστικής Αλυσίδας ΙΙ 1 η Διάλεξη: Αναδρομή στον Μαθηματικό Προγραμματισμό 2019, Πολυτεχνική Σχολή Εργαστήριο Συστημάτων Σχεδιασμού, Παραγωγής και Λειτουργιών Περιεχόμενα 1. Γραμμικός Προγραμματισμός
Διαβάστε περισσότεραΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Α' Περιόδου Θέµα 1. (α') 2 - ii 3 - iii 4 - iv
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Α' Περιόδου 2011 Θέµα 1 (α') 1 - i 2 - ii 3 - iii 4 - iv 5 - v 6 - vi 7 - vii 8 - viii 9 - ix 10 - x Το αποτέλεσµα είναι η αντιστοιχία των
Διαβάστε περισσότεραΣχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1
Σχεδίαση Αλγορίθμων Δυναμικός Προγραμματισμός http://delab.csd.auth.gr/~gounaris/courses/ad Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1 Δυναμικός προγραμματισμός Ο Δυναμικός Προγραμματισμός
Διαβάστε περισσότεραΠανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων
Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 6. Δυαδικά Δέντρα 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 18/11/2016 Εισαγωγή Τα
Διαβάστε περισσότεραΔιδάσκων: Κωνσταντίνος Κώστα
Διάλεξη Ε4: Επανάληψη Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή σε δενδρικές δομές δεδομένων, Δυαδικά Δένδρα Αναζήτησης Ισοζυγισμένα Δένδρα & 2-3 Δένδρα Διδάσκων: Κωνσταντίνος
Διαβάστε περισσότεραΕπανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ
Επανάληψη για τις Τελικές εξετάσεις (Διάλεξη 24) Εισαγωγή Το μάθημα EPL032 έχει ως βασικό στόχο την επίλυση προβλημάτων πληροφορικής με την χρήση της γλώσσας προγραμματισμού C. Επομένως πρέπει: Nα κατανοήσετε
Διαβάστε περισσότεραΔιδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 7: Διαχείριση Μνήμης,Δυναμικές Δομές Δεδομένων, Αναδρομή Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Δυναμικές Δομές Δεδομένων Γενικά - Δυναμική Δέσμευση/Αποδέσμευση
Διαβάστε περισσότεραΤεχνητή Νοημοσύνη. 3η διάλεξη ( ) Ίων Ανδρουτσόπουλος.
Τεχνητή Νοημοσύνη 3η διάλεξη (2016-17) Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Οι διαφάνειες αυτής της διάλεξης βασίζονται στα βιβλία Τεχνητή Νοημοσύνη των Βλαχάβα κ.ά., 3η έκδοση, Β. Γκιούρδας
Διαβάστε περισσότεραΑ Β Γ static; printf("%c\n", putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf("*");
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2016 (1/2/2016) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................
Διαβάστε περισσότεραΔιάλεξη 15η: Αναδρομή, μέρος 1ο
Διάλεξη 15η: Αναδρομή, μέρος 1ο Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Αναδρομή I CS100, 2016-2017
Διαβάστε περισσότεραΔομές Δεδομένων & Αλγόριθμοι
- Πίνακες 1 Πίνακες Οι πίνακες έχουν σταθερό μέγεθος και τύπο δεδομένων. Βασικά πλεονεκτήματά τους είναι η απλότητα προγραμματισμού τους και η ταχύτητα. Ωστόσο δεν παρέχουν την ευελιξία η οποία απαιτείται
Διαβάστε περισσότεραΤο Πρόβλημα του Περιοδεύοντος Πωλητή - The Travelling Salesman Problem
Το Πρόβλημα του Περιοδεύοντος Πωλητή - The Travelling Salesman Problem Έλενα Ρόκου Μεταδιδακτορική Ερευνήτρια ΕΜΠ Κηρυττόπουλος Κωνσταντίνος Επ. Καθηγητής ΕΜΠ Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται
Διαβάστε περισσότεραΠΛΗ111. Ανοιξη 2005. Μάθηµα 7 ο. έντρο. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης
ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 7 ο έντρο Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης έντρο Ορισµός Υλοποίηση µε Πίνακα Υλοποίηση µε είκτες υαδικό έντρο
Διαβάστε περισσότεραΔείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8
Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 1000 1001 1002 1003 1004 1005 12 9.8 9976 3 1010 26 1006 1007 1008 1009 1010 1011 16 125 1299 a 13 1298 Δήλωση Δήλωση Τύπος
Διαβάστε περισσότεραΠρογραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16
Διαβάστε περισσότεραΛύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ IΙ Λύβας Χρήστος chrislibas@ssl-unipi.gr Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος >_ ΣΥΝΑΡΤΗΣΕΙΣ ΣΤΗ C (1/3) +- Στη C χρησιμοποιούμε συχνα τις συναρτήσεις (functions),
Διαβάστε περισσότεραΔιάλεξη 17: Δυαδικά Δέντρα. Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ
Διάλεξη 7: Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυαδικά Δένδρα Δυαδικά Δένδρα Αναζήτησης Πράξεις Εισαγωγής, Εύρεσης Στοιχείου, Διαγραφής Μικρότερου Στοιχείου Διδάσκων:
Διαβάστε περισσότεραΑλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1
Αλγόριθμοι Δυναμικός Προγραμματισμός http://delab.csd.auth.gr/courses/algorithms/ Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1 Δυναμικός προγραμματισμός Ο Δυναμικός Προγραμματισμός προτάθηκε από τον
Διαβάστε περισσότεραΑνάλυση αλγορίθμων. Χρόνος εκτέλεσης: Αναμενόμενη περίπτωση. - απαιτεί γνώση της κατανομής εισόδου
Ανάλυση αλγορίθμων Παράμετροι απόδοσης ενός αλγόριθμου: Χρόνος εκτέλεσης Απαιτούμενοι πόροι, π.χ. μνήμη, επικοινωνία (π.χ. σε κατανεμημένα συστήματα) Προσπάθεια υλοποίησης Ανάλυση της απόδοσης Θεωρητική
Διαβάστε περισσότεραΠρογραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 12: Συναρτήσεις & Δείκτες Αλλαγή του «εξωτερικού» περιβάλλοντος Αν σαν παράμετρος μιας συνάρτησης δοθεί μια μεταβλητή, σαν πραγματική παράμετρος θα περαστεί η τιμή της.
Διαβάστε περισσότεραΤεχνητή Νοημοσύνη. 2η διάλεξη (2015-16) Ίων Ανδρουτσόπουλος. http://www.aueb.gr/users/ion/
Τεχνητή Νοημοσύνη 2η διάλεξη (2015-16) Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Οι διαφάνειες αυτής της διάλεξης βασίζονται στα βιβλία: Τεχνητή Νοημοσύνη των Βλαχάβα κ.ά., 3η έκδοση, Β. Γκιούρδας
Διαβάστε περισσότεραΔιάλεξη 2η: Αλγόριθμοι και Προγράμματα
Διάλεξη 2η: Αλγόριθμοι και Προγράμματα Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα
Διαβάστε περισσότεραΔιδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 4: Δείκτες (pointers) και Πίνακες Δεικτών Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Πίνακες Δεικτών - Πολυδιάστατοι πίνακες - Πέρασμα παραμέτρων σε προγράμματα
Διαβάστε περισσότεραΕργαστήριο 8: Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ
Εργαστήριο 8: Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ με αλφαβητική σειρά
Διαβάστε περισσότεραΠρογραμματισμός Ι (HY120)
Προγραμματισμός Ι (HY120) #6 εκτέλεση σε επανάληψη 1 Σπύρος Λάλης Εκτέλεση σε επανάληψη: while while () lexpr body true false Όσο η λογική συνθήκη επανάληψης lexpr αποτιμάται σε μια τιμή
Διαβάστε περισσότεραΕισαγωγή στον Προγραμματισμό
Εισαγωγή στον Προγραμματισμό Πίνακες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Πίνακες Πολλές φορές θέλουμε να κρατήσουμε στην μνήμη πολλά αντικείμενα
Διαβάστε περισσότεραΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων
Διαβάστε περισσότεραΔιάλεξη 09: Αλγόριθμοι Ταξινόμησης I
Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Οι αλγόριθμοι ταξινόμησης: Α. SelectionSort Ταξινόμηση με Επιλογή Β. InsertionSort Ταξινόμηση με Εισαγωγή
Διαβάστε περισσότεραΑΚΕΡΑΙΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ & ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΚΕΦΑΛΑΙΟ 1
ΑΚΕΡΑΙΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ & ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΚΕΦΑΛΑΙΟ 1 1 Βελτιστοποίηση Στην προσπάθεια αντιμετώπισης και επίλυσης των προβλημάτων που προκύπτουν στην πράξη, αναπτύσσουμε μαθηματικά μοντέλα,
Διαβάστε περισσότεραΠρογραμματισμός Δομές Δεδομένων
Προγραμματισμός Δομές Δεδομένων Προγραμματισμός Δομές Δεδομένων (Data Structures) Καινούργιοι τύποι δεδομένων που αποτελούνται από την ομαδοποίηση υπαρχόντων τύπων δεδομένων Ομαδοποίηση πληροφορίας που
Διαβάστε περισσότεραΔιάλεξη 6: Δείκτες και Πίνακες
Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 6: Δείκτες και Πίνακες (Κεφάλαιο 12, KNK-2ED) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 6-1 Περιεχόμενο
Διαβάστε περισσότεραΑλγόριθµοι Οπισθοδρόµησης
Αλγόριθµοι Οπισθοδρόµησης Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Η οπισθοδρόµηση στο σχεδιασµό αλγορίθµων Το πρόβληµα των σταθερών γάµων και ο αλγόριθµος των Gale-Shapley Το πρόβληµα
Διαβάστε περισσότεραΠΛΕ075: Προηγμένη Σχεδίαση Αλγορίθμων και Δομών Δεδομένων. Λουκάς Γεωργιάδης
ΠΛΕ075: Προηγμένη Σχεδίαση Αλγορίθμων και Δομών Δεδομένων Λουκάς Γεωργιάδης loukas@cs.uoi.gr www.cs.uoi.gr/~loukas Βασικές έννοιες και εφαρμογές Αλγόριθμος: Μέθοδος για την επίλυση ενός προβλήματος Δομή
Διαβάστε περισσότεραΤεχνητή Νοημοσύνη. 4η διάλεξη ( ) Ίων Ανδρουτσόπουλος.
Τεχνητή Νοημοσύνη 4η διάλεξη (2016-17) Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Οι διαφάνειες αυτής της διάλεξης βασίζονται κυρίως στα βιβλία Τεχνητή Νοημοσύνη των Βλαχάβα κ.ά., 3η έκδοση, Β.
Διαβάστε περισσότεραΔιάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές
Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εισαγωγή, εύρεση, διαγραφή) Ευθύγραμμες Διπλά Συνδεδεμένες Λίστες
Διαβάστε περισσότεραΠροσεγγιστικοί Αλγόριθμοι
Πολλά NP-πλήρη προβλήματα έχουν μεγάλο πρακτικό ενδιαφέρον. http://xkcd.com/287/ Πολλά NP-πλήρη προβλήματα έχουν μεγάλο πρακτικό ενδιαφέρον. Πως μπορούμε να αντιμετωπίσουμε το γεγονός ότι είναι απίθανη(;)
Διαβάστε περισσότεραAlternative to Balanced Trees, Comms of the ACM, 33(6), June 1990,
ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τμήμα Πληροφορικής & Τηλεπικοινωνιών Μια σημείωση από τον Α. Δελή για το άρθρο: W. Pugh, Skip Lists: A Probabilistic Alternative to Balanced Trees, Comms of the ACM, 33(), June 10,
Διαβάστε περισσότεραΑ' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ
Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εργαστήριο 10η σειρά ασκήσεων. Κοζάνη, 10 Ιανουαρίου 2008. Έχοντας γνωρίσει τις εντολές και μεθόδους που επιτρέπουν την ανάπτυξη δομημένου κώδικα, μπορούμε
Διαβάστε περισσότεραΠανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων
Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 21/10/2016
Διαβάστε περισσότεραΚεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού Προπτυχιακό μάθημα Αρχές Γλωσσών Προγραμματισμού Π. Ροντογιάννης 1 Μεταγλωττιστής Πρόγραμμα Διαβάζει προγράμματα δεδομένης γλώσσας (πηγαία γλώσσα) και τα μετατρέπει
Διαβάστε περισσότεραΘεωρητικό Μέρος. int rec(int n) { int n1, n2; if (n <= 5) then return n; else { n1 = rec(n-5); n2 = rec(n-3); return (n1+n2); } }
Πανεπιστήµιο Ιωαννίνων, Τµήµα Πληροφορικής 2 Νοεµβρίου 2005 Η/Υ 432: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκού Έτους 2005-2006 Παναγιώτα Φατούρου Ηµεροµηνία Παράδοσης 1 ο Σετ Ασκήσεων Θεωρητικό Μέρος:
Διαβάστε περισσότεραΔιάλεξη 15: Αναδρομή (Recursion) Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 15: Αναδρομή (Recursion) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Η έννοια της αναδρομής Μη αναδρομικός / Αναδρομικός Ορισμός Συναρτήσεων Παραδείγματα Ανάδρομης Αφαίρεση της Αναδρομής
Διαβάστε περισσότεραπου θα δώσει αποτέλεσµα 48, λόγω της αριστερής προσεταιριστικότητας των τελεστών / και *, ενώ η επιθυµητή αντικατάσταση θα ήταν η
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Α' Περιόδου 2013 Θέµα 1 (α') Η απάντηση είναι λάθος. Αν χρησιµοποιήσουµε την µακροεντολή, για παράδειγµα, στην έκφραση 24/CUBE(2) η έκφραση
Διαβάστε περισσότεραΑΛΓΟΡΙΘΜΟΙ ΜΕ C. ΝΙΚΟΛΑΟΣ ΣΑΜΑΡΑΣ Αναπληρωτής Καθηγητής. CMOR Lab. Computational Methodologies and Operations Research
ΑΛΓΟΡΙΘΜΟΙ ΜΕ C ΝΙΚΟΛΑΟΣ ΣΑΜΑΡΑΣ Αναπληρωτής Καθηγητής CMOR Lab Computational Methodologies and Operations Research Quiz-[9] Συν (+) και Πλην (-) Έστω n συνεχόμενοι θετικοί ακέραιοι από το 1 μέχρι το n.
Διαβάστε περισσότεραΑλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)
Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2016-17 Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) http://mixstef.github.io/courses/csintro/ Μ.Στεφανιδάκης Αφηρημένες
Διαβάστε περισσότεραΒιβλιοθήκες Αφηρημένοι τύποι δεδομένων. Προγραμματισμός II 1
Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων Προγραμματισμός II 1 lalis@inf.uth.gr Βιβλιοθήκες Τμήματα λογισμικού ευρύτερης χρησιμότητας που έχουν σχεδιαστεί με σκοπό να διευκολύνουν την ανάπτυξη πολλών διαφορετικών
Διαβάστε περισσότεραΠρογραμματισμός ΙI (Θ)
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017
Διαβάστε περισσότεραΑσκήσεις μελέτης της 4 ης διάλεξης. ), για οποιοδήποτε μονοπάτι n 1
Οικονομικό Πανεπιστήμιο Αθηνών, Τμήμα Πληροφορικής Μάθημα: Τεχνητή Νοημοσύνη, 2016 17 Διδάσκων: Ι. Ανδρουτσόπουλος Ασκήσεις μελέτης της 4 ης διάλεξης 4.1. (α) Αποδείξτε ότι αν η h είναι συνεπής, τότε h(n
Διαβάστε περισσότεραΔιάλεξη 22: Δυαδικά Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 22: Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Δυαδικά Δένδρα - Δυαδικά Δένδρα Αναζήτησης - Πράξεις Εισαγωγής, Εύρεσης Στοιχείου, Διαγραφής Μικρότερου Στοιχείου
Διαβάστε περισσότεραΔιάλεξη 11: Φροντιστήριο για Στοίβες. Διδάσκων: Παναγιώτης Ανδρέου. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ.
Διάλεξη 11: Φροντιστήριο για Στοίβες Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 1 ΑΤΔ Στοίβα- Πράξεις Θυμηθείτε τον ΑΤΔ στοίβα με τις πράξεις του: MakeEmptyStack()
Διαβάστε περισσότεραΔιδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 10: Στοίβες:Υλοποίηση& Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Υλοποίηση Στοιβών με Δυναμική Δέσμευση Μνήμης - Εφαρμογή Στοιβών 1: Αναδρομικές συναρτήσεις - Εφαρμογή
Διαβάστε περισσότεραint a[5]; a[0] a[1] a[2] a[3] a[4] 15/10/2009
Προγραµµατισµός Ι (ΗΥ10) ιάλεξη : Πίνακες, Αλφαριθµητικά Πίνακες Ο πίνακας είναι µια ειδική δοµή για την αποθήκευση µιας σειράς από δεδοµένα του ίδιου τύπου. Η δήλωσηενός πίνακα γίνεται όπως για µια κανονική
Διαβάστε περισσότεραΑ' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ
Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εργαστήριο 9η εβδομάδα. Κοζάνη, 2 Δεκεμβρίου 2008. Δίνονται παραδείγματα που αποσαφηνίζουν και συμπληρώνουν όσα αναφέρθηκαν στο μάθημα σχετικά με τις δομές
Διαβάστε περισσότεραΑνάπτυξη και Σχεδίαση Λογισμικού
Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Συναρτήσεις (Functions) Οι βασικές λειτουργικές ενότητες ενός προγράμματος C Καλούνται με ορίσματα που αντιστοιχούνται σε
Διαβάστε περισσότεραΔιάλεξη 20: Αναδρομή (Recursion) Διδάσκων: Παναγιώτης Ανδρέου
1 Διάλεξη 20: Αναδρομή (Recursion) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Η έννοια της αναδρομής - Μη-αναδρομικός / Αναδρομικός Ορισμός Συναρτήσεων - Παραδείγματα Ανάδρομης - Αφαίρεση
Διαβάστε περισσότεραΕικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1
Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1 lalis@inf.uth.gr Μνήμη και επικοινωνία διεργασιών Κάθε διεργασία έχει δική της ιδιωτική μνήμη Μια διεργασία δεν μπορεί να γράψει/διαβάσει από/σε θέσεις
Διαβάστε περισσότεραΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δυναμική Δέσμευση Μνήμης και Δομές Δεδομένων (Φροντιστήριο)
ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δυναμική Δέσμευση Μνήμης και Δομές Δεδομένων (Φροντιστήριο) Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου http://www.cs.ucy.ac.cy/courses/epl232 Το μάθημα αυτό
Διαβάστε περισσότεραΔιδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ
Διάλεξη 10: Λίστες Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εύρεση, εισαγωγή, διαγραφή) Σύγκριση Συνδεδεμένων Λιστών με Πίνακες
Διαβάστε περισσότεραΔομές Δεδομένων (Data Structures)
Δομές Δεδομένων (Data Structures) Στοίβες Ουρές Στοίβες: Βασικές Έννοιες. Ουρές: Βασικές Έννοιες. Βασικές Λειτουργίες. Παραδείγματα. Στοίβες Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή πρώτη
Διαβάστε περισσότεραΔείκτες σε συναρτήσεις. Προγραμματισμός II 1
Δείκτες σε συναρτήσεις Προγραμματισμός II 1 lalis@inf.uth.gr Συνάρτηση Ομάδα εντολών που γράφουμε ξεχωριστά για να υλοποιήσουμε μια συγκεκριμένη λειτουργία για καλύτερη / πιο καθαρή δόμηση του κώδικα για
Διαβάστε περισσότεραΠρογραμματισμό για ΗΜΥ
ΕΠΛ 34: Εισαγωγή στον Προγραμματισμό για ΗΜΥ Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 12 Πίνακες εικτών (Pointers Arrays) Θέματα ιάλεξης Στην ενότητα
Διαβάστε περισσότεραΠρογραμματιστικές Τεχνικές
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόμων Τοπογράφων Μηχανικών Προγραμματιστικές Τεχνικές Βασίλειος Βεσκούκης Δρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ Επικ. Καθηγητής ΕΜΠ v.vescoukis@cs.ntua.gr
Διαβάστε περισσότεραΑναδροµή. Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής
Αναδροµή Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής 1 Αναδροµή Βασική έννοια στα Μαθηµατικά και στην Πληροφορική.
Διαβάστε περισσότεραοριακό PASS 402 PASS Πολύ σωστά, µπράβο οριακό PASS
ΑΕΜ ΒΑΘΜΟΣ 357 402 Πολύ σωστά, µπράβο ΣΧΟΛΙΑ Λάθος στον υπολογισµό του πλήθους αστερίσκων. Δε µετράτε αυτούς της "κάτω" σειράς, οπότε το αποτέλεσµα δεν είναι σωστό. Η πράξη που κάνετε στη main είναι λάθος
Διαβάστε περισσότεραΛογικός Προγραμματισμός Ασκήσεις
Λογικός Προγραμματισμός Ασκήσεις Παναγιώτης Σταματόπουλος Τμήμα Πληροφορικής και Τηλεπικοινωνιών Περιεχόμενα 1. Β Ομάδα Ασκήσεων "Λογικού Προγραμματισμού" Ακαδημαϊκού Έτους 2007-08... 3 1.1 Άσκηση 5...
Διαβάστε περισσότεραΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python
ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στη Python Νικόλαος Ζ. Ζάχαρης Αναπληρωτής
Διαβάστε περισσότεραΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ
ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Τρίτη Διάλεξη Εντολές Επιλογής και Επανάληψης Εντολές επιλογής Εντολή if Η πιο απλή μορφή της if συντάσσεται ως εξής: if ( συνθήκη ) Οι εντολές μέσα στα άγκιστρα αποτελούν
Διαβάστε περισσότεραΓλώσσα Προγραμματισμού C
Προγραμματισμός HY: Γλώσσα Προγραμματισμού C Δρ. Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας Email: savvas@teilar.gr URL: http://teilar.academia.edu/iliassavvas
Διαβάστε περισσότεραΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 2: Εκφράσεις, πίνακες και βρόχοι 14 Απριλίου 2016 Το σημερινό εργαστήριο
Διαβάστε περισσότεραlab14grades ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ
ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ 00497 lab14grades - Σωστός έλεγχος του argc για όλες τις περιπτώσεις. - Θα έπρεπε να καλέσεις τη συνάρτηση strlen_r και στην περίπτωση του κενού string, strlen_r("\0"). - Σωστή χρήση
Διαβάστε περισσότερα