264 δευτερόλεπτα, δηλ. 600.000.000 χιλιετίες Πανεπιστήμιο Αιγαίου Τμήμα Μηχ/κών Σχεδίασης Προϊόντων & Συστημάτων 7052: Αλγόριθμοι & Δομές Δεδομένων 4ο έτος Δευτέρα, 3 Απριλίου 2017 Το Τέλος του Κόσμου… 3/4/2017 … θα έλθει όταν οι βουδιστές μοναχοί μετακινήσουν τους 64 δίσκους σε άλλο πύργο Mετακινούν 1 δίσκο το δευτερόλεπτο 264 δευτερόλεπτα, δηλ. 600.000.000 χιλιετίες Ιωάννης Γαβιώτης gaviotis@aegean.gr http://www.syros.aegean.gr/users/gaviotis/add
Οι τρεις πύργοι του Ανόϊ με 4 δίσκους (…3 δίσκοι στο temp..) 1 2 Από Ελένη Ρομέο (13 ετών). 3 4 A:start B:temp C:finish
Πύργοι του Ανόι Δοκιμή void hanoi (n, start,finish,temp){ Πανεπιστήμιο Αιγαίου Τμήμα Μηχ/κών Σχεδίασης Προϊόντων & Συστημάτων 7052: Αλγόριθμοι & Δομές Δεδομένων 4ο έτος Δευτέρα, 3 Απριλίου 2017 Πύργοι του Ανόι 3/4/2017 void hanoi (n, start,finish,temp){ ‘ Μετακινεί n δίσκους από το στύλο start στο ‘ finish,χρησιμοποιώντας τον temp ως ενδιάμεσο if (n > 0){ hanoi (n-1,start,temp,finish) ‘1 print(“από ”+start +“ βάλε στο “+ finish) ‘2 hanoi (n-1,temp,finish,start) ‘3 } The Tower of Hanoi is a children’s game based on a legend that traces to India. The game involves a stack of disks and three posts on which they can be stacked. The objective is to move the stack from the first post to the third. There are only three rules to the game. Only one disk may be moved at a time, a larger disk can never be placed on top of a smaller disk, and a disk may never be placed anywhere except on one of the posts. There are two possible opening moves. Disk one either moves to post two or to post three. Which move is correct is unknown. However, there is one critical move that is known at the beginning of the game. At some point the largest disk must move from post one to post three. For this to happen all other disks must be sitting in order on post two. Δοκιμή 1 3 2 start temp finish Ιωάννης Γαβιώτης gaviotis@aegean.gr http://www.syros.aegean.gr/users/gaviotis/add
Αναδρομή Ένα πρόβλημα μπορεί να επιλυθεί αναδρομικά όταν: Πανεπιστήμιο Αιγαίου Τμήμα Μηχ/κών Σχεδίασης Προϊόντων & Συστημάτων 7052: Αλγόριθμοι & Δομές Δεδομένων 4ο έτος Δευτέρα, 3 Απριλίου 2017 Αναδρομή 3/4/2017 Ένα πρόβλημα μπορεί να επιλυθεί αναδρομικά όταν: είναι γνωστό το τελικό βήμα, και το πρώτο βήμα της γενικής λύσης του προβλήματος οδηγεί στο αρχικό πρόβλημα, αλλά λίγο πιο κοντά στο τελικό βήμα. Υλοποίηση σε γλώσσες προγραμματισμού Υπορουτίνα που στο σώμα της καλεί τον εαυτό της. Παράδειγμα: το n παραγοντικό. Αναγνωρίστε το τελικό βήμα και το «πλησίασμα» στο τελικό βήμα. Στη Java χρησιμοποιώντας int, φτάνει μέχρι n=16. Με long, n=39 . Ερευνήστε για την κλάση BigInteger. Παράδειγμα: το ν παραγοντικό. Αναγνωρίστε το τελικό βήμα και το «πλησίασμα» στο τελικό βήμα. Στη Java χρησιμοποιώντας int, φτάνει μέχει n=16. Με long, n=39 . Ερευνήστε για την κλάση BigInteger. Ιωάννης Γαβιώτης gaviotis@aegean.gr http://www.syros.aegean.gr/users/gaviotis/add