Π. ΚΡΗΤΗΣ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΗΥ 380, «ΑΛΓΟΡΙΘΜΟΙ & ΠΟΛΥΠΛΟΚΟΤΗΤΑ» Φ 01: ΕΞΑΝΤΛΗΤΙΚΗ ΑΝΑΖΗΤΗΣΗ Δεδομένου ενός προβλήματος Q, ο πρώτος σκοπός μιας εξαντλητικής αναζήτησης είναι να μας εφασφαλίσει την ύπαρξη αλγορίθμου για το Q. (Αν και μερικές φορές τυχαίνει να μην μπορούμε ή και να μην προλαβαίνουμε να κάνουμε κάτι άλλο από μια «εξαντλητική αναζήτηση».) «Εξαντλητική αναζήτηση» σημαίνει τα εξής τρία: να προσδιορίσουμε τον «χώρο» των ενδεχομένων απαντήσεων για κάθε στιγμιότυπο του Q. να εξετάσουμε ένα προς ένα τα στοιχεία αυτού του χώρου και να ελέγξουμε για κάθε ένα από αυτά το εάν αποτελεί ικανοποιητική απάντηση ή όχι. Για να γίνει αυτό αρκούν και χρειάζονται δύο τινά: διακριτοποίηση: ο χώρος των απαντήσεων να είναι διακριτός, δηλαδή τα στοιχεία του να είναι απαριθμήσιμα ένα προς ένα. φραγή: να αρκεί να ελέγξουμε μόνον ένα πεπερασμένο πλήθος από ενδεχόμενες λύσεις. Για να επιτύχουμε τα παραπάνω χαρακτηριστικά αναδιατυπώνουμε το πρόβλημα σε μορφή «ΔΙΔΕΤΑΙ/ΖΗΤΕΙΤΑΙ/ΏΣΤΕ» ώστε από το «ΖΗΤΕΙΤΑΙ» να καταστεί εντελώς σαφής η μορφή των ζητουμένων, και από το «ΏΣΤΕ» να καταστεί σαφής η συνθήκη ελέγχου του εάν μια ενδεχόμενη λύση είναι όντως αποδεκτή λύση. ΣΥΝΔΥΑΣΤΙΚΕΣ ΟΝΤΟΤΗΤΕΣ Σε εξαιρετικά μεγάλο πλήθος περιπτώσεων η μορφή των ζητουμένων δεν είναι άλλο από μια συνηθισμένη ή και απλή θεμελιακή συνδυαστική οντότητα. Σε αυτή την περίπτωση εξασφαλίζουμε ταυτόχρονα και την διακριτοποίηση και την φραγή του χώρου των λύσεων. Υπάρχουν πολλές «συνδυαστικές οντότητες», αλλά 4 5 από αυτές είναι θεμελιακές και επαρκείς για την μεγάλη πλειοψηφία των περιπτώσεων που θα χρειαστούμε: ΜΕΤΑΘΕΣΕΙΣ Ν αντικειμένων ΣΥΝΔΥΑΣΜΟΙ ν αντικειμένων ανά κ ΔΙΑΤΑΞΕΙΣ ν αντικειμένων ανά κ ΥΠΟΣΥΝΟΛΑ Ν αντικειμένων Μερικές από τις 120 μεταθέσεις 5 αντικειμένων είναι οι 1,2,5,4,3, 1,3,5,4,2, 2,5,3,1,4, 4,3,2,1,5, 5,4,3,2,1 κοκ. Οι μεταθέσεις Ν αντικειμένων έχουν πλήθος Ν! = 1 2... (Ν 1) Ν. Ισχύει ότι Ν! > ( Ν /3) Ν. (Ή, αλλιώς, τα υποσύνολα μεγέθους κ, από ν στοιχεία.) Μερικοί συνδυασμοί του {1,..., 6} ανά 4 είναι {1,2,3,5}, {2,4,6,7}, {4,5,6,7}, κοκ. ν ν! Οι συνδυασμοί «ν ανά κ» έχουν πλήθος ( κ ) =. Για κ = 2 το πλήθος κ!( ν κ)! αυτό είναι μόνον Θ(ν 2 ), αλλά για μεγάλα κ (κ ν/2) έχει εκθετικό μέγεθος: ν 3 ( ν ) ν /2 2 >. (Ή, αλλιώς, τα διατάξεις κ από ν στοιχεία.) Μερικές διατάξεις του {1,..., 5} ανά 3 είναι οι εξής: {1,2,3}, {2,1,3}, {2,3,1}, {3,1,2}, {3,2,1}, {1,3,4}, {1,4,3}, {1,3,4}, κοκ. ν! Οι διατάξεις «ν ανά κ» έχουν πλήθος Δ νκ, = = νν ( 1)( ν 2)...( ν κ+ 1). Για ( ν κ)! κ = 2 το πλήθος αυτό είναι Θ(ν 2 ), αλλά για μεγάλα κ (κ ν/2) έχει εκθετικό μέγεθος. Όλα τα υποσύνολα του {1,..., Ν}. Για Ν = 4 είναι τα εξής 16: { }, {1}, {2}, {3}, {4}, {1,2}, {1,3}, {1,4}, {2,3}, {2,4}, {3,4}, {1,2,3}, {1,2,4}, {1,3,4}, {2,3,4}, {1,2,3,4}.
ΔΙΑΜΕΡΙΣΕΙΣ Ν αντικειμένων Τα υποσύνολα του {1, 2,..., Ν} είναι ακριβώς 2 Ν στο πλήθος. Όλοι οι τρόποι να διαμεριστεί ένα σύνολο με Ν στοιχεία σε κ = 1, 2, 3,..., έως Ν υποσύνολα (από τουλάχιστον 1 στοιχείο σε κάθε υποσύνολο). Οι διαμερίσεις του {1, 2, 3} είναι 6 το πλήθος: 1,2,3, 1,2 3, 1,3 2, 1 2,3, 1 2 3. Το πλήθος των διαμερίσεων του {1, 2,..., Ν} γίνεται (για μεγάλα Ν) 4 Ν. Δίνουμε μερικά χαρακτηριστικά παραδείγματα: ΕΛΑΧΙΣΤΟΣ ΠΕΡΙΓΡΑΜΜΕΝΟΣ ΚΥΚΛΟΣ «Δίδονται Ν σημεία στο επίπεδο και ζητείται ο ελάχιστος περιγεγραμμένος κύκλος.» Για την (ανα)διατύπωση του προβλήματος υπό το σχήμα «ΔΙΔΕΤΑΙ/ΖΗΤΕΙΤΑΙ/ΏΣΤΕ» χρειάζεται μια μετάφραση καθημερινών γλωσσικών εκφράσεων σε μια τυπική «μαθηματική» γλώσσα. Το «ΔΙΔΕΤΑΙ» εδώ είναι σαφές και το «ΖΗΤΕΙΤΑΙ/ΩΣΤΕ» (λίγο πιο κρυφό) είναι «ο ελάχιστος περιγεγραμμένος». Όπως συμβαίνει συχνά στην καθημερινή γλώσσα, λέμε δύο πράγματα με ένα πυκνό συνεκτικό τρόπο που εδώ πρέπει να αναλύσουμε στα συστατικά του στοιχεία. Εδώ, και σε όλες τις ανάλογες περιπτώσεις, το ουσιαστικό (το: «κύκλος») δίδει την μορφή που θέλουμε, και, το επίθετο (το: «ελάχιστος & περιγεγραμμένος») δίδει την συνθήκη που θέλουμε να τηρείται. Έχουμε λοιπόν το πρόβλημα: «ΔΙΔΕΤΑΙ»: πλήθος Ν, και πίνακας σημείων στο επίπεδο Ρκ, κ = 1,..., Ν, «ΖΗΤΕΙΤΑΙ»: «κύκλος», «ΩΣΤΕ»: που να περιλαμβάνει όλα τα σημεία και να έχει την μικρότερη δυνατή (= ελάχιστη) ακτίνα. Αλλά και η έκφραση «κύκλος» απαιτεί περαιτέρω ανάλυση: άνατρέχουμε στον ορισμό για να θυμηθούμε (αν γίνεται να το ξεχάσει κάποιος) ότι ένας κύκλος ορίζεται από ένα σημείο κέντρο Κ και ένα μήκος ακτίνα R. Το... πρόβλημα με το παραπάνω πρόβλημα είναι ότι τα σημεία του επιπέδου είναι άπειρα, και μάλιστα (αν τα δούμε αριθμητικά όπως θα τα χειριζόταν ένας υπολογιστής) οι συντεταγμένες τους ίσως να είναι άρρητοι αριθμοί, ίσως δηλαδή να έχουν άπειρα δεκαδικα ψηφία. Πώς μπορούμε, λοιπόν, να προσδιορίσουμε έναν περιγεγραμμένο κύκλο, με «διακριτό» και «φραγμένο» τρόπο; Μπορούμε εύκολα να βρούμε έναν κύκλο που να περιβάλλει όλα τα σημεία: διαλέγουμε ένα τυχαίο σημείο Κ ως κέντρο, και θέτουμε ως ακτίνα την μέγιστη του Κ από κάποια σημείο Ρ, δηλαδή το μήκος R = max{ ΚΡ: = 1, 2,..., Ν}. Ο κύκλος αυτός περνά ήδη από 1 σημείο του συνόλου μας, έστω το Ρλ. Αν δεν περνά από άλλο σημείο, μπορούμε να τον κάνουμε μικρότερο; «Ναι» μετακινώντας το κέντρο Κ κατά την ευθεία ΚΡλ και προς το Ρλ, και αυτό έως ότου ο κύκλος διέλθει και από 2 ο σημείο του συνόλου μας, έστω το Ρμ. Αν δεν περνά από άλλο σημείο, μπορούμε να τον κάνουμε μικρότερο; Και πάλι «ναι», μετακινώντας αυτή τη φορά το κέντρο Κ κατά την μεσοκάθετο του ΡλΡμ και προς το τμήμα ΡλΡμ, και αυτό έως ότου ο κύκλος διέλθει και από κάποιο 3 ο σημείο του συνόλου μας, έστω το Ρν. Μπορούμε κάνουμε αυτόν τον κύκλο (Κ, R) μικρότερο; Όχι πια διότι ένας και μόνον κύκλος διέρχεται από τρία σημεία (εδώ τα Ρλ, Ρμ, Ρν), και δεν υπάρχει άλλος μικρότερος που να περιλαμβάνει όλα τα σημεία διότι αυτός θα περιελάμβανε και τα Ρλ, Ρμ, Ρν, άρα θα είχε ακτίνα τουλάχιστον όση και ο κύκλος των (Ρλ, Ρμ, Ρν). Αρκεί λοιπόν να εξετάσουμε όλες τις 3άδες σημείων, (δηλαδή όλους του συνδυασμούς Ν σημείων ανά 3), να βρούμε ποιόν κύκλο ορίζουν, και να ελέγξουμε εάν αυτός είναι «περιγεγραμμένος» ή όχι, εάν δηλαδή περιλαμβάνει και όλα τα υπόλοιπα σημεία ή όχι. Εξ όλων των περιγεγραμμένων κύκλων διαλέγουμε αυτόν με την μικρότερη ακτίνα. Υπάρχουν ( Ν 3 3 ) = ΘΝ ( ) τριάδες, και ο έλεγχος εγκλεισμού των σημείων απαιτεί Ο(Ν) ελέγχους κάθε φορά: σύνολο Ο(Ν 4 ). (Σημείωση: προσέξτε εδώ ότι πρέπει να ελέγξουμε και για όλα τα ζεύγη σημείων τον κύκλο που ορίζεται με αυτά ως διάμετρο: αυτό ίσως να συμβεί εάν κατά την 2 η φάση της παραπάνω σμίκρυνσης του κύκλου το κέντρο Κ συμβεί να είναι ή να καταλήξει το κέντρο του τμήματος ΡλΡμ. Κατά την σχεδίαση αλγορίθμων εξετάζουμε την «γενική» περίπτωση, αλλά η πλήρης ορθότητα
ενός αλγορίθμου απαιτεί πολύ συχνά και τον χειρισμό τυχόν «ειδικών» περιπτώσεων.) ΒΡΑΧΥΤΕΡΗ ΔΙΑΔΡΟΜΗ ΣΕ ΔΙΚΤΥΟ ΜΕΤΑΦΟΡΩΝ «Δίδεται σύνολο τοποθεσιών 1, 2,..., Ν και για κάθε ζεύγος (κ, λ) αυτών από αυτές μια απόσταση δκ,λ > 0. Για ένα διακεκριμμένο ζεύγος α και τ (αφετηρία και τερματισμός) ζητείται η βραχύτερη διαδρομή από την α στον τ.» Για την (ανα)διατύπωση του προβλήματος υπό το σχήμα «ΔΙΔΕΤΑΙ/ΖΗΤΕΙΤΑΙ/ΏΣΤΕ» χρειάζεται μιας μετάφραση καθημερινών εκφράσεων σε μια τυπική «μαθηματική» γλώσσα. Το «ΔΙΔΕΤΑΙ» εδώ είναι σαφές. Το «ΖΗΤΕΙΤΑΙ/ΩΣΤΕ» (συχνά πιο κρυφό) είναι η φράση «βραχύτερη διαδρομή» και όπως συμβαίνει συχνά λέμε δύο πράγματα με μία φράση. Και εδώ, όπως σε όλες τις ανάλογες περιπτώσεις, το ουσιαστικό (το: «διαδρομή») μας δίδει την μορφή που θέλουμε, και, το επίθετο (το: «βραχύτερη») μας δίδει την συνθήκη που θέλουμε να τηρείται. Έχουμε λοιπόν το πρόβλημα: «ΔΙΔΕΤΑΙ»: πλήθος Ν, πίνακας (ή συνάρτηση αν θέλετε) δ[1..ν, 1..Ν], και δύο αριθμοί α και τ [1.. Ν]. «ΖΗΤΕΙΤΑΙ»: «μια διαδρομή α τ». «ΩΣΤΕ»: να είναι η βραχύτερη εξ όλων. Αλλά και η έκφραση «διαδρομή» απαιτεί περαιτέρω ανάλυση: άνατρέχουμε στους ορισμούς των διαφόρων όρων που χρησιμοποιούμε, ανασύρουμε ότι «διαδρομή» είναι μια ακολουθία κόμβων. Και για να προσδι ορίσουμε μια ακολουθία θέλουμε το (υπο)σύνολο των κ στοιχείων από τα οποία αποτελείται και την σειρά με την οποία τοποθετούνται ακολουθιακά, δηλαδή μια διάταξη «ν στοιχείων ανά κ». Έχουμε λοιπόν την εξαντλητική μας αναζήτηση: αφού από την α έως τον τ, η διαδρομή μας θα περάσει από κ = 0, 1,..., Ν 2 ενδιάμεσους σταθμούς (τούς {1.. Ν} { α, τ } ), ελέγχουμε για όλα τα πλήθη κ = 0, 1,..., Ν 2, ( Ν 2)! παράγουμε όλες τις διατάξεις (Ν 2) στοιχείων ανα κ, ( στο πλήθος) ( Ν 2 κ )! και από κάθε τέτοια διάταξη λαμβάνουμε μια ενδεχόμενη διαδρομή α τ: από την α στο 1 ο στοιχείο της διάταξης, στη συνέχεια μέσω αυτών, και τέλος από το κ στό στοιχείο στον τερματισμό τ. Για κάθε διαδρομή ελέγχουμε το μήκος της, και εξ όλων θυμόμαστε την βραχύτερη. ΠΕΡΙΟΔΕΙΑ (HAMILTION) «Δίδονται Ν αξιοθέατα μιας περιοχής, και ένα γκρούπ που θα τα επισκεφτεί από το ξενοδοχείο του. Ποιά είναι η συντομότερη περιοδεία για να τα επισκεφθεί όλα;» Εδώ το «ΖΗΤΕΙΤΑΙ/ΩΣΤΕ» είναι «η συντομότερη περιοδεία», και χρειαζόμαστε πάλι μια «μετάφραση»: το ουσιαστικό (το: «περιοδεί») δίδει την μορφή που θέλουμε, και, το επίθετο (το: «συντομότερη») δίδει την συνθήκη που θέλουμε να τηρείται. «ΔΙΔΕΤΑΙ»: πλήθος Ν, και πίνακας τοποθεσιών Τκ, κ = 1,..., Ν. «ΖΗΤΕΙΤΑΙ»: «περιοδεία», «ΩΣΤΕ»: να διανύει την ελάχιστη απόσταση. Τί είναι όμως μια περιοδεία; Αρχίζει από μια αφετηρία, επισκέπτεται ένα σύνολο τοποθεσίεςαξιοθέατα (προφανώς (;) όλα και από μία φορά το καθένα) και επιστρέφει στη αφετηρία. Αρκεί λοιπόν να εξετάσουμε όλες τις μεταθέσεις των Ν αξιοθέατων, (Ν! στο πλήθος), και να ελέγξουμε την «περιοδεία» από την αφετηρία ξενοδοχείο ως το 1 ο εξ αυτών, στη συνέχεια δια μέσου αυτών έως το Ν οστό, και από αυτό έως πίσω στην αφετηρία. Εξ όλων των περιοδειών διαλέγουμε αυτή όπου διανύουμε την συνολικώς μικρότερη απόσταση. ΙΣΟΒΑΡΗ ΔΙΧΟΤΟΜΗΣΗ: «Έχουμε Ν εμπορεύματα έκαστο με βάρος β, = 1,, N, και δύο εμπορικά πλοία για να τα
μεταφέρουμε. Υπάρχει τρόπος να εξισορροπήσουμε το βάρος σε δύο ίσα μέρη;» Αυτό που ζητείται είναι να διαλέξουμε ένα υποσύνολο των S {1,..., Ν} αντικειμένων ώστε το βάρος τους να είναι, ιδανικά, ίσο με το βάρος των υπολοίπων: β = β k S k k ({1.. N} S) k. Η συνδυαστική οντότητα εδώ είναι λοιπόν τα υποσύνολα συνόλου Ν στοιχείων και έχουμε 2 Ν τέτοια. ΣΥΣΚΕΥΑΣΙΑ ΟΜΟΙΩΝ ΑΝΤΙΚΕΙΜΕΝΩΝ: «Έχουμε Ν αντικείμενα με την ίδια διατομή αλλά διαφορετικά ύψη h, = 1,, N, και άφθονα πανομοιότυπα κουτιά ύψους Υ, για να τα συσκευάσουμε. Με ποιά τοποθέτηση θα χρησιμοποιήσουμε τα λιγότερα κουτιά;» Αυτό που ζητείται είναι μια συνάρτηση φ: {1.. Ν} {1.. κ } που θα μας λέει σε ποιό κουτί θα τοποθετηθεί το κάθε αντικείμενο. Επειδή η σειρά (ή αρίθμηση) των κουτιών δεν παίζει ρόλο, ούτε και η σειρά τοποθέτησης μέσα σε κάθε κουτί, το να τοποθετήσουμε Ν αντικείμενα σε κ κουτιά (κατά τον παραπάνω τρόπο) δεν αντιστοιχεί παρά σε μια διαμέρισή τους σε κ υποσύνολα: τα στοιχεία ενός υποσυνόλου φ 1 (λ) θα πρέπει να τοποθετηθούν όλα μαζί στο κουτί υπ. αρ. λ. Για μια εξαντλητική αναζήτηση δεν έχουμε λοιπόν παρά να δοκιμάσουμε όλες τις διαμερίσεις του {1, 2,..., Ν} και να ελέγξουμε εάν είναι εφικτή εάν δηλαδή εάν τηρείται το όριο χωρητικότητας για κάθε ένα από τα υπόσύνολα. Από τις εφικτές διαμερίσεις ( 4 Ν στο πλήθος) διαλέγουμε εκείνη με το μικρότερο πλήθος υποσυνόλων. ΡΙΖΕΣ ΠΟΛΥΩΝΥΜΟΥ: «Έχουμε ένα πολυώνυμο n px ( ) = ax και ζητούνται οι ρίζες του στο R (πραγματικοί).» = 0 Δίνουμε τέλος και ένα αριθμητικό παράδειγμα. Στους αριθμητικούς υπολογισμούς ιδιαίτερο λόγο έχει η λεγόμενη «αριθμητική ανάλυση» (και η «θεωρία προσέγγισης»), αλλά και οι αλγοριθμική σχεδίαση και ανάλυση έχει ένα λόγο πάνω σε αυτά τα ζητήματα. Το πρόβλημα εδώ είναι πώς ούτε διακριτότητα έχουμε (διότι οι πραγματικοί αριθμοί αποτελούν ένα υπερ αριθμήσιμο «συνεχές», ούτε καμμία προφανή φραγή των ριζών... Για το 1 ο ζήτημα η μόνη λύση είναι η αναδιατύπωση του προβλήματος ώστε να μπορούμε να αναφερθούμε σε ρητούς αριθμούς (που είναι «διακριτά» στοιχεια, ως πηλίκο δύο φυσικών μαζί με άνα πρόσημο). Όταν λοιπόν παραπάνω γράφουμε «ρίζα» θα πρέπει να εννοούμε ένα διάστημα [ακ, βκ] ρητών αριθμών αρκετά μικρού μήκους, λ.χ. (βκ ακ) ε, (όπου ε μικρός ρητός αριθμός), για το οποίο υπάρχει βεβαιότητα ότι περιλαμβάνει μια ρίζα του p( ). Για το 2 ο ζήτημα η λύση δίδεται όπως και σε όλες τις ανάλογες περιπτώσεις από την θεωρία του αντίστοιχου μαθηματικού κλάδου, εδώ της άλγεβρας και των πολυωνύμων. Εδώ έχουμε το εξής λήμμα: «Εάν ξ είναι ρίζα του πολυωνύμου n n px ( ) = ax, τότε ξ 1 + a / a = φ(p)» = 0 = 1 n n n (Για μια πρόχειρη απόδειξη δίδουμε το εξής: αν p(ξ) = 0, τότε ( / ) ξ = a 1 an ξ. Αν ξ < 1, = τότε... ξ < 1. Εάν ξ > 1, τότε παίρνοντας απόλυτες τιμές και διαιρώντας δια ξ (n 1) > 1, προκύπτει: n 1 ( n ) n 1 ξ = ( a / a )/ ξ a / a. Αθροίζοντας εξασφαλίζουμε όλες τις περιπτώσεις.) = 0 n = 0 n Έχουμε λοιπόν ένα φράγμα των ριζών. Αρκεί λοιπόν να χωρίσουμε το διάστημα [ φ(p), + φ(p)] σε Ν = 2 φ(p) /ε υποδιαστήματα [ακ, βκ] μικρού μήκους ε, και να ελέγξουμε όλα αυτά τα υποδιαστήματα. Να τα ελέγξουμε όμως ως προς τί; Χρειαζόμαστε εδώ ένα κριτήριο ύπαρξης (και δεν είναι καθόλου σύμπτωση ότι στα μαθηματικά συναντάμε συχνότατα θεωρήματα ύπαρξης και θεωρήματα φραγής...) Εδώ αρκεί να ελέγξουμε ότι p(ακ) p(βκ) 0, ότι δηλαδή το πολυώνυμο λαμβάνει διαφορετικά πρόσημα στα άκρα του διαστήματος: αυτό μέσω του θ. Bolzano θα εξασφάλιζε την ύπαρξη ρίζας του p( ) στο διάστημα [ακ, βκ].
(Η «ειδική» περίπτωση που εμφανίζεται εδώ είναι η περίπτωση το πολυώνυμο p( ) να λαμβάνει μέγιστη ή ελάχιστη, αν και μηδενική, τιμή εντός κάποιου διαστήματος [ακ, βκ], οπότε το κριτήριο Bolzano ίσως να μην είναι εφαρμόσιμο. Σε αυτές όμως τις περιπτώσεις θα εμφανίζεται ίση ρίζα της παραγώγου του πολυωνύμου. Θα πρέπει να εξετάσουμε και την παράγωγο του p( ) για ρίζες, με τον ίδιο τρόπο αλλά αυτά αρκούν για το παράδειγμά μας.) Ποιά συνδυαστική οντότητα εμφανίζεται εδώ; Η απάντηση είναι «η απλούστερη από όλες», η σάρωση N όλων των στοιχείων ενός συνόλου Ν στοιχείων, δηλαδή οι συδυασμοί «Ν ανά 1», (( 1 ) = N στο πλήθος). Προσέξτε ότι οι γλώσσες προγραμματισμοού έχουνε όλες προβλέψει μια θεμελιακή εντολή για αυτόν τον σκοπό, την εντολή ορισμένης επανάληψης: «για κ = 1 έως Ν { S }».
Προς ΕΞΑΣΚΗΣΗ Βασιζόμενοι στα προηγούμενα εξηγήσεις και παραδείγματα προσδιορίστε για τα παρακάτω προβλήματα το σχήμα «ΔΙΔΕΤΑΙ/ΖΗΤΕΙΤΑΙ/ΏΣΤΕ», και την σχετική συνδυαστική ή συνδυαστικές οντότητες. Δώστε μια εκτίμηση του μεγέθους του χώρου αναζήτησης. Θα πρέπει να είστε σε θέση να λύσετε όλα τα προβλήματα. Ως γραπτές «ασκήσεις» ζητούνται 3 από αυτά όποια θέλετε. Το σύνολο των ασκήσεων βαρύνει τον τελικό βαθμό κατά τον τρόπο που εξηγείται στην ιστοσελίδα του μαθήματος. 1. «Δίδονται δυο φυσικοί αριθμοί και ζητείται ο μέγιστος κοινός διαιρέτης αυτών». 2. «Δίδεται απλό πολύγωνο (δηλαδή: ίσως όχι κυρτό, αλλά πάντως δεν τέμνει τον εαυτό του), και σταθερή ακτίνα α. Ζητείται το εάν υπάρχει κύκλος εντός του Π με ακτίνα α.» 3. «Σε μια ημερίδα Ν προσκεκλημένοι θα δώσουν μια διάλεξη. Κάθε ομιλητής έχει δηλώσει το επιθυμητό χρονικό διάστημα (δηλαδή ώρα έναρξης και διάρκεια) και το ερώτημα είναι: αρκούν οι τρείς αίθουσες που έχουμε στη διάθεσή μας;» 4. «Έχουμε ένα σύνολο Ν εργασιών μοναδιαίας χρονικής διάρκειας και δύο συσκευές που θα τις διεκπεραιώσουν. Οι εργασίες έχουν μια σχέση προτεραιότητας μεταξύ τους: κάποιες από αυτές πρέπει να γίνουν πριν από κάποιες άλλες από αυτές. Μπορεί το όλο έργο να ολοκληρωθεί σε Τ χρονικές μονάδες;» 5. «Ν στοιχεία συνδέονται μεταξύ τους και θέλουμε να το μοιράσουμε σε δύο μέρη ώστε οι συνδέσεις ανάμεσα στα δύο μέρη να είναι οι λιγότερες δυνατές. Πώς μπορούμε να το κανουμε αυτό;» 6. «Μας δίδονται Ν σημεία σε ένα επίπεδο και ζητείται εάν υπάρχει ένα κυρτό πεντάγωνο με κορυφές από αυτά τα σημεία που να μην περιέχει κανένα άλλο σημείο.» 7. «Έχουμε Ν πρόσωπα και πολλοί από αυτούς γνωρίζονται μεταξύ τους. Υπάρχει, παρά ταύτα, μια ομάδα τουλάχιστον κ προσώπων που να είναι όλοι άγνωστοι μεταξύ τους;» 8. «Μας δίδονται Ν κουτιά με διαφορετικές ορθογωνικές διατομές, και μας ζητείται (για οικονομία αποθήκευσης) να τα τοποθετήσουμε όλα το ένα μέσα στο προηγούμενο. Πως θα διαπιστώσουμε εάν αυτό είναι εφικτό;» 9. «Σε ένα χάρτη είναι σχεδιασμένες Ν χώρες. Για σαφέστερη παρουσίαση των συνόρων θέλουμε να χρωματίσουμε κάθε ζευγάρι συνορευουσών χωρών με διαφορετικό χρώμα εκάστη. Πως θα εξακριβώσουμε πόσα χρώματα το λιγότερο αρκούν για κάτι τέτοιο;» 10. «Μας δίδεται μια αλγεβρική έκφραση f(,,, ) τεσσάρων μεταβλητών, (λ.χ f(α,β,γ,δ) = [α β (γ+δ)] ) και ζητείται εάν υπάρχει τρόπος να μηδενιστεί με τιμές μεταβλητών από το 1 έως το Ν.»