Πανεπιστήμιο Πατρών Διατμηματικό Πρόγραμμα Μεταπτυχιακών Σπουδών Μαθηματικά των Υπολογιστών και των Αποφάσεων Διπλωματική εργασία ΚNAPSACK PROBLEM

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Πανεπιστήμιο Πατρών Διατμηματικό Πρόγραμμα Μεταπτυχιακών Σπουδών Μαθηματικά των Υπολογιστών και των Αποφάσεων Διπλωματική εργασία ΚNAPSACK PROBLEM"

Transcript

1 Πανεπιστήμιο Πατρών Διατμηματικό Πρόγραμμα Μεταπτυχιακών Σπουδών Μαθηματικά των Υπολογιστών και των Αποφάσεων Διπλωματική εργασία ΚNAPSACK PROBLEM Αθανασοπούλου Δήμητρα (Α.Μ.345) Τριμελής Επιτροπή Επιβλέπων: Τσάντας Νικόλαος Πάτρα, 2017

2 Περίληψη To kapsack problem μελετάται για περισσότερο από έναν αιώνα, με αφετηρία περίπου το Από τα τέλη της δεκαετίας του 50, ο Tobias Datzig ( ) ξεκίνησε τη μελέτη των Kapsack problems και έκτοτε η έρευνα τους εντάθηκε για δύο σημαντικούς λόγους. Πρώτον, τα προβλήματα αυτά έχουν άμεση εφαρμογή στη βιομηχανία, στη μηχανική, στο οικονομικό maagemet και γενικότερα σε οποιονδήποτε τομέα υπάρχει ένα μοναδικό και σπάνιο αγαθό πόρος που τον διεκδικούν πολλοί και δεύτερον για θεωρητικούς λόγους αφού τα Kapsack problems εμφανίζονται σε προβλήματα ακέραιου προγραμματισμού. Το όνομα του εμπνεύστηκε από τον προβληματισμό που δημιουργείται σε όλους όταν φτιάχνουμε μια βαλίτσα. «Ποια πολύτιμα/ χρήσιμα αντικείμενα πρέπει να επιλέξω όταν ο χώρος που έχω στη διάθεση μου είναι περιορισμένος?» Στην οικογένεια των Kapsack Problems δίδεται ένα σύνολο από αντικείμενα και ζητείται να επιλεγούν αυτά που θα μεγιστοποιήσουν το αντίστοιχο κέρδος, χωρίς όμως να παραβιάζεται η χωρητικότητα του ή των σακιδίων. Υπάρχουν διαφορετικά είδη Kapsack Problems, ανάλογο με την κατανομή των αντικειμένων και των σακιδίων. Σε άλλα είδη προβλημάτων, κάποια αντικείμενα μπορούν να επιλεγούν το πολύ μία φορά, ενώ σε κάποια άλλα υπάρχει μια περιορισμένη ποσότητα από κάθε αντικείμενο. Συνοψίζοντας τα είδη των Kapsack problems συναντάμε τα παρακάτω: Sigle kapsack problems Εδώ υπάρχει μόνο ένα δοχείο ή σακίδιο, που πρέπει να γεμίσει με το βέλτιστο σύνολο αντικειμένων. Στο είδος αυτό ανήκουν α) 0-1Kapsack problem β) Bouded kapsack problem γ) Subset-sum problem δ) Chage-makig problem Multiple kapsack problems Αντίθετα εδώ είναι διαθέσιμα περισσότερα από ένα σακίδια. Στην κατηγορία αυτή ανήκουν α) 0-1Multiple kapsack problem β) Geealized assigmet problem γ) Bi-packig problem 1

3 ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ ΚΕΦΑΛΑΙΟ 1 ο : KNAPSACK PROBLEM... 4 ΓΕΝΙΚΟΙ ΟΡΙΣΜΟΙ... 5 LOWER ΚΑΙ UPPER ΟΡΙΑ... 7 ΚΕΦΑΛΑΙΟ 2 ο : 0-1 KNAPSACK PROBLEM RELAXATIONS ΚΑΙ ΑΝΏΤΕΡΑ ΌΡΙΑ LAGRANGIAN RELAXATION DYNAMIC PROGRAMMING ΚΕΦΑΛΑΙΟ 3 ο : 3.1. BOUNDED KNAPSACK PROBLEM ΜΕΤΑΤΡΟΠΗ ΤΟΥ BOYNDED KP ΣΕ 0-1 KP ΑΝΩΤΑΤΑ ΟΡΙΑ ΑΛΓΟΡΙΘΜΟΙ ΕΠΙΛΥΣΗΣ BOYNDED KP UNBOUNDED KNAPSACK PROBLEM ΑΝΩΤΑΤΑ ΟΡΙΑ ΑΚΡΙΒΕΙΣ ΑΛΓΟΡΙΘΜΟΙ ΚΕΦΑΛΑΙΟ 4 ο : MULTIPLE KNAPSACK PROBLEM RELAXATIONS ΛΥΣΗ ΤΟΥ 0-1 MULTIPLE KNAPSACK PROBLEM MULTI-OBJECTIVE KNAPSACK PROBLEM ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ANT COLONY Η ΜΕΘΟΔΟΣ ΑΝΑΖΗΤΗΣΗΣ SCATTER SUBSET-SUM PROBLEM (SSP) DYNAMIC PROGRAMMING ΚΕΦΑΛΑΙΟ 5 ο : ΥΠΟΛΟΓΙΣΤΙΚΗ ΠΟΛΥΠΛΟΚΟΤΗΤΑ.66 ΚΕΦΑΛΑΙΟ 6 ο : ΕΦΑΡΜΟΓΕΣ ΤΟΥ KNAPSACK PROBLEM ΣΤΗΝ ΠΡΑΓΜΑΤΙΚΗ ΖΩΗ ΔΙΑΧΕΙΡΙΣΗ ΤΩΝ ΑΠΟΡΡΙΜΜΑΤΩΝ ΠΟΥ ΠΡΟΕΡΧΟΝΤΑΙ 2

4 ΑΠΟ ΠΛΑΣΤΙΚΕΣ ΣΑΚΟΥΛΕΣ ΜΕ ΧΡΗΣΗ ΤΟΥ KNAPSACK ΜΟΝΤΕΛΟΥ ΕΦΑΡΜΟΓΗ ΤΟΥ MULTIOBJECTIVE KNAPSACK PROBLEM ΧΡΗΣΗ ΤΟΥ KNAPSACK PROBLEM ΓΙΑ ΤΟ ΡΑΔΙΟΦΩΝΙΚΟ ΣΤΑΘΜΟ ΤΗΣ ΠΟΛΗΣ KUMASI (GCR), ΣΤΗΝ ΓΚΑΝΑ ΒΙΒΛΙΟΓΡΑΦΙΑ

5 ΚΕΦΑΛΑΙΟ 1 KNAPSACK PROBLEM Εισαγωγή Έστω ότι ένας πεζοπόρος θέλει να γεμίσει το σακίδιο του επιλέγοντας από μια τεράστια ποικιλία διαφορετικών αντικειμένων εκείνα που θα του εξασφαλίσουν τη μεγαλύτερη δυνατή άνεση. Αυτό το πρόβλημα του σακιδίου μπορεί να μαθηματικοποιηθεί απαριθμώντας τα αντικείμενα από το 1 έως το και εισάγοντας ένα διάνυσμα από δυαδικές μεταβλητές, το x j, με j = 1,,, που ορίζεται ως εξής: x j = { 1, αν επιλεχθεί το j αντικείμενο 0, διαφορετικά Υποθέτοντας ότι η μεταβλητή p j μετρά την «άνεση» του αντικείμενου j, η w j είναι το μέγεθος του αντικειμένου και c είναι το μέγεθος του σακιδίου, το πρόβλημα πλέον αφορά την επιλογή, ανάμεσα σε όλα τα δυαδικά διανύσματα x που ικανοποιούν το περιορισμό w j x j c εκείνο που θα μεγιστοποιεί την αντικειμενική συνάρτηση p j x j Ας δούμε το πρόβλημα λίγο διαφορετικά. Έστω ότι κάποιος θέλει να επενδύσει όλα ή ένα μέρος από c κεφάλαια και πρέπει να επιλέξει ανάμεσα σε πιθανές επενδύσεις. Έστω ότι p j είναι το κέρδος που αναμένεται από την επένδυση j και w j αντιπροσωπεύει το χρηματικό ποσό που απαιτείται για την επένδυση. Είναι προφανές ότι η βέλτιστη λύση του kapsack problem που περιγράφηκε παραπάνω θα οδηγήσει στην καλύτερη επιλογή επενδύσεων. Ένας απλοϊκός τρόπος να λυθεί το πρόβλημα είναι να προγραμματίσουμε έναν υπολογιστή να εξετάσει όλα τα πιθανά δυαδικά διανύσματα x επιλέγοντας εκείνα που ικανοποιούν τον περιορισμό. Όμως, ο αριθμός αυτών των διανυσμάτων είναι 2, έτσι ακόμα και ένας υπολογιστής 4

6 προσαρμοσμένος να εξετάζει ένα δισεκατομμύριο διανύσματα το δευτερόλεπτο, θα χρειάζονταν περισσότερα από 30 χρόνια για =60, πάνω από 60 χρόνια για =61, 10 αιώνες για =65 και πάει λέγοντας. Υπάρχουν ωστόσο εξειδικευμένοι αλγόριθμοι που στις περισσότερες περιπτώσεις μπορούν να λύσουν πρόβλημα για = σε λίγα δευτερόλεπτα. Το πρόβλημα αυτό θεωρείται αντιπροσωπευτικό ενός είδους kapsack problems, όπου δίνεται ένα σύνολο από οντότητες που η καθεμία συνοδεύεται από μια τιμή και ένα μέγεθος και το ζητούμενο είναι να επιλεγούν ένα ή περισσότερα διαφορετικά υποσύνολα οντοτήτων έτσι ώστε το σύνολο του μεγέθους από κάθε ένα υποσύνολο να μην ξεπερνά ή να είναι ίσο με ένα δεδομένο όριο και το σύνολο των τιμών των επιλεγμένων οντοτήτων να είναι το μέγιστο. Το kapsack problem μελετάται εκτενώς τις τελευταίες δεκαετίες καθώς παρουσιάζει θεωρητικό και πρακτικό ενδιαφέρον. Το θεωρητικό του ενδιαφέρον έγκειται στο γεγονός ότι η δομή του είναι τόσο απλή που από τη μια επιτρέπει την εκμετάλλευση πολλών συνδυαστικών ιδιοτήτων και από την άλλη πολύπλοκα προβλήματα βελτιστοποίησης μπορούν να λυθούν μέσω μερικών kapsack-type υποπροβλημάτων. Από την πρακτική πλευρά, αυτού του είδους προβλήματα μπορούν να μοντελοποιήσουν πολλές καταστάσεις της βιομηχανίας, όπως προβλήματα διαχείρισης κεφαλαίου, φόρτωση φορτίου, cuttig-stock problem είναι κάποια από αυτά τα προβλήματα. ΓΕΝΙΚΟΙ ΟΡΙΣΜΟΙ Η λέξη αντικείμενο που θα χρησιμοποιούμε από εδώ και πέρα φανερώνει μεγάλο πλήθος αντικειμένων και ο αριθμός του θα δηλώνεται από την μεταβλητή. Η τιμή και το μέγεθος του j-οστού αντικειμένου θα καλείται κέρδος και βάρος αντίστοιχα και θα συμβολίζεται από τις μεταβλητές p j και w j αντίστοιχα. Ανάλογα με το πόσα σακίδια ή δοχεία έχουμε προκύπτει και διαφορετικό είδος Kapsack Problem. Συγκεκριμένα, αν το σακίδιο είναι μόνο ένα και πρέπει να το γεμίσουμε με το βέλτιστο σύνολο αντικειμένων τότε έχουμε το sigle kapsack problem. Ενώ, αν έχουμε να γεμίσουμε περισσότερα από ένα δοχεία τότε αναφερόμαστε σε multiple kapsack problem. 5

7 Υποθέτουμε πάντα ότι το κέρδος και το βάρος των αντικειμένων αλλά και η χωρητικότητα του σακιδίου είναι θετικοί ακέραιοι αριθμοί. Το πρωτότυπο πρόβλημα, που είδαμε και νωρίτερα, ορίζεται ως εξής: μεγιστοποιείσαι την υπό τον περιορισμό p j x j w j x j c x j = 0 ή 1, j N = {1,, } και είναι γνωστό ως 0-1 Kapsack Problem. Εάν χωρίσουμε το σύνολο των αντικειμένων σε υποσύνολα και προστεθεί ένας ακόμα περιορισμός, σύμφωνα με τον οποίο ένα μόνο αντικείμενο από κάθε σύνολο μπορεί να επιλέγεται τότε έχουμε μια γενίκευση του 0-1 Kapsack Problem, το Multiple Choice Kapsack Problem. Αν υποθέσουμε ότι για κάθε αντικείμενο j, είναι διαθέσιμα b j αντικείμενα κέρδους p j και βάρους w j, όπου ισχύει b j c/w j, τότε έχουμε το Bouded Kapsack Problem που ορίζεται maximize p j x j, υπό τον περιορισμό w j x j c, 0 x j b j, j = 1,, και x j ακέραιος j = 1,, Στην ειδική περίπτωση που b j = + για όλα τα j τότε παίρνουμε μια άλλη μορφή του Kapsack Problem, το Ubouded Kapsack Problem. Σε πολλές πρακτικές περιπτώσεις, συναντάτε μια ειδική περίπτωση του 0-1 Kapsack Problem, όπου ισχύει p j = w j, j = 1,,. Το πρόβλημα σε αυτή την περίπτωση είναι να βρεθεί εκείνο το υποσύνολο βαρών των 6

8 οποίων το συνολικό άθροισμα είναι κοντά αλλά δεν ξεπερνά την χωρητικότητα του σακιδίου, δηλαδή maximize p j x j, υπό τον περιορισμό w j x j c, x j = 0 ή 1, j N = {1,, } αυτό αποτελεί το Subset- Sum Problem. Μια πολύ σημαντική γενίκευση του 0-1 Kapsack Problem είναι αυτή όπου δίνονται m σακίδια χωρητικότητας c j το καθένα. Εισάγοντας την δυαδική μεταβλητή x ij που παίρνει τιμή 1 αν το αντικείμενο επιλέγεται διαφορετικά παίρνει την τιμή 0, έχουμε την ακόλουθη μαθηματική μορφή του προβλήματος: m maximize p j x ij i=1 υπό τον περιορισμό w j x ij c i, m x ij 1, i=1 j = 1,, x ij = 0 ή 1, i = 1,, m, j = 1,,, i = 1,, m LOWER ΚΑΙ UPPER ΟΡΙΑ Όπως θα αποδείξουμε στο κεφάλαιο 5 κανένα από τα προβλήματα που ασχολούμαστε δεν λύνεται σε πολυωνυμικό χρόνο, εκτός και αν P=NP. Έτσι θα μελετήσουμε: 1) αριθμητικούς αλγορίθμους για να προσδιορίσουμε τη βέλτιστη λύση τους 7

9 2) προσεγγιστικούς αλγορίθμους για να προσδιορίσουμε τις δυνατές λύσεις των οποίων η τιμή είναι ένα κατώτερο όριο στη τιμή της βέλτιστης λύσης. Η απόδοση ενός προσεγγιστικού αλγορίθμου για ειδικές περιπτώσεις μετριέται μέσω του λόγου της τιμής της λύσης που βρέθηκε από τον αλγόριθμο και της τιμής της βέλτιστης λύσης. Θα εισάγουμε ένα θεωρητικό μέτρο απόδοσης των αλγορίθμων: Έστω Α ένας προσεγγιστικός αλγόριθμος για ένα πρόβλημα μεγιστοποίησης. Για οποιαδήποτε περίπτωση Ι του προβλήματος ας ορίσουμε ως ΟΡΤ(Ι) την τιμή της βέλτιστης λύσης και έστω Α(Ι) η τιμή που βρέθηκε από τον αλγόριθμο Α. Έτσι, ο λόγος της απόδοσης της χειρότερης περίπτωσης του Α ορίζεται ως ο μεγαλύτερος πραγματικός αριθμός r(a) έτσι ώστε Α(Ι) r(a) για κάθε περίπτωση του Ι ΟΡΤ(Ι) όσο πιο κοντά στο 1 είναι η τιμή του r(a) τόσο καλύτερη είναι η απόδοση της χειρότερης περίπτωσης του Α. Η απόδειξη ότι μια δοθείσα τιμή r είναι ο λόγος της χειρότερης απόδοσης ενός αλγορίθμου Α, αποτελείται από δύο φάσης: 1 η φάση: αρχικά αποδεικνύεται ότι για οποιαδήποτε περίπτωση Ι ενός προβλήματος ισχύει η ανισότητα Α(Ι) ΟΡΤ(Ι) r 2 η : προκειμένου να επιβεβαιώσουμε ότι το r είναι η μεγαλύτερη τιμή που ικανοποιεί την παραπάνω ανισότητα, παίρνουμε μια ειδική περίπτωση Ι για την οποία ισχύει Α(Ι ) ΟΡΤ(Ι ) = r ή μια σειρά από περιπτώσεις για τις οποίες ο παραπάνω λόγος τείνει να είναι κοντά στο r. Η απόδοση του αλγορίθμου Α μπορεί ισοδύναμα να εκφραστεί ως το χειρότερο σχετικό σφάλμα. Δηλαδή, ο μικρότερος πραγματικός αριθμός ε(α) έτσι ώστε 8

10 ΟΡΤ(Ι) Α(Ι) ΟΡΤ(Ι) ε(α) για όλες τις περιπτώσεις Ι δηλαδή r(a) = 1 ε(α). Ένα προσεγγιστικό σχήμα για ένα πρόβλημα μεγιστοποίησης είναι ένας αλγόριθμος Α τέτοιος, που δοθείσας μιας περίπτωσης Ι και ενός σφάλματος ε > 0, αυτός επιστρέφει μια τιμή Α(Ι) έτσι ώστε ΟΡΤ(Ι) Α(Ι) ΟΡΤ(Ι) Έστω legth(i) είναι το μέγεθος εισόδου, δηλαδή ο αριθμός των συμβόλων που απαιτούνται για τον προγραμματισμό του Ι. Αν, για οποιοδήποτε σταθερό ε, ο χρόνος εκτέλεσης του Α περιορίζεται από έναν πολυώνυμο στο legth (I), τότε ο αλγόριθμος Α είναι ένα προσεγγιστικό σχήμα πολυωνυμικού χρόνου, όπου οποιοδήποτε σχετικό σφάλμα λαμβάνεται σε χρόνο που είναι πολυώνυμο στο legth (I). Αν ο χρόνος εκτέλεσης του Α είναι πολυώνυμο στο legth (I) και στο 1/ε τότε ο Α ονομάζεται fully polyomial- time approximatio scheme. Σε ένα πρόβλημα μεγιστοποίησης, η τιμή της λύσης που καθορίζεται από ένα προσεγγιστικό αλγόριθμο δημιουργεί ένα κάτω όριο για τη βέλτιστη λύση, έτσι λοιπόν υπάρχουν μέθοδοι για να βρούμε και ένα άνω όριο γι αυτή την τιμή, να βρούμε τα λεγόμενα upper bouds τα οποία είναι ιδιαίτερα χρήσιμα καθώς στους αριθμητικούς αλγoρίθμους, μας βοηθούν να αποκλείσουμε υπολογισμούς που δεν θα οδηγήσουν στη βέλτιστη λύση και στους προσεγγιστικούς αλγορίθμους αξιολογεί εμπειρικά την απόδοσή του, δηλαδή έστω ένας αλγόριθμος Α ο οποίος εφαρμόζεται στην περίπτωση Ι, και έστω U(I) είναι ένα άνω όριο για το OPT(I) είναι σαφές ότι το σχετικό σφάλμα της προσεγγιστικής λύσης δεν θα είναι μεγαλύτερο από U(Ι) Α(Ι) U(Ι) Ο λόγος της απόδοσης της χειρότερης περίπτωσης για μια upper boudig μέθοδο U μπορεί να οριστεί όμοια με τον προσεγγιστικό αλγόριθμο, δηλαδή ως ο μικρότερος πραγματικός αριθμός ρ(u) έτσι ώστε ε U(Ι) p(u) για όλες τις περιπτώσεις Ι OPT(Ι) 9

11 Όσο πιο κοντά στη μονάδα είναι η τιμή του ρ(u) τόσο καλύτερη είναι η «συμπεριφορά» της χειρότερης περίπτωσης του U. Τα upper bouds συνήθως υπολογίζονται λύνοντας relaxatios, όπως Cotiuous, Lagragia και surrogate, για τα εκάστοτε προβλήματα. Για ένα πρόβλημα το αντίστοιχο relaxed πρόβλημα περιγράφεται από C(P), L(P,m) και S(P,m),m,που είναι ένα κατάλληλο διάνυσμα πολλαπλασιαστών. Ενώ η τιμή της βέλτιστης λύση ενός προβλήματος Ρ ορίζεται ως z(p). 10

12 Κεφάλαιο 2 Εισαγωγή Γνωρίζουμε ότι υπάρχουν διαφορετικά είδη Kapsack Problems ανάλογα με τον τρόπο κατανομής των αντικειμένων και των σακιδίων. Στο κεφάλαιο αυτό θα ασχοληθούμε με το 0-1 Kapsack Problem, όπου κάθε αντικείμενο επιλέγεται το πολύ μία φορά. Θα δώσουμε τον μαθηματικό ορισμό του προβλήματος, θα το περιγράψουμε και έπειτα θα αναφερθούμε στην τεχνική του Dyamic Programmig και πως αυτή μπορεί να χρησιμοποιηθεί για να λύση το 0-1 Kapsack Problem. 0-1 Kapsack Problem Το 0-1 ή Biary Kapsack Problem είναι το πρόβλημα του να επιλεχθεί από ένα σύνολο αντικείμενων ένα υποσύνολο αυτών με σκοπό το αντίστοιχο συνολικό κέρδος να είναι το μέγιστο χωρίς όμως το συνολικό βάρος των αντικειμένων να ξεπερνά την καθορισμένη χωρητικότητα c του σακιδίου. Κάθε ένα αντικείμενο j αντιπροσωπεύεται από δύο μεταβλητές, την p j που είναι η αξία του αντικειμένου και την w i που δηλώνει το βάρος του αντικειμένου. Έχουμε λοιπόν το ακόλουθο πρόβλημα μεγιστοποίησης: maximize z = p j x j υπό τον περιορισμό: w j x j c, (1) (2) όπου η μεταβλητή x j, για j N = {1,, } είναι μια δυαδική μεταβλητή, που παίρνει τιμές 0 ή 1, ανάλογα με τον αν το αντικείμενο επιλέγεται ή όχι, με άλλα λόγια ισχύει: x j = { 1, 0, αν το j αντικείμενο επιλέγεται για το σακίδιο, αλλιώς (3) Χωρίς να γενικεύσουμε θα υποθέσουμε ότι: (4) οι μεταβλητές p j, w j, c είναι θετικοί ακέραιοι και ακόμα ότι 11

13 (5) w j > c (6) w j c για j N Αν η υπόθεση (4) παραβιάζεται, μπορούμε να το αντιμετωπίσουμε πολλαπλασιάζοντας με έναν κατάλληλο παράγοντα, ενώ τις αρνητικές τιμές τις χειριζόμαστε ως εξής: 1. j N 0 = {j N: p j 0, w j 0} το x j παίρνει την τιμή 0 2. j N 1 = {j N: p j 0, w j 0} το x j παίρνει την τιμή 1 3. Έστω N = {j N: p j < 0, w j < 0}, N + = N (N 0 N 1 N ), και { y j = 1 x j, p j = p j, w j = w j j N y j = x j, p j = p j, w j = w j j N + 4. λύνουμε το απομένων πρόβλημα maximize z = p jy j + p j j N N + j N 1 N υπό τον περιορισμό: w jy j c w j j N N + j N 1 N, y j = 0 ή 1, j N N + Εάν τα αντικείμενα που εισάγονται στο πρόβλημα, παραβιάζουν την 5 η υπόθεση, τότε αυθαίρετα δίνουμε στο x j την τιμή 1, για όλα τα j N, ενώ αν δεν ικανοποιείται η υπόθεση (6), τότε το x j παίρνει την τιμή 0, για κάθε j έτσι ώστε w j > c. Επιπλέον, θεωρούμε ότι τα αντικείμενα είναι ταξινομημένα σύμφωνα με τις φθίνουσες τιμές του κέρδους ανά μονάδα βάρους, δηλαδή p 1 w 1 p 2 w 2 p w Αν δεν συμβαίνει αυτό, τα αντικείμενα ξανά υποδηλώνονται, σε χρόνο O(log), έτσι ώστε να έχουμε μια ικανοποιητικά ταξινομημένη διαδικασία. (7) 12

14 Για οποιαδήποτε Ι περίπτωση του προβλήματος, ορίζουμε τη βέλτιστη λύση του ως z(i) ή z. Συνήθως η περίπτωση του 0-1 Kapsack Problem που εξετάζουμε είναι αυτή της μεγιστοποίησης της αντικειμενικής συνάρτησης, υπάρχει όμως και εκδοχή της ελαχιστοποίησης, τότε το πρόβλημα παίρνει τη μορφή: miimize p j y j υπό τον περιορισμό: w j y j q, y j = 0 ή 1, j N και εύκολα μετατρέπεται σε ισοδύναμο πρόβλημα μεγιστοποίησης θέτο- ντας y j = 1 x j και λύνοντας τις (1), (2), (3) με c = w j q. H λύση του προβλήματος ελαχιστοποίησης είναι: z mi = p j z max, όπου z max είναι η λύση του παραπάνω προβλήματος. RELAXATIONS ΚΑΙ ΑΝΩΤΕΡΑ ΟΡΙΑ Σημαντικό για την επίλυση προβλημάτων ακέραιου γραμμικού προγραμματισμού αποτελεί η relaxatio (χαλάρωση). Με τη βοήθεια αυτής, σε μια μέθοδο brach ad boud μπορούμε να μειώσουμε το μέγεθος του δέντρου αναζήτησης αναγνωρίζοντας και κλαδεύοντας τους κόμβους. Μια καλή relaxatio πρέπει να έχει ένα αυστηρό όριο (tight boud), δηλαδή η βέλτιστη τιμή της relaxatio είναι κοντά στη βέλτιστη τιμή του προβλήματος προκειμένου να αποδείξουμε περισσότερη sub- optimality και να κλαδέψουμε περισσότερους κόμβους, επιπλέον πρέπει να επιλύεται γρήγορα. 13

15 Η πιο φυσική relaxatio του kapsack problem είναι η relaxatio γραμμικού προγραμματισμού, δηλαδή το kapsack problem που θα πάρουμε όπως ορίστηκε στις σχέσεις (1), (2) και (3) νωρίτερα, αλλάζοντας τον περιορισμό για το x j. Δηλαδή στη θέση του x j = {0, 1} τώρα θα έχουμε 0 x j 1 και έτσι λύνουμε το 0-1 kapsack problem που ορίζεται ως εξής: maximize p j x j υπό τον περιορισμό: w j x j 0 x j 1, j = 1,, c, Τα αντικείμενα εισάγονται διαδοχικά στο σακίδιο σύμφωνα με τη σχέση (7), που ορίστηκε παραπάνω, μέχρις ότου βρεθεί το πρώτο αντικείμενο, s που δεν ταιριάζει στο σακίδιο. Αυτό το αντικείμενο ονομάζεται critical item (κρίσιμο αντικείμενο) και ορίζεται από τη σχέση s = mi {j: w j > c} και σύμφωνα με τις υποθέσεις (4)-(6) για το s ισχύει 1 < s. To 1957 ο Datzig απέδειξε ότι η βέλτιστη λύση του προβλήματος αυτού είναι x j = 1, για j = 1,, s 1, x j = 0, για j = s + 1,, και s 1 x s = c, όπου c = c w w j. s Έτσι η βέλτιστη λύση για το Kapsack problem μέσω liear programmig relaxatio δίνεται από τη σχέση: s 1 z = p j + c Επειδή οι μεταβλητές p j και x j είναι ακέραιοι αριθμοί ένα έγκυρο ανώτερο όριο για το z είναι 14 p s w s

16 p s s 1 U 1 = z = p j + c όπου c είναι ο μεγαλύτερος ακέραιος που δεν ξεπερνά τον αριθμό c w s p s w s p s w s s 1 Από τον ορισμό του U 1 συμπεραίνουμε ότι U 1 < p j + p s. s 1 Τόσο η p j όσο και η p s είναι εφικτές λύσεις του για το KP, αλλά όχι μεγαλύτερες από την τιμή του z, έτσι για οποιαδήποτε περίπτωση ισχύει U 1 z < 2. Επομένως η απόδοση της χειρότερης περίπτωσης του U 1 είναι ρ(u 1 ) = 2. Θέλοντας να αποδείξουμε ότι η τιμή του ρ(u 1 ) είναι αυστηρή παίρνουμε μια σειρά από προβλήματα με = 2, p 1 = w 1 = p 2 = w 2 = k και c = 2k 1 γι αυτές τις τιμές το U 1 και z γίνονται αντί- στοιχα U 1 = 2k 1 και z = k, επομένως ο λόγος U 1 z κοντά στο 2 για k ικανοποιητικά μεγάλο. παίρνει μια τιμή Ο υπολογισμός της βέλτιστης λύσης z, αυτής της μορφής του προβλήματος και δεδομένου ότι τα αντικείμενα είναι ταξινομημένα όπως τα ορίσαμε στην (7), απαιτεί χρόνο O(). Ένα δεν έχουμε να αντιμετωπίσουμε αυτή την περίπτωση ακολουθούμε συγκεκριμένη διαδικασία για να βρούμε το κρίσιμο σημείο.([14], 2.2.2,σελ. 17). LAGRANGIAN RELAXATION Χρησιμοποιώντας τη Lagragia Relaxatio μπορούμε να πάρουμε μια διαφορετική χαλάρωση του Kapsack problem. Χρησιμοποιώντας έναν μη αρνητικό πολλαπλασιαστή λ, παίρνουμε την Lagragia Relaxatio του Kapsack problem, L(KP, λ) 15

17 maximize p j x j + λ (c w j x j ) υπό τον περιορισμό x j = 0 ή 1, j = 1,,. Συνεπώς η αντικειμενική συνάρτηση αποκτά τώρα τη μορφή z(l(kp, λ)) = p jx j + λc όπου p j = p j λw j για j = 1,,. Η βέλτιστη λύση του L(KP, λ) αποδεικνύεται ότι είναι x j = { 1 αν p j > 0 0 αν p j < 0 επομένως η τιμή της είναι ίση με z(l(kp, λ)) = J(λ) = {j: p j w j > λ}. p j + λc, όπου j J(λ) Για οποιαδήποτε λ 0, η τιμή του z(l(kp, λ)) αποτελεί ένα ανώτερο όριο για το z(kp) το οποίο δεν θα είναι ποτέ καλύτερο από το ανώτερο όριο U 1 που βρήκαμε παραπάνω. Η τιμή του λ που παράγει τη μικρότερη τιμή για το z(l(kp, λ)) είναι λ = p s /w s. Mε αυτή την τιμή το p j είναι p j 0 για j = 1,, s 1 και p j 0 για j = s,,, επομένως το J(λ ) {1,, s 1}. Άρα θα ισχύει x j = x j για j N\{s} και s 1 z(l(kp, λ )) = (p j λ w j ) + λ c = z Ακόμα για λ = λ το p j γίνεται p j = p j w j p s w s To p j είναι μια μείωση που παίρνουμε από το z(l(kp, λ )) αν θέσουμε x j = 1 x j και επομένως είναι ένα κατώτερο όριο. 16

18 Τέλος, οι Martello και Toth όρισαν το ανώτερο όριο όπως αυτό δόθηκε από τον Datzig επιβάλλοντας όμως την itegrality της κρίσιμης μεταβλητής x s. Έτσι όρισαν s 1 U 0 = p j + c w s οπότε: p s s 1 U 1 = p j + p s + (w s c ) p s 1 w s 1 (i) ένα ανώτερο όριο για την αντικειμενική συνάρτηση z είναι το U 2 = max(u 0, U 1 ) (ii) για οποιαδήποτε περίπτωση του KP ισχύει U 2 U 1. DYNAMIC PROGRAMMING Επίλυση ενός προβλήματος της μορφής του 0-1 Kapsack Problem; Brute Force Approach Ένας απλός τρόπος είναι τη στιγμή που έχουμε να επιλέξουμε ανάμεσα σε αντικείμενα για να γεμίσουμε το σακίδιο, να πάρουμε όλους τους πιθανούς συνδυασμούς των αντικειμένων, δηλαδή τους 2 συνδυασμούς, να τους εξετάσουμε προκειμένου να βρούμε την βέλτιστη λύση η οποία οδηγεί στο μεγαλύτερο δυνατό κέρδος υπό την προϋπόθεση ότι δεν ξεπερνά την συγκεκριμένη χωρητικότητα του σακιδίου. Η τεχνική αυτή έχει χρόνο εκτέλεσης Ο(2 ). Divide & Coquer Ωστόσο, υπάρχει καλύτερος τρόπος επίλυσης από την Brute Force προσέγγιση, αυτός είναι η μέθοδος Divide & Coquer. Σε αυτή τη τεχνική, διαιρούμε το πρόβλημα σε υποπροβλήματα, λύνουμε κάθε ένα από αυτά και συνδυάζουμε τις λύσεις που βρήκαμε προκειμένου να βρούμε τη βέλτιστη λύση του αρχικού προβλήματος. Ωστόσο, αν τα υποπροβλήματα δεν είναι ανεξάρτητα, με άλλα λόγια υ- πάρχουν υποπροβλήματα που περιλαμβάνουν τα ίδια υπο υποπροβλήματα, σ αυτή την περίπτωση η Divide & Coquer τεχνική λύνει επα- 17

19 νειλημμένως τα ίδια υπο-υποπροβλήματα με αποτέλεσμα να κάνει περισσότερα πράγματα από ότι χρειάζεται για να βρεί τη λύση. Έτσι καταλήγουμε σε μια καλύτερη τεχνική αυτή του Δυναμικού Προγραμματισμού (Dyamic Programmig = DP). Η ρίζα του όρου Dyamic Programmig ελάχιστα σχετίζεται με την γραφή κώδικα. Επινοήθηκε αρχικά στη δεκαετία του 1950 από τον Richard Bellma, μια εποχή που ο προγραμματισμός των υπολογιστών απασχολούσε τόσο λίγους ώστε δεν υπήρχε καν όνομα γι αυτόν. Τότε με τον όρο «προγραμματισμός» αναφέρονταν στην οργάνωση ενώ ο όρος «δυναμικός προγραμματισμός» επινοήθηκε για την οργάνωση διαδικασιών με πολλαπλά στάδια. Ο δυναμικός προγραμματισμός αποτελεί ισχυρό αλγοριθμικό πρότυπο καθώς εδώ ένα πρόβλημα μπορεί να επιλυθεί με τον εντοπισμό μιας συλλογής υπο-προβλημάτων και αντιμετωπίζοντας αυτά ένας προς ένα, ξεκινώντας από τα μικρότερα, χρησιμοποιούνται οι απαντήσεις τους για λυθούν τα μεγαλύτερα, μέχρι το σύνολο των προβλημάτων να λυθεί. O Dyamic Programmig είναι μια μέθοδος που χρησιμοποιείται για την επίλυση προβλημάτων βελτιστοποίησης. Η βασική του ιδέα είναι να υπολογίσουμε μια φορά τις λύσεις μικρότερων προβλημάτων του αρχικού μας προβλήματος (subsub-problems), να τις αποθηκεύσουμε σε έναν πίνακα έτσι ώστε να μπορούμε να τις επαναχρησιμοποιήσουμε αργότερα, όταν χρειαστεί. Προσπαθούμε ουσιαστικά να πάρουμε περισσότερο χώρο για να γλυτώσουμε χρόνο. Ο χρόνος εκτέλεσης τώρα είναι Ο(*W). Δίνεται ένα ζευγάρι ακεραίων m, c για τους οποίους ισχύει 1 m και 0 c c αντίστοιχα και θεωρούμε την υποπερίπτωση του Kapsack Problem που αποτελείται από τα αντικείμενα 1, 2,, m και την χωρητικότητα c. Έστω ότι η τιμή της βέλτιστης λύσης, f m (c ), ορίζεται από την ακόλουθη σχέση: m m f m (c ) = max { p j x j : w j x j c, x j = 0 ή 1 για j = 1,, m} και θεωρούμε ότι 18

20 f 1 (c ) = { 0 p 1 για c = 0,, w 1 1 για c = w 1,, c Αναφέραμε και νωρίτερα ότι ο Dyamic Programmig αποτελείται από στάδια/υποπροβλήματα, όπου το m αυξάνεται, παίρνοντας τιμές από το 1 έως το και σε κάθε στάδιο m > 1, υπολογίζεται η τιμή f m (c ) καθώς το c μεγαλώνει από το 0 έως το c. Για να υπολογίσουμε την τιμή του f m (c ) χρησιμοποιούμε την αναδρομική σχέση: f m 1 (c ) f m (c ) = { max(f m 1 (c ), f m 1 (c w m ) + p j ) για c = 0,, w m 1 για c = w m,, c Περιγραφή του Dyamic Programmig αλγορίθμου για ένα KP 1 ο Βήμα: Χωρίζουμε το αρχικό πρόβλημα σε μικρότερα προβλήματα. Κατασκευάζουμε έναν πίνακα V της μορφής V[0, 0 W]. Για κάθε i [1, ] και w [1, W], στη καταχώριση V[i, w] αποθηκεύουμε το μέγιστο χρόνο εκτέλεσης οποιουδήποτε υποσυνόλου αρχείων {1, 2,, i} μεγέθους το πολύ w. Εάν μπορούμε να υπολογίσουμε όλες τις καταχωρίσεις του πίνακα, τότε η καταχώριση V[,W] θα περιέχει τον μεγαλύτερο χρόνο εκτέλεσης των αρχείων {1, 2,, i} που θα ταιριάζει στο χώρο αποθήκευσης, δηλαδή τη λύση του προβλήματος. Βρίσκουμε μια σχέση μεταξύ της βέλτιστης λύσης του αρχικού προβλήματος με τις λύσεις των επιμέρους προβλημάτων. 2 ο Βήμα: Ορίζουμε αναδρομικά την τιμή της βέλτιστης λύσης όσον αφορά τις λύσεις των μικρότερων προβλημάτων. Αρχικά, για w [0, W] θέτουμε V[0, w] = 0, ενώ για w < 0, θέτουμε V[i, w] =. Όσο το i [1, ] και w [0, W] υπολογίζουμε την τιμή V[i, w] = max (V[i 1, w], v i + V[i 1, w w i ]) Αυτό, δηλαδή είναι το επαναλαμβανόμενο βήμα. Σημείωση: Στο σημείο αυτό θα αποδείξουμε για ποιο λόγο η μέθοδος για τον υπολογισμό του V[i, w] μέσω της σχέσης 19

21 είναι σωστή. V[i, w] = max(v[i 1, w], v i + V[i 1, w w i ]) Για να υπολογίσουμε το V[i, w] έχουμε 2 μόνο επιλογές για το αρχείο i. Είτε να αφήσουμε το αρχείο i είτε να το επιλέξουμε. Στην 1 η περίπτωση είναι το καλύτερο που μπορούμε να κάνουμε για τα αρχεία {1, 2,, i 1} και αποθηκεύουμε την τιμή w = V[i 1, w]. Στη 2 η περίπτωση, η οποία είναι εφικτή μόνο όταν w[i] w, εδώ κερδίζουμε χρόνο, αλλά έχουμε δαπανήσει w i χώρο, επομένως το καλύτερο που έχουμε να κάνουμε για τα εναπομείναντα αντικείμενα {1, 2,, i 1} και τον εναπομείναντα χώρο αποθήκευσης [, w wi ], είναι να πάρουμε V[i 1, w wi ]. 3 ο Βήμα: Υπολογίζουμε από κάτω προς τα πάνω την τιμή V[i, w]. Έτσι ξεκινάμε, θέτοντας, για 0 w W, V[0, w] = 0. Και συμπληρώνουμε τον υπόλοιπα πίνακα ανα γραμμή, με την τιμή V[i, w] = max (V[i 1, w], v i + V[i 1, w w i ]) που βρίσκουμε κάθε φορά. Πίνακας 1:πίνακας V[i,w] 4 ο Βήμα: Εδώ κατασκευάζεται η βέλτιστη λύση του προβλήματος και αυτό επιτυγχάνεται από τις υπολογισμένες πληροφορίες. Μέχρι εδώ λοιπόν καταφέραμε να συμπληρώσουμε τον πίνακα με τις λύσεις των υποπροβλημάτων, δεν ξέρουμε όμως ποιο είναι εκείνο το σύνολο T που μας δίνει την βέλτιστη λύση. Για να το επιτύχουμε αυτό θα εισάγουμε ένα βοηθητικό Boolea διάνυσμα, το keep[i, w] που θα παίρνει την τιμή 1, εάν επιλέγουμε το i-οστό αντι-κείμενο, διαφορετικά θα παίρνει την τιμή 0. Πιο συγκεκριμένα, αν το keep[i, w] = 1, τότε το T και επαναλαμβάνουμε για keep[-1, W-w ], ενώ αν keep[i, w] = 0, τότε το T και επαναλαμβάνουμε για keep[-1, W]. 20

22 Όλα τα παραπάνω συνοψίζονται στον ακόλουθο DP αλγόριθμο για το Kapsack Problem ο οποίος παίρνει σαν είσοδο τα: W= το μέγιστο βάρος, = τον αριθμό των αντικειμένων και v = <v1, v2,, v> w = <w1, w2,..., w>, δύο ακολουθίες που δείχνουν το κέρδος και το βάρος του εκάστοτε αντικειμένου. Dyamic programmig algorithm Kapsack (v, w,, W) { for (w = 0 to W) V[0, w] = 0; for (i = 0 to ) V[i, 0] = 0; for (i = 1 to ) for (w = 0 to W) if w[i] > w the { V[i, w] = V[i 1, w]; keep [i, w] = 0; } else if w[i] w the { V[i, w] = max(v[i 1, w], v[i] + V[i 1, w w[i]]); keep [i, w] = 1; } K=W; for (i = dowto 1) if (keep[i, K] == 1) 21

23 { output i; K = K w[i]; } retur V[, w]; } Παράδειγμα επίλυσης 0-1 KP με Dyamic Programmig Έστω ότι έχουμε ένα σακίδιο με μέγιστη χωρητικότητα W=5, στόχος μας είναι να γεμίσουμε το σακίδιο με εκείνα αντικείμενα που θα συμβάλλουν ώστε το όφελος του σακιδίου να είναι το μέγιστο, χωρίς όμως να ξεπεράσουμε τη χωρητικότητα W του σακιδίου. Στον παρακάτω πίνακα δίνονται τα αντικείμενα με τις αντίστοιχες τιμές και βάρη τους. Αντικείμενο i Τιμή= v(i) Βάρος=w(i) Φτιάχνουμε έναν πίνακα τιμών V[i,w], όπου το i δηλώνει το αντικείμενο που επιλέγεται κάθε φορά, ενώ το w δηλώνει το εκάστοτε βάρος. Σε αυτό τον πίνακα, οι γραμμές δείχνουν τα αντικείμενα, έτσι αφού θα έχουμε το πολύ 4 αντικείμενα το i [0,4]. Από την άλλη οι στήλες τα βάρη επομένως αφού το μέγιστο βάρος του σακιδίου μου είναι 5, τότε w [0,5]. V[i,w] W= i= Ξεκινάμε να γεμίζουμε τον πίνακα με τιμές. Κάθε στοιχείο της 1 ης γραμμής παίρνει την τιμή 0, αυτό σημαίνει από τη στιγμή που το i = 0, 22

24 δηλαδή δεν υπάρχει αντικείμενο άρα και το βάρος θα είναι 0. Χρησιμοποιώντας την εντολή V[0, w] = 0. Τα στοιχεία της 1 ης στήλης θα πάρουν και αυτά την τιμή 0, αφού όταν το βάρος του σακιδίου είναι ίσο με 0, σημαίνει ότι δεν έχουμε πάρει κανένα αντικείμενο. Χρησιμοποιώντας την εντολή V[i, 0] = 0. Άρα ο πίνακας γίνεται: V[i, w] W= i= Τώρα θέλουμε να συμπληρώσουμε τον υπόλοιπο πίνακα. Αυτό θα γίνει με τον ακόλουθο τρόπο: Για i = 1 έως 4 και για w = 1 έως 5 έχουμε: 1. Για i = 1 και w = 1, όπου v 1 = 100, w 1 = 3, θέλουμε να συμπληρώσουμε το στοιχείο V[1,1]. Αρχικά ελέγχουμε αν w 1 > w, ισχύει άρα V[i, w] = V[i 1, w] άρα keep[1, 1] = 0 V[1, 1] = V[0,1] = 0 2. Για i = 1 και w = 2, όπου v 1 = 100, w 1 = 3, θέλουμε να συμπληρώσουμε το στοιχείο V[1,2]. Ελέγχουμε αν w 1 > w, ισχύει άρα V[1,2] = V[i 1, w] άρα keep[1, 2] = 0 V[1, 2] = V[0,2] = 0 3. Για i = 1 και w = 3, όπου v 1 = 100, w 1 = 3, θέλουμε να συμπληρώσουμε το στοιχείο V[1,3]. Ελέγχουμε αν w 1 > w, δεν ισχύει άρα V[1,3] = max(v[i 1, w], v(i) + V[i 1, w w[i]]) άρα 23

25 V[1, 3] = max(v[0,3], V[0, 3 3]) keep[1, 3] = 1 = max(v[0,3], V[0, 0]) = max(0, ) = Για i = 1 και w = 4, όπου v 1 = 100, w 1 = 3, θέλουμε να συμπληρώσουμε το στοιχείο V[1,4]. Ελέγχουμε αν w 1 > w, δεν ισχύει, άρα V[1,4] = max(v[i 1, w], v(i) + V[i 1, w w[i]]) άρα V[1, 4] = max(v[0,4], V[0, 4 3]) keep[1, 4] = 1 = max(v[0,4], V[0,1]) = max(0, ) = Για i = 1 και w = 5, όπου v 1 = 100, w 1 = 3, θέλουμε να συμπληρώσουμε το στοιχείο V[1,5]. Ελέγχουμε αν w 1 > w, δεν ισχύει, άρα V[1, 5] = max(v[0,5], V[0,5 3]) keep[1, 5] = 1 = max(v[0,5], V[0,2]) = max(0, ) = Για i = 2 και w = 1, όπου v 2 = 20, w 2 = 2, θέλουμε να συμπληρώσουμε το στοιχείο V[2,1]. Ελέγχουμε αν w 2 > w, ισχύει, άρα V[i, w] = V[i 1, w] άρα keep[2, 1] = 0 V[2, 1] = V[2 1,1] = V[1,1] = 0 7. Για i = 2 και w = 2, όπου v 2 = 20, w 2 = 2, θέλουμε να συμπληρώσουμε το στοιχείο V[2,2]. Ελέγχουμε αν w 2 > w, δεν ισχύει, άρα V[2, 2] = max(v[2 1,2], v 2 + V[2 1,2 2]) = 24

26 keep[2, 2] = 1 = max(v[1,2], 20 + V[1,0]) = max(0, ) = = max(0, 20) = Για i = 2 και w = 3, όπου v 2 = 20, w 2 = 2, θέλουμε να συμπληρώσουμε το στοιχείο V[2,3]. Ελέγχουμε αν w 2 > w, δεν ισχύει, άρα V[2, 3] = max(v[2 1,3], v 2 + V[2 1,3 2]) = keep[2, 3] = 1 = max(v[1,3], 20 + V[1,1]) = max(100, ) = = max(100,20) = Για i = 2 και w = 4, όπου v 2 = 20, w 2 = 2, θέλουμε να συμπληρώσουμε το στοιχείο V[2,4]. Ελέγχουμε αν w 2 > w, δεν ισχύει, άρα V[2, 4] = max(v[2 1,4], v 2 + V[2 1,4 2]) = keep[2, 4] = 1 = max(v[1,4], 20 + V[1,2]) = max(100, ) = = max(100,20) = Για i = 2 και w = 5, όπου v 2 = 20, w 2 = 2, θέλουμε να συμπληρώσουμε το στοιχείο V[2,5]. Ελέγχουμε αν w 2 > w, δεν ισχύει, άρα V[2, 5] = max(v[2 1,5], v 2 + V[2 1,5 2]) = keep[2, 5] = 1 = max(v[1,5], 20 + V[1,3]) = max(100, ) = = max(100,120) =

27 11. Για i = 3 και w = 1, όπου v 3 = 60, w 3 = 4, θέλουμε να συμπληρώσουμε το στοιχείο V[3,1]. Ελέγχουμε αν w 3 > w, ισχύει, άρα V[i, w] = V[i 1, w] άρα keep[3, 1] = 0 V[3, 1] = V[3 1,1] = V[2,1] = Για i = 3 και w = 2, όπου v 3 = 60, w 3 = 4, θέλουμε να συμπληρώσουμε το στοιχείο V[3,2]. Ελέγχουμε αν w 3 > w, ισχύει, άρα keep[3, 2] = 0 V[i, w] = V[i 1, w] άρα V[3, 2] = V[3 1,2] = V[2,2] = Για i = 3 και w = 3, όπου v 3 = 60, w 3 = 4, θέλουμε να συμπληρώσουμε το στοιχείο V[3,3]. Ελέγχουμε αν w 3 > w, ισχύει, άρα keep[3, 3] = 0 V[i, w] = V[i 1, w] άρα V[3, 3] = V[3 1,3] = V[2,3] = Για i = 3 και w = 4, όπου v 3 = 60, w 3 = 4, θέλουμε να συμπληρώσουμε το στοιχείο V[3,4]. Ελέγχουμε αν w 3 > w, δεν ισχύει, άρα V[3, 4] = max(v[3 1,4], v 3 + V[3 1,4 w 3 ]) = keep[3, 4] = 1 = max(v[2,4], 60 + V[2,4 4]) = = max(v[2,4], 60 + V[2,0]) = = max(100,60 + 0) = max(100,60) = Για i = 3 και w = 5, όπου v 3 = 60, w 3 = 4, θέλουμε να συμπληρώσουμε το στοιχείο V[3,5]. 26

28 Ελέγχουμε αν w 3 > w, δεν ισχύει, άρα V[3, 5] = max(v[3 1,5], v 3 + V[3 1,5 w 3 ]) = = max(v[2,5], 60 + V[2,5 4]) = = max(v[2,5], 60 + V[2,1]) = max(120,60 + 0) = max(120,60) = 120 keep[3, 5] = Για i = 4 και w = 1, όπου v 4 = 40, w 4 = 1, θέλουμε να συμπληρώσουμε το στοιχείο V[4,1]. Ελέγχουμε αν w 4 > w, δεν ισχύει, άρα V[4, 1] = max(v[4 1,1], v 4 + V[4 1,1 w 4 ]) = keep[4, 1] = 1 = max(v[3,1], 40 + V[3,1 1]) = = max(v[3,1], 40 + V[3,0]) = = max(0,40 + 0) = max(0,40) = Για i = 4 και w = 2, όπου v 4 = 40, w 4 = 1, θέλουμε να συμπληρώσουμε το στοιχείο V[4,2]. Ελέγχουμε αν w 4 > w, δεν ισχύει, άρα V[4, 1] = max(v[4 1,2], v 4 + V[4 1,2 w 4 ]) = keep[4, 2] = 1 = max(v[3,2], 40 + V[3,2 1]) = max(v[3,2], 40 + V[3,1]) = max(20,40 + 0) = max(20,40) = Για i = 4 και w = 3, όπου v 4 = 40, w 4 = 1, θέλουμε να συμπληρώσουμε το στοιχείο V[4,3]. Ελέγχουμε αν w 4 > w, δεν ισχύει, άρα V[4, 3] = max(v[4 1,3], v 4 + V[4 1,3 w 4 ]) = 27

29 keep[4, 3] = 1 = max(v[3,3], 40 + V[3,3 1]) = max(v[3,3], 40 + V[3,2]) = max(100, ) = max(100,60) = Για i = 4 και w = 4, όπου v 4 = 40, w 4 = 1, θέλουμε να συμπληρώσουμε το στοιχείο V[4,4]. Ελέγχουμε αν w 4 > w, δεν ισχύει, άρα V[4, 4] = max(v[4 1,4], v 4 + V[4 1,4 w 4 ]) = keep[4, 4] = 1 = max(v[3,4], 40 + V[3,4 1]) = max(v[3,4], 40 + V[3,3]) = max(v[3,4], ) = max(100, ) = max(100, 140) = Για i = 4 και w = 5, όπου v 4 = 40, w 4 = 1, θέλουμε να συμπληρώσουμε το στοιχείο V[4,5]. Ελέγχουμε αν w 4 > w, δεν ισχύει, άρα V[4, 5] = max(v[4 1,5], v 4 + V[4 1,5 w 4 ]) = keep[4, 5] = 1 = max(v[3,5], 40 + V[3,5 1]) = max(v[3,5], 40 + V[3,4]) = max(v[3,5], ) = max(120, ) = max(120, 140) = 140 Τελικά ο πίνακας γίνεται: V[i,w] W= i= Από τον πίνακα βρίσκουμε ότι το μέγιστο κέρδος θα είναι ίσο με

30 Max Value = V[, W] = V[4, 5] = 140 Ενώ για να βρω τα αντικείμενα που θα γεμίσουν το σακίδιο: Θέτω i = = 4 και w = W = 5, τρέχω το τελευταίο κομμάτι του αλγορίθμου και βρίσκω ότι το μέγιστο κέρδος επιτυγχάνεται με το 1 ο και το 4 ο αντικείμενο. 29

31 Κεφάλαιο BOUNDED KNAPSACK PROBLEM Το Bouded Kapsack Problem(BKP) αφαιρεί τον περιορισμό που επιβάλει να υπάρχει μόνο ένα αντικείμενο από κάθε είδος, αλλά περιορίζει τον αριθμό x j των αντιγράφων από κάθε είδος από κάθε αντικείμενο, με μια ακέραια τιμή c j. Συγκεκριμένα, το ΒΚΡ ορίζεται ως εξής: Δίνονται τύποι αντικειμένων και ένα σακίδιο, με p j = η τιμή ενός αντικειμένο του είδους j, w j = το βάρος ενός αντικειμένου του είδους j, b j = το ανώτο όριο διαθεσιμότητας αντικειμένων του είδους j c = η διαθεσιμότητα του σακιδίου Ο σκοπός του προβλήματος είναι να επιλεγεί ένας αριθμός x j (j = 1,, ) αντικειμένων από κάθε είδος έτσι ώστε maximize z = p j x j (1) υπό την προϋπόθεση w j x j c, (2) 0 x j b j και ακέραιος j N = {1,, } (3) Θέτοντας το b j = 1, για όλα τα j N, το BKP αποτελεί γενίκευση του 0-1 kapsack problem. Χωρίς να γενικεύουμε, υποθέτουμε ότι οι μεταβλητές p j, w j, b j και c είναι θετικοί ακέραιοι (4) b j w j > c (5) 30

32 b j w j c για j N (6) Αν ο περιορισμός (5) δεν ισχύει, τότε έχουμε την τετριμμένη λύση x j = b j για όλα j N επιπλέον, ενώ αν παραβιάζεται ο περιορισμός (6), τότε μπορούμε να αντικαταστήσουμε το b j με c w j. Ακόμα, θεωρούμε ότι οι τύποι αντικειμένων είναι ταξινομημένα έτσι ώστε p 1 w 1 p 2 w 2 p w (7) Καθώς μεταξύ των Bouded και 0-1 Kapsack προβλημάτων υπάρχει έντονη συσχέτιση γι αυτό το λόγο οι τεχνικές που χρησιμοποιούνται για την επίλυση του 0-1 Kapsack problem μπορούν να επεκταθούν και στο Bouded Kapsack problem. Είναι όμως πιο εύκολο να αυξηθεί λίγο ο αριθμός των μεταβλητών και με αυτό τον τρόπο το Bouded Kapsack problem να μετατραπεί σε ισοδύναμο 0-1 Kapsack problem, και να λυθεί απευθείας από κάποιον από τους 0-1 Kapsack problem αλγορίθμους. ΜΕΤΑΤΡΟΠΗ ΤΟΥ BOUNDED KNAPSACK PROBLEM ΣΕ 0-1 KNAPSACK PROBLEM Θα χρησιμοποιήσουμε έναν αλγόριθμο ο οποίος θα μετατρέπει ένα Bouded Kapsack problem σε ένα ισοδύναμο 0-1 Kapsack problem, όπου: = ο αριθμός των μεταβλητών (p j) = το διάνυσμα με τις τιμές των αντικειμένων (w j) = το διάνυσμα με τα βάρη των αντικειμένων c = c = η χωριτηκότηκα του σακιδίου Για κάθε τύπο αντικειμένου j του BKP, εισάγουμε μια σειρά από log 2 b j αντικείμενα, των οποίων η τιμή και το βάρος είναι, αντίστοιχα, (p j, w j ), (2p j, 2w j ), (4p j, 4w j ),., και ένα αντικείμενο έτσι ώστε το συνολικό βάρος των νέων αντικειμένων να είναι ίσο με b j w j και αντίστοιχα η συνολική τιμή τους να είναι b j p j. 31

33 Αλγόριθμος μετατροπής Bouded Kapsack problem σε 0-1 KP procedure TrasfBouded: iput:, (p j ), (w j ), (b j ); output:, (p j), (w j); begi 0; for j 1 to do begi β 0; k 0; repeat if β + k > b j the k b j β; + 1; p kp j ; w kw j ; β β + k; k 2k; util β = b j ed ed Εφαρμογή του αλγόριθμου μετατροπής για την περίπτωση του ΒΚΡ όπου: = 3, c = 10 και (p j ) = (10,15,11), (w j ) = (1, 3, 5), (b j ) = (6, 4, 2), εφαρμόζοντας σ αυτή τον παραπάνω αλγόριθμο μετατροπής παίρνουμε την εξής ισοδύναμη περίπτωση του 0-1 Kapsack Problem: 32

34 = 8, (p j) = (10, 20, 30, 15, 30, 15, 11, 11), (w j) = (1,2, 3,3, 6, 5,5). Η έξοδος του παραπάνω αλγορίθμου σημαίνει ότι τα αντικείμενα 1 έως 3 αντιστοιχούν στο 1 ο τύπο αντικειμένου, με διπλή αναπαράσταση της τιμής x 1 = 3, τα αντικείμενα 4 έως 6 αντιστοιχούν στο 2 ο τύπο αντικειμένου, με διπλή αναπαράσταση των τιμών x 2 = 1, x 2 = 2, x 2 = 3 και τέλος τα αντικείμενα 7 και 8 αντιστοιχούν στο 3 ο τύπο αντικειμένου, με διπλή αναπαράσταση της τιμής x 3 = 1. Το πρόβλημα της μετατροπής έχει = log 2 (b j + 1) δυαδικές μεταβλητές επομένως η διαδικασία έχει πολυπλοκότητα χρόνου Ο( ). Για να κατανοήσουμε ότι το πρόβλημα της μετατροπής είναι ισοδύναμο με το αυθεντικό, θεωρούμε ότι x j1, x j2,, x jq, όπου q = log 2 (b j + 1) είναι οι δυαδικές μεταβλητές που εισάγονται για x j, και το αντικείμενο j h αντιστοιχεί στα h αντικείμενα του είδους j, όπου ισχύει 2 h 1 αν h < q Άρα το x j = h x jh q h=1 h = q 1 b j 2 i 1 { i=1 αν h = q παίρνει ακέραιες τιμέςμεταξύ του 0 και του b j. Το πρόβλημα της μετατροπής εισάγει 2 q δυαδικούς συνδυασμούς, δηλαδή 2 q (b j + 1) εφεδρικές αναπαραστάσεις κάθε πιθανής τιμής του x j, οι τιμές από το q στο 2 q 1 1 έχουν διπλή αναπαράσταση και q είναι ο μικρότερος αριθμός από δυαδικές μεταβλητές που χρειάζονται προκειμένου να αναπαραστήσουμε τους ακεραίους από το 0 έως το b j. ΑΝΩΤΑΤΑ ΟΡΙΑ Θεωρούμε ότι x είναι η βέλτιστη λύση και ότι o κρίσιμος τύπος αντικειμένου δίνεται από τη σχέση: 33

35 j s = mi {j: b i w i > c} (8) i=1 Tότε ισχύει x j = b j j = 1,, s 1 x j = 0 j = s + 1,, s 1 x j = c, όπου c = c b w j w j s s 1 Έτσι η τιμή της βέλτιστης λύσης είναι b j p j + c, w s και το ανώτατο όριο για το ΒΚΡ δίνεται από τη σχέση s 1 U 1 = b j p j + c (9) w s Υποθέτοντας τώρα ότι το συνολικό κέρδος, επιλέγοντας b j αντικείμενα τύπου j για j = 1,, s 1 και x s αντικείμενα τύπου s, είναι s 1 z = b j p j p s + c w s p s (10) Η αντίστοιχη χωρητικότητα που απομένει είναι: p s c = c c w s w s Τότε το ανώτατο όριο της λύσης που μπορούμε να πάρουμε αν κανένα επιπλέον αντικείμενο τύπου s δεν επιλεγεί είναι: U 0 = z + c p s+1 w s+1 (11) Ενώ αν επιλεγεί τουλάχιστον ένα ακόμα αντικείμενο αυτού του τύπου, τώρα το ανώτατο όριο γίνεται: U 1 = z + p s (w s c ) p s 1 w s 1 (12) 34

36 Έτσι, το ανώτατο όριο για το ΒΚΡ είναι U 2 = max(u 0, U 1 ) (13) Η (9) μπορεί να πάρει τη μορφή: U 1 = z + c p s w s, επομένως U 0 U 1, ενώ U 1 U 1, επομένως U 2 U 1. Αν τα είδη αντικείμενων είναι ήδη ταξινομημένα η πολυπλοκότητα χρόνου για τον υπολογισμό του U 1 ή του U 2, είναι Ο(). ΑΛΓΟΡΙΘΜΟΙ ΕΠΙΛΥΣΗΣ BOUNDED KNAPSACK PROBLEM Προσεγγιστικός αλγόριθμος Η τιμή z που ορίστηκε παραπάνω είναι η άμεση εφικτή λύση για το ΒΚΡ. Έστω ότι z είναι η τιμή της βέλτιστης λύσης, τότε το απόλυτο λάθος z z περιορίζεται από το p s, ενώ ο λόγος z /z μπορεί να είναι κοντά στο 0. Ο λόγος απόδοσης της χειρότερης περίπτωσης μπορεί να γίνει ½ υπολογίζοντας το z h = max (z, p s ) ως τιμή της προσεγγιστικής λύσης. Παρακάτω δίνεται ένας αποτελεσματικός greedy αλγόριθμος procedure greedyb: iput:, c, (p j ), (w j ), (b j ); output: z g, (x j ) ; begi c c; z g 0; j 1; for j 1 to do begi x j mi ( c w j, b j ) ; c c w j x j ; 35

37 ed; z g z g + p j x j ; if b j p j > b j p j the j j if b j p j > z g the ed begi ed z g b j p j ; for j 1 to do x j 0; x j b j Η πολυπλοκότητα χρόνου του αλγορίθμου είναι Ο() και Ο(log) για την ταξινόμηση. Ακριβής αλγόριθμος- Δυναμικός προγραμματισμός Έστω ότι η συνάρτηση f m (c ) δίνει την τιμή της βέλτιστης λύσης της υποπερίπτωσης του BKP που ορίζεται από αντικείμενα τύπου 1,, m και χωρητικότητα c, όπου 1 m, 0 c c. Προφανώς, ισχύει ότι f 1 (c ) = 0 p 1 (b 1 1)p 1 { b 1 p 1 για για για για c = 0,, w 1 1, c = w 1,, 2w 1 1, c = (b 1 1)w 1,, b 1 w 1 1, c = b 1 w 1,, c και το f m (c ) μπορεί να υπολογιστεί, εξετάζοντας τις αυξανόμενες τιμές του m από 2 στο, για κάθε m, τις αυξανόμενες τιμές του c από το o στο c, από τη σχέση f m (c ) = max {f m 1 (c lw m ) + lp m : l ακέραιος, 0 l mi (b m, c w m )} Η τιμή της βέλτιστης λύσης για το ΒΚΡ δίνεται από τη f (c ). Για κάθε m, χρειάζονται Ο(cb m ) διαδικασίες για να υπολογίσουμε τη f m (c ), για c = 0,, c. Επομένως, η συνολική πολυπλοκότητα χρόνου 36

38 για να λύσουμε το ΒΚΡ είναι O ( b m ), που σημαίνει ότι είναι O(c 2 ) M=1 για τη χειρότερη περίπτωση. Αντίστοιχα, η πολυπλοκότητα χώρου είναι ίση με O(c), αφού το διάνυσμα λύσεων που αντιστοιχεί σε κάθε f m (c ) είναι ήδη ταξινομημένο. Ο δυναμικός προγραμματισμός μπορεί να λύση προβλήματα περιορισμένου μεγέθους. Στην πραγματικότητα ο πιο αποτελεσματικός τρόπος για να λύσουμε ένα Bouded Kapsack Problem είναι να το μετατρέψουμε σε ένα 0-1 Κapsack Problem και να εφαρμόσουμε έναν από τους αλγορίθμους που είναι κατάλληλος γι αυτό το είδος Kapsack problem UNBOUNDED KNAPSACK PROBLEM Στη παράγραφό αυτή θα ασχοληθούμε με μια ειδική περίπτωση του ΒΚΡ, στην οποία ο αριθμός των αντικειμένων από κάθε είδος δεν περιορίζεται. Το πρόβλημα αυτό, ονομάζεται Ubouded Kapsack Problem (UKP) και αποτελεί ένα πολυσυζητημένο ΝP-hard πρόβλημα βελτιστοποίησης με πολλές εφαρμογές στη βιομηχανία και στο οικονομικό maagemet. Ανήκει στην οικογένεια των Kapsack προβλημάτων, έχει όμως τον χαρακτηρισμό ubouded γιατί κάθε ένα από τα αντικείμενα μπορεί να χρησιμοποιηθεί όσες φορές χρειάζεται, σε αντίθεση με τα υπόλοιπα είδη Kapsack προβλημάτων, όπου υπάρχει περιορισμός στην ποσότητα των αντικειμένων. Γενικά, το UKP δεν βάζει άνω όριο στον αριθμό των αντιγράφων από κάθε είδος αντικειμένου και μπορεί να πάρει τη μορφή, που αναφέραμε παραπάνω, με τη διαφορά ότι ο αριθμός x j είναι ένας μη αρνητικός ακέραιος. Το πρόβλημα ορίζεται ως εξής: maximize z = p j x j (14) υπό την προϋπόθεση w j x j c, (15) 37

39 x j 0 και ακέραιος j N = {1,, } (16) Παρά το γεγονός ότι δεν υπάρχει περιορισμός στην ποσότητα του κάθε αντικειμένου, ωστόσο αυτά περιορίζονται «φυσικά» από την χωρητικότητα του σακιδίου. Συνεπώς μια λύση για το Bouded Kapsack Problem μπορεί επίσης να αποτελέσει λύση για το UKP αν θέσουμε σαν όριο b j, που δείχνει το μέγιστο αριθμό από κάθε αντικείμενο j που μπορεί να μπει στο σακίδιο, τη χωρητικότητα c διαιρεμένη με το βάρος w j του αντικειμένου, δηλαδή αν θέσουμε b j = c w j για j = 1,,, όμως οι αλγόριθμοι που εφαρμόζονται γι αυτή τη περίπτωση του ΒΚΡ δεν έχουν καλή απόδοση. Aκόμα, ένα UKP μπορεί να μετατραπεί σε ένα 0-1 Kapsack Problem εάν δημιουργήσουμε b j αντίγραφα από κάθε αντικείμενο j. Για να χρησιμοποιήσουμε τη λύση του 0-1 Kapsack Problem για το UKP πρέπει να δημιουργηθεί ένας μεγάλος αριθμός από αντικείμενα, ειδικά αν η χωρητικότητα του σακιδίου είναι αρκετά μεγάλη, αυξάνοντας έτσι το χρόνο προ επεξεργασίας και την μνήμη που χρειάζεται για το πρόβλημα. Ωστόσο η μετατροπή αυτή είναι μη εφαρμόσιμη αφού ο αριθμός = log 2 ( c w j + 1), των δυαδικών μεταβλητών που προ πτουν είναι συνήθως πολύ μεγάλος για πρακτικές λύσεις του προβλήματος. Οι υποθέσεις (4) και (7) που χρησιμοποιήσαμε στο BKP διατηρούνται, ενώ η (6) μετατρέπεται σε w j c για j N (17) και η (5) ικανοποιείται για οποιαδήποτε περίπτωση του UKP. Τέλος, η λύση του Ubouded Kapsack Problem δίνεται μέσω δύο κλασσικών τεχνικών. Dyamic Programmig (δυναμικός προγραμματισμός) και Βrach & Boud. ΑΝΩΤΑΤΑ ΟΡΙΑ Η βέλτιστη λύση για το πρόβλημα που ορίστηκε στις (14) και (15) και για x j 0, j N, είναι 38

40 x j = c w j, x j = 0 για j = 2,, και το ανώτερο όριο είναι U 0 = c p 1 w 1. Επιβάλλοντας, επίσης, x j c w j, το οποίο ισχύει για οποιαδήποτε ακέραια λύση, τότε η λύση γίνεται x 1 = c w 1, x j = 0 για j = 3,,, x 2 = c w 2, όπου c = c(modw 1 ) (18) Επομένως το ανώτατο όριο U 1, τώρα είναι U 1 = c p 2 p w 1 + c 1 2 (19) Θεωρώντας ότι ο κρίσιμος τύπος αντικειμένου είναι πάντα s = 2, τότε το ανώτατο όριο U 2 τώρα είναι U 2 = max(u 0, U 1 ), (20) όπου z = c w 1 p 1 + c w 2 p 2 (21) c = c (modw 2 ), (22) U 0 = z + c p 3 w 3, (23) U 1 = z + p 2 (w 2 c ) p 1 w 1 (24) Για το BKP είδαμε ότι το U 1 είναι το ανώτατο όριο για την λύση που παίρνουμε αν επιλέγουν τουλάχιστον c w αντικείμενα του είδους 2. Στη περίπτωση όμως του UKP, αυτό μπορεί να γίνει μόνο αν τουλάχιστον (w 2 c ) w 1 αντικείμενα του είδους 1, αφαιρεθούν από τη λύση που αντιστοιχεί στο z και τότε c + (w 2 c ) w 1 w 1 μονάδες χωρητικότητας είναι διαθέσιμες για αντικείμενα του τύπου 2. Έτσι, ένα έγκυρο ανώτατο όριο μπορεί να βρεθεί αν αντικαταστήσουμε το U 1 με U 1 = z + (c + w 2 c w 1 w 1 ) p 2 w 2 w 2 c w 1 p 1 (25) Ακόμα, U 1 U 1, με c + w 2 c w 1 w 1 w 2 και 39

41 U 3 = max(u 0, U 1), είναι το ανώτατο όριο για το UKP και ισχύει U 3 U 2. Αφού ισχύει ότι U 3 U 2 U 1 U 0 z + p 1 2z, ο λόγος απόδοσης της χειρότερης περίπτωσης για όλα τα όρια είναι το πολύ 2. Για να γίνει κατανοητό ότι p(u 0 ) = p(u 1 ) = p(u 2 ) = p(u 3 ) = 2, θεωρούμε μια σειρά από προβλήματα όπου = 3, p j = w j = k για όλα τα j, και c = 2k 1, τότε έχουμε U 0 = U 1 = U 2 = U 3 = 2k 1 και z = κ, επομένως ο λόγος (upper boud)/z είναι κοντά στο 2 για k ικανοποιητικά μεγάλο. ΑΚΡΙΒΕΙΣ ΑΛΓΟΡΙΘΜΟΙ Οι πιο διαδεδομένοι αλγόριθμοι για να λυθεί το UKP είναι Brach & Boud και Dyamic Programmig. Η μέθοδος Brach & Boud Η μέθοδος Brach & Boud βασίζεται στην απαρίθμηση κάθε συνδυασμού των τύπων αντικειμένων, κρατώντας ένα κατώτατο και ένα ανώτερο όριο της βέλτιστης λύσης. Το κατώτατο όριο δίνεται από την καλύτερη λύση που παίρνουμε κατά τον υπολογισμό, ενώ το ανώτατο όριο μπορεί να είναι η λύση του fractioal kapsack problem. Όταν το κατώτατο και το ανώτατο όριο είναι ίσα τότε έχουμε τη βέλτιστη λύση. Η βασική δουλεύει σε 3 βήματα: 1 ο βήμα: ταξινομεί τα αντικείμενα σύμφωνα με την αποτελεσματικότητα σε αυξανόμενη σειρά. 2 ο βήμα: υπολογίζει το ανώτατο όριο. 3 ο βήμα: Backtrack (επαναλαμβάνει). Η μέθοδος Backtrack χρησιμοποιείται για να βρεθεί η βέλτιστη λύση του προβλήματος. Πράγματι, ο μέγιστος αριθμός αντιγράφων από κάθε αντικείμενο «τοποθετείται» στην τρέχουσα λύση. Τα πιο ικανοποιητικά αντικείμενα τοποθετούνται πρώτα, αφού τα αντικείμενα ταξινομούνται κατά την αποτελεσματικότητά τους. Όταν το σακίδιο γεμίζει, τα πιο 40

42 αποτελεσματικά αντικείμενα αντικαθιστάτε από τα λιγότερο αποτελεσματικά. Σε κάθε αντικατάσταση ένα κατώτατο όριο της τρέχουσας λύσης υπολογίζεται. Αν αυτό το κατώτατο όριο είναι μικρότερο από την προηγούμενη λύση, τότε το τρέχον αντικείμενο που μπήκε στο σάκο φεύγει και μπαίνει το επόμενο αντικείμενο. Ο αλγόριθμος συνεχίζεται μέχρι η λύση να είναι ίση με το ανώτατο όριο ή κάθε αντικείμενο να έχει χρησιμοποιηθεί. Αλγόριθμος procedure brachboud: iput: j: 1 ο αντικείμενο, z: τιμή, c: χωρητικότητα; for j 1 to do ed for m c w j to 0 do ed add m copies of item i to curret solutio; z z + mp j ; c c mw j ; if z = Upper Boud the retur curret solutio; else if z + c else if ed p j+1 w j +1 abado brach; Lower Boud the remove items i from curret solutio; update Lower Boud; update best solutio; call Brach & Boud(i+1, c, z 41

43 Η απόδοση της μεθόδου εξαρτάται από τη δομή της περίπτωσης που έχουμε να λύσουμε. Ο περισσότερος χρόνος εκτέλεσης του αλγορίθμου αφιερώνεται στην ταξινόμηση των αντικειμένων. Γενικά όμως θεωρείται ότι ο Brach & Boud είναι καλύτερος από τον Dyamic Programmig. Dyamic Programmig Το UKP μπορεί να λυθεί με δυναμικό προγραμματισμό, θεωρώντας σακίδια μικρότερης χωρητικότητας ως υποπροβλήματα και ταξινομώντας το καλύτερο κέρδος για την κάθε χωρητικότητα. Η βέλτιστη λύση για ένα σακίδιο χωρητικότητας c μπορεί να βρεθεί χρησιμοποιώντας την λύση των σακιδίων με χωρητικότητα μικρότερη του c. Για παράδειγμα, έχουμε ένα σακίδιο χωρητικότητας 11 και θέλουμε να το γεμίσουμε με 2 αντικείμενα. Το 1 ο αντικείμενο έχει βάρος ίσο με 5 και κέρδος ίσο με 10, ενώ το 2 ο έχει βάρος ίσο με 2 και κέρδος ίσο με 3. Υποθέτουμε ότι η λύση για σακίδια χωρητικότητας μεγαλύτερης του 10 είναι γνωστή. Εάν χρησιμοποιήσουμε το 1 ο αντικείμενο, θα έχουμε ακόμα 6 μονάδες βάρους διαθέσιμες, έτσι αν η βέλτιστη λύση για ένα σακίδιο βάρους 6 είναι το 10, τότε διαλέγοντας το 1 ο αντικείμενο θα έχουμε μια λύση με κέρδος = 20. Αν από την άλλη, επιλέξουμε το 2 ο αντικείμενο, θα έχουμε ακόμα 9 μονάδες βάρους διαθέσιμες, έτσι χρησιμοποιώντας το 2 ο αντικείμενο θα έχουμε μια λύση με κέρδος =19. Επομένως, η βέλτιστη λύση για το σακίδιο βάρους 11 είναι το 20. Και αυτή η τιμή μπορεί να χρησιμοποιηθεί για σακίδια χωρητικότητας μεγαλύτερης του 11. Η παραπάνω μέθοδος συνοψίζεται στην ακόλουθη συνάρτηση: z(c) = { max {z(c w j) + p j } j N w j c 0 για c > 0 αλλού Το διάνυσμα z περιέχει το καλύτερο πιθανό κέρδος για κάθε χωρητικότητα c, όταν 0 c C. Dyamic Programmig αλγόριθμος z[0] 0; for c 1 to C do 42

44 z[c] z[c 1]; for each item type i N do if w[i] c the z[c] max{z[c] z[c w[i] + p[i]}; ed ed ed retur z[c]; Στον παραπάνω αλγόριθμο αρχικά θέτουμε το z[0] ίσο με 0, καθώς όλα τα αντικείμενα έχουν βάρος μεγαλύτερο του 0. Τότε για κάθε χωρητικότητα c από 1 έως C, ο τύπος αντικειμένου που ταιριάζει στο τρέχων σακίδιο, και προσφέρει το μεγαλύτερο κέρδος, χρησιμοποιείται. Υπολογίζουμε το z για κάθε χωρητικότητα c, και η βέλτιστη λύση αποκτάται σε z[c]. Η πολυπλοκότητα χρόνου είναι Ο(C) και η πολυπλοκότητα χώρου είναι Ο(C) αφού το κέρδος για κάθε χωρητικότητα μικρότερη του C είναι ταξινομημένο. 43

45 Κεφάλαιο 4 Εισαγωγή Στο κεφάλαιο αυτό θα ασχοληθούμε με παραλλαγές του Κapsack Problem, που προκύπτουν ανάλογα με τον αριθμό των σακιδίων που χρησιμοποιούμε κάθε φορά ή τον αριθμό των στόχων. Θα δώσουμε τον ορισμό αυτόν τον παραλλαγών και θα παρουσιάσουμε σύντομα τους αλγόριθμους επίλυσης τους MULTIPLE KNAPSACK PROBLEM Εισαγωγή Το 0-1 Multiple Kapsack Problem (ΜΚΡ) είναι μια γενίκευση του απλού προβλήματος του σακιδίου. Σύμφωνα με το Multiple Kapsack Problem δίνεται ένα σύνολο αντικειμένων, που κάθε αντικείμενο j έχει ένα κέρδος p j και ένα μέγεθος w j, και m σακίδια (kapsacks), όπου κάθε σακίδιο i έχει χωρητικότητα c i. Στόχος είναι να βρεθεί εκείνο το υποσύνολο αντι-κειμένων με το μέγιστο δυνατό κέρδος (maximum profit) έτσι ώστε αυτό το υποσύνολο να είναι δυνατό να πακεταριστεί στα διαθέσιμα σακίδια. Ορισμός προβλήματος Δίνεται ένα σύνολο m σακιδίων και ένα σύνολο αντικειμένων, για τα οποία ισχύει ότι m. Κάθε σακίδιο i έχει χωρητικότητα c i και κάθε αντικείμενο j έχει βάρος w j και κέρδος p j. Σκοπός του προβλήματος είναι να επιλεγούν m ξεχωριστά υποσύνολο αντικειμένων έτσι ώστε το συνολικό κέρδος των επιλεγμένα αντικείμενων να είναι το μέγιστο και κάθε υποσύνολο να είναι δυνατό να κατανεμηθεί σε ένα διαφορετικό σακίδιο, του οποίο η χωρητικότητα δεν είναι μικρότερη από το συνολικό βάρος των αντικειμένων του υποσυνόλου. Η μαθηματική έκφραση των παραπάνω είναι: m maximize z = p j x ij i=1 (1) 44

46 υπό τον περιορισμό: w j x ij x ij x j = { 1, 0, 1, j N = {1,, N} (3) c i, i M = {1,, m} (2) αν το j αντικείμενο επιλεγεί για το i σακίδιο διαφορετικά, i M, j N(4) Στην περίπτωση που το m=1 τότε παίρνουμε την απλή περίπτωση του 0-1 Kapsack problem. Όπως και στα προηγούμενα Kapsack προβλήματα θεωρούμε ότι το βάρος των αντικειμένων w j είναι θετικός ακέραιος καθώς επίσης και το κέρδος p j και η χωρητικότητα c i των σακιδίων. Επιπλέον, θεωρούμε ότι: w j max i M {c i } για όλα τα j N, (5) c i mi j N w j για όλα τα i M, (6) w j > c i για i M (7) Αν ένα σακίδιο i δεν υπακούει στην υπόθεση 7, τότε το πρόβλημα έχει ως λύση, την τετριμμένη λύση x i j = 1 για j N και x i j = 1 για i M {i } και j N. Ακόμα, σε περίπτωση που αντί για m, ισχύει m > τότε τα (m ) σακίδια με την μικρότερη χωρητικότητα, αποκλείονται. Τέλος, θεωρούμε, όπως πάντα ότι τα αντικείμενα ταξινο- μούνται έτσι ώστε: p 1 w 1 p 2 w 2 p w. RELAXATIONS Χρησιμοποιούμε δύο τεχνικές προκειμένου να καθορίσουμε ένα καλό ανώτερο όριο-σύνορο για το 0-1 ΜΚΡ, τη Lagragea relaxatio και τη surrogate relaxatio. Η πρώτη, χρησιμοποιώντας ένα θετικό διάνυσμα (λ j ) ορίζεται ως (ΡL λ ): 45

47 m maximize p j x ij λ j ( x ij 1) i=1 υπό τον περιορισμό: w j x ij x ij = 1 ή 0, για όλα τα i M, j N m i=1 c i, για όλα τα i M Επομένως, αφού η αντικειμενική συνάρτηση μπορεί να γραφεί στη μορφή λ j + max { (p j 1)x ij } m i=1 είναι φανερό ότι το (ΡL λ ) χωρίζεται σε μια σειρά από sigle kapsack problems. Από τη άλλη πλευρά, η Surrogate relaxatio παίρνοντας ένα θετικό διάνυσμα (σ i ) ορίζεται ως (ΡS σ ): Αν έστω ότι το z είναι ένα σακίδιο έτσι ώστε σ z = mi i M {σ i } και έστω ότι η βέλτιστη λύση για το (ΡS σ ) δίνεται από το x ij, τότε μπορούμε να πάρουμε μια ισοδύναμη λύση θέτοντας x ij = 0 και x zj = 1για κάθε j έτσι ώστε x ij = 1 με i z. Έτσι το (ΡS σ ) είναι ισοδύναμο με το sigle kapsack problem: maximize p j x zj υπό τον περιορισμό: w j x zj x zj = 1 ή 0, για όλα τα j N m [ σ i c i /σ z ] i=1 m m Αφού [ σ i c i /σ z ] c i, αν επιλέξουμε σ i = k, όπου k οποιοσ i=1 i=1 46

48 δήποτε θετικός για όλα τα i M, θα πάρουμε τη μικρότερη τιμή της βέλτιστης λύση του (ΡS σ ), η οποία είναι το «αυστηρότερο» (tightest) ανώτερο σύνορο για την Surrogate relaxatio (ΡS σ ). ΛΥΣΗ ΤΟΥ 0-1 MULTIPLE KNAPSACK PROBLEM Ανάλογα με την τιμή που θα πάρει o λόγος /m οι αλγόριθμοι για το 0-1 MKP χωρίζονται σε δύο κατηγορίες. Δηλαδή, υπάρχουν εκείνοι οι αλγόριθμοι που είναι προσαρμοσμένοι για τις χαμηλές τιμές του /m, όπως για παράδειγμα σε ένα πρόβλημα όπου πρέπει m υγρά που δεν μπορούν να αναμειχθούν να πρέπει να φορτωθούν σε δεξαμενές και από την άλλη υπάρχουν και οι αλγόριθμοι που είναι κατάλληλοι για τις μεγάλες τιμές του λόγου /m, για παράδειγμα έχουμε m πλοία και θέλουμε να τα φορτώσουμε με κιβώτια. Με τη 2 η κατηγορία αλγορίθμων θα ασχοληθούμε σε αυτή τη παράγραφο. Το 1978 οι Hug και Fisk πρότειναν έναν depth-first brach ad bouded αλγόριθμο στον οποίο διαδοχικά τα υψηλότερα επίπεδα του δέντρου απόφασης κατασκευάζονται επιλέγοντας ένα αντικείμενο και τοποθετώντας το σε σακίδια κατά τη φθίνουσα σειρά της χωρητικότητάς του;. Όταν όλα τα σακίδια ελεγχθούν, το αντικείμενο που έχει τοποθετηθεί σε ένα «εικονικό» σακίδιο m+1, ουσιαστικά αποκλείεται από την τρέχουσα λύση, έτσι κάθε κόμβος του δέντρου απόφασης δημιουργεί m+1 descedet κόμβους (κόμβους παιδιά). Το ανώτατο σύνορο του κάθε κόμβου μπορεί να υπολογιστεί είτε ως λύση της Lagragea relaxatio είτε της Surrogate relaxatio για το τρέχον πρόβλημα είτε παίρνοντας την μικρότερη από αυτές τις δύο. Αργότερα, οι Martello και Toth προτείναν ένα διαφορετικό brachig σχήμα στο οποίο σε κάθε κόμβο υπολογίζεται η Lagragea relaxatio του τρέχοντας προβλήματος, επιτυγχάνοντας έτσι καλύτερα αποτελέσματα όσον αφορά το χρόνο εκτέλεσης. Αν ένα ή περισσότερα σακίδια δεν περιέχουν κάποιο αντικείμενο, τότε έχει βρεθεί μια εφικτή λύση του προβλήματος και το αντικείμενο αυτό αποκλείεται. Από την άλλη εκείνο το αντικείμενο που εμφανίζεται σε m σακίδια, όπου 2 m m, επιλέγεται και δημιουργούνται m κόμβοι. Τα m ανώτερα σύνορα υπολογίζονται μόνο με την επίλυση των m sigle kapsacks και χρησιμοποιώντας μέρος των λύσεων που βρέθηκαν νωρίτερα για τους επόμενους κόμβους, κάθε σύνορο μπορεί να βελτιωθεί παίρνοντας την 47

49 μικρότερη τιμή ανάμεσα σε αυτό και τη λύση της αντίστοιχης Surrogate relaxatio. Με τον όρο, τώρα boud ad boud εννοούμε μια συγκεκριμένη τεχνική αναζήτησης depth first tree η οποία μπορεί να περιγραφεί για το 0-1 πρόβλημα γραμμικού προγραμματισμού ως: (IP) maximize c j x j r r υπό τον περιορισμό: a ij x j b i για όλα τα i T = {1,2,, t} x j = {0,1}, για όλα τα j R = {1.2., r} Ορίζουμε ως partial solutio S, μερική λύση, μια στοίβα που περιέχει εκείνους τους «δείκτες» των οποίων οι μεταβλητές είναι σταθερές, ένας δείκτης στο S σημειώνεται αν η αντίστοιχη μεταβλητή του είναι η σταθερά 0 ενώ δεν σημειώνεται αν η μεταβλητή του είναι η σταθερά 1. Ακόμα ορίζουμε ως curret problem, τρέχων πρόβλημα, που αντιστοιχεί στο S, το ΙΡ με επιπλέον περιορισμούς για τις μεταβλητές εκείνες των οποίων ο δείκτης είναι στη μερική λύση S, επίσης θεωρούμε ότι το upper(s) είναι το ανώτερο σύνορο του προβλήματος. Επιπλέον, ως Π ορίζεται η heuristic διαδικασία, η οποία όταν εφαρμόζεται στο curret problem που αντιστοιχεί στο S, έχει τις παρακάτω ιδιότητες: α) η εφικτή λύση (x j), εφόσον υπάρχει, πάντα βρίσκεται, β) κανένα στοιχείο στην εφικτή λύση (x j) δεν τίθεται έως 1 χωρίς να παραβιάζει τους περιορισμούς. Επίσης, το κατώτερο σύνορο του τρέχοντος προβλήματος που αντιστοιχεί στο S, είναι lower(s) = c j x j. r Ο αλγόριθμος boud ad boud που παράγει τη βέλτιστη λύση (x j ) για την τιμή V στο ΙΡ έχει τα ακόλουθα βήματα: 48

50 Βήμα 1 ο : Αρχικοποίηση. Θέσε S =, V =. Βήμα 2 ο : Heuristic. Εφάρμοσε την Π στο τρέχων πρόβλημα που αντιστοιχεί στο S. Αν δεν υπάρχει εφικτή λύση, πήγαινε στο βήμα 4. Αν lower(s) V, πήγαινε στο βήμα 3. Θέσε V = lower(s), (x j ) = (x j) Αν lower(s) = upper(s), πήγαινε στο βήμα 4. Βήμα 3 ο : Updatig. Έστω j το πρώτο αντικείμενο που ανήκει στο σύνολο (R S), έτσι ώστε x j = 1. Αν δεν υπάρχει τέτοιο j, πήγαινε στο βήμα 4. Θέσε S = S {j}. Αν upper(s) > V, επανέλαβε το βήμα 3. Βήμα 4 ο : Backtrackig. Έστω h το τελευταίο umarked αντικείμενο στο S, αν αυτό το h δεν υπάρχει, σταμάτα, τσέκαρε αυτό το h και θέσε S = S {j S j ακολουθεί το h στο S}. Αν upper(s) V, επανέλαβε το βήμα 4. Πήγαινε στο βήμα 2. Η βασικότερη διαφορά μεταξύ της boud ad boud προσέγγισης και της depth-first brach ad boud είναι ότι στην 1η το κομμάτι της διακλάδωσης, brachig, πραγματοποιείται με την ενημέρωση της μερικής λύσης μέσω της λύσης που αποκτάται από τον υπολογισμό του κατώτερου συνόρου. Αυτό έχει σαν αποτέλεσμα δύο σημαντικά πλεονεκτήματα. Πρώτον, για όλες τις μερικές λύσεις S, για τις οποίες ισχύει ότι lower(s) = upper(s), η (x j) είναι η βέλτιστη λύση του αντίστοιχου τρέχοντος προβλήματος, επομένως αποφεύγουμε την ενημέρωση εκείνων των μεταβλητών για τους δείκτες των οποίων ισχύει {j (R S) x j = 1} και επιπλέον δεν χρειάζεται να υπολογίσουμε το κατώτερο σύνορο και να κάνουμε Backtrackig. Το δεύτερο πλεονέκτημα είναι ότι για όλες τις μερικές λύσεις S, για τις οποίες ισχύει ότι lower(s) < upper(s), οι επαναλαμβανόμενες εκτελέσεις του βήματος 3 ενημερώνουν το S μέσω της λύσης που υπολογίστηκε νωρίτερα από τη διαδικασία Π, η μερική λύση που 49

51 προκύπτει με αυτόν τον τρόπο είναι καλύτερη από αυτή που θα παίρναμε εφαρμόζοντας μια σειρά προς τα εμπρός βημάτων όπου το καθένα θα καθορίζει μια μεταβλητή ανεξάρτητα από τις επόμενες. Επιπλέον, στη περίπτωση αυτή, υπάρχει η πιθανότητα να μη χρειάζεται να υπολογίσουμε το lower(s) μέσω της διαδικασίας Π, αυτό συμβαίνει όταν μετά από κάποιες επαναλήψεις του βήματος 3 ισχύει upper(s) V. Αξίζει να σημειωθεί ότι προτιμούμε την boud ad boud τεχνική για την επίλυση του ΜΚΡ καθώς μπορεί να εφαρμοστεί επιτυχώς αν 1 ον μπορούμε να βρούμε μια «γρήγορη» heuristic διαδικασία που θα παράγει «καλά» κατώτερα σύνορα και 2 ον η relaxatio τεχνική που χρησιμοποιείται για να αποκτήσουμε τα ανώτερα όρια οδηγούν σε λύσεις των οποίων η εφικτότητα για το τρέχον πρόβλημα είναι δύσκολα να ελεγχθεί ή σπάνια επαληθεύεται. Συγκεκριμένα, στο boud ad boud σχήμα που θα χρησιμοποιήσουμε για το 0-1 Multiple Kapsack Problem, κάθε κόμβος του δέντρου απόφασης δημιουργεί δύο κλαδιά είτε τοποθετώντας ένα αντικείμενο j σε ένα σακίδιο i είτε με τον αποκλεισμό ενός αντικειμένου j από το i σακίδιο. Αυτό γίνεται ορίζοντας στον πίνακα (x ij ) την τιμή των στοιχείων του ως 1 ή 0 αντίστοιχα. Στη περίπτωση αυτή η μερική λύση S, περιέχει εκείνα τα ζευγάρια δεικτών (i, j) για τα οποία η τιμή του (x ij ) είναι σταθερή. Εξαιτίας της δομής του ΜΚΡ πάντα υπάρχει μια εφικτή λύση για το τρέχον πρόβλημα. Χρησιμοποιώντας την ακόλουθη heuristic διαδικασία μπορούμε να βρούμε μια «καλή» εφικτή λύση για το τρέχον πρόβλημα που αντιστοιχεί στο S. Επομένως βρίσκοντας μια βέλτιστη λύση για το πρώτο σακίδιο αποκλείουμε εκείνα τα αντικείμενα που έχουν εισαχθεί σε αυτό και επομένως βρίσκουμε μια βέλτιστη λύση για το δεύτερο σακίδιο κ.ο.κ. Αναλυτικότερα: Διαδικασία Π Βήμα 1 ο : Ορίζουμε ως V το άθροισμα των κερδών εκείνων των αντικειμένων που η τιμή τους στο S, είναι ίση με 1, και ως Ν είναι το σύνολο των υπόλοιπων αντικειμένων. Θέτουμε u = 1. Βήμα 2 ο : Ορίζουμε ως k u τη «μη συμπληρωμένη» χωρητικότητα του σακιδίου u και ως Ν u το υποσύνολο Ν, όπως το ορίσαμε στο προηγούμενο βήμα, για το σακίδιο u. Θέτουμε x uv = x u = v για όλα τα (u, v) του S. Λύνουμε τώρα το sigle kapsack problem (Ρ ) αντικαθιστώντας τα Ν και c με Ν u και k u. Αποθηκεύουμε το 50

52 διάνυσμα λύσης στην u-οστη γραμμή του πίνακα (x qj ) και V = V + τιμή της λύσης του (Ρ ). Βήμα 3 ο : Αν u = m, τότε θέτουμε lower(s) = V και επέστεψε. Διώχνουμε από το Ν εκείνα τα αντικείμενα j για τα οποία ισχύει x uj =1, θέτουμε u = u + 1 και πάμε στο βήμα 2. Ένα ανώτερο σύνορο για το τρέχον πρόβλημα μπορεί να υπολογιστεί μέσω της Surrogate relaxatio (ΡS σ ) με σ i για όλα τα i M: Διαδικασία Σ Θεωρούμε V το άθροισμα των κερδών εκείνων των αντικειμένων που η τιμή τους στο S, είναι ίση με 1, και ως Ν είναι το σύνολο των υπόλοιπων αντικειμένων. Ακόμα θεωρούμε ότι c είναι το άθροισμα της «μη συμπληρωμένη» χωρητικότητα των σακιδίων. Λύνουμε τώρα το sigle kapsack problem (Ρ ) αντικαθιστώντας τα Ν και c με Ν και c. Θέτουμε upper(s) = V + τιμή της λύσης του (Ρ ). Επιστροφή. Τώρα απομένει να ορίσουμε τον τρόπο με τον οποίο οι δείκτες εισάγονται στη στοίβα S στο βήμα 3 του boud ad boud αλγορίθμου που περιγράψαμε νωρίτερα. Αφού η heuristic βρίσκει μια λύση για κάθε sigle kapsack problem, εισάγουμε στο S εκείνα τα ζεύγη (i, j) για τα οποία ισχύει x ij = 1 με αύξουσα σειρά των i και μετά των j. Αυτό σημαίνει ότι, όταν εξετάζεται εκείνος ο κόμβος του δέντρου απόφασης που αντιστοιχεί σε εκείνο το ζεύγος (i, j), δηλαδή εκείνος ο κόμβος που δημιουργεί τα κλαδιά που αντιστοιχούν στο x ij = 1 και x ij = 0, όλα τα σακίδια με δείκτη μικρότερο του i είναι «γεμάτα», δηλαδή δεν χωράνε άλλα αντικείμενα και όλα τα σακίδια των οποίων οι δείκτες είναι μεγαλύτεροι του i είναι άδειοι, ενώ το i σακίδιο είναι μερικώς φορτωμένο. Προκειμένου να βελτιώσουμε την αποδοτικότητα του αλγορίθμου, λαμβάνουμε υπόψιν μας, όταν εξετάζουμε εκείνον τον κόμβο που σχετίζεται με το (i, j)): (α) Στο βήμα 1, της διαδικασία Π, ο δείκτης u μπορεί να αρχικοποιηθεί με i αντί για 1, είναι επομένως αναγκαίο να θέσουμε x uv = x uv = για όλα τα (u, v) του S και x uv = 0 για όλα τα v N, για όλα τα u < 51

53 i. Στη διαδικασία Σ μπορούμε να υπολογίσουμε το c' λαμβάνοντας υπόψη μόνο τα σακίδια από i έως m. (β) Εάν i = m, προκύπτει ότι το lower(s) = upper(s), επομένως δεν υπάρχει ζεύγος (m, j) που εισέρχεται στο S, έτσι ώστε για τα αντικείμενα που εισέρχονται στο m-οστό σακίδιο να μην γίνεται καμία ενημέρωση ούτε backtrackig βήματα. Συμπεραίνουμε λοιπόν ότι τα σακίδια τακτοποιούνται έτσι ώστε c 1 c 2 c m. Αλγόριθμος boud ad boud για το 0-1 Multiple Kapsack Problem Βήμα 1 ο : Αρχικοποίηση. Τα σακίδια τακτοποιούνται σε αύξουσα σειρά των χωρητικοτήτων τους c i. Θέσε: b v = 1 για όλα τα v N, k q = c q για όλα τα q M, x qv = 0 για όλα τα q M {m}, v N. Θέσε: S qv = 0 για όλα τα q M {m}, v N, S q0 = 1 για όλα τα q M {m}, v N, V = V = 0, i = 1. Εφάρμοσε την Σ στο τρέχων πρόβλημα που αντιστοιχεί στο S και θέσε U = upper(s). Βήμα 2 ο : Heuristic. Εφάρμοσε την Π στο τρέχων πρόβλημα που αντιστοιχεί στο S και θέσε L = lower(s). Αν L V, πήγαινε στο βήμα 3. Θέσε V = L, για όλα τα v N, θέσε x qv = x qv, για όλα τα q {u M u < i}, x iv = x iv + x iv, x qv = x qv, για όλα τα q {u M u > i} Αν L = U, πήγαινε στο βήμα 4. Βήμα 3 ο : Updatig. Θέσε i = mi {u M i u m, x uj = 1 για κάποια j N u }, αν το σύνολο αυτό είναι άδειο τότε θέσε i = m 1 και πήγαινε στο βήμα 4. 52

54 3.1. Έστω j το επόμενο αντικείμενο του N i έτσι ώστεx ιj = 1 θέσε i = mi {u M i < u < m, x uj = 1 για κάποια j N, u αν το σύνολο αυτό είναι άδειο τότε θέσε i m 1 και πήγαινε στο βήμα 4. ΑνU > V, επανέλαβε το βήμα 3.1. Βήμα 4 ο : Backtrackig. Αν S i0 = 1, θέσε s iv = 0 για όλα τα v N, i = i 1. Αν i = 0, σταμάτα, αλλιώς επανέλαβε το βήμα 4. Θέσε j = S io, x ij = 0, V = V p j, k i = k i + w j, b j = 1 Εφάρμοσε την Σ στο τρέχων πρόβλημα που αντιστοιχεί στο S και θέσε U = upper(s). Αν U V, επανέλαβε το βήμα 4. Πήγαινε στο βήμα 2. Procedure Π Βήμα 1 ο : Θέσε Ν = Ν {z N b z = 0}, N i = N {z N S ij 0}. Θέσε V = V, u = i. Βήμα 2 ο : Θέσε x uz = 0 για όλα τα z N N u. Aν N u =, πήγαινε στο βήμα 3. Λύσε τώρα το sigle kapsack problem (Ρ ) αντικαθιστώντας τα Ν και c με Ν u και k u και αποθήκευσε το διάνυσμα λύσης στην u-οστη γραμμή του πίνακα (x qj ) και V = V + τιμή της λύσης του (Ρ ). Βήμα 3 ο : Αν u = m, τότε θέτουμε lower(s) = V και επέστεψε. Θέσε Ν = Ν {z Ν u x uz = 1}, u = u + 1, N u = N και πήγαινε στο βήμα 2. Procedure Σ Θέσε Ν = Ν {z N b z = 0}, c = k i + q M,q>i c q 53

55 Λύνουμε τώρα το sigle kapsack problem (Ρ ) αντικαθιστώντας τα Ν και c με Ν και c. Θέσε upper(s) = V + τιμή της λύσης του (Ρ ). Επέστρεψε MULTI-OBJECTIVE KNAPSACK PROBLEM Γενικά Στα Kapsack προβλήματα που συναντούμε στην πραγματική ζωή δεν υπάρχει μόνο ένας στόχος που πρέπει να επιτευχθεί, αλλά περισσότεροι. Τα προβλήματα αυτά ονομάζονται Multi-objective combiatorial optimizatio problems (MCOPs) και είναι συνδυαστικά προβλήματα βελτιστοποίησης με περισσότερους από έναν στόχους. Το χαρακτηριστικό αυτών των προβλημάτων είναι ότι έχουν πολλαπλές λύσεις για το πρόβλημα, δηλαδή δεν υπάρχει μόνο μία βέλτιστη λύση, αλλά ένα σύνολο από εφικτές λύσεις που ονομάζονται Pareto ή odomiated (μη κυρίαρχες) λύσεις, όπου κυριαρχούν ανάμεσα σε άλλες ανάλογα με τους στόχους. Το γεγονός ότι υπάρχουν πολλές λύσεις οφείλεται στους πολλούς αντικρουόμενους στόχους. Για παράδειγμα, θέλουμε να αγοράσουμε ένα αυτοκίνητο και μας ενδιαφέρει να είναι γρήγορο και όμορφο αλλά θέλουμε να είναι και ασφαλές, οικονομικό και το κόστος απόκτησης να είναι το μικρότερο δυνατό. Μαθηματικά το Multi-objective combiatorial optimizatio problem ορίζεται ως εξής: max z(x) = (z 1 (x), z 2 (x),, z i (x),, z m (x)) (1) υπό τον περιορισμό x X = {x N : x 0, Ax = b, b N h } (2) όπου: z i (x) = c i x είναι η i οστή αντικειμενική συνάρτηση, m είναι ο αριθμός των αντικειμενικών συναρτήσεων, c i είναι το διάνυσμα των τιμών που αντιστοιχούν στην i-οστή αντικειμενική συνάρτηση, είναι ο αριθμός των μεταβλητών απόφασης, Χ αντιπροσωπεύει την εφικτή περιοχή του χώρο απόφασης, h είναι ο αριθμός των περιορισμών, 54

56 x είναι το διάνυσμα των μεταβλητών απόφασης, A είναι ο τεχνολογικός πίνακας συντελεστών (h ) και, b είναι των ανεξάρτητων όρων των περιορισμών. Το σύνολο όλων των εικόνων των σημείων του Χ, δηλαδή η εφικτή περιοχή του αντικειμενικού χώρου, ορίζεται από την ακόλουθη έκφραση Z = {z N m : z = (z 1 (x), z 2 (x),, z m (x)), x X} (3) Παρακάτω θα δώσουμε 3 ορισμούς χρήσιμους για την περιγραφή του προβλήματος. Ορισμός 1: (Domiace). Έστω z 1 = (z 1 (x), z 2 (x),, z m (x)) Z και z 2 = (z 1 (y), z 2 (y),, z m (y)) Z είναι τα διανύσματα με τις αντικει-μενικές τιμές δύο αντικειμενικών λύσεων x και y X. Τότε η z 1 επικρατεί της z 2 αν z i (x) z i (y) για όλα τα i {1,2,, m} και z i (x) > z i (y) για τουλάχιστον ένα i {1,2,, m} και γράφουμε z 1 z 2 και z 1 z 2. Ορισμός 2: (No domiated solutio). Ένα διάνυσμα z 1 Z καλείται μη επικρατούσα λύση( o domiated solutio) αν και μόνο αν δεν υπάρχει άλλο διάνυσμα z 2 Z έτσι ώστε z 2 z 1 και z 2 z 1. Αλλιώς z 1 είναι το επικρατές διάνυσμα. Ορισμός 3:(Efficiet solutio). Μια εφικτή λύση x X λέγεται ότι είναι αποτελεσματική αν είναι αδύνατο να βρούμε μια άλλη εφικτή λύση y X η οποία να είναι τουλάχιστον τόσο καλή όσο και η x για όλους τους στόχους και να είναι αυστηρά καλύτερη για ένα τουλάχιστον κριτήριο, δηλαδή μια λύση x λέγεται ότι είναι αποτελεσματική, εάν και μόνο αν είναι αδύνατο να βρούμε άλλο εφικτή λύση y X έτσι ώστε z i (y) z i (x) για όλα τα i {1,2,, m} και z i (y) > z i (x) για τουλάχιστον ένα i {1,2,, m}. 0/1 Multi-objective Kapsack Problems Παρακάτω δίνονται οι ορισμοί δύο παραλλαγών του Multi-objective Kapsack Problem, η 1 η είναι το 0/1 Multi-objective Kapsack πρόβλημα με έναν περιορισμό (ΜΟΚΡ-1) και η 2 η το 0/1 Multi-objective Kapsack πρόβλημα με πολλούς περιορισμούς (ΜΟΚΡ-2). 55

57 Η μαθηματική διατύπωση του 0/1 Multi-objective Kapsack με έναν περιορισμό (ΜΟΚΡ-1) είναι: υπό τον περιορισμό: όπου: max z(x) = (z 1 (x), z 2 (x),, z m (x)) (4) w j x j W (5) x j {0,1}, j {1,2,, }, i {1,2,, m} (6) z i (x) = c j i x j αντιπροσωπεύει την i οστή αντικειμενική συνάρτηση, είναι ο αριθμός των στόχων, m είναι ο αριθμός των αντικειμενικών συναρτήσεων, c j i είναι η τιμή- κέρδος του αντικειμένου j σύμφωνα με τον περιορισμό i, w j είναι το βάρος κόστος του αντικειμένου j, W αντιπροσωπεύει τη χωρητικότητα του σακιδίου. Για την τιμή της μεταβλητής x j ισχύει ότι x j {0,1}, που σημαίνει ότι η μεταβλητή x j παίρνει την τιμή 1, εάν και μόνο αν το j αντικείμενο συμπεριληφθεί στο σακίδιο, αλλιώς παίρνει την τιμή 0. Επιπλέον, όπως και στα υπόλοιπα kapsack προβλήματα, θεωρούμε ότι οι μεταβλητές W, c j i, w j είναι θετικοί ακέραιοι και επιπλέον ισχύει w j W, w j > W για κάθε j {1,2,, } και i {1,2,, m}. Από την άλλη η μαθηματική διατύπωση της 2 ης παραλλαγής, δηλαδή του 0/1 Multi-objective Kapsack με πολλούς περιορισμούς (ΜΟΚΡ-2) διαφέρει από την προηγούμενη διατύπωση, μόνο στον αριθμό των περιορισμών. Δηλαδή: 56

58 max z(x) = (z 1 (x), z 2 (x),, z m (x)) (7) υπό τον περιορισμό: w j x j W i (8) x j {0,1}, j {1,2,, }, i {1,2,, m} (9) ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ANT COLONY Η βελτιστοποίηση at coloy (ACO) είναι μια στοχαστική μεθοδολογία η οποία αναπτύχθηκε παρατηρώντας τη συμπεριφορά των μυρμηγκιών στη φύση, δηλαδή παρατηρώντας τον τρόπο με τον οποίο τα μυρμήγκια βρίσκουν το μικρότερο μονοπάτι ανάμεσα στην πηγή της τροφής τους και στη φωλιά τους. Σε αυτή τη μεθοδολογία, για να λυθεί ένα πρόβλημα διαμορφώνεται σε πρόβλημα εύρεσης αποτελεσματικών μονοπατιών σε ένα γράφημα. Έτσι, θα μετατρέψουμε το ΜΟΚΡ-1 σε ένα συνδεδεμένο και μηπροσανατολισμένο γράφημα G=(V,E), όπου το σύνολο των κορυφών V αντιπροσωπεύει τα αντικείμενα του προβλήματος (j {1,2,,}) και το σύνολο των ακμών E αντιπροσωπεύει τη σύνδεση μεταξύ των κορυφών. Σε κάθε επανάληψη/κύκλο ένα μυρμήγκι επιλέγει μια αντικειμενική συνάρτηση (i {1,2,,m}), και σύμφωνα με αυτή την επιλογή του επιλέγει τις πιο ελκυστικές κορυφές/στοιχεία, μεταξύ αυτών που είναι διαθέσιμα. Κάθε μυρμήγκι έχει μια μνήμη στην οποία αποθηκεύει τα ήδη επιλεγμένα μονοπάτια και επομένως αποφεύγεται η επιλογή μιας κορυφής περισσότερες από μία φορές. Τα μυρμήγκια από όπου περνούν αφήνουν μια ουσία που ονομάζεται φερεμόνη και μέσω αυτής επικοινωνούν μεταξύ τους, επομένως όταν τελειώσει αυτή η διαδικασία, εντοπίζονται οι κορυφές που ανήκουν σε ένα μονοπάτι με φερεμόνη, δηλαδή δημιουργείται ένα «σύνολο» με τις διαδρομές που αντιστοιχούν σε κάθε αντικείμενο, και ένα μέρος αυτού του συνόλου αντιστοιχεί σε εκείνη τη λύση που έχει το μεγαλύτερο κέρδος σε κάθε αντικειμενική συνάρτηση, με άλλα λόγια τα αντικείμενα που έχουν το καλύτερο κέρδος σημειώνονται προκειμένου να έχουν μεγαλύτερες πιθανότητες επιλογής στις επόμενες επαναλήψεις. Η λύση του προβλήματος, δηλαδή το σύνολο των πιθανών efficiet/o-domiated λύσεων, αποτελείται από το σύνολο όλων των κορυφών που ανήκουν σε αποτελεσματικά μονοπάτια όπως αυτά αναγνωρίστηκαν, προηγουμένως από κάθε μυρμήγκι και από τις τιμές της αντίστοιχης αντικειμενικής τους συνάρτησης. 57

59 Η επιλογή μιας κορυφής δηλαδή ενός αντικειμένου j {1,2,,}, υπακούει σε έναν κανόνα που προκύπτει από την εξέταση της ποσότητας των φερομονών και των ευρετικών πληροφορίων που σχετίζονται με αυτή την κορυφή/αντικείμενο, οι τιμές των οποίων εξαρτώνται από την αντι-κειμενική συνάρτηση που επιλέχθηκε νωρίτερα. Ο κανόνας ορίζεται μέσω των εκφράσεων: p j = (τ j i ) α (η j i ) β y Cad (τ j i ) α (η j i ) β (10) 0 < p j 1, τ j i, η j i > 0, α, β 0 (11) όπου: τ i j είναι η ποσότητα των φερομονών, είναι η ευρετική πληροφορία σχετίζεται με το αντικείμενο j της αντικειμενικής συνάρτησης i, η j i α είναι παράμετρος που καθορίζει τη σπουδαιότητα της τ i j, β είναι παράμετρος που καθορίζει τη σπουδαιότητα της η i j, Cad είναι η λίστα που περιέχει όλα τα υποψήφια αντικείμενα y είναι ένα οποιοδήποτε στοιχείο της λίστας Cad. Ανάλογα με την παραλλαγή του Kapsack προβλήματος που εξετάζουμε, η ευρετική πληροφορία μπορεί να υπολογιστεί μέσω της έκφρασης η j i = c j i /w j αν πρόκειται για το ΜΟΚΡ-1, ενώ για το ΜΟΚΡ-2 χρησιμοποιούμε την έκφραση η j i = c j i /w j i 58. Η ενημέρωση των φερομονών γίνεται μέσω της έκφρασης τ j i = (1 ρ) τ j i + Δτ j i, όπου το ρ αντιπροσωπεύει το ρυθμό εξάτμισης της φερεμόνης (evaporatio rate), με ρ [0,1] και Δτ j i αντιπροσωπεύει το ρυθμό ενημέρωσης δηλαδή το ποσό της φερεμόνης που βρίσκεται στο αντικείμενο j {1,2,,}. Η τιμή του Δτ j i διαμορφώνεται σύμφωνα με την ποιότητα της κατασκευαζόμενης λύσης, δηλαδή Δτ j i = 1/(1 + z i z i), όπου z i είναι το υψηλότερο κέρδος στην i-οστή αντικειμενική συνάρτηση του

60 τρέχοντος κύκλου /μονοπατιού, και z i είναι το υψηλότερο κέρδος που επιτεύχθηκε στην i-οστή αντικειμενική συνάρτηση από την αρχή. Για να αποφύγουμε να βρούμε μια τοπικά βέλτιστη λύση του προβλήματος, θεωρούμε ότι για την ποσότητα των φερομονών που υπάρχουν σε κάθε αντικείμενο ισχύει τ mi τ j i τ max Όσο μεγαλύτερη είναι η τιμή του τ j i και του η j i τόσο κερδοφόρο είναι να συμπεριλάβουμε το στάδιο j στη λύση. Ο ψευδοκώδικας για τον ACO αλγόριθμο για το MOKP-1 & MOKP-2 δίνεται παρακάτω και χαρακτηρίζεται από τις τρεις κύριες διαδικασίες: 1 η : Αρχικοποίηση των μεταβλητών του προβλήματος, δηλαδή, αρχικοποίηση των παραγόντων φερομόνης και της λίστας που αποθηκεύει το σύνολο όλων των πιθανών efficiet/o-domiated λύσεων. 2 η : Κατασκευή λύσης, δηλαδή κάθε μυρμήγκι της αποικίας επιλέγει τυχαία μια αντικειμενική συνάρτηση και με βάση αυτή επιλέγει τα πιο ελκυστικά αντικείμενα της λίστας Cad, σύμφωνα με τον κανόνα πιθανότητας που ορίστηκε νωρίτερα. 3 η : Ενημέρωση των μονοπατιών φερομόνης που υπάρχουν στην κορυφή που αντιστοιχεί στις καλύτερες λύσεις του κύκλου και ενημέρωση της λίστας που αποθηκεύει σύνολο όλων των πιθανών efficiet/odomiated λύσεων Αλγόριθμος ACO: BEGIN τ j i τ max ; S ; Geerate a populatio of ats A; REPEAT FOR (k = 1) TO A DO BEGIN f i Radomly choose a object fuctio {z 1 (x), z 2 (x),, z m (x)}; s k ; Cad {1,2,, j,, }; WHILE (Cad ) DO j Choose a item with probability p j ; s k s k {j}; 59

61 Update Cad; END WHILE END END FOR FOR (i = 1) TO m DO FOR (j = 1)TO DO τ i j (1 ρ)τ i j ; τ i j τ i j + Δτ i j ; IF (τ i j < τ mi ) THEN τ i j τ mi END IF IF (τ i j > τ max )THEN τ i j τ max END IF END FOR END FOR A S S s k ; k=1 UNTIL (Maximum umber of cycles reached) END Η ΜΕΘΟΔΟΣ ΑΝΑΖΗΤΗΣΗΣ SCATTER Η μέθοδος Scatter Search (SS) είναι μια εξελικτική μέθοδος που οι λύσεις της βασίζονται στο συνδυασμό άλλων λύσεων. Για να συνδυάσει όλες τις λύσεις, η μέθοδος SS διερευνά προεπιλεγμένες περιοχές από την εφικτή περιοχή, που λειτουργούν σε ομάδες λύσεων που ονομάζονται σετ αναφοράς, οι οποίες αποτελούνται από τις "καλύτερες" λύσεις ενός πληθυσμού/δείγματος. Στην περίπτωση του Multi-Costraied Optimal Path Selectio (MCOP), ιδιαίτερα του MOKP-1/ MOKP-2, η έννοια των "καλύτερων" λύσεων λαμβάνει υπόψη μόνο την ποικιλομορφία των λύσεων. Η μέθοδος της οποίας τα βήματα θα παρουσιάσουμε εδώ θα συνδυαστεί με τον αλγόριθμος ΑCO που περιεγράφηκε νωρίτερα. Μέθοδος διαφοροποίησης (the diversificatio method): Αυτό το βήμα αποτελείται από τη δημιουργία μιας συλλογής διαφόρων δοκιμαστικών λύσεων. Στην περίπτωσή μας, αναφέρεται την εφαρμογή της μεθόδου ACO που περιγράφηκε νωρίτερα προκειμένου να πάρουμε το σύνολο όλων των πιθανών efficiet/o-domiated λύσεων. Μέθοδος Βελτίωσης (the improvemet method): Ο σκοπός αυτής της μεθόδου είναι να βελτιώσει τις λύσεις που πήραμε από την προηγούμενη μέθοδο. Στην περίπτωσή μας, μόλις η εφαρμογή της μεθόδου ACO μας αποδώσει «ποιοτικές» λύσεις, η διαδικασία βελτίωσης της λύσης θα 60

62 εφαρμοστεί αυστηρά στις λύσεις που παράγονται από τη μεθόδου συνδυασμού. Μέθοδος δημιουργίας και ενημέρωσης των σετ αναφοράς (the referece set geeratio ad update method): Εδώ, οι "καλύτερες" λύσεις επιλέγονται από το κύριο δείγμα για να δημιουργήσουν ένα σύνολο λύσεων (το σετ αναφοράς) το οποίο θα συνδυαστεί αργότερα για να αποκτήσουμε νέες λύσεις. Στην περίπτωσή μας, η έννοια του "καλύτερου" λαμβάνει υπόψη μόνο την ποικιλομορφία των λύσεων από το αρχικό σύνολο. Συγκεκριμένα, κάθε λύση s u S (u = 1,2,..., S ) ταξινομείται σύμφωνα με τις μη μειωμένες τιμές της ακόλουθης ανομοιότητας: d u r f = s r f s u = x j r f x j u u = 1,2,..., S (13) (12) όπου s r f sref αντιπροσωπεύει τη λύση αναφοράς, δηλ. τη λύση από την οποία ορίζονται οι τιμές ανομοιότητας των άλλων λύσεων. Αυτή η λύση αντιστοιχεί σε s u m S με την μεγαλύτερη τιμή i=1 z i (x u ) 1 για όλα τα u = 1,2,..., S. Μετά την ταξινόμηση όλων των λύσεων, το σύνολο αναφοράς (R) είναι χτισμένο από το S, διαιρώντας το σε ομάδες / κλάσεις με περίπου τον ίδιο αριθμό λύσεων και επιλέγεται μία λύση (η μέση λύση) από κάθε ομάδα, προκειμένου να ορίσει το σύνολο αναφοράς R. Mέθοδος δημιουργίας υποσυνόλου (the subset geeratio method): Σε αυτό το σημείο το σύνολο αναφοράς χωρίζεται σε υποσύνολο που θα συνδυαστούν για να δώσουν νέες λύσεις. Αφού, η μέθοδος αυτή βασίζεται στην εξερεύνηση των διαφορών μεταξύ των λύσεων κάθε υποσυνόλου, δεν πρέπει να λαμβάνουμε υπόψιν μας πολύ ανόμοιες λύσεις από το R. Σε αυτή την περίπτωση, τα υποσύνολα θα αποτελούνται από διαδοχικά ζεύγη λύσεων από το R. Ως εκ τούτου, θα έχουμε R - 1 συνδυασμούς. Για να αποφευχθεί ένας επαναλαμβανόμενος συνδυασμός λύσεων, δημιουργείται μια λίστα που ονομάζεται Τabu, και σε αυτή αποθηκεύονται όλα τα ήδη συνδυασμένα ζεύγη. Μέθοδος συνδυασμού (the solutio combiatio method): Σε αυτή τη μέθοδο, οι λύσεις από τα κατασκευασμένα υποσύνολα συνδυάζονται για να αποκτήσουν νέες λύσεις. Έστω s 0 = {z 0, x 0 } και s 1 = {z 1, x 1 } είναι δύο πιθανές efficiet/o-domiated λύσεις ενός υποσυνόλου, όπου z 0 και z 1 αντιπροσωπεύουν τα αντίστοιχα o-domiated διανύσματα, ενώ τα x 0 και x 1 είναι οι αντίστοιχες efficiet λύσεις. Η 61

63 μεταβλητή s 0 καλείται iitiatig λύση και η s 1 ονομάζεται guidig λύση. H 2 η χρησιμοποιείται για τον εντοπισμό μεταβλητών απόφασης των οποίων οι τιμές πρέπει να μεταβάλλονται στην iitiatig λύση, έτσι ώστε να είναι ίσες με τις guidig λύσεις δηλ. Από τα s0 λαμβάνονται νέα διαλύματα εισάγοντας τα χαρακτηριστικά του s1. Πιο συγκεκριμένα, εντοπίζονται τα στοιχεία που πρέπει να αφαιρεθούν από το s0 (δηλ. Τα στοιχεία με xj0 = 1) καθώς και τα στοιχεία που πρέπει να εισαχθούν στο s0 (δηλ. Τα στοιχεία με xj0 = 0). Αυτά τα στοιχεία με xj0 = 1 ταξινομούνται σύμφωνα με τις μη μειούμενες τιμές της απόδοσής τους και εκείνες με στοιχεία xj0 = 0 ταξινομούνται σύμφωνα με μη αυξανόμενες τιμές αποδοτικότητάς τους, με τρόπο που να αφαιρεί το στοιχείο με λιγότερη απόδοση και να εισάγει αντικείμενα με υψηλότερη απόδοση. Η αποδοτικότητα που σχετίζεται με κάθε στοιχείο υπολογίζεται χρησιμοποιώντας τις εξισώσεις η i j = max m i=1 {c i j /w j }, για τις ΜΟΚΡ-1 και η i j = max m i=1 {c i j /w i j }ΜΟΚΡ-2, αντίστοιχα, η = = 1 m {cji / wj} και ηji = maxi = 1m {cji / wji}. Δεδομένου ότι η διαδρομή από το s0 έως το s1 είναι διαφορετική από το s1 έως το s0, οι λύσεις αλλάζονται και για άλλη μια φορά εφαρμόζεται η παραπάνω διαδικασία συνδυασμού. Συνοψίζοντας ο ψευδοκώδικας για τον αλγόριθμο της SS αποτελείται από τις παρακάτω κύριες διαδικασίες: 1) Αρχικοποίηση των μεταβλητών του προβλήματος. 2)Απόκτηση του αρχικού πληθυσμού / σετ με την εφαρμογή του αλγορίθμου ACO. 3)Κατασκευή και ενημέρωση του συνόλου αναφοράς, ορισμός των υποσυνόλων και εφαρμογή της μεθόδου συνδυασμού για τη λήψη νέων λύσεων. 4)Ενημέρωση της λίστας που περιέχει όλες τις πιθανών efficiet/odomiated λύσεις. Αλγόριθμος SS: BEGIN S ; S ; Tabu ; S Get iitial the set of the potetially o domiated/efficiet; REPEAT R ; s r f Fid the s u with highest value of z i (x u ) ; FOR (u = 1) TO S DO m i=1 62

64 d r f u x r f j x u j ; END FOR Order the list S accordig to o-decreasig values of dissimilarity; S R R u=1 s u FOR (r = 1) TO ( R 1)DO IF ({R r, R r+1 } Tabu) THEN S S {Apply the Combiatio method (R r, R r+1 )}; S S {Apply the Combiatio method (R r+1, R r )}; Tabu Tabu {R r, R r+1 }; S S S ; END IF END FOR UNTIL (Maximum umber of cycles reached) END 4.3. SUBSET - SUM PROBLEM (SSP) Το Subset - sum problem (SSP) είναι γνωστό και ως Value Idepedet Kapsack Problem ή Stickstackig Problem είναι το πρόβλημα του να επιλεγεί ένα υποσύνολο από βάρη w 1,, w έτσι ώστε το συνολικό τους άθροισμα να είναι το μεγαλύτερο χωρίς όμως να ξεπερνάει τη δοθείσα χωρητικότητα c του σακιδίου. Ορισμός προβλήματος Δίνεται ένα σύνολο από αντικείμενα, όπου κάθε αντικείμενο j έχει ένα βάρος w j και ένα σακίδιο χωρητικότητας c. Ζητείται να επιλεγεί εκείνο το σύνολο αντικειμένων έτσι ώστε το συνολικό βάρος να είναι μικρότερο ή ίσο με τη χωρητικότητα c. Τα παραπάνω συνθέτουν το ακόλουθο πρόβλημα μεγιστοποίησης: maximize z = w j x j (1) υπό τον περιορισμό: w j x j c, (2) 63

65 όπου x j = { 1, 0, αν το j αντικείμενο επιλεγεί διαφορετικά, j N = {1, } επιπλέον τα βάρη w j και η χωρητικότητα c είναι θετικοί ακέραιοι αριθμοί. Το SSP είναι μια ειδική περίπτωση του 0-1 KP, η οποία δημιουργείται όταν η τιμή ενός αντικειμένου j και το βάρος του είναι ταυτόσημες, δηλαδή όταν p j = w j, για όλα τα j, έτσι θεωρούμε ότι: w j > c (3) w j < c για j Ν (4) Dyamic Programmig Θα παρουσιάσουμε έναν ακριβή αλγόριθμο για την επίλυση του Subsetsum προβλήματος, καθώς αν και είναι δυνατή η χρήση των αλγορίθμων που αναπτύχθηκαν για το 0-1 Kapsack πρόβλημα, η εφαρμογή αλγορίθμων ειδικά διαμορφωμένων για το SSP θα φέρει καλύτερα αποτελέσματα. Περιγραφή Δίνεται ένα ζευγάρι ακεραίων m, με 1 m, και, c με 0 c c και έστω ότι η f m (c ) είναι η τιμή της βέλτιστης λύσης μιας υπο- περίπτωσης του SSP που αποτελείται από τα αντικείμενα 1,, m και χωρητικότητα c. The dyamic programmig recursio για να υπολογίσουμε τη βέλτιστη λύση, f (c ), του SSP, δίνεται όπως ορίστηκε και στο 0-1 Kapsack πρόβλημα: για m = 2,, f 1 (c ) = { 0 p 1 για c = 0,, w 1 1 για c = w 1,, c 64

66 f m (c ) = { f m 1(c ) max(f m 1 (c ), f m 1 (c w m ) + p j ) για c = 0,, w m 1 για c = w m,, c Η πολυπλοκότητα χρόνου και χώρου για να υπολογίσουμε τη f (c ) είναι O(c). 65

67 Κεφάλαιο 5 Εισαγωγή Το KP παρουσιάζει ιδιαίτερο ενδιαφέρον από τη σκοπιά της επιστήμης των υπολογιστών για μια σειρά από σημαντικούς λόγους. Αρχικά, η μορφή του προβλήματος απόφασης που αντιπροσωπεύει το KP είναι NPπλήρες, επομένως δεν υπάρχει γνωστός αλγόριθμος, που να είναι ταυτόχρονα σωστός και γρήγορος για όλες τις περιπτώσεις. Από την άλλη πλευρά, ενώ το πρόβλημα απόφασης είναι NP- πλήρες, το πρόβλημα βελτιστοποίησης είναι NP- hard, έτσι η λύση του είναι τουλάχιστον τόσο δύσκολη όσο και του προβλήματος απόφασης και επομένως δεν υπάρχει γνωστός πολυωνυμικός αλγόριθμος που να δίνει λύση, παρά το ότι είναι η βέλτιστη μορφή του προβλήματος. Επιπλέον, υπάρχει ψευδο-πολυωνυμικός αλγόριθμος που χρησιμοποιεί δυναμικό προγραμματισμό για το KP. Παράλληλα, υπάρχει ένα σύστημα με προσέγγιση πολυωνυμικού χρόνου, το οποίο χρησιμοποιεί ψευδοπολυωνυμικό αλγόριθμο ως υπορουτίνα. Ωστόσο, πολλές περιπτώσεις που προκύπτουν στην πράξη ή κάποιες τυχαίες περιπτώσεις επιλύονται ακριβώς. Τα προβλήματα απόφασης και βελτιστοποίησης συνδέονται, αφού αν υπάρχει ένας πολυωνυμικός αλγόριθμος που επιλύει ένα πρόβλημα απόφασης, τότε μπορεί να βρεθεί η μέγιστη τιμή για το πρόβλημα βελτιστοποίησης, σε πολυωνυμικό χρόνο, εφαρμόζοντας, επαναληπτικά, αυτόν τον αλγόριθμο, αυξάνοντας την τιμή του k. Από την άλλη μεριά, αν ένας αλγόριθμος βρει τη βέλτιστη λύση στο πρόβλημα βελτιστοποίησης σε πολυωνυμικό χρόνο, αυτό σημαίνει ότι το πρόβλημα απόφασης είναι δυνατό να λυθεί, συγκρίνοντας την τιμή της λύσης εξόδου με την τιμή του k. Έτσι, και οι δύο μορφές του προβλήματος απόφασης έχουν παρόμοια δυσκολία. Για να κατανοήσουμε και να εμβαθύνουμε στα παραπάνω είναι απαραίτητο να δώσουμε κάποιους βασικούς ορισμούς. Τί σημαίνει υπολογιστική πολυπλοκότητα; Η θεωρία πολυπλοκότητας αποτελεί κομμάτι της θεωρίας υπολογισμού, που πραγματεύεται την αξιολόγηση των πόρων που απαιτούνται 66

68 προκειμένου ένα πρόβλημα να λυθεί αλγοριθμικά, δηλαδή να δοθεί μια περιγραφή βήμα προς βήμα μιας συγκεκριμένης διεργασίας. Στη θεωρία τον αλγορίθμων είναι απαραίτητη η αξιολόγηση του αλγορίθμου, δηλαδή ο εντοπισμός εκείνων των γνωρισμάτων που θα τον χαρακτηρίσουν ως ορθό ή όχι. Δηλαδή, αν εκτελεί τη διεργασία που απαιτείται για όλα τα στιγμιότυπα του προβλήματος. Αν βρίσκει βέλτιστη λύση, δηλαδή η λύση που βρίσκει είναι η καλύτερη ή μπορεί να υπάρχει και άλλη. Καθώς επίσης και την αποδοτικότητα του, δηλαδή το κόστος εκτέλεσης του ως προς το χρόνο και το χώρο. Έτσι λοιπόν, οι πιο ενδιαφέροντες υπολογιστικοί πόροι είναι ο χρόνος και ο χώρος. Λέγοντας χρόνος εννοούμε πόσα βήματα απαιτούνται να εκτελέσει ο αλγόριθμος συναρτήσει της εισόδου του. Έτσι μιλάμε για χρο-νική πολυπλοκότητα αλγορίθμου. Από την άλλη λέγοντας χώρο σημαίνει πόση μνήμη χρειάζεται ο αλγόριθμος συναρτήσει της εισόδου του, οπότε αναφερόμαστε σε χωρική πολυπλοκότητα. Επιπλέον, ανάλογα με την περί-πτωση υπάρχουν και άλλοι ενδιαφέροντες πόροι, όπως το πόσοι παράλληλοι επεξεργαστές είναι να απαραίτητοι για την παράλληλοι λύση του προβλήματος. Κλάσεις πολυπλοκότητας Η θεωρία πολυπλοκότητας ταξινομεί τα προβλήματα σε διάφορες κλάσεις, που ορίζουν προβλήματα της ίδιας δυσκολίας, ανάλογα με τον υπολο-γιστικό πόρο που περιορίζεται. Οι πιο σπουδαίες κλάσεις που συναντάμε είναι η κλάση P (Determiistic Polyomial Time) και NP (No Determiistic Polyomial Time). Αξίζει να αναφέρουμε μια σημαντική ιδιότητα των κλάσεων αυτών, ισχύει ότι P NP. Ορισμός 1 Η κλάση P = TIME( k ) είναι η κλάση των γλωσσών που απο k>o φασίζονται από μια ντετερμινιστική μηχανή Turig σε πολυωνυμικό χρόνο στο μήκος της εισόδου. 67

69 Ορισμός 2 Η κλάση NP = ΝTIME( k ) είναι η κλάση των γλωσσών που α k>o ποφασίζονται από μια μη ντετερμινιστική μηχανή Turig σε πολυωνυμικό χρόνο στο μήκος της εισόδου. Στην κλάση αυτή ανήκουν προβλήματα για τα οποία υπάρχει μια πληροφορία και μπορούμε σε πολυωνυμικό χρόνο να ελέγξουμε αν πράγματι αυτή η πληροφορία αποτελεί λύση. Αυτή η πληροφορία ονομάζεται πιστοποιητικό και κάθε πρόβλημα που ανήκει στην κλάση ΝΡ έχει ένα «καλό» πιστοποιητικό, δηλαδή είναι εύκολο να ελεγχθεί. Αντίστροφα, η ύπαρξη καλού πιστοποιητικού αποδεικνύει ότι το πρόβλημα ανήκει στο NP. Γιατί το KP είναι πρόβλημα απόφασης; Προβλήματα απόφασης είναι εκείνα στα οποία καλούμαστε να απαντήσουμε μια συγκεκριμένη ερώτηση με ένα ΝΑΙ ή ΟΧΙ. Το KP αποτελεί πρόβλημα απόφασης γιατί ουσιαστικά το ερώτημα που έχουμε να απαντήσουμε είναι «Μπορεί να βρεθεί μια τιμή τουλάχιστον V έτσι ώστε να μην ξεπερνιέται το βάρος W;» Τι σημαίνει ΝP- πλήρες; Προκειμένου να μελετήσουμε ένα πρόβλημα ως προς την πολυπλοκότητα του, απαιτείται αφενός η ένταξή του σε μία κλάση πολυπλοκότητας, δηλαδή να θέσουμε ένα άνω φράγμα στην πολυπλοκότητα του προβλήματος, και αφετέρου η απόδειξη ότι το πρόβλημα αυτό είναι ένα από τα δυσκολότερα της κλάσης του. Ορισμός: Έστω C μια κλάση πολυπλοκότητας και έστω L μία γλώσσα. Η L είναι C- πλήρες αν: 1. Η L ανήκει στην C και 2. Κάθε γλώσσα στην κλάση C ανάγεται στην L. Τι σημαίνει ΝP- hard; Στην θεωρία της υπολογιστικής πολυπλοκότητας, η ΝP- hardess είναι μια κλάση από προβλήματα, τα οποία είναι τόσο δύσκολα όσο το πιο δύσκολο πρόβλημα στην NΡ. 68

70 Γενικά, ένα πρόβλημα απόφασης Η είναι ΝP- hard όταν για κάθε πρόβλημα L ΝΡ, υπάρχει μια πολυωνυμικού χρόνου αναγωγή του L στο Η. Ένα βασικό NP- πλήρες πρόβλημα είναι το Partitio. Στιγμιότυπο: Δίνονται θετικοί ακέραιοι w 1,, w. Ερώτηση: Υπάρχει υποσύνολο S Ν = {1,, } έτσι ώστε w i = i S w i i N\S ; ΚΡ είναι ΝP- πλήρες. Ορισμός του προβλήματος: Στιγμιότυπο: Δίνεται ένα σύνολο S, αντικειμένων όπου το i-οστό αντικείμενο έχει αξία v i και βάρος w i, με v i, w i Z +, καθώς και δύο επιπλέον θετικοί ακέραιοι B και W. Ερώτηση: Υπάρχει σύνολο S S των αντικειμένων έτσι ώστε το συνολικό τους βάρος να είναι μικρότερο ή ίσο με του W, ενώ η συνολική τους αξία μεγαλύτερη ή ίση του B; Απόδειξη: Το ΚΡ ανήκει στην κλάση ΝΡ καθώς δοθέντος ενός συνόλου S είναι εύκολο να εξετάσουμε αν το συνολικό βάρος είναι το πολύ w και το αντίστοιχο κέρδος τουλάχιστον v. Χρειάζεται γραμμικός χρόνος για να προσθέσουμε τα βάρη και τις αξίες όλων των αντικειμένων προκειμένου να βρούμε το αληθές / ψευδές αποτέλεσμα. Αφού εξασφαλίσαμε ότι το ΚΡ ανήκει στην κλάση ΝΡ το ανάγουμε σε ένα άλλο γνωστό ΝP- πλήρες προκειμένου να αποδείξουμε την πληρότητα του. Παίρνουμε μια ειδική περίπτωση του ΚΡ όπου το βάρος του κάθε αντικειμένου είναι ίσο με την αξία του, δηλαδή v i = w i, i = 1,2,, και B = W(όπου Β, W δύο θετικοί ακέραιοι). Δίνεται ένα σύνολο αντικειμένων S και ζητείται ένα υποσύνολο S των αντικειμένων έτσι ώστε 69

71 w i W i S και v i B i S ή v i = B Επομένως εμφανίστηκε ένα στιγμιότυπο του Αθροίσματος Υποσυνόλου (SUBSET SUM) που ξέρουμε ότι είναι ΝP- πλήρες. ΚΡ είναι ΝP- hard. Το Kapsack problem είναι NP- hard, μέσω όμως του δυναμικού προγραμματισμού μπορεί να λυθεί σε ψευδοπολυωνυμικό χρόνο. i S Subset Sum είναι ΝP- πλήρες. Ορισμός του προβλήματος: Στιγμιότυπο: Δίνεται ένα σύνολο S, θετικών ακεραίων και ένας ακέραιος B. Ερώτηση: Υπάρχει σύνολο S S έτσι ώστε το άθροισμα των ακεραίων στο S να είναι ακριβώς ίσο με το B; Απόδειξη: Το Subset Sum ανήκει στην κλάση NP, καθώς μπορούμε να υποθέσουμε ένα υποσύνολο S και να επιβεβαιώσουμε ότι το άθροισμα των ακεραίων σε αυτό είναι ίσο με B. Για να αποδείξουμε τώρα την πληρότητα του προβλήματος αρκεί να το ανάγουμε σε ένα ήδη γνωστό NP-πλήρες πρόβλημα. Θα χρησιμοποιήσουμε την αναγωγή του Subset Sum στο X3C*. Έστω ένα στιγμιότυπο του X3C, δηλαδή ένα σύνολο C όπου C = από τριμελή υποσύνολα ενός συνόλου X, όπου X = 3m. Θα φτιάξουμε ακεραίους και έναν ακόμα ακέραιο Β με σκοπό να υπάρχει ένα υποσύνολο των ακεραίων αθροιζόμενο στο Β ανν το X3C έχει λύση. Για να απεικονίσουμε ένα από τα τριμελή σύνολα του C θα χρησιμοποιήσουμε ένα διάνυσμα / δείκτη όπου η διάσταση του θα είναι ίση με το πλήθος των στοιχείων του X, δηλαδή 3m. Το διάνυσμα αυτό θα έχει ακριβώς τρία στοιχεία με τιμή 1 και όλα τα άλλα στοιχεία του θα έχουν τιμή 0. Δηλαδή, αν στις θέσεις I, j, k υπάρχει ο αριθμός 1, τότε σημαίνει ότι τα στοιχεία x i, x j, x k του X αποτελούν το τριμελές σύνολο. Επομένως 70

72 το στιγμιότυπο του X3C παριστάνεται με ένα σύνολο 3m-διάστατων διανυσμάτων με συντεταγμένες 0-1. Τοποθετώντας τα διανύσματα αυτά σε ένα πίνακα έτσι ώστε οι αντίστοιχες συντεταγμένες να είναι στην ίδια στήλη, παίρνουμε ως λύση του X3C εκείνο το υποσύνολο των γραμμών στο οποίο σε κάθε στήλη υπάρχει ακριβώς ένα 1. Τα σύνολα στο C θα δοθούν σαν σύνολα C 1, C 2,, C, όπου κάθε C i είναι ένα σύνολο τριών ακεραίων στο διάστημα [0, 3m-1], έτσι οι αριθμοί του στιγμιοτύπου SS που φτιάξαμε είναι: v i = ( + 1) j, i = 1, 2,, j C i Επομένως και το ζητούμενο άθροισμα Β, θα είναι: 3m 1 Β = ( + 1) j j=0 δηλαδή ο αριθμός 11 1 με 3m μονάδες στο σύστημα με βάση +1. Άρα το σύνολο των αριθμών που κατασκευάσαμε έχει υποσύνολο που αθροίζεται στον αριθμό Β ανν το δοθέν στιγμιότυπο του X3C έχει απάντηση «ΝΑΙ». Subset Sum είναι ΝP- hard. Απόδειξη: Έστω R(Subset sum), η recogitio εκδοχή του προβλήματος, δηλαδή δίνονται +2 θετικοί ακέραιοι w 1,, w, c και α, υπάρχει ένα υποσύνολο S Ν = {1,, } έτσι ώστε w i c και w i α; i S Οποιαδήποτε περίπτωση Ι του Partitio μπορεί σε πολυωνυμικό χρόνο να μετατραπεί σε ισοδύναμη περίπτωση Ι του R(Subset sum), θέτοντας i S c = a = w i /2 Η απάντηση του στιγμιότυπου Ι είναι «ΝΑΙ» αν και μόνο αν η απάντηση του στιγμιότυπου Ι είναι ναι. i N Bouded Kapsack είναι ΝP- hard. 71

73 Απόδειξη: Το 0-1 Kapsack Problem είναι μια ειδική περίπτωση του Bouded Kapsack όταν το b i = 1 για όλα τα i N. Γνωρίζουμε ήδη ότι το 0-1 Kapsack Problem είναι ΝP- hard. Τα sigle kapsack problems δεν μπορούν να λυθούν από χρόνο που φράζεται από ένα πολυώνυμο, εκτός και αν ισχύει ότι P=ΝP. Ωστόσο τα προβλήματα αυτά δέχονται έναν ψευδο-πολυωνυμικό αλγόριθμο, δηλαδή έναν αλγόριθμο του οποίου η πολυπλοκότητα χρόνου και χώρου φράσσεται από ένα πολυώνυμο και c. Δοθέντος μιας οποιαδήποτε περίπτωσης ενός sigle kapsack problem, θεωρούμε μια υπο-περίπτωση του που ορίζεται από τα αντικείμενα 1,, j και χωρητικότητα u (j, u c). Έστω ότι είναι η αντίστοιχη τιμή της βέλτιστης λύσης και ότι είναι το βέλτιστο υποσύνολο των αντικειμένων. Η τιμή της βέλτιστης λύσης του προβλήματος μπορεί να δοθεί εφαρμόζοντας επαναληπτικά τον ακόλουθο επαναληπτικό τύπο για το εκάστοτε sigle kapsack problem, δηλαδή για το 0-1 Kapsack: f 1 (u) = { 0 p 1 για u = 0,, w 1 1 για u = w 1,, c f i (u) = max(f i 1 (u), f i 1 (u w i ) + p i ) για j = 2,, και πολυπλοκότητα χρόνου O(c). u = 0,, c και για το Βouded Kapsack: f 1 (u) = { lp 1 b 1 p 1 για l = 0,, b 1 1 και u = lw 1,, (l + 1)w 1 1 για u = b 1 w 1,, c f i (u) = max{f i 1 (u lw i ) + lp i : o l b i } για j = 2,, και πολυπλοκότητα χρόνου O(c είναι O(c 2 ). i=1 b i u = 0,, c και ) που στη χειρότερη περίπτωση για το Subset-sum: όμοια με το 0-1 Kapsack αλλά αντικαθιστώντας το p i με w i 72

74 * X3C είναι η συντομογραφία του EXACT COVER BY 3-SETS δηλαδή του Καλύμματος από Τριμελή Σύνολα. Το ορίζεται ως εξής: Στιγμιότυπο: Δίνεται ένα σύνολο X με 3m στοιχεία και ένα σύνολο C τριμελών υποσυνόλων του X. Ερώτηση: Υπάρχει ένα ακριβές κάλυμμα του X στο C, δηλαδή ένα υποσύνολο C C έτσι ώστε κάθε στοιχείο του X να βρίσκεται σε ακριβώς ένα στοιχείο του C ; 73

75 Κεφάλαιο 6 Εισαγωγή Στην εισαγωγή, της παρούσας εργασίας, αναφέρθηκε η σπουδαιότητα του Kapsack Problem στον πραγματικό κόσμο. Πρόκειται για ένα είδος προβλήματος με άμεση εφαρμογή σε πρακτικά προβλήματα επιλογής έργων, κατανομής πόρων και προϋπολογισμού κεφαλαίου που έχουν να διαχειριστούν καθημερινά μικρές και μεγάλες επιχειρήσεις και εταιρείες. Κάθε εταιρεία, επιχείρηση, οργανισμός έρχεται αντιμέτωπος με το πρόβλημα της κατανομής πόρων, όπως το κεφάλαιο, ο χρόνος και το ανθρώπινο δυναμικό σε κάθε μορφή εργασίας και επένδυσης. Συνεπώς, υπάρχει η ανάγκη διαχείρισης και διάθεσης αυτών των πόρων έτσι ώστε να μεγιστοποιηθούν τα έσοδα- οφέλη της επιχείρησης από μια δεδομένη επένδυση. Ο στόχος είναι να γίνει συλλογή συγκεκριμένων αντικειμένων τα οποία μπορούν να χρηματοδοθούν από ένα συγκεκριμένο και περιορισμένο οικονομικό προϋπολογισμό budget. Το Kapsack Problem μελετάται εντατικά καθώς εντοπίζεται ως υπο πρόβλημα σε ποικίλα προβλήματα ακέραιου προγραμματισμού και μπορεί να αντιπροσωπεύει πολλές πρακτικές καταστάσεις. Οι πιο τυπικές εφαρμογές τους είναι ο προϋπολογισμός του κεφαλαίου και η βιομηχανική παραγωγή. Διάφορα μοντέλα προϋπολογισμού κεφαλαίου έχουν μελετηθεί παλαιότερα από τους Weigarter (1963, 1968), Weigarter και Ness (1967), Cord (1964) και Kapla (1966). Μεταξύ των βιομηχανικών εφαρμογών αξίζουν να αναφερθούν και οι κλασσικές μελέτες των Bellma και Dreyfus, το 1962, Cargo Loadig Problems και Cuttig Stock Problems των Gilmore και Memory (1963, 1965, 1966). Λεπτομερέστερες αναφορές διαφόρων εφαρμογών των Kapsack Problems βρίσκονται σε έρευνες των Salki (1975), Salki και de Kluyver (1975) και Martello ad Tort (1987). Στο κεφάλαιο αυτό θα αναφερθούν έρευνες πραγματικών περιπτώσεων από τον ιατρικό, κοινωνικό-ιατρικό και τον βιομηχανικό τομέα. Θα περιγραφεί, στην κάθε περίπτωση το μοντέλο του προβλήματος, ο σχεδιασμός και τα αποτελέσματα-συμπεράσματα που προέκυψαν γι αυτό. 74

76 6.1. ΔΙΑΧΕΙΡΙΣΗ ΤΩΝ ΑΠΟΡΡΙΜΜΑΤΩΝ ΠΟΥ ΠΡΟ- ΕΡΧΟΝΤΑΙ ΑΠΟ ΠΛΑΣΤΙΚΕΣ ΣΑΚΟΥΛΕΣ ΜΕ ΧΡΗΣΗ ΤΟΥ KNAPSACK ΜΟΝΤΕΛΟΥ Τις τελευταίες δεκαετίες η πλαστική σακούλα αποτελεί δημοφιλές προϊόν καθώς πρόκειται για έναν ασφαλή, υγιεινό και φτηνό τρόπο μεταφοράς φαγητού, νερού, φαρμάκων και κάθε είδους αντικειμένου. Η ραγδαία ανάπτυξη της παραγωγής και της κατανάλωσης πλαστικών σακούλων οδήγησε την αστική κοινωνία να παράγει και να απορρίπτει τακτικά απορρίμματα πλαστικών σακούλων προκαλώντας έτσι σημαντική αύξηση του όγκου των αποβλήτων πλαστικών σακούλων που προέρχονται από οικιακά, βιομηχανικά και εμπορικά απόβλητα, δημιουργώντας σοβαρή μόλυνση σε όλα τα ζωτικά συστατικά του περιβάλλοντος. Σε χώρες όπως η Γκάνα η αυξημένη χρήση της πλαστικής σακούλας έχει δημιουργήσει τη συσσώρευση απορριμμάτων πλαστικών σακούλων σε δρόμους και πεζοδρόμια της χώρας, με αποτέλεσμα πέρα από την περιβαλλοντική καταστροφή, τα σκουπίδια να φράζουν τις υδρορροές και τις αποχετεύσεις της χώρας. Ο τρόπος αντιμετώπισης των πλαστικών αποβλήτων είναι η καύση, η υγειονομική ταφή και η ανακύκλωση. Τα δύο πρώτα όμως δεν είναι βιώσιμα και φιλικά για το περιβάλλον καθώς η καύση παράγει διοξείδιο του άνθρακα που ενισχύει την υπερθέρμανση του πλανήτη, ενώ τη στιγμή που το πλαστικό δεν είναι εύκολα διασπώμενο υλικό η υγειονομική ταφή του δεν θεωρείται κατάλληλη λύση. Συνεπώς, το καλύτερο είναι η ανακύκλωση, που αποτελεί πολύτιμη λύση τόσο για το περιβάλλον όσο και για τους ανθρώπους. Στη συγκεκριμένη έρευνα, που έγινε το Μάιο του 2013, από την λέκτορα του πανεπιστημίου της Γκάνα, του τμήματος Στατιστικής, Μαθηματικών και Επιστήμης, Patiece Pokua Gambrah, χρησιμοποιείται ως μελέτη περίπτωσης η εταιρεία Trashy Bags καθώς ο τρόπος διαχείρισης των απορριμμάτων από πλαστικές σακούλες είναι πιο φιλόξενος για το περιβάλλον και την κοινωνία. Η Trashy Bags επιλέγει να μην καίει τα απόβλητα των πλαστικών σακούλων, αλλά να χρησιμοποιεί την μέθοδο της ανακύκλωσης των υλικών στην ακατέργαστή φύση τους, δηλαδή την επαναχρησιμοποίηση τους. Η ομάδα συλλεκτών της εταιρείας συγκεντρώνει γύρω στα 15 εκατομμύρια πλαστικών σακούλων που σε 75

77 αντίθετη περίπτωση θα έμεναν στους δρόμους και στα πεζοδρόμια της Accra. Συγκεκριμένα, η εταιρεία συλλέγει τα απορρίμματα των σακούλων, τα καθαρίζει και δημιουργεί έντονα και χρωματιστά, πορτοφόλια και αδιάβροχα. Περιγραφή μοντέλου Στο παράδειγμα της έρευνας το μοντέλο του Kapsack problem σχετίζεται με τη μεγιστοποίηση της συνολικής παραγωγής μέσω μιας διαδικασίας επιλογής των καλύτερων ή πολυτιμότερων αντικειμένων έτσι ώστε να επιτευχθεί ο μέγιστος απαιτούμενος αριθμός παραγόμενων προϊόντων και επομένως να αυξηθούν τα έσοδα της εταιρείας. Το μοντέλο θα χρησιμοποιηθεί για εταιρείες ανακύκλωσης πλαστικών σακούλων και πρόκειται να προσεγγιστεί αριθμητικά. Το μοντέλο βασίζεται στην πώληση ανακυκλωμένων προϊόντων από πλαστικές σακούλες και ο περιορισμός του αφορά το κόστος ανακύκλωσης, το οποίο περιλαμβάνει το κόστος συλλογής απορριμμάτων από πλαστικές σακούλες, το κόστος επεξεργασίας και το κόστος πώλησης των προϊόντων που θα παραχθούν από αυτές. Επομένως, μπορεί να έχει αρνητικό αντίκτυπο αν τα έσοδα από τις πωλήσεις ανακυκλωμένων προϊόντων δεν ξεπερνούν το κόστος συλλογής, επεξεργασίας των απορριμμάτων αλλά και το κόστος πώλησης των προϊόντων. Το Kapsack problem είναι το κλασσικό πρόβλημα ακέραιου γραμμικού προγραμματισμού με έναν μόνο περιορισμό. Το 0-1 Kapsack problem είναι ένα πρόβλημα επιλογής ενός υποσυνόλου από αντικείμενα προκειμένου το αντίστοιχο ποσό των εσόδων να μεγιστοποιείται χωρίς το σύνολο του βάρους να υπερβαίνει τον προϋπολογισμό α. Έτσι για το μοντέλο έχουμε: Αντικειμενική συνάρτηση: Z S i X i, i=1 η οποία θέλουμε να μεγιστοποιηθεί, άρα MaximizeZ, υπό τον περιορισμό: C i X i a i=1 76

78 όπου οι μεταβλητές είναι: X i = ποσότητα προϊόντων που μπορούν να παραχθούν S i = η τιμή πώλησης του κάθε προϊόντος C i = το κόστος παραγωγής κάθε προϊόντος a = το χρηματικό ποσό που διατίθεται για την παραγωγή ο δείκτης i = 1, 2,, και αφορά το συνολικό αριθμό των προιόντων που μπορούν να παραχθούν Η αντικειμενική συνάρτηση έχει ως σκοπό τη μεγιστοποίηση των συνολικών εσόδων σύμφωνα με ένα συγκεκριμένο προγραμματισμένο πλάνο. Η συνάρτηση έχει μόνο έναν όρο-περιορισμό και αυτός είναι τα έσοδα να καλύπτονται-προέρχονται από την πώληση των ανακυκλωμένων προϊόντων που παράγονται. Ο περιορισμός διασφαλίζει ότι το συνολικό κόστος παραγωγής ανακυκλώσιμων προϊόντων είναι μικρότερο ή ίσο με το μέγιστο αριθμό αντικειμένων που πρόκειται να παραχθούν. Η μόνη μεταβλητή απόφασης είναι η ποσότητα των προϊόντων που μπορούν να παραχθούν, περιλαμβάνοντας κάθε ξεχωριστή ποσότητα. Έτσι, αφού ο στόχος είναι η μεγιστοποίηση του κέρδους, με τον τρόπο αυτό γίνεται σαφές ποιο προϊόν συμβάλλει στην επίτευξη του στόχου ώστε να παραχθεί ή αν όχι, να παραχθεί κάποιο άλλο στη θέση του με θετικότερη επίδραση στο στόχο. Το Kapsack problem βασίζεται στον αριθμό αντικειμένων που θα παραχθούν, γι αυτό είναι απαραίτητο να υπάρχει συγκεκριμένος αριθμός αντικειμένων προς παραγωγή, έτσι η εργασία της εταιρείας να γίνεται με βάση αυτόν τον αριθμό. Το συνολικό κόστος παραγωγής, όπως είπαμε και παραπάνω διαμορφώνεται από το κόστος συλλογής των αποβλήτων των πλαστικών σακούλων, το κόστος επεξεργασίας τους και το κόστος παραγωγής των ανακυκλωμένων προϊόντων. Αναλυτικότερα, το κόστος συλλογής αφορά το ποσό που πρέπει να δώσει η εταιρεία ανακύκλωσης σε αυτούς που συλλέγουν τα απορρίμματα από πλαστικές σακούλες, προκειμένου η εταιρεία να προμηθευτεί την 77

79 απαραίτητη πρώτη ύλη για να παράγει. Το κόστος αυτό μετριέται σε pesewas* ανά κιλό. Επιπλέον, η εταιρεία ανακύκλωσης θα πρέπει να διαθέσει χρήματα για τη συσκευασία, δηλαδή τα κουτιά, το χαρτί περιτυλίγματος, τα αυτοκόλλητα, για την εργασία και την διανομή των τελικών προϊόντων στους λιανικούς πελάτες της. Έτσι, στο συνολικό κόστος συνυπολογίζεται και το κόστος συσκευασίας και μεταφοράς των προϊόντων και αυτό μετριέται σε cedis* ανά κάθε ολοκληρωμένο προϊόν. Τέλος, το κόστος επεξεργασίας είναι το ποσό των χρημάτων που δαπανά η επιχείρηση για την παραγωγή των προϊόντων από την πρώτη ύλη μέχρι το τελικό προϊόν. Αυτό το κόστος υπολογίζεται cedis σε κάθε περίπτωση. Δεδομένα και λύση του προβλήματος Παρακάτω φαίνεται μια λίστα 13 διαφορετικών προϊόντων, που η Trashy Bags έχει τη δυνατότητα να παράγει. Στη λίστα αυτή παρέχονται πληροφορίες για το πλήθος των προϊόντων που θα παραχθούν από το κάθε είδος με το αντίστοιχο κόστος και την αντίστοιχη τιμή πώλησης για το προϊόν. Είδος προϊόντος Αριθμός Προϊόντος (X i ) Κόστος Παραγωγής (C i ) Τιμή πώλησης (S i ) Χαρτοφύλακας Θήκη για laptop Σακούλες σκουπιδιών Πορτοφόλι Purser Θήκη για πλαστικό μπουκάλι Δοχείο φαγητού Κασετίνα Αδιάβροχο νεσεσέρ Πλαστικό καπέλο Σακίδιο πλάτης Obaapa Fish bag *τοπικό νόμισμα 78

80 Έστω X i είναι το σύνολο των προϊόντων που θα επιλεγούν για να παραχθούν, επομένως η τιμή της μεταβλητής X i είναι ίση με το 1 αν συμπεριληφθεί το προϊόν στην παραγωγή ενώ η τιμή του είναι ίση με το 0 αν όχι, δηλαδή X i = {0,1}. Από τον πίνακα, γίνεται εμφανές ότι ο δείκτης i μπορεί να πάρει τις τιμές 1, 27, δηλαδή i = 1, 2, 3,..., 27. Τέλος, το μοντέλο θα δοκιμαστεί για διάφορες περιπτώσεις χρηματικού budget, συγκεκριμένα για α = 100, 135 και 150. Με βάση τα παραπάνω, η αντικειμενική συνάρτηση παίρνει την ακόλουθη μορφή: MaxZ S i X i = i=1 = 21X X (X 3 + X 4 + X 5 + X 6 ) + 9(X 7 + X 8 + X 9 ) + 10(X 10 + X 11 + X 12 + X 13 + X 14 ) + 10(X 15 + X 16 ) + 17X X (X 19 + X 20 ) + 15(X 21 + X 22 + X 23 ) + 16(X 24 + X 25 ) + 9X X 27 (1) Ενώ ο αντίστοιχος περιορισμός γίνεται: C i X i i=1 a 17X X 2 + 9(X 3 + X 4 + X 5 + X 6 ) + 7(X 7 + X 8 + X 9 ) + 6(X 10 + X 11 + X 12 + X 13 + X 14 ) + 8(X 15 + X 16 ) + 14X X (X 19 + X 20 ) + 12(X 21 + X 22 + X 23 ) + 13(X 24 + X 25 ) + 7X X 27 α (2) Για τις διάφορες τιμές του α, η (1) και (2) γίνονται: 1. Για a = 100, αν επιλεγούν να παραχθούν τα προϊόντα X 1, X 7, X 8, X 9, X 10, X 15, X 16, X 17, X 18, X 21, X 22 (1) MaxΖ = 21(1) + 24(0) + 12(0) + 9(3) + 10(1) + 10(2) +17(1) + 3(1) + 16(0) + 15(2) + 16(0) + 9(0) 79

81 +13(0) = και ο περιορισμός γίνεται: (2) C i X i i=1 = = (1) + 18(0) + 9(0) + 7(3) + 6(1) + 8(2) + 14(1) + 2(1) + 12(0) + 12(2) + 13(0) + 7(0) + 10(0) Ή αν επιλεγούν να παραχθούν τα προϊόντα X 1, X 2, X 3, X 10, X 11, X 12, X 13, X 14, X 18, X 19, X 20 (1) MaxΖ = 21(1) + 24(1) + 12(1) + 9(0) + 10(5) + 10(0) +17(0) + 3(1) + 16(2) + 15(0) + 16(0) + 9(0) +13(0) = = = 142 και ο αντίστοιχος περιορισμός είναι: (2) 17(1) + 18(1) + 9(1) + 7(0) + 6(5) + 8(0) + 14(0) + 2(1) + 12(2) + 12(0) + 13(0) + 7(0) + 10(0) Για a = 135, αν επιλεγούν να παραχθούν τα προϊόντα X 1, X 2, X 4, X 9, X 13, X 15, X 17, X 18, X 19, X 23, X 24, X 26, X 27 (1) MaxZ = 21(1) + 24(1) + 12(1) + 9(1) + 10(1) + 10(1) +17(1) + 3(1) + 16(1) + 15(1) + 16(1) + 9(1) +13(1) = 80

82 = = 175 και ο αντίστοιχος περιορισμός είναι: (2) C i X i i= (1) + 18(1) + 9(1) + 7(1) + 6(1) + 8(1) + 14(1) + 2(1) + 12(1) + 12(1) + 13(1) + 7(1) + 10(1) Ή αν παραχθούν τα προϊόντα X 2, X 3, X 4, X 5, X 6, X 10, X 11, X 12, X 13, X14, X 17, X 18, X 19, X 20, X 27 (1) MaxZ = 21(0) + 24(1) + 12(4) + 9(0) + 10(5) + 10(0) +17(1) + 3(1) + 16(2) + 15(0) + 16(0) + 9(0) +13(1) = = = 187 ο αντίστοιχος περιορισμός είναι: (2) C i X i i= (0) + 18(1) + 9(4) + 7(0) + 6(5) + 8(0) +14(1) + 2(1) + 12(2) + 12(0) + 13(0) +7(0) + 10(1) Για a = 150, αν επιλεγούν να παραχθούν τα προϊόντα X 1, X 2, X 5, X 7, X 8, X 11, X 15, X 16, X 17, X 18, X 20, X 22, X 25, X 26, X 27 81

83 (1) MaxZ = 21(1) + 24(1) + 12(1) + 9(2) + 10(1) + 10(2) +17(1) + 3(1) + 16(1) + 15(1) + 16(1) + 9(1) +13(1) = = 194 ο περιορισμός: (2) C i X i i= (1) + 18(1) + 9(1) + 7(2) + 6(1) + 8(2) + 14(1) + 2(1) + 12(1) + 12(1) + 13(1) + 7(1) + 10(1) Ή αν επιλεγούν να παραχθούν τα προϊόντα X 1, X 2, X 3, X 4, X 5, X 6, X 10, X 11, X 12, X 13, X 14, X 18, X 19, X 24, X 27 (1) Max = 21(1) + 24(1) + 12(4) + 9(0) + 10(5) + 10(0) +17(0) + 3(1) + 16(1) + 15(0) + 16(1) + 9(0) +13(1) = = 207 με περιορισμό: (2) C i X i i= (1) + 18(1) + 9(4) + 7(0) + 6(5) + 8(0) + 14(0) + 2(1) + 12(2) + 12(0) + 13(1) + 7(0) + 10(1)

84 Αποτελέσματα & Συμπεράσματα Τα παραπάνω φαίνονται συγκεντρωτικά στον ακόλουθο πίνακα: Είδος Αριθμός Α=100 Α=135 Α=150 προϊόντος Προϊόντος (X i ) ΈΣΟΔΑ 128 ΕΣΟΔΑ 142 ΕΣΟΔΑ 175 ΕΣΟΔΑ 187 ΕΣΟΔΑ 194 ΕΣΟΔΑ 207 Χαρτοφύλακας Θήκη για laptop Σακούλες σκουπιδιών Πορτοφόλι Purser Θήκη για πλαστικό μπουκάλι Δοχείο φαγητού Κασετίνα Αδιάβροχο νεσεσέρ Πλαστικό καπέλο Σακίδιο πλάτης Obaapa Fish bag Από τα στοιχεία του πίνακα διαπιστώνεται ότι δεν είναι απαραίτητη η παραγωγή όλων των προϊόντων προκειμένου να μεγιστοποιηθούν τα έσοδα της εταιρείας. Άρα η Trashy Bags παράγοντας μόνο κάποια από τα ανακυκλώσιμα προϊόντα, που έχει δυνατότητα να παράγει, είναι σε θέση να έχει τα μέγιστα δυνατά έσοδα. Η επιλογή των στοιχείων γίνεται τυχαία αρκεί αυτά να συμβάλλουν στην αύξηση των εσόδων της εταιρείας. Επιπλέον, παρατηρείται ότι όσο το budget για την παραγωγή αυξάνεται, τόσο αυξάνεται και ο αριθμός των προϊόντων που παράγονται αλλά και τα έσοδα από τις πωλήσεις αυτών. Η Trashy Bags, λοιπόν, μπορεί να μειώσει τον οικονομικό της προϋπολογισμό σε μελλοντική παραγωγή αφού ο αλγόριθμος του 0-1 Kapsack problem κάνει σαφές τι πρέπει να παραχθεί, βοηθώντας έτσι τους maagers της εταιρείας να έχουν καλύτερη εικόνα των αναμενόμενων κερδοφόρων εσόδων για ένα δεδομένο πλάνο παραγωγής και έτσι να παίρνουν καλύτερες αποφάσεις όσων αφορά τον οικονομικό προϋπολογισμό για την παραγωγή. Τα λιγοστά έσοδα των εταιρειών ανακύκλωσης αποτελούν μια τυπική περίπτωση ενός Kapsack προβλήματος βελτιστοποίησης, αφού στο

85 Kapsack πρόβλημα βελτιστοποίησης χρησιμοποιούμε δύο heuristic διαδικασίες προκειμένου να λύσουμε το πρόβλημα και να επιλέξουμε, σε μια κρίσιμη κατάσταση, αντικείμενα έχοντας περιορισμένη ποσότητα χρημάτων. Αρχικά η επιλογή των αντικειμένων γίνεται τυχαία, με βάση τη τιμή πώλησης τους. Τώρα όμως μπορεί να χρησιμοποιηθεί ένας αποτελεσματικότερος, αποδοτικότερος και επιστημονικότερος τρόπος, μειώνοντας σημαντικά τη συσσώρευση αντικειμένων, αφού τώρα θα γίνεται καταλληλότερη επιλογή. Κλείνοντας, προτείνεται στην εταιρεία η χρήση ενός λογισμικού που θα βασίζεται στο 0-1 Kapsack πρόβλημα βελτιστοποίησης ή ακόμα και κάποιες παραλλαγές αυτού, αν η εταιρεία αλλάξει τις μεταβλητές του προβλήματος ή προσθέσει κι άλλες. Αυτό θα τη βοηθήσει αν μη τι άλλο να ακολουθήσει μια λιγότερο χρονοβόρα διαδικασία επιλογής αντικειμένων ΕΦΑΡΜΟΓΗ ΤΟΥ MULTIOBJECTIVE KNAPSACK PROBLEM Τελευταία η υπολογιστική βελτιστοποίηση αποκτά σημαντική έως και στρατηγική θέση στη βιομηχανία. Η εφαρμογή των Multiobjective metaheuristics αλγορίθμων έχουν αποδείξει την αποτελεσματικότητα τους στην επίλυση πολλών πρακτικών προβλημάτων, ιδιαίτερα εκείνων που αφορούν τον ταυτόχρονο χειρισμό αρκετών αντικρουόμενων στόχων. Το ακόλουθο παράδειγμα αφορά μελέτη που έγινε το 2015, με πρωτοβουλία της εταιρείας GePI η οποία δραστηριοποιείται στον κοινωνικό και ιατροκοινωνικό τομέα, με είδη κατασκευών όπως γηροκομεία, κέντρα διαμονής και αποκατάστασης και κέντρα εύρεσης εργασίας. Αν και ο συγκεκριμένος τομέας χρησιμοποιεί έντονα την τεχνολογία, τους πόρους και τις ευκολίες που παρέχουν οι υπολογιστές, η παρούσα μελέτη είναι σπάνια, καθώς η βελτιστοποίηση δεν χρησιμοποιείται εύκολα ως εργαλείο υποστήριξης αποφάσεων. Στην έρευνα αυτή το πρόβλημα που μελετάται αφορά την ανάπτυξη σχεδίων δράσης έτσι ώστε να βελτιωθεί η συνολική διαχείριση της υπο μελέτη δομής. Ο σκοπός είναι να επιλεχθεί ένα σύνολο από δράσεις ανάμεσα σε πολλές πιθανές, ενώ παράλληλα θα ικανοποιούνται αρκετοί 84

86 στόχοι. Κάθε δράση έχει ένα συγκεκριμένο κόστος και επηρεάζει τους υπόλοιπους στόχους αρνητικά ή θετικά. Το συνολικό κόστος της λύσης δεν πρέπει να ξεπερνά ένα συγκεκριμένο budget. To σχέδιο δράσης αντιπροσωπεύει το σακίδιο, οι στόχοι είναι τα αντικείμενα που μπαίνουν σε αυτό σύμφωνα με τον περιορισμό που είναι το budget. Το πρόβλημα μπορεί να περιλαμβάνει περισσότερες από πιθανές δράσεις ενώ οι στόχοι είναι έως 8. Στόχος είναι να βρεθούν κατάλληλες τεχνικές ως προς την ποιότητα των λύσεων και των απαιτούμενο χρόνο. Tο παράδειγμα αποτελεί μια περίπτωση του Multiobjective Kapsack Problem και αφορά την ανάπτυξη του βέλτιστου σχεδίου δράσης και βασίστηκε στο λογισμικό MSQualite. Το μοντέλο του Kapsack Problem Έστω ότι p = (a 1, a 2,, a ) είναι το σχέδιο δράσης. Αυτό αποτελείται από ένα σύνολο δράσεων που επιλέγονται από ένα πλήθος Α εφικτών δράσεων, όπου A = με σκοπό να μεγιστοποιηθεί ή να ελαχιστοποιηθεί ένα σύνολο F αντικρουόμενων στόχων. Το a i = 1, εάν η ενέργεια επιλεχθεί, αλλιώς παίρνει την τιμή 0. Το σύνολο των πιθανών σχεδίων δράσης, με άλλα λόγια οι λύσεις του προβλήματος δηλώνονται ως P. Η φύση των δράσεων καθορίζεται είτε από προγενέστερα σχέδια δράσης με ίδια ή παρόμοια δομή είτε αποφασίζονται από τους maagers που επιδιώκουν συνεχώς να βρουν τη βέλτιστη λύση. Οι στόχοι του προβλήματος μπορεί να είναι είτε ποιοτικοί, π.χ. η βελτίωση της ποιότητας ζωής των κατοίκων είτε ποσοτικοί, όπως η αύξηση της αυτονομίας των κατοίκων. Οποιαδήποτε και αν είναι η φύση των στόχων, κάθε ένας έχει μια αντικειμενική συνάρτηση f i που τον αντιπροσωπεύει, και αυτή με τη σειρά της συνδέει κάθε a i Α με την επίδρασή της στο στόχο j. Κάθε ενέργεια a i έχει ή αρνητικό ή θετικό αντίκτυπο στην αντικειμενική συνάρτηση f i. Η επίδραση αυτή αξιολογείται από την συνάρτηση f i (a i ) = v ij, η οποία αντιστοιχεί σε μια δράση a i μια ακέραια τιμή v ij από το διάστημα [-100, +100] και αντιπροσωπεύει τη συμβολή της δράσης στο στόχο και τότε η τιμή της είναι θετική, v ij > 0, ή την υποβάθμιση της δράσης για την επίτευξη του στόχου, τότε η τιμή της είναι αρνητική, v ij < 0, ενώ v ij = 0 όταν η δράση δεν έχει καμία επίδραση στο στόχο. 85

87 Επομένως σε κάθε δράση a i αντιστοιχεί ένα «αντικειμενικό διάνυσμα» v = (f 1 (a i ), f 2 (a i ),, f m (a i ) ). Η μεταβλητή m, που είναι ίση με τον αριθμό των στόχων ώστε να βρούμε τη βέλτιστη λύση του προβλήματος, παίρνει τιμές που βρίσκονται στο διάστημα [2, 8], καθώς στην πραγματικότητα ένα project μπορεί να έχει το πολύ έως 8 στόχους, διαφορετικά η διαχείριση και η αξιολόγηση του έργου είναι δύσκολη. Συγκεκριμένα, στον κοινωνικό και ιατρό- κοινωνικό τομέα, ένα project οριοθετείται από μια περίοδο 5 χρόνων, την 6 η χρονιά γίνεται η αξιολόγηση του έργου και υπολογίζεται η επίτευξη των στόχων, άρα όσο περισσότεροι στόχοι υπάρχουν τόσο πιο δύσκολη είναι η αξιολόγηση. Συνεπώς, από τα παραπάνω έχουμε ότι για ένα σχέδιο δράσης p, η αντι- κειμενική συνάρτηση για το στόχο j είναι: f i (p) = a i f j (a i ). Έτσι, κάθε λύση p P συνδέεται με το z = (f 1 (p), f 2 (p),, f m (p)). i=1 Για κάθε στόχο j υπάρχει μια τιμή c j η οποία δείχνει το ελάχιστο κατώτερο όριο που μπορεί να πάρει η τιμή f j, έτσι έχουμε ότι πρέπει να ισχύει: f j c j 0, (1 ος περιορισμός). Ο επόμενος περιορισμός έχει να κάνει με τον χρηματικό προϋπολογισμό του σχεδίου δράσης β, που καθόρισαν οι υπεύθυνοι για τη λήψη αποφάσεων και δεν πρέπει να ξεπερνιέται. Πράγματι, κάθε δράση a i έχει ένα κόστος υλοποίησης w i που παίρνει και αρνητικές τιμές όταν πρόκειται για πώληση προϊόντων ή υπηρεσιών. Άρα το συνολικό κόστος μιας λύσης p δίνεται από τη σχέση W(p) = a i w i και πρέπει να ικανοποιεί τον περιορισμό W(p) β, (2 ος περιορισμός). Η βέλτιστη λύση p* θα είναι εκείνη που θα ικανοποιεί τους παραπάνω περιορισμούς και θα μεγιστοποιεί την αντικειμενική συνάρτηση F(p). Δεδομένου ότι μελετάμε μια Multiobjective περίπτωση είναι λογικό ότι η λύση p* να μην είναι μοναδική, ωστόσο έχει βρεθεί ένα σύνολο από λύσεις που δεν είναι εφικτές. i=1 86

88 Λύση του μοντέλου & συμπεράσματα Σύμφωνα με το μοντέλο που περιεγράφηκε νωρίτερα, δημιουργείται ένας τυχαίος αριθμός δράσεων {50,100,250,500,750,1000} και ένα πλήθος στόχων m {2,..., 8}. Επιδιώκοντας η περίπτωση να ανταποκρίνεται στην πραγματικότητα, για κάθε αντικειμενική συνάρτηση, μία δράση έχει 50% πιθανότητα να είναι ουδέτερη, 40% πιθανότητα να έχει θετικό αντίκτυπο και 10% να έχει αρνητικό αντίκτυπο. Επίσης, το κόστος του 40% των δράσεων θεωρείται πως είναι μηδενικό, 0. Η τιμή των δράσεων ανήκει στο διάστημα [0, 100], ενώ του κόστους στο [ , ] Δοκιμάστηκαν 3 metaheuristic αλγόριθμοι ο NSGA-II, IBMOLS και ο PLS. Συγκεκριμένα, για τον NSGA-II χρησιμοποιήθηκε μεγάλο πλήθος δράσεων, μεγέθους ίσο με 100. Το αρχικό πλήθος δράσεων παράγεται τυχαία, ενώ εξακριβώνεται ότι το κόστος των δράσεων δεν ξεπερνά το budget β. Για τον IBMOLS, το αρχικό πλήθος δράσεων παράγεται όπως πριν ενώ τώρα το πλήθος είναι μικρότερο, μεγέθους 10. Ο NSGA-II συγκρινόμενος με τον IBMOLS δείχνει ότι είναι κατώτερος σε σχέδια δράσης μεγάλου μεγέθους. Και οι δύο αλγόριθμοι χρησιμοποιούν ένα συγκεκριμένο πλήθος δράσεων με την ίδια στρατηγική επιλογής, δηλαδή μια τυχαία γειτονική δράση του επιλεγμένου συνόλου δράσεων επιλέγεται να γίνει μέλος των δράσεων στον NSGA-II ενώ στον IBMOLS ενσωματώνεται στο τρέχον σχέδιο δράσης, Για τον PLS χρησιμοποιείται ένα αρχείο απεριόριστου μεγέθους και με αρχικό πληθυσμό μιας δράσης. Η γέννηση της γειτονιάς είναι η ίδια με εκείνη της PLS και IBMOLS. Ο i στος γείτονας του σχεδίου δράσης p = (α 1, α 2,..., α ) λαμβάνεται αν ανατραπεί την τιμή του a i και γίνουν δεκτοί μόνο οι γείτονες που επαληθεύουν τον περιορισμό β. Ο περιορισμός του προϋπολογισμού β ορίζεται σε ένα εκατομμύριο e και για τις τρεις μεθόδους. Για την αξιολόγηση της ποιότητας των αλγορίθμων, πραγματοποιήθηκαν 30 επαναλήψεις από κάθε μέθοδο για κάθε περίπτωση. Για τους IBMOLS και NSGA-II, ο χρόνος εκτέλεσης ήταν 2 *m millisecods για κάθε επανάληψη, είναι ο αριθμός των δράσεων και m ο αριθμός των στόχων. Ωστόσο για τον PLS, ο χρόνος εκτέλεσης περιορίζεται σε μία ώρα, επειδή το μέγεθος του αρχείου και ο χρόνος απόκρισης αυξάνουν εκθετικά με το μέγεθος εμφάνισης, κάνοντας το PLS αναποτελεσματικό για μεγάλα προβλήματα μεγέθους. Τα πειράματά πραγματοποιήθηκαν σε 87

89 υπολογιστή μια πυρήνα Itel Core i CPU με 2 x 3.10 Ghz και 16 Gb μνήμης RAM. Επιπλέον, τα αποτελέσματά μας αξιολογήθηκαν χρησιμοποιώντας τους δείκτες R και ε και υπολογίζοντας την μέση τιμή τους για τις 30 επανάληψη, για κάθε αλγόριθμο και για κάθε περίπτωση παρουσία. Για τη στατιστική ανάλυση, χρησιμοποιήθηκε το Ma- Whitey test, σύμφωνα με την οποία ο αλγόριθμος Α υπεραποδίδει του αλγόριθμου Β εάν η Ma-Whitey δοκιμή παρέχει επίπεδο εμπιστοσύνης μεγαλύτερο από 95%. Στην παρακάτω εικόνα φαίνεται η σύγκριση των μέσων τιμών που λαμβάνουν οι δείκτες R και ε, σε πάνω από 30 επαναλήψεις, χρησιμοποιώντας 30 περιπτώσεις διαφορετικού μεγέθους. Η 1 η στήλη απεικονίζει την τιμή του μεγέθους m_, όπου m είναι ο αριθμός των στόχων και ο αριθμός τον δράσεων. Οι περιπτώσεις όπου τα αποτελέσματα είναι έντονα σημειωμένα, είναι εκείνες όπου ο αντίστοιχος αλγόριθμος ήταν 95% καλύτερος από τον άλλο. Σύγκριση των μέσων τιμών των Iε και IR των IBMOLS και NSGA-II. Γίνεται αντιληπτό από τα αποτελέσματα ότι ο αλγόριθμος NSGA-II είναι αποτελεσματικότερος σε μικρές περιπτώσεις, δηλαδή σε σχέδια δράσης με 50 δράσεις και όχι περισσότερους από 3 στόχους. Όταν όμως το πλήθος των στόχων μεγαλώνει ελάχιστα ο IBMOLS έχει καλύτερα αποτελέσματα. 88

Αλγοριθμικές Τεχνικές

Αλγοριθμικές Τεχνικές Αλγοριθμικές Τεχνικές Παύλος Εφραιμίδης, Λέκτορας http://pericles.ee.duth.gr Αλγοριθμικές Τεχνικές 1 Τεχνικές Σχεδιασμού Αλγορίθμων Ορισμένες γενικές αρχές για τον σχεδιασμό αλγορίθμων είναι: Διαίρει και

Διαβάστε περισσότερα

Αλγοριθμικές Τεχνικές. Brute Force. Διαίρει και Βασίλευε. Παράδειγμα MergeSort. Παράδειγμα. Τεχνικές Σχεδιασμού Αλγορίθμων

Αλγοριθμικές Τεχνικές. Brute Force. Διαίρει και Βασίλευε. Παράδειγμα MergeSort. Παράδειγμα. Τεχνικές Σχεδιασμού Αλγορίθμων Τεχνικές Σχεδιασμού Αλγορίθμων Αλγοριθμικές Τεχνικές Παύλος Εφραιμίδης, Λέκτορας http://pericles.ee.duth.gr Ορισμένες γενικές αρχές για τον σχεδιασμό αλγορίθμων είναι: Διαίρει και Βασίλευε (Divide and

Διαβάστε περισσότερα

Διαχείριση Εφοδιαστικής Αλυσίδας ΙΙ

Διαχείριση Εφοδιαστικής Αλυσίδας ΙΙ Διαχείριση Εφοδιαστικής Αλυσίδας ΙΙ 1 η Διάλεξη: Αναδρομή στον Μαθηματικό Προγραμματισμό 2019, Πολυτεχνική Σχολή Εργαστήριο Συστημάτων Σχεδιασμού, Παραγωγής και Λειτουργιών Περιεχόμενα 1. Γραμμικός Προγραμματισμός

Διαβάστε περισσότερα

Δομές Δεδομένων & Αλγόριθμοι

Δομές Δεδομένων & Αλγόριθμοι Θέματα Απόδοσης Αλγορίθμων 1 Η Ανάγκη για Δομές Δεδομένων Οι δομές δεδομένων οργανώνουν τα δεδομένα πιο αποδοτικά προγράμματα Πιο ισχυροί υπολογιστές πιο σύνθετες εφαρμογές Οι πιο σύνθετες εφαρμογές απαιτούν

Διαβάστε περισσότερα

3.7 Παραδείγματα Μεθόδου Simplex

3.7 Παραδείγματα Μεθόδου Simplex 3.7 Παραδείγματα Μεθόδου Simplex Παράδειγμα 1ο (Παράδειγμα 1ο - Κεφάλαιο 2ο - σελ. 10): Το πρόβλημα εκφράζεται από το μαθηματικό μοντέλο: max z = 600x T + 250x K + 750x Γ + 450x B 5x T + x K + 9x Γ + 12x

Διαβάστε περισσότερα

Προσεγγιστικοί Αλγόριθμοι

Προσεγγιστικοί Αλγόριθμοι Πολλά NP-πλήρη προβλήματα έχουν μεγάλο πρακτικό ενδιαφέρον. http://xkcd.com/287/ Πολλά NP-πλήρη προβλήματα έχουν μεγάλο πρακτικό ενδιαφέρον. Πως μπορούμε να αντιμετωπίσουμε το γεγονός ότι είναι απίθανη(;)

Διαβάστε περισσότερα

ΕΝΑΣ ΔΙΚΡΙΤΗΡΙΟΣ ΑΛΓΟΡΙΘΜΟΣ SIMPLEX

ΕΝΑΣ ΔΙΚΡΙΤΗΡΙΟΣ ΑΛΓΟΡΙΘΜΟΣ SIMPLEX ΚΕΦΑΛΑΙΟ 3 ΕΝΑΣ ΔΙΚΡΙΤΗΡΙΟΣ ΑΛΓΟΡΙΘΜΟΣ SIMPLEX 3.1 Εισαγωγή Ο αλγόριθμος Simplex θεωρείται πλέον ως ένας κλασικός αλγόριθμος για την επίλυση γραμμικών προβλημάτων. Η πρακτική αποτελεσματικότητά του έχει

Διαβάστε περισσότερα

Ακέραιος Γραμμικός Προγραμματισμός

Ακέραιος Γραμμικός Προγραμματισμός Τμήμα Μηχανικών Πληροφορικής ΤΕ 2017-2018 Ακέραιος Γραμμικός Προγραμματισμός Γκόγκος Χρήστος ΤΕΙ Ηπείρου Επιχειρησιακή Έρευνα τελευταία ενημέρωση: 12/01/2017 1 Ακέραιος Γραμμικός Προγραμματισμός Όταν για

Διαβάστε περισσότερα

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Προβλήματα, αλγόριθμοι, ψευδοκώδικας Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι

Διαβάστε περισσότερα

Outline. 6 Edit Distance

Outline. 6 Edit Distance Αλγόριθμοι και Πολυπλοκότητα Άπληστοι Αλγόριθμοι και Δυναμικός Προγραμματισμός Ασκήσεις CoReLab ΣΗΜΜΥ - Ε.Μ.Π. 16 Νοεμβρίου 216 (CoReLab - NTUA) Αλγόριθμοι - Ασκήσεις 16 Νοεμβρίου 216 1 / 52 Outline 1

Διαβάστε περισσότερα

z = c 1 x 1 + c 2 x c n x n

z = c 1 x 1 + c 2 x c n x n Τεχνολογικό Εκπαιδευτικό Ιδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Γραμμικός Προγραμματισμός & Βελτιστοποίηση Δρ. Δημήτρης Βαρσάμης Καθηγητής Εφαρμογών Δρ. Δημήτρης Βαρσάμης Μάρτιος

Διαβάστε περισσότερα

Ακέραιος Γραμμικός Προγραμματισμός

Ακέραιος Γραμμικός Προγραμματισμός Τμήμα Μηχανικών Πληροφορικής ΤΕ 2016-2017 Ακέραιος Γραμμικός Προγραμματισμός Γκόγκος Χρήστος ΤΕΙ Ηπείρου Επιχειρησιακή Έρευνα τελευταία ενημέρωση: 12/01/2017 1 Ακέραιος Γραμμικός Προγραμματισμός Όταν για

Διαβάστε περισσότερα

Ακέραιος Γραμμικός Προγραμματισμός

Ακέραιος Γραμμικός Προγραμματισμός Τμήμα Πληροφορικής & Τηλεπικοινωνιών Πανεπιστήμιο Ιωαννίνων 2018-2019 Ακέραιος Γραμμικός Προγραμματισμός Γκόγκος Χρήστος- Γεωργία Φουτσιτζή Επιχειρησιακή Έρευνα τελευταία ενημέρωση: 12/01/2017 1 Ακέραιος

Διαβάστε περισσότερα

Δυναμικός Προγραμματισμός

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

Διαβάστε περισσότερα

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Στην ενότητα

Διαβάστε περισσότερα

Αλγόριθμοι και πολυπλοκότητα Δυναμικός Προγραμματισμός

Αλγόριθμοι και πολυπλοκότητα Δυναμικός Προγραμματισμός ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Αλγόριθμοι και πολυπλοκότητα Δυναμικός Προγραμματισμός Ιωάννης Τόλλης Τμήμα Επιστήμης Υπολογιστών Δυναμικός Προγραμματισμός Δυναμικός Προγραμματισμός 1 Περίληψη

Διαβάστε περισσότερα

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Άσκηση 1 α) Η δομή σταθμισμένης ένωσης με συμπίεση διαδρομής μπορεί να τροποποιηθεί πολύ εύκολα ώστε να υποστηρίζει τις

Διαβάστε περισσότερα

Διάλεξη 04: Παραδείγματα Ανάλυσης

Διάλεξη 04: Παραδείγματα Ανάλυσης Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Παραδείγματα Ανάλυσης Πολυπλοκότητας : Μέθοδοι, παραδείγματα

Διαβάστε περισσότερα

Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων

Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Παραδείγματα Ανάλυσης Πολυπλοκότητας : Μέθοδοι, παραδείγματα

Διαβάστε περισσότερα

ΔΥΝΑΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΔΥΝΑΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΔΥΝΑΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εισαγωγή Ο Δυναμικός Προγραμματισμός (ΔΠ) είναι μία υπολογιστική μέθοδος η οποία εφαρμόζεται όταν πρόκειται να ληφθεί μία σύνθετη απόφαση η οποία προκύπτει από τη σύνθεση επιμέρους

Διαβάστε περισσότερα

υναμικός Προγραμματισμός

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

Διαβάστε περισσότερα

ΑΚΕΡΑΙΟΣ ΓΡΑΜΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΑΚΕΡΑΙΟΣ ΓΡΑΜΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΑΚΕΡΑΙΟΣ ΓΡΑΜΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Ολοκληρωμένη μαθηματική τεχνική βελτιστοποίησης Ευρύτατο φάσμα εφαρμογών Εισαγωγή ακέραιων/λογικών/βοηθητικών μεταβλητών Δυνατότητα γραμμικοποίησης με 0-1 μεταβλητές

Διαβάστε περισσότερα

Συνδυαστική Βελτιστοποίηση Εισαγωγή στον γραμμικό προγραμματισμό (ΓΠ)

Συνδυαστική Βελτιστοποίηση Εισαγωγή στον γραμμικό προγραμματισμό (ΓΠ) Εικονικές Παράμετροι Μέχρι στιγμής είδαμε την εφαρμογή της μεθόδου Simplex σε προβλήματα όπου το δεξιό μέλος ήταν θετικό. Δηλαδή όλοι οι περιορισμοί ήταν της μορφής: όπου Η παραδοχή ότι b 0 μας δίδει τη

Διαβάστε περισσότερα

Τμήμα Μηχανικών Πληροφορικής ΤΕ Η μέθοδος Simplex. Γκόγκος Χρήστος ΤΕΙ Ηπείρου Επιχειρησιακή Έρευνα. τελευταία ενημέρωση: 19/01/2017

Τμήμα Μηχανικών Πληροφορικής ΤΕ Η μέθοδος Simplex. Γκόγκος Χρήστος ΤΕΙ Ηπείρου Επιχειρησιακή Έρευνα. τελευταία ενημέρωση: 19/01/2017 Τμήμα Μηχανικών Πληροφορικής ΤΕ 2016-2017 Η μέθοδος Simplex Γκόγκος Χρήστος ΤΕΙ Ηπείρου Επιχειρησιακή Έρευνα τελευταία ενημέρωση: 19/01/2017 1 Πλεονεκτήματα Η μέθοδος Simplex Η μέθοδος Simplex είναι μια

Διαβάστε περισσότερα

Αναζήτηση. 1. Σειριακή αναζήτηση 2. Δυαδική Αναζήτηση. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

Αναζήτηση. 1. Σειριακή αναζήτηση 2. Δυαδική Αναζήτηση. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Αναζήτηση. Σειριακή αναζήτηση. Δυαδική Αναζήτηση Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Παραδοχή Στη συνέχεια των διαφανειών (διαλέξεων) η ασυμπτωτική έκφραση (συμβολισμός Ο, Ω, Θ) του χρόνου

Διαβάστε περισσότερα

ΑΚΕΡΑΙΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ & ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΚΕΦΑΛΑΙΟ 1

ΑΚΕΡΑΙΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ & ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΚΕΦΑΛΑΙΟ 1 ΑΚΕΡΑΙΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ & ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΚΕΦΑΛΑΙΟ 1 1 Βελτιστοποίηση Στην προσπάθεια αντιμετώπισης και επίλυσης των προβλημάτων που προκύπτουν στην πράξη, αναπτύσσουμε μαθηματικά μοντέλα,

Διαβάστε περισσότερα

Αναγνώριση Προτύπων Ι

Αναγνώριση Προτύπων Ι Αναγνώριση Προτύπων Ι Ενότητα 1: Μέθοδοι Αναγνώρισης Προτύπων Αν. Καθηγητής Δερματάς Ευάγγελος Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

Αριθμητική Ανάλυση και Εφαρμογές

Αριθμητική Ανάλυση και Εφαρμογές Αριθμητική Ανάλυση και Εφαρμογές Διδάσκων: Δημήτριος Ι. Φωτιάδης Τμήμα Μηχανικών Επιστήμης Υλικών Ιωάννινα 07-08 Αριθμητική Παραγώγιση Εισαγωγή Ορισμός 7. Αν y f x είναι μια συνάρτηση ορισμένη σε ένα διάστημα

Διαβάστε περισσότερα

Κεφάλαιο 6. Μέθοδοι επίλυσης προβλημάτων ακέραιου προγραμματισμού

Κεφάλαιο 6. Μέθοδοι επίλυσης προβλημάτων ακέραιου προγραμματισμού Κεφάλαιο 6 Μέθοδοι επίλυσης προβλημάτων ακέραιου προγραμματισμού 1 Γραφική επίλυση Η γραφική μέθοδος επίλυσης μπορεί να χρησιμοποιηθεί μόνο για πολύ μικρά προβλήματα με δύο ή το πολύ τρεις μεταβλητές απόφασης.

Διαβάστε περισσότερα

Μη γράφετε στο πίσω μέρος της σελίδας

Μη γράφετε στο πίσω μέρος της σελίδας Εισαγωγή στο Σχεδιασμό & την Ανάλυση Αλγορίθμων Εξέταση Φεβρουαρίου 2016 Σελ. 1 από 7 Στη σελίδα αυτή γράψτε μόνο τα στοιχεία σας. Γράψτε τις απαντήσεις σας στις επόμενες σελίδες, κάτω από τις αντίστοιχες

Διαβάστε περισσότερα

Πίνακες Διασποράς. Χρησιμοποιούμε ένα πίνακα διασποράς T και μια συνάρτηση διασποράς h. Ένα στοιχείο με κλειδί k αποθηκεύεται στη θέση

Πίνακες Διασποράς. Χρησιμοποιούμε ένα πίνακα διασποράς T και μια συνάρτηση διασποράς h. Ένα στοιχείο με κλειδί k αποθηκεύεται στη θέση Πίνακες Διασποράς Χρησιμοποιούμε ένα πίνακα διασποράς T και μια συνάρτηση διασποράς h Ένα στοιχείο με κλειδί k αποθηκεύεται στη θέση κλειδί k T 0 1 2 3 4 5 6 7 U : χώρος πιθανών κλειδιών Τ : πίνακας μεγέθους

Διαβάστε περισσότερα

Τμήμα Μηχανικών Πληροφορικής ΤΕ Δυϊκότητα. Γκόγκος Χρήστος ΤΕΙ Ηπείρου Επιχειρησιακή Έρευνα. τελευταία ενημέρωση: 1/12/2016

Τμήμα Μηχανικών Πληροφορικής ΤΕ Δυϊκότητα. Γκόγκος Χρήστος ΤΕΙ Ηπείρου Επιχειρησιακή Έρευνα. τελευταία ενημέρωση: 1/12/2016 Τμήμα Μηχανικών Πληροφορικής ΤΕ 2016-2017 Δυϊκότητα Γκόγκος Χρήστος ΤΕΙ Ηπείρου Επιχειρησιακή Έρευνα τελευταία ενημέρωση: 1/12/2016 1 Το δυϊκό πρόβλημα Για κάθε πρόβλημα Γραμμικού Προγραμματισμού υπάρχει

Διαβάστε περισσότερα

Η μέθοδος Simplex. Γεωργία Φουτσιτζή-Γκόγκος Χρήστος ΤΕΙ Ηπείρου Επιχειρησιακή Έρευνα. Τμήμα Μηχανικών Πληροφορικής ΤΕ

Η μέθοδος Simplex. Γεωργία Φουτσιτζή-Γκόγκος Χρήστος ΤΕΙ Ηπείρου Επιχειρησιακή Έρευνα. Τμήμα Μηχανικών Πληροφορικής ΤΕ Τμήμα Μηχανικών Πληροφορικής ΤΕ 2017-2018 Η μέθοδος Simplex Γεωργία Φουτσιτζή-Γκόγκος Χρήστος ΤΕΙ Ηπείρου Επιχειρησιακή Έρευνα τελευταία ενημέρωση: 19/01/2017 1 Πλεονεκτήματα Η μέθοδος Simplex Η μέθοδος

Διαβάστε περισσότερα

Fast Fourier Transform

Fast Fourier Transform Fast Fourier Transform Παναγιώτης Πατσιλινάκος ΕΜΕ 19 Οκτωβρίου 2017 Παναγιώτης Πατσιλινάκος (ΕΜΕ) Fast Fourier Transform 19 Οκτωβρίου 2017 1 / 20 1 Εισαγωγή Στόχος Προαπαιτούμενα 2 Η ιδέα Αντιστροφή -

Διαβάστε περισσότερα

ΒΑΣΙΚΑ ΣΤΟΙΧΕΙΑ ΘΕΩΡΙΑΣ ΤΗΣ ΜΕΘΟΔΟΥ SIMPLEX

ΒΑΣΙΚΑ ΣΤΟΙΧΕΙΑ ΘΕΩΡΙΑΣ ΤΗΣ ΜΕΘΟΔΟΥ SIMPLEX ΒΑΣΙΚΑ ΣΤΟΙΧΕΙΑ ΘΕΩΡΙΑΣ ΤΗΣ ΜΕΘΟΔΟΥ SIMPLEX Θεμελιώδης αλγόριθμος επίλυσης προβλημάτων Γραμμικού Προγραμματισμού που κάνει χρήση της θεωρίας της Γραμμικής Άλγεβρας Προτάθηκε από το Dantzig (1947) και πλέον

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 6α: Αναζήτηση Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commos. Για εκπαιδευτικό

Διαβάστε περισσότερα

Δυναμικός Προγραμματισμός

Δυναμικός Προγραμματισμός πρόβλημα μεγέθους Ν «Διαίρει και βασίλευε» : ανεξάρτητα υποπροβλήματα διάσπαση πρόβλημα μεγέθους k πρόβλημα μεγέθους Ν-k πρόβλημα μεγέθους Ν Σε κάποιες περιπτώσεις όμως τα υποπροβλήματα δεν είναι ανεξάρτητα

Διαβάστε περισσότερα

Δυναμικός Προγραμματισμός

Δυναμικός Προγραμματισμός Δυναμικός Προγραμματισμός Επιμέλεια διαφανειών: Δ. Φωτάκης Τροποποιήσεις /προσθήκες: Α. Παγουρτζής Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Διωνυμικοί Συντελεστές

Διαβάστε περισσότερα

Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 04: ΠαραδείγματαΑνάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Παραδείγματα Ανάλυσης Πολυπλοκότητας : Μέθοδοι, παραδείγματα -Γραμμική

Διαβάστε περισσότερα

είναι πρόβλημα μεγιστοποίησης όλοι οι περιορισμοί είναι εξισώσεις με μη αρνητικούς του σταθερούς όρους όλες οι μεταβλητές είναι μη αρνητικές

είναι πρόβλημα μεγιστοποίησης όλοι οι περιορισμοί είναι εξισώσεις με μη αρνητικούς του σταθερούς όρους όλες οι μεταβλητές είναι μη αρνητικές Ένα τυχαίο π.γ.π. maximize/minimize z=c x Αx = b x 0 Τυπική μορφή του π.γ.π. maximize z=c x Αx = b x 0 b 0 είναι πρόβλημα μεγιστοποίησης όλοι οι περιορισμοί είναι εξισώσεις με μη αρνητικούς του σταθερούς

Διαβάστε περισσότερα

Αλγόριθμοι Ταξινόμησης Μέρος 2

Αλγόριθμοι Ταξινόμησης Μέρος 2 Αλγόριθμοι Ταξινόμησης Μέρος 2 Μανόλης Κουμπαράκης 1 Προχωρημένοι Αλγόριθμοι Ταξινόμησης Στη συνέχεια θα παρουσιάσουμε τρείς προχωρημένους αλγόριθμους ταξινόμησης: treesort, quicksort και mergesort. 2

Διαβάστε περισσότερα

Κατακερματισμός (Hashing)

Κατακερματισμός (Hashing) Κατακερματισμός (Hashing) O κατακερματισμός είναι μια τεχνική οργάνωσης ενός αρχείου. Είναι αρκετά δημοφιλής μέθοδος για την οργάνωση αρχείων Βάσεων Δεδομένων, καθώς βοηθάει σημαντικά στην γρήγορη αναζήτηση

Διαβάστε περισσότερα

Επιχειρησιακή Έρευνα I

Επιχειρησιακή Έρευνα I Επιχειρησιακή Έρευνα I Κωστής Μαμάσης Παρασκευή 09:00 12:00 Σημειώσεις των Α. Platis, K. Mamasis Περιεχόμενα 1. Εισαγωγή 2. Γραμμικός Προγραμματισμός 1. Μοντελοποίηση 2. Μέθοδος Simplex 1. Αλγόριθμός Simplex

Διαβάστε περισσότερα

υναμικός Προγραμματισμός

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

Διαβάστε περισσότερα

ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ

ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ Ενότητα 4 Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας

Διαβάστε περισσότερα

Παραλλαγές του Προβλήματος Μεταφοράς Το Πρόβλημα Μεταφόρτωσης και το Πρόβλημα Αναθέσεων Γεωργία Φουτσιτζή ΤΕΙ Ηπείρου Επιχειρησιακή Έρευνα

Παραλλαγές του Προβλήματος Μεταφοράς Το Πρόβλημα Μεταφόρτωσης και το Πρόβλημα Αναθέσεων Γεωργία Φουτσιτζή ΤΕΙ Ηπείρου Επιχειρησιακή Έρευνα Τμήμα Μηχανικών Πληροφορικής ΤΕ 2016-2017 Παραλλαγές του Προβλήματος Μεταφοράς Το Πρόβλημα Μεταφόρτωσης και το Πρόβλημα Αναθέσεων Γεωργία Φουτσιτζή ΤΕΙ Ηπείρου Επιχειρησιακή Έρευνα To Πρόβλημα Μεταφοράς

Διαβάστε περισσότερα

με Τέλος πάντων, έστω ότι ξεκινάει ένα άλλο υποθετικό σενάριο που απλά δεν διευκρινίζεται. Για το i) θα έχουμε , 2

με Τέλος πάντων, έστω ότι ξεκινάει ένα άλλο υποθετικό σενάριο που απλά δεν διευκρινίζεται. Για το i) θα έχουμε , 2 Άσκηση 75 Σε έναν οργανισμό, αρχικά υπάρχουν 04800 βακτήρια. Μετά από 1 ώρα υπάρχουν 10400 βακτήρια, μετά από ώρες 5100 βακτήρια, και γενικά ο αριθμός των βακτηρίων υποδιπλασιάζεται κάθε μια ώρα. α) Πόσα

Διαβάστε περισσότερα

Γραμμικός Προγραμματισμός Μέθοδος Simplex

Γραμμικός Προγραμματισμός Μέθοδος Simplex ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ Επιχειρησιακή Έρευνα Γραμμικός Προγραμματισμός Μέθοδος Simplex Η παρουσίαση προετοιμάστηκε από τον Ν.Α. Παναγιώτου Περιεχόμενα Παρουσίασης 1. Πρότυπη Μορφή ΓΠ 2. Πινακοποίηση

Διαβάστε περισσότερα

1 Αριθμητική κινητής υποδιαστολής και σφάλματα στρογγύλευσης

1 Αριθμητική κινητής υποδιαστολής και σφάλματα στρογγύλευσης 1 Αριθμητική κινητής υποδιαστολής και σφάλματα στρογγύλευσης Στη συγκεκριμένη ενότητα εξετάζουμε θέματα σχετικά με την αριθμητική πεπερασμένης ακρίβειας που χρησιμοποιούν οι σημερινοί υπολογιστές και τα

Διαβάστε περισσότερα

Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος

Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος Χιωτίδης Γεώργιος Τμήμα Λογιστικής και Χρηματοοικονομικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης

Διαβάστε περισσότερα

Case 08: Επιλογή Διαφημιστικών Μέσων Ι ΣΕΝΑΡΙΟ (1)

Case 08: Επιλογή Διαφημιστικών Μέσων Ι ΣΕΝΑΡΙΟ (1) Case 08: Επιλογή Διαφημιστικών Μέσων Ι ΣΕΝΑΡΙΟ (1) Το πρόβλημα της επιλογής των μέσων διαφήμισης (??) το αντιμετωπίζουν τόσο οι επιχειρήσεις όσο και οι διαφημιστικές εταιρείες στην προσπάθειά τους ν' αναπτύξουν

Διαβάστε περισσότερα

Αριθμητική Ανάλυση και Εφαρμογές

Αριθμητική Ανάλυση και Εφαρμογές Αριθμητική Ανάλυση και Εφαρμογές Διδάσκων: Δημήτριος Ι. Φωτιάδης Τμήμα Μηχανικών Επιστήμης Υλικών Ιωάννινα 07-08 Πεπερασμένες και Διαιρεμένες Διαφορές Εισαγωγή Θα εισάγουμε την έννοια των διαφορών με ένα

Διαβάστε περισσότερα

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

ΑΛΓΟΡΙΘΜΟΙ  Άνοιξη I. ΜΗΛΗΣ ΑΛΓΟΡΙΘΜΟΙ http://eclass.aueb.gr/courses/inf161/ Άνοιξη 2017 - I. ΜΗΛΗΣ ΔΥΝΑΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Knapsack problems ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2017 - Ι. ΜΗΛΗΣ 10 DP III 1 Knapsack problems ΕΙΣΟΔΟΣ: Σακίδιο χωρητικότητας

Διαβάστε περισσότερα

Τεχνικές Σχεδιασμού Αλγορίθμων

Τεχνικές Σχεδιασμού Αλγορίθμων Τεχνικές Σχεδιασμού Αλγορίθμων Διαίρει και Βασίλευε Δυναμικός Προγραμματισμός Απληστία Π. Μποζάνης ΤHMMY - Αλγόριθμοι 2014-2015 1 Διαίρει και Βασίλευε Βασικά Βήματα Διαίρει: Κατάτμηση του αρχικού προβλήματος

Διαβάστε περισσότερα

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 13: Παραλλαγές Μηχανών Turing και Περιγραφή Αλγορίθμων

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 13: Παραλλαγές Μηχανών Turing και Περιγραφή Αλγορίθμων ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας Διάλεξη 13: Παραλλαγές Μηχανών Turing και Περιγραφή Αλγορίθμων Τι θα κάνουμε σήμερα Εισαγωγή Πολυταινιακές Μηχανές Turing (3.2.1) Μη Ντετερμινιστικές Μηχανές

Διαβάστε περισσότερα

Κεφ. 6Β: Συνήθεις διαφορικές εξισώσεις (ΣΔΕ) - προβλήματα αρχικών τιμών

Κεφ. 6Β: Συνήθεις διαφορικές εξισώσεις (ΣΔΕ) - προβλήματα αρχικών τιμών Κεφ. 6Β: Συνήθεις διαφορικές εξισώσεις (ΣΔΕ) - προβλήματα αρχικών τιμών. Εισαγωγή (ορισμός προβλήματος, αριθμητική ολοκλήρωση ΣΔΕ, αντικατάσταση ΣΔΕ τάξης n με n εξισώσεις ης τάξης). Μέθοδος Euler 3. Μέθοδοι

Διαβάστε περισσότερα

Εισαγωγή στους Αλγορίθμους Ενότητα 11η

Εισαγωγή στους Αλγορίθμους Ενότητα 11η Εισαγωγή στους Αλγορίθμους Ενότητα 11η Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Δυναμικός Προγραμματισμός Σταθμισμένος Χρονοπρογραμματισμός

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 4. Ακέραια Πολύεδρα

ΚΕΦΑΛΑΙΟ 4. Ακέραια Πολύεδρα ΚΕΦΑΛΑΙΟ 4 Ακέραια Πολύεδρα 1 Ορισμός 4.1 (Convex Hull) Έστω ένα σύνολο S C R n. Ένα σημείο x του R n είναι κυρτός συνδυασμός (convex combination) σημείων του S, αν υπάρχει ένα πεπερασμένο σύνολο σημείων

Διαβάστε περισσότερα

Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα:

Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: υναµικός Προγραµµατισµός Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Σχεδιασµός αλγορίθµων µε υναµικό Προγραµµατισµό Το πρόβληµα του πολλαπλασιασµού πινάκων ΕΠΛ 3 Αλγόριθµοι και Πολυπλοκότητα 3- υναµικός

Διαβάστε περισσότερα

Κεφ. 7: Συνήθεις διαφορικές εξισώσεις (ΣΔΕ) - προβλήματα αρχικών τιμών

Κεφ. 7: Συνήθεις διαφορικές εξισώσεις (ΣΔΕ) - προβλήματα αρχικών τιμών Κεφ. 7: Συνήθεις διαφορικές εξισώσεις (ΣΔΕ) - προβλήματα αρχικών τιμών 7. Εισαγωγή (ορισμός προβλήματος, αριθμητική ολοκλήρωση ΣΔΕ, αντικατάσταση ΣΔΕ τάξης n με n εξισώσεις ης τάξης) 7. Μέθοδος Euler 7.3

Διαβάστε περισσότερα

Θεωρία Πληροφορίας. Διάλεξη 4: Διακριτή πηγή πληροφορίας χωρίς μνήμη. Δρ. Μιχάλης Παρασκευάς Επίκουρος Καθηγητής

Θεωρία Πληροφορίας. Διάλεξη 4: Διακριτή πηγή πληροφορίας χωρίς μνήμη. Δρ. Μιχάλης Παρασκευάς Επίκουρος Καθηγητής Θεωρία Πληροφορίας Διάλεξη 4: Διακριτή πηγή πληροφορίας χωρίς μνήμη Δρ. Μιχάλης Παρασκευάς Επίκουρος Καθηγητής 1 Ατζέντα Διακριτή πηγή πληροφορίας χωρίς μνήμη Ποσότητα πληροφορίας της πηγής Κωδικοποίηση

Διαβάστε περισσότερα

υναμικός Προγραμματισμός

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

Διαβάστε περισσότερα

Εισαγωγή στην Ανάλυση Αλγορίθμων

Εισαγωγή στην Ανάλυση Αλγορίθμων Εισαγωγή στην Ανάλυση Αλγορίθμων (4) Μεθοδολογία αναδρομικών σχέσεων (Ι) Με επανάληψη της αναδρομής Έστω όπου r και a είναι σταθερές. Βρίσκουμε τη σχέση που εκφράζει την T(n) συναρτήσει της T(n-) την T(n)

Διαβάστε περισσότερα

1 Εισαγωγή στις Συνδυαστικές Δημοπρασίες - Combinatorial Auctions

1 Εισαγωγή στις Συνδυαστικές Δημοπρασίες - Combinatorial Auctions ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Θεωρία Παιγνίων και Αποφάσεων Διδάσκων: Ε. Μαρκάκης, Εαρινό εξάμηνο 2015 Συμπληρωματικές σημειώσεις για τον μηχανισμό VCG 1 Εισαγωγή στις Συνδυαστικές

Διαβάστε περισσότερα

, ο αριθμός στον οποίο αντιστοιχεί ο 2 καλείται δεύτερος όρος της ακολουθίας και τον συμβολίζουμε συνήθως με

, ο αριθμός στον οποίο αντιστοιχεί ο 2 καλείται δεύτερος όρος της ακολουθίας και τον συμβολίζουμε συνήθως με 5. ΑΚΟΛΟΥΘΙΕΣ Γενικά ακολουθία πραγματικών αριθμών είναι μια αντιστοίχιση των φυσικών αριθμών,,,...,ν,... στους πραγματικούς αριθμούς. Ο αριθμός στον οποίο αντιστοιχεί ο καλείται πρώτος όρος της ακολουθίας

Διαβάστε περισσότερα

Αλγόριθμοι και Πολυπλοκότητα

Αλγόριθμοι και Πολυπλοκότητα Αλγόριθμοι και Πολυπλοκότητα Διαίρει και Βασίλευε Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Διαίρει και Βασίλευε Divide and Conquer Η τεχνική διαίρει και βασίλευε αναφέρεται

Διαβάστε περισσότερα

ΜΟΝΤΕΛΟΠΟΙΗΣΗ ΔΙΑΚΡΙΤΩΝ ΕΝΑΛΛΑΚΤΙΚΩΝ ΣΕ ΠΡΟΒΛΗΜΑΤΑ ΣΧΕΔΙΑΣΜΟΥ ΚΑΙ ΣΥΝΘΕΣΗΣ ΔΙΕΡΓΑΣΙΩΝ

ΜΟΝΤΕΛΟΠΟΙΗΣΗ ΔΙΑΚΡΙΤΩΝ ΕΝΑΛΛΑΚΤΙΚΩΝ ΣΕ ΠΡΟΒΛΗΜΑΤΑ ΣΧΕΔΙΑΣΜΟΥ ΚΑΙ ΣΥΝΘΕΣΗΣ ΔΙΕΡΓΑΣΙΩΝ ΜΕΡΟΣ ΙΙ ΜΟΝΤΕΛΟΠΟΙΗΣΗ ΔΙΑΚΡΙΤΩΝ ΕΝΑΛΛΑΚΤΙΚΩΝ ΣΕ ΠΡΟΒΛΗΜΑΤΑ ΣΧΕΔΙΑΣΜΟΥ ΚΑΙ ΣΥΝΘΕΣΗΣ ΔΙΕΡΓΑΣΙΩΝ 36 ΜΟΝΤΕΛΟΠΟΙΗΣΗ ΔΙΑΚΡΙΤΩΝ ΕΝΑΛΛΑΚΤΙΚΩΝ ΣΕ ΠΡΟΒΛΗΜΑΤΑ ΣΧΕΔΙΑΣΜΟΥ ΚΑΙ ΣΥΝΘΕΣΗΣ ΔΙΕΡΓΑΣΙΩΝ Πολλές από τις αποφάσεις

Διαβάστε περισσότερα

Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα:

Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: υναµικός Προγραµµατισµός Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Σχεδιασµός αλγορίθµων µε υναµικό Προγραµµατισµό Το πρόβληµα του πολλαπλασιασµού πινάκων ΕΠΛ 3 Αλγόριθµοι και Πολυπλοκότητα 3- υναµικός

Διαβάστε περισσότερα

Κεφάλαιο 5ο: Ακέραιος προγραμματισμός

Κεφάλαιο 5ο: Ακέραιος προγραμματισμός Κεφάλαιο 5ο: Ακέραιος προγραμματισμός 5.1 Εισαγωγή Ο ακέραιος προγραμματισμός ασχολείται με προβλήματα γραμμικού προγραμματισμού στα οποία μερικές ή όλες οι μεταβλητές είναι ακέραιες. Ένα γενικό πρόβλημα

Διαβάστε περισσότερα

Θέματα Εφαρμογών Βάσεων Δεδομένων: Ιδιωτικότητα Δεδομένων

Θέματα Εφαρμογών Βάσεων Δεδομένων: Ιδιωτικότητα Δεδομένων Θέματα Εφαρμογών Βάσεων Δεδομένων: Ιδιωτικότητα Δεδομένων 3. Δυναμικός Προγραμματισμός Ζαγορίσιος Παναγώτης Παπαοικονόμου Χριστίνα Δυναμικός Προγραμματισμός Μέθοδος επίλυσης σύνθετων προβλημάτων. Όπως

Διαβάστε περισσότερα

Γραµµικός Προγραµµατισµός - Μέθοδος Simplex

Γραµµικός Προγραµµατισµός - Μέθοδος Simplex Γραµµικός Προγραµµατισµός - Μέθοδος Simplex Η πλέον γνωστή και περισσότερο χρησιµοποιηµένη µέθοδος για την επίλυση ενός γενικού προβλήµατος γραµµικού προγραµµατισµού, είναι η µέθοδος Simplex η οποία αναπτύχθηκε

Διαβάστε περισσότερα

Μέθοδοι μονοδιάστατης ελαχιστοποίησης

Μέθοδοι μονοδιάστατης ελαχιστοποίησης Βασικές αρχές μεθόδων ελαχιστοποίησης Μέθοδοι μονοδιάστατης ελαχιστοποίησης Οι μέθοδοι ελαχιστοποίησης είναι επαναληπτικές. Ξεκινώντας από μια αρχική προσέγγιση του ελαχίστου (την συμβολίζουμε ) παράγουν

Διαβάστε περισσότερα

ΕΝΟΤΗΤΑ III ΒΑΣΙΚΕΣ ΜΕΘΟ ΟΙ ΑΝΑΛΥΣΗΣ

ΕΝΟΤΗΤΑ III ΒΑΣΙΚΕΣ ΜΕΘΟ ΟΙ ΑΝΑΛΥΣΗΣ ΕΝΟΤΗΤΑ III ΒΑΣΙΚΕΣ ΜΕΘΟ ΟΙ ΑΝΑΛΥΣΗΣ Βασικός τελικός στόχος κάθε επιστηµονικής τεχνολογικής εφαρµογής είναι: H γενική βελτίωση της ποιότητας του περιβάλλοντος Η βελτίωση της ποιότητας ζωής Τα µέσα µε τα

Διαβάστε περισσότερα

Αλγόριθµοι. Παράδειγµα. ιαίρει και Βασίλευε. Παράδειγµα MergeSort. Τεχνικές Σχεδιασµού Αλγορίθµων

Αλγόριθµοι. Παράδειγµα. ιαίρει και Βασίλευε. Παράδειγµα MergeSort. Τεχνικές Σχεδιασµού Αλγορίθµων Τεχνικές Σχεδιασµού Αλγορίθµων Αλγόριθµοι Παύλος Εφραιµίδης pefraimi@ee.duth.gr Ορισµένες γενικές αρχές για τον σχεδιασµό αλγορίθµων είναι: ιαίρει και Βασίλευε (Divide and Conquer) υναµικός Προγραµµατισµός

Διαβάστε περισσότερα

Στοχαστικές Στρατηγικές

Στοχαστικές Στρατηγικές Στοχαστικές Στρατηγικές 1 η ενότητα: Εισαγωγή στον Δυναμικό Προγραμματισμό Τμήμα Μαθηματικών, ΑΠΘ Ακαδημαϊκό έτος 2018-2019 Χειμερινό Εξάμηνο Παπάνα Αγγελική Μεταδιδακτορική ερευνήτρια, ΑΠΘ & Πανεπιστήμιο

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών 44 Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να κατανοήσουν τα βήματα που ακολουθούνται κατά την ανάπτυξη μιας εφαρμογής.

Διαβάστε περισσότερα

Η μέθοδος Simplex. Χρήστος Γκόγκος. Χειμερινό Εξάμηνο ΤΕΙ Ηπείρου

Η μέθοδος Simplex. Χρήστος Γκόγκος. Χειμερινό Εξάμηνο ΤΕΙ Ηπείρου Η μέθοδος Simplex Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 1 / 17 Η μέθοδος Simplex Simplex Είναι μια καθορισμένη σειρά επαναλαμβανόμενων υπολογισμών μέσω των οποίων ξεκινώντας από ένα αρχικό

Διαβάστε περισσότερα

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Οι αλγόριθμοι ταξινόμησης: Α. SelectoSort Ταξινόμηση με Επιλογή Β. IsertoSort Ταξινόμηση με Εισαγωγή Γ. MergeSort

Διαβάστε περισσότερα

Κουτσιούμπας Αχιλλέας U. Adamy, C. Ambuehl, R. Anand, T. Erlebach

Κουτσιούμπας Αχιλλέας U. Adamy, C. Ambuehl, R. Anand, T. Erlebach Κουτσιούμπας Αχιλλέας ΕΛΕΓΧΟΣ ΚΛΗΣΕΩΝ ΣΕ ΑΚΤΥΛΙΟ U. Adamy, C. Ambuehl, R. Anand, T. Erlebach ΜΠΛΑ 1 Δομή παρουσίασης Γενικά Ορισμός προβλήματος Σχετιζόμενη δουλειά Εισαγωγικά Αλγόριθμος Παράδειγμα εκτέλεσης

Διαβάστε περισσότερα

Μέθοδοι μονοδιάστατης ελαχιστοποίησης

Μέθοδοι μονοδιάστατης ελαχιστοποίησης Βασικές αρχές μεθόδων ελαχιστοποίησης Μέθοδοι μονοδιάστατης ελαχιστοποίησης Οι μέθοδοι ελαχιστοποίησης είναι επαναληπτικές. Ξεκινώντας από μια αρχική προσέγγιση του ελαχίστου (την συμβολίζουμε ) παράγουν

Διαβάστε περισσότερα

Ισότητα, Αλγεβρικές και Αναλυτικές Ιδιότητες Πραγματικών Ακολουθιών

Ισότητα, Αλγεβρικές και Αναλυτικές Ιδιότητες Πραγματικών Ακολουθιών Ισότητα, Αλγεβρικές και Αναλυτικές Ιδιότητες Πραγματικών Ακολουθιών Συμβολισμοί Σε αναλογία με τους ορισμούς συμβολίζουμε μια ακολουθία: 1 είτε μέσω του διανυσματικού ορισμού, παραθέτοντας αναγκαστικά

Διαβάστε περισσότερα

Α Ν Α Λ Τ Η Α Λ Γ Ο Ρ Ι Θ Μ Ω Ν Κ Ε Υ Α Λ Α Ι Ο 5. Πως υπολογίζεται ο χρόνος εκτέλεσης ενός αλγορίθμου;

Α Ν Α Λ Τ Η Α Λ Γ Ο Ρ Ι Θ Μ Ω Ν Κ Ε Υ Α Λ Α Ι Ο 5. Πως υπολογίζεται ο χρόνος εκτέλεσης ενός αλγορίθμου; 5.1 Επίδοση αλγορίθμων Μέχρι τώρα έχουμε γνωρίσει διάφορους αλγόριθμους (αναζήτησης, ταξινόμησης, κ.α.). Στο σημείο αυτό θα παρουσιάσουμε ένα τρόπο εκτίμησης της επίδοσης (performance) η της αποδοτικότητας

Διαβάστε περισσότερα

ΑΚΕΡΑΙΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ & ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ. Κεφάλαιο 3 Μορφοποίηση Προβλημάτων Ακέραιου Προγραμματισμού

ΑΚΕΡΑΙΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ & ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ. Κεφάλαιο 3 Μορφοποίηση Προβλημάτων Ακέραιου Προγραμματισμού ΑΚΕΡΑΙΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ & ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ Κεφάλαιο 3 Μορφοποίηση Προβλημάτων Ακέραιου Προγραμματισμού 1 Σχέση γραμμικού και ακέραιου προγραμματισμού Ενα πρόβλημα ακέραιου προγραμματισμού είναι

Διαβάστε περισσότερα

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

ΑΛΓΟΡΙΘΜΟΙ  Άνοιξη I. ΜΗΛΗΣ ΑΛΓΟΡΙΘΜΟΙ http://eclass.aueb.gr/courses/inf161/ Άνοιξη 2016 - I. ΜΗΛΗΣ ΔΥΝΑΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ 08 DP I 1 Dynamic Programming Richard Bellman (1953) Etymology (at

Διαβάστε περισσότερα

Σχεδίαση και Ανάλυση Αλγορίθμων

Σχεδίαση και Ανάλυση Αλγορίθμων Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 4.0 Επιλογή Αλγόριθμοι Επιλογής Select και Quick-Select Σταύρος Δ. Νικολόπουλος 2016-17 Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros

Διαβάστε περισσότερα

Αριθμητική Ανάλυση και Εφαρμογές

Αριθμητική Ανάλυση και Εφαρμογές Αριθμητική Ανάλυση και Εφαρμογές Διδάσκων: Δημήτριος Ι. Φωτιάδης Τμήμα Μηχανικών Επιστήμης Υλικών Ιωάννινα 07-08 Αριθμητική Ολοκλήρωση Εισαγωγή Έστω ότι η f είναι μία φραγμένη συνάρτηση στο πεπερασμένο

Διαβάστε περισσότερα

Μάθημα 20: Δυναμικός Προγραμματισμός (DP)

Μάθημα 20: Δυναμικός Προγραμματισμός (DP) Μάθημα 20: Δυναμικός Προγραμματισμός (DP) Γενικά Είναι μια γενική μεθοδολογία και δεν υπάρχει ένα πρότυπο διατύπωσης /επίλυσης προβλημάτων Αρχικά ξεκίνησε σαν μαθηματική μέθοδος για τη λήψη σειράς αλληλοσυνδεόμενων

Διαβάστε περισσότερα

4.4 Μετατροπή από μία μορφή δομής επανάληψης σε μία άλλη.

4.4 Μετατροπή από μία μορφή δομής επανάληψης σε μία άλλη. 4.4 Μετατροπή από μία μορφή δομής επανάληψης σε μία άλλη. Η μετατροπή μιας εντολής επανάληψης σε μία άλλη ή στις άλλες δύο εντολές επανάληψης, αποτελεί ένα θέμα που αρκετές φορές έχει εξεταστεί σε πανελλαδικό

Διαβάστε περισσότερα

Θεωρία Παιγνίων και Αποφάσεων. Ενότητα 5: Εύρεση σημείων ισορροπίας σε παίγνια μηδενικού αθροίσματος. Ε. Μαρκάκης. Επικ. Καθηγητής

Θεωρία Παιγνίων και Αποφάσεων. Ενότητα 5: Εύρεση σημείων ισορροπίας σε παίγνια μηδενικού αθροίσματος. Ε. Μαρκάκης. Επικ. Καθηγητής Θεωρία Παιγνίων και Αποφάσεων Ενότητα 5: Εύρεση σημείων ισορροπίας σε παίγνια μηδενικού αθροίσματος Ε. Μαρκάκης Επικ. Καθηγητής Περίληψη Παίγνια μηδενικού αθροίσματος PessimisIc play Αμιγείς max-min και

Διαβάστε περισσότερα

Ψευδοκώδικας. November 7, 2011

Ψευδοκώδικας. November 7, 2011 Ψευδοκώδικας November 7, 2011 Οι γλώσσες τύπου ψευδοκώδικα είναι ένας τρόπος περιγραφής αλγορίθμων. Δεν υπάρχει κανένας τυπικός ορισμός της έννοιας του ψευδοκώδικα όμως είναι κοινός τόπος ότι οποιαδήποτε

Διαβάστε περισσότερα

Ταξινόμηση κάδου και ταξινόμηση Ρίζας Bucket-Sort και Radix-Sort

Ταξινόμηση κάδου και ταξινόμηση Ρίζας Bucket-Sort και Radix-Sort Ταξινόμηση κάδου και ταξινόμηση Ρίζας Bucket-Sort και Radix-Sort 1, c 3, a 3, b 7, d 7, g 7, e B 0 1 3 4 5 6 7 8 9 1 BucketSort (Ταξινόμηση Κάδου) - Αρχικά θεωρείται ένα κριτήριο κατανομής με βάση το οποίο

Διαβάστε περισσότερα

Κατανεμημένα Συστήματα Ι

Κατανεμημένα Συστήματα Ι Κατανεμημένα Συστήματα Ι Παναγιώτα Παναγοπούλου 11η Διάλεξη 12 Ιανουαρίου 2017 1 Ανεξάρτητο σύνολο Δοθέντος ενός μη κατευθυνόμενου γραφήματος G = (V, E), ένα ανεξάρτητο σύνολο (independent set) είναι ένα

Διαβάστε περισσότερα

ΕΠΙΛΥΣΗ ΕΚΦΥΛΙΣΜΕΝΩΝ ΚΑΙ ΓΕΝΙΚΩΝ ΓΡΑΜΜΙΚΩΝ ΠΡΟΒΛΗΜΑΤΩΝ. 4.1 Επίλυση Εκφυλισμένων Γραμμικών Προβλημάτων

ΕΠΙΛΥΣΗ ΕΚΦΥΛΙΣΜΕΝΩΝ ΚΑΙ ΓΕΝΙΚΩΝ ΓΡΑΜΜΙΚΩΝ ΠΡΟΒΛΗΜΑΤΩΝ. 4.1 Επίλυση Εκφυλισμένων Γραμμικών Προβλημάτων ΚΕΦΑΛΑΙΟ 4 ΕΠΙΛΥΣΗ ΕΚΦΥΛΙΣΜΕΝΩΝ ΚΑΙ ΓΕΝΙΚΩΝ ΓΡΑΜΜΙΚΩΝ ΠΡΟΒΛΗΜΑΤΩΝ 4. Επίλυση Εκφυλισμένων Γραμμικών Προβλημάτων Η περιγραφή του ΔΑΣΕΣ στο προηγούμενο κεφάλαιο έγινε με σκοπό να διευκολυνθούν οι αποδείξεις

Διαβάστε περισσότερα

12. ΑΝΙΣΩΣΕΙΣ Α ΒΑΘΜΟΥ. είναι δύο παραστάσεις μιας μεταβλητής x πού παίρνει τιμές στο

12. ΑΝΙΣΩΣΕΙΣ Α ΒΑΘΜΟΥ. είναι δύο παραστάσεις μιας μεταβλητής x πού παίρνει τιμές στο ΓΕΝΙΚΑ ΠΕΡΙ ΑΝΙΣΩΣΕΩΝ Έστω f σύνολο Α, g Α ΒΑΘΜΟΥ είναι δύο παραστάσεις μιας μεταβλητής πού παίρνει τιμές στο Ανίσωση με έναν άγνωστο λέγεται κάθε σχέση της μορφής f f g g ή, η οποία αληθεύει για ορισμένες

Διαβάστε περισσότερα

ΕΡΓΑΣΙΑ ΣΤΟ ΜΑΘΗΜΑ Λ03Β ΑΛΓΟΡΙΘΜΟΙ ΔΙΚΤΥΩΝ & ΠΟΛΥΠΛΟΚΟΤΗΤΑ ΦΛΕΒΑΡΗΣ 2004

ΕΡΓΑΣΙΑ ΣΤΟ ΜΑΘΗΜΑ Λ03Β ΑΛΓΟΡΙΘΜΟΙ ΔΙΚΤΥΩΝ & ΠΟΛΥΠΛΟΚΟΤΗΤΑ ΦΛΕΒΑΡΗΣ 2004 ΕΡΓΑΣΙΑ ΣΤΟ ΜΑΘΗΜΑ Λ03Β ΑΛΓΟΡΙΘΜΟΙ ΔΙΚΤΥΩΝ & ΠΟΛΥΠΛΟΚΟΤΗΤΑ ΦΛΕΒΑΡΗΣ 2004 Παρουσίαση του paper: Increasing the Weight of Minimum Spanning Trees Greg N. Frederickson and Roberto Solis- Oba Journal of Algorithms

Διαβάστε περισσότερα

Χρήστος Ι. Σχοινάς Αν. Καθηγητής ΔΠΘ. Συμπληρωματικές σημειώσεις για το μάθημα: «Επιχειρησιακή Έρευνα ΙΙ»

Χρήστος Ι. Σχοινάς Αν. Καθηγητής ΔΠΘ. Συμπληρωματικές σημειώσεις για το μάθημα: «Επιχειρησιακή Έρευνα ΙΙ» Χρήστος Ι. Σχοινάς Αν. Καθηγητής ΔΠΘ Συμπληρωματικές σημειώσεις για το μάθημα: «Επιχειρησιακή Έρευνα ΙΙ» 2 ΔΥΝΑΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Προβλήματα ελάχιστης συνεκτικότητας δικτύου Το πρόβλημα της ελάχιστης

Διαβάστε περισσότερα

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η Μονοδιάστατοι Πίνακες Τι είναι ο πίνακας γενικά : Πίνακας είναι μια Στατική Δομή Δεδομένων. Δηλαδή συνεχόμενες θέσεις μνήμης, όπου το πλήθος των θέσεων είναι συγκεκριμένο. Στις θέσεις αυτές καταχωρούμε

Διαβάστε περισσότερα

W i. Subset Sum Μια παραλλαγή του προβλήματος knapsack είναι το πρόβλημα Subset Sum, το οποίο δεν λαμβάνει υπόψιν την αξία των αντικειμένων:

W i. Subset Sum Μια παραλλαγή του προβλήματος knapsack είναι το πρόβλημα Subset Sum, το οποίο δεν λαμβάνει υπόψιν την αξία των αντικειμένων: 6/4/2017 Μετά την πρόταση των ασύρματων πρωτοκόλλων από τους Diffie-Hellman το 1976, το 1978 προτάθηκε ένα πρωτόκολλο από τους Merkle-Hellman το οποίο βασίστηκε στο ότι δεν μπορούμε να λύσουμε γρήγορα

Διαβάστε περισσότερα

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΛΓΟΡΙΘΜΩΝ ΒΟΗΘΟΣ: ΒΑΓΓΕΛΗΣ ΔΟΥΡΟΣ

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΛΓΟΡΙΘΜΩΝ ΒΟΗΘΟΣ: ΒΑΓΓΕΛΗΣ ΔΟΥΡΟΣ 1 ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΛΓΟΡΙΘΜΩΝ ΒΟΗΘΟΣ: ΒΑΓΓΕΛΗΣ ΔΟΥΡΟΣ Φροντιστήριο #10: Αλγόριθμοι Διαίρει & Βασίλευε: Master Theorem, Αλγόριθμοι Ταξινόμησης, Πιθανοτικός

Διαβάστε περισσότερα