Πξνγξακκαηηζκόο Ι (ΗΥ120)

Σχετικά έγγραφα
Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120)

Οι πύργοι του Hanoi ίνεται ένα χώρος µε τρείς θέσεις αποθήκευσης. ίνεται µια στοίβα από Ν πλάκες σε φθίνων µέγεθος, σε µια από τις τρείς θέσεις. Ζητού

Αναδροµή. Προγραµµατισµός Ι 1

Απαντήσεις θέματος 2. Παξαθάησ αθνινπζεί αλαιπηηθή επίιπζε ησλ εξσηεκάησλ.

ΓΗΑΓΩΝΗΣΜΑ ΣΤΑ ΜΑΘΖΜΑΤΗΚΑ. Ύλη: Μιγαδικοί-Σσναρηήζεις-Παράγωγοι Θεη.-Τετν. Καη Εήηημα 1 ο :

iii. iv. γηα ηελ νπνία ηζρύνπλ: f (1) 2 θαη

Αζκήζεις ζτ.βιβλίοσ ζελίδας 13 14

Ενδεικτικά Θέματα Στατιστικής ΙΙ

x-1 x (x-1) x 5x 2. Να απινπνηεζνύλ ηα θιάζκαηα, έηζη ώζηε λα κελ ππάξρνπλ ξηδηθά ζηνπο 22, 55, 15, 42, 93, 10 5, 12

ΚΕΦ. 2.3 ΑΠΟΛΤΣΗ ΣΘΜΗ ΠΡΑΓΜΑΣΘΚΟΤ ΑΡΘΘΜΟΤ

Κεθάιαην 20. Ελαχιστοποίηση του κόστους

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΣΙΚΗ ΚΤΣΑΛΟΓΡΟΜΙΑ 2007 ΓΙΑ ΣΟ ΓΤΜΝΑΙΟ Παπασκευή 26 Ιανουαπίου 2007 Σάξη: Α Γυμνασίου ΥΟΛΕΙΟ..

ΟΠΤΙΚΗ Α. ΑΝΑΚΛΑΣΖ - ΓΗΑΘΛΑΣΖ

ΑΝΤΗΛΙΑΚΑ. Η Μηκή ζθέθηεθε έλαλ ηξόπν, γηα λα ζπγθξίλεη κεξηθά δηαθνξεηηθά αληειηαθά πξντόληα. Απηή θαη ν Νηίλνο ζπλέιεμαλ ηα αθόινπζα πιηθά:

B-Δέλδξα. Τα B-δέλδξα ρξεζηκνπνηνύληαη γηα ηε αλαπαξάζηαζε πνιύ κεγάισλ ιεμηθώλ πνπ είλαη απνζεθεπκέλα ζην δίζθν.

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΣΙΚΗ ΚΤΣΑΛΟΓΡΟΜΙΑ 2007 ΓΙΑ ΣΟ ΓΤΜΝΑΙΟ Παπασκευή 26 Ιανουαπίου 2007 Σάξη: Α Γυμνασίου ΥΟΛΕΙΟ..

ΑΠΛΟΠΟΙΗΗ ΛΟΓΙΚΩΝ ΤΝΑΡΣΗΕΩΝ ΜΕ ΠΙΝΑΚΕ KARNAUGH

ΑΠΑΝΤΗΣΔΙΣ ΓΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ II ΔΠΑΛ

ΘΔΜΑ 1 ο Μονάδες 5,10,10

Α. Εηζαγσγή ηεο έλλνηαο ηεο ηξηγσλνκεηξηθήο εμίζσζεο κε αξρηθό παξάδεηγκα ηελ εκx = 2

H ΜΑΓΕΙΑ ΤΩΝ ΑΡΙΘΜΩΝ

Απνηειέζκαηα Εξσηεκαηνινγίνπ 2o ηεηξάκελν

Έλαο πίνακας σσμβόλων ππνζηεξίδεη δύν βαζηθέο ιεηηνπξγίεο:

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΤΙΚΗ ΣΚΥΤΑΛΟΓΡΟΜΙΑ 2015 ΓΙΑ ΤΟ ΓΥΜΝΑΣΙΟ Τεηάπηη 28 Ιανουαπίου 2015 ΛΔΥΚΩΣΙΑ Τάξη: Α Γυμναζίου

Κευάλαιο 8 Μονοπωλιακή Συμπεριφορά- Πολλαπλή Τιμολόγηση

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΔΣΑΙΡΔΙΑ ΠΑΓΚΤΠΡΙΟ ΓΙΑΓΩΝΙ ΜΟ

ΔΦΑΡΜΟΜΔΝΑ ΜΑΘΗΜΑΣΙΚΑ ΣΗ ΧΗΜΔΙΑ Ι ΘΔΜΑΣΑ Α επηέκβξηνο Να ππνινγηζηνύλ νη κεξηθέο παξάγσγνη πξώηεο ηάμεο ηεο ζπλάξηεζεο f(x,y) =

Μονοψϊνιο. Αγνξά κε ιίγνπο αγνξαζηέο. Δύναμη μονοψωνίος Η ηθαλόηεηα πνπ έρεη ν αγνξαζηήο λα επεξεάζεη ηελ ηηκή ηνπ αγαζνύ.

ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ. Οξηδόληηα θαη θαηαθόξπθε κεηαηόπηζε παξαβνιήο

Γοκή επαλάιευες Δληοιές Όζο & Μέτρης_όηοσ

ΔΝΓΔΙΚΤΙΚΔΣ ΛΥΣΔΙΣ ΣΤΑ ΜΑΘΗΜΑΤΙΚΑ ΚΑΤΔΥΘΥΝΣΗΣ Γ ΛΥΚΔΙΟΥ ΓΔΥΤΔΡΑ 27 ΜΑΪΟΥ 2013

Να ζρεδηάζεηο ηξόπνπο ζύλδεζεο κηαο κπαηαξίαο θαη ελόο ιακπηήξα ώζηε ν ιακπηήξαο λα θσηνβνιεί.

Βάσεις Δεδομέμωμ. Εξγαζηήξην V. Τκήκα Πιεξνθνξηθήο ΑΠΘ

ΔΝΓΔΙΚΣΙΚΔ ΛΤΔΙ ΣΑ ΜΑΘΗΜΑΣΙΚΑ ΠΡΟΑΝΑΣΟΛΙΜΟΤ 2017

ΕΞΙΣΩΣΕΙΣ. (iv) (ii) (ii) (ii) 5. Γηα ηηο δηάθνξεο ηηκέο ηνπ ι λα ιπζνύλ νη εμηζώζεηο : x 6 3 9x

Επωηήζειρ Σωζηού Λάθοςρ ηων πανελλαδικών εξεηάζεων Σςναπηήζειρ

Constructors and Destructors in C++

Αιγόξηζκνη Γνκή επηινγήο. Πνιιαπιή Δπηινγή Δκθωιεπκέλεο Δπηινγέο. Δηζαγωγή ζηηο Αξρέο ηεο Δπηζηήκεο ηωλ Η/Υ. introcsprinciples.wordpress.

(Ενδεικηικές Απανηήζεις) ΘΔΜΑ Α. Α1. Βιέπε απόδεημε Σει. 262, ζρνιηθνύ βηβιίνπ. Α2. Βιέπε νξηζκό Σει. 141, ζρνιηθνύ βηβιίνπ

ΠΑΝΔΛΛΑΓΗΚΔ ΔΞΔΣΑΔΗ Γ ΣΑΞΖ ΖΜΔΡΖΗΟΤ ΓΔΝΗΚΟΤ ΛΤΚΔΗΟΤ Γευηέρα 11 Ηουνίου 2018 ΔΞΔΣΑΕΟΜΔΝΟ ΜΑΘΖΜΑ: ΜΑΘΖΜΑΣΗΚΑ ΠΡΟΑΝΑΣΟΛΗΜΟΤ. (Ενδεικηικές Απανηήζεις)

Η/Υ A ΤΑΞΕΩΣ ΑΕ Συστήματα Αρίθμησης. Υποπλοίαρχος Ν. Πετράκος ΠΝ

Άμεσοι Αλγόριθμοι: Προσπέλαση Λίστας (list access)

TOOLBOOK (μάθημα 2) Δεκηνπξγία βηβιίνπ θαη ζειίδσλ ΠΡΟΑΡΜΟΓΗ: ΒΑΛΚΑΝΙΩΣΗ ΔΗΜ. ΕΚΠΑΙΔΕΤΣΙΚΟ ΠΕ19 1 TOOLBOOK ΜΑΘΗΜΑ 2

ΔΕΟ 13. Ποσοτικές Μέθοδοι. θαη λα ππνινγίζεηε ην θόζηνο γηα παξαγόκελα πξντόληα. Να ζρεδηαζηεί γηα εύξνο πξντόλησλ έσο

Κεθάλαιο 7. Πξνζθνξά ηνπ θιάδνπ Μ. ΨΥΛΛΑΚΗ

Αζθήζεηο 5 νπ θεθαιαίνπ Crash course Step by step training. Dipl.Biol.cand.med. Stylianos Kalaitzis

Παιχνίδι γλωζζικής καηανόηζης με ζχήμαηα!

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

ΗΥ-150 Πξνγξακκατησκόο Ταμηλόκεσε θαη Αλαδήτεσε

ΣΕΙ Δυτικήσ Μακεδονίασ, Παράρτημα Καςτοριάσ Τμήμα Πληροφορικήσ και Τεχνολογίασ Υπολογιςτών

Σήκαηα Β Α Γ Γ Δ Λ Η Σ Ο Ι Κ Ο Ν Ο Μ Ο Υ Γ Ι Α Λ Δ Ξ Η - ( 2 ) ΕΙΣΑΓΨΓΗ ΣΤΙΣ ΤΗΛΕΠΙΚΟΙΝΨΝΙΕΣ

ΣΥΣΤΗΜΑΤΑ ΑΛΓΕΒΡΑ Α ΛΥΚΕΙΟΥ. 1. Να ιπζνύλ ηα ζπζηήκαηα. 1 0,3x 0,1y x 3 3x 4y 2 4x 2y ( x 1) 6( y 1) (i) (ii)

ΔΠΙΣΡΟΠΗ ΓΙΑΓΩΝΙΜΩΝ 74 ος ΠΑΝΔΛΛΗΝΙΟ ΜΑΘΗΣΙΚΟ ΓΙΑΓΩΝΙΜΟ ΣΑ ΜΑΘΗΜΑΣΙΚΑ Ο ΘΑΛΗ 19 Οκηωβρίοσ Δνδεικηικές λύζεις

ΠΑΡΑΡΣΗΜΑ Δ. ΔΤΡΔΗ ΣΟΤ ΜΔΣΑΥΗΜΑΣΙΜΟΤ FOURIER ΓΙΑΦΟΡΩΝ ΗΜΑΣΩΝ

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

Δξγαιεία Καηαζθεπέο 1 Σάμε Σ Δ.Κ.Φ.Δ. ΥΑΝΙΧΝ ΠΡΧΣΟΒΑΘΜΙΑ ΔΚΠΑΙΓΔΤΗ. ΔΝΟΣΗΣΑ 11 ε : ΦΧ ΔΡΓΑΛΔΙΑ ΚΑΣΑΚΔΤΔ. Καηαζθεπή 1: Φαθόο κε ζσιήλα.

ΚΔΦ. 2.4 ΡΗΕΔ ΠΡΑΓΜΑΣΗΚΩΝ ΑΡΗΘΜΩΝ

ΛΙΜΝΗ ΤΣΑΝΤ. Σρήκα 1. Σρήκα 2

Διάρηζηα Δπηθαιύπηνληα Γέλδξα

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΔΣΑΙΡΔΙΑ ΠΑΓΚΤΠΡΙΟ ΓΙΑΓΩΝΙΜΟ Α ΛΤΚΔΙΟΤ. Ημεπομηνία: 10/12/11 Ώπα εξέτασηρ: 09:30-12:30 ΠΡΟΣΔΙΝΟΜΔΝΔ ΛΤΔΙ

Κβαντικοί Υπολογισμοί. Πέκπηε Γηάιεμε

Δξγαζηεξηαθή άζθεζε 03. Σηεξενγξαθηθή πξνβνιή ζην δίθηπν Wulf

3ο Δπαναληπηικό διαγώνιζμα ζηα Μαθημαηικά καηεύθσνζης ηης Γ Λσκείοσ Θέμα A Α1. Έζησ f κηα ζπλερήο ζπλάξηεζε ζ έλα δηάζηεκα

Πολυεπίπεδα/Διασυμδεδεμέμα Δίκτυα

ΜΑΘΗΜΑΣΑ ΦΩΣΟΓΡΑΦΙΑ. Ειζαγωγή ζηη Φωηογραθία. Χριζηάκης Σαζεΐδης EFIAP

ΠΛΗ36. Άσκηση 1. Άσκηση 2. Οη δηεπζύλζεηο ησλ 4 σλ ππνδηθηύσλ είλαη νη αθόινπζεο. Υπνδίθηπν Α: /27 Υπνδίθηπν Β:

Ππογπαμμαηιζμόρ Ι (ΗΥ120)

Άσκηση 1 - Μοπυοποίηση Κειμένου

ΓΔΧΜΔΣΡΙΑ ΓΙΑ ΟΛΤΜΠΙΑΓΔ

ΜΑΘΗΜΑΣΑ ΦΩΣΟΓΡΑΦΙΑ. Εισαγωγή στη Φωτογραυία. Χριζηάκης Σαζεΐδης - EFIAP

f '(x)g(x)h(x) g'(x)f (x)h(x) h'(x) f (x)g(x)

Κόληξα πιαθέ ζαιάζζεο κε δηαζηάζεηο 40Υ40 εθ. Καξθηά 3 θηιά πεξίπνπ κε κήθνο ηξηπιάζην από ην πάρνο ηνπ μύινπ θπξί κεγάιν θαη ππνκνλή

ΜΕΛΕΣΗ E.O.K. ΜΕ ΑΙΘΗΣΗΡΑ ΘΕΗ

Αντισταθμιστική ανάλυση

ΦΥΣΙΚΗ ΤΩΝ ΡΕΥΣΤΩΝ. G. Mitsou

Γ ΣΑΞΖ ΔΝΗΑΗΟΤ ΛΤΚΔΗΟΤ ΔΞΔΣΑΕΟΜΔΝΟ ΜΑΘΖΜΑ: ΜΑΘΖΜΑΣΗΚΑ ΘΔΣΗΚΩΝ ΚΑΗ ΟΗΚΟΝΟΜΗΚΩΝ ΠΟΤΓΩΝ ΤΝΑΡΣΖΔΗ ΟΡΗΑ ΤΝΔΥΔΗΑ (έως Θ.Bolzano) ΘΔΜΑ Α

Δπηιέγνληαο ην «Πξνεπηινγή» θάζε θνξά πνπ ζα ζπλδέεζηε ζηελ εθαξκνγή ζα βξίζθεζηε ζηε λέα ρξήζε.

Q Η ζσνάρηηζη μέζοσ κόζηοσς μας δίνει ηο κόζηος ανά μονάδα παραγωγής. Q Η ζσνάρηηζη μέζοσ κόζηοσς μας δίνει ηο ζηαθερό κόζηος ανά μονάδα παραγωγής

ΠΑΝΔΛΛΑΓΗΚΔ ΔΞΔΣΑΔΗ Γ ΣΑΞΖ ΖΜΔΡΖΗΟΤ ΓΔΝΗΚΟΤ ΛΤΚΔΗΟΤ ΚΑΗ ΔΠΑΛ ΣΔΣΑΡΣΖ 25 ΜΑΨΟΤ 2016 ΔΞΔΣΑΕΟΜΔΝΟ ΜΑΘΖΜΑ: ΑΡΥΔ ΟΗΚΟΝΟΜΗΚΖ ΘΔΧΡΗΑ ΠΡΟΑΝΑΣΟΛΗΜΟΤ - ΔΠΗΛΟΓΖ

α) ηε κεηαηόπηζε x όηαλ ην ζώκα έρεη κέγηζην ξπζκό κεηαβνιήο ζέζεο δ) ην κέγηζην ξπζκό κεηαβνιήο ηεο ηαρύηεηαο

Σύνθεζη ηαλανηώζεων. Έζησ έλα ζώκα πνπ εθηειεί ηαπηόρξνλα δύν αξκνληθέο ηαιαληώζεηο ηεο ίδηαο ζπρλόηεηαο πνπ πεξηγξάθνληαη από ηηο παξαθάησ εμηζώζεηο:

ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 4 ΣΥΝΔΥΑΣΤΙΚΑ ΚΥΚΛΩΜΑΤΑ

ΠΑΝΔΛΛΑΓΗΚΔ ΔΞΔΣΑΔΗ Γ ΖΜΔΡΖΗΟΤ ΓΔΝΗΚΟΤ ΛΤΚΔΗΟΤ Γεσηέρα 10 Ηοσνίοσ 2019 ΔΞΔΣΑΕΟΜΔΝΟ ΜΑΘΖΜΑ: ΜΑΘΖΜΑΣΗΚΑ ΠΡΟΑΝΑΣΟΛΗΜΟΤ. (Ενδεικηικές Απανηήζεις)

ΘΔΚΑ ΡΖΠ ΑΛΑΓΛΩΟΗΠΖΠ

Image J Plugin particle tracker για παρακολούθηση της κίνησης σωματιδίων

Δξγαιεία Καηαζθεπέο 1 Σάμε Δ Δ.Κ.Φ.Δ. ΥΑΝΗΩΝ ΠΡΩΣΟΒΑΘΜΗΑ ΔΚΠΑΗΓΔΤΖ. ΔΝΟΣΖΣΑ 2 ε : ΤΛΗΚΑ ΩΜΑΣΑ ΔΡΓΑΛΔΗΑ ΚΑΣΑΚΔΤΔ. Καηαζθεπή 1: Ογθνκεηξηθό δνρείν

ΡΤΘΜΙΕΙ ΔΙΚΣΤΟΤ ΣΑ WINDOWS

ΔΙΑΓΩΝΙΣΜΑ ΣΤΗ ΦΥΣΙΚΗ. Ύλη: Εσθύγραμμη Κίνηζη

Άζκηζη ζτέζης κόζηοσς-τρόνοσ (Cost Time trade off) Καηαζκεσαζηική ΑΔ

ΧΩΡΙΚΕΣ ΣΧΕΣΕΙΣ ΚΑΙ ΓΕΩΜΕΤΡΙΚΕΣ ΕΝΝΟΙΕΣ

ΑΛΛΑΓΗ ΟΝΟΜΑΣΟ ΚΑΙ ΟΜΑΔΑ ΕΡΓΑΙΑ, ΚΟΙΝΟΥΡΗΣΟΙ ΦΑΚΕΛΟΙ ΚΑΙ ΕΚΣΤΠΩΣΕ ΣΑ WINDOWS XP

Φςζική Πποζαναηολιζμού Γ Λςκείος. Αζκήζειρ Ταλανηώζειρ 1 ο Φςλλάδιο

γηα ηνλ Άξε Κσλζηαληηλίδε

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΛΟΠΟΝΝΗΣΟΥ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΦΝΟΛΟΓΙΑΣ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ Μάθημα: Πιθανόηηηες και Σηαηιζηική Διδάζκων: Σ. Γ.

Δυναμικοί πίνακες. Πνιιέο δνκέο δεδνκέλσλ πινπνηνύληαη κε ρξήζε πηλάθσλ. π.ρ. Σηνίβεο. α β γ δ. tail. head % N. Οπξέο Ν-1. θάησ όξην.

x x x x tan(2 x) x 2 2x x 1

ΕΞΙΣΩΣΕΙΣ. Α. Πρωτοβάθμιεσ Εξιςώςεισ. Β. Διερεφνηςη Εξιςώςεων. 1x είναι αδφνατθ. x 1 x 1. Άλγεβρα Α Λυκείου

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης

Transcript:

Πξνγξακκαηηζκόο Ι (ΗΥ120) Γηάιεμε 18: Λύζε Πξνβιεκάησλ κε Αλαδξνκή

Οη πύξγνη ηνπ Hanoi Γίλεηαη έλα ρώξνο κε ηξείο ζέζεηο απνζήθεπζεο. Γίλεηαη κηα ζηνίβα από Ν πιάθεο ζε θζίλσλ κέγεζνο, ζε κηα από ηηο ηξείο ζέζεηο. Εεηνύκελν: κεηαθίλεζε ηελ ζηνίβα ζε κηα άιιε ζέζε ρσξίο πνηέ λα βάιεηο κηα κεγαιύηεξε πιάθα πάλσ από κηα κηθξόηεξε πιάθα. 2 Α Β Γ

Λύζε κε 1 πιάθα 3 Α Β Γ

Λύζε κε 2 πιάθεο 4 Α Β Γ

Λύζε κε 2 πιάθεο 5 Α Β Γ

Λύζε κε 2 πιάθεο 6 Α Β Γ

Λύζε κε 2 πιάθεο 7 Α Β Γ

Λύζε κε 2 πιάθεο 8 Α Β Γ

Λύζε γηα Ν πιάθεο Θεσξνύκε όηη νη κηθξόηεξεο Ν-1 πιάθεο είλαη κηα πιάθα, ε κεηαθίλεζε ηεο νπνίαο κπνξεί λα γίλεη πιένλ αλαδξνκηθά (Ν-1 πιάθεο πξέπεη λα κεηαθηλεζνύλ από κηα ζέζε ζε κηα άιιε κέζσ κηαο ηξίηεο). 9 Α Β Γ

Μνληεινπνίεζε ηεο ιύζεο Μεηαθίλεζε Ν πιάθεο από ηελ ζέζε Α κέζσ ηεο ζέζεο Β ζηελ ζέζε Γ: Απιή πεξίπησζε: αλ Ν==1 ηόηε κεηαθέξνπκε ηελ πιάθα από ηελ ζέζε Α απ επζείαο ζηελ ζέζε Γ. Πνιύπινθε πεξίπησζε: αλ Ν>1, ηόηε (α) κεηαθέξνπκε ηηο πάλσ Ν-1 πιάθεο από ηελ ζέζε Α κέζσ ηεο ζέζεο Γ ζηελ ζέζε Β, (β) κεηαθέξνπκε ηελ (κηα) πιάθα πνπ απέκεηλε από ηελ ζέζε Α απ επζείαο ζηελ ζέζε Γ, θαη (γ) κεηαθέξνπκε ηηο Ν-1 πιάθεο από ηελ ζέζε Β κέζσ ηεο ζέζεο Α ζηελ ζέζε Γ. 10

11 void movetower(int from, int through, int to, int n) { if (n==1) { movepiece(from,to); else { movetower(from,to,through,n-1); movepiece(from,to); movetower(through,from,to,n-1);

Σρεδίαζε αλαδξνκηθώλ ζρεκάησλ Ζ draw_cross(int x, int y, int len) δσγξαθίδεη έλα ζηαπξό, κε θέληξν ην ζεκείν (x,y) θαη κήθνο 2*len. 12 len x y

Σρεδίαζε αλαδξνκηθώλ ζρεκάησλ Εεηνύκελν: πινπνηήζηε κηα ζπλάξηεζε πνπ ζρεδηάδεη ηα εμήο ζρήκαηα κε βάζε ηηο αθέξαηεο παξακέηξνπο x, y, len θαη level. level=1 level=2 level=3 13 len len len len x,y len x,y len x,y

Σρεδίαζε αλαδξνκηθώλ ζρεκάησλ Παξαηήξεζε: ην ίδην ζρέδην επαλαιακβάλεηαη ζε κηθξόηεξε θιίκαθα ζε όια ηα ηεηαξηεκόξηα ηνπ ζρεδίνπ ηεο ακέζσο κεγαιύηεξεο θιίκαθαο. level=1 level=2 level=3 14

void draw_grid(int x, int y, int len, int level) { if (level==1) { draw_cross(x,y,len); else { draw_cross(x,y,len); draw_drid(x-len/2,y+len/2,len/2,level-1); draw_grid(x-len/2,y-len/2,len/2,level-1); draw_grid(x+len/2,y-len/2,len/2,level-1); draw_grid(x+len/2,y+len/2,len/2,level-1); 15

Αλαδξνκή θαη επαλάιεςε Οη πεξηζζόηεξεο κνξθέο επαλάιεςεο κπνξεί λα εθθξαζηνύλ κε αλαδξνκή, αξθεί ε ζπλάξηεζε λα πεξλά ζηνλ εαπηό ηεο ηηο θαηάιιειεο παξακέηξνπο. Αληίζεηα, ππάξρνπλ αξθεηέο κνξθέο αλαδξνκήο πνπ είλαη δύζθνιν λα εθθξαζηνύλ κε επαλάιεςε. Τν θύξην πιενλέθηεκα ηεο αλαδξνκήο είλαη όηη ε ζπλάξηεζε θξαηά δπλακηθή ελδηάκεζε θαηάζηαζε κέζα από ηηο ηνπηθέο κεηαβιεηέο (πιαίζην εθηέιεζεο) θάζε (αιπζηδσηήο) αλαδξνκηθήο θιήζεο. Παξόκνην απνηέιεζκα κπνξεί λα επηηεπρζεί θαη κε ζπκβαηηθό ηξόπν, αιιά ε δηαρείξηζε ηεο θαηάζηαζεο πξέπεη λα γίλεη από ηνλ ίδην ηνλ πξνγξακκάηηζηή (ζπλήζσο ρξεζηκνπνηώληαο δπλακηθή κλήκε). 19

Σπλδπαζηηθά πξνβιήκαηα

Δπίιπζε ζπλδπαζηηθώλ πξνβιεκάησλ 21 Σπρλά έλα πξόβιεκα κπνξεί λα εθθξαζηεί σο κηα «αλαδήηεζε» ελόο επηηξεπηνύ ζπλδπαζκνύ θάπνησλ κεηαβιεηώλ κέζα από όινπο ηνπο δπλαηνύο ζπλδπαζκνύο πνπ κπνξεί λα γίλνπλ. Κάπνηεο θνξέο, ην δεηνύκελν είλαη λα βξεζεί ν βέιηηζηνο ζπλδπαζκόο, πνπ ειαρηζηνπνηεί ή κεγηζηνπνηεί θάπνηα ζπλάξηεζε ησλ κεηαβιεηώλ. Λύζε κε αλαδξνκή: 1. Καηαζθεπάδνπκε ην ζύλνιν ησλ ζπλδπαζκώλ αλαδξνκηθά (κε δηεμνδηθή «αλαδήηεζε» ζε βάζνο). 2. Διέγρνπκε θάζε ζπλδπαζκό γηα ην θαηά πόζν είλαη επηηξεπηόο ή/θαη θαιύηεξνο ζε ζρέζε κε ηνπο ζπλδπαζκνύο πνπ έρνπλ θαηαζθεπαζηεί / εμεηαζηεί.

Γέληξα ζπλδπαζκώλ θαη απνθάζεσλ Όινη νη δπλαηνί ζπλδπαζκνί (κεηαβιεηώλ) κπνξεί λα κνληεινπνηεζνύλ (αλαπαξαζηαζνύλ) σο έλα δέληξν. Κάζε θόκβνο ηνπ δέληξνπ ζε επίπεδν L αληηζηνηρεί ζε έλα ζπγθεθξηκέλν ζπλδπαζκό επηινγώλ (ηηκώλ) γηα L δηαθνξεηηθέο κεηαβιεηέο. Ξεθηλώληαο από έλα θόκβν ζε επίπεδν L, επηιέγνπκε ηελ επόκελε κεηαβιεηή, θαη γηα θάζε ηηκή πνπ απηή κπνξεί λα ιάβεη θαηαζθεπάζνπκε έλα θόκβν παηδί ζε επίπεδν L+1, θιπ. Έλαο θόκβνο απνηειεί «θύιιν» όηαλ δελ ππάξρνπλ άιιεο «ειεύζεξεο» κεηαβιεηέο όιεο έρνπλ ιάβεη ζπγθεθξηκέλεο ηηκέο. 22

(αναδρομική) παραγφγή όλφν ηφν δσναηών ζσνδσαζμών 23 έλεγτος για επιθσμηηούς ή βέληιζηοσς ζσνδσαζμούς δσναηοί ζσνδσαζμοί επιθσμηηοί ζσνδσαζμοί

Απνθπγή ηεο ζπλδπαζηηθήο έθξεμεο 24 Ο αξηζκόο ησλ κεηαβιεηώλ κπνξεί λα είλαη κεγάινο θαη νη πηζαλέο ηηκέο γηα θάζε κεηαβιεηή πνιιέο. Ζ παξαγσγή όισλ ησλ δπλαηώλ ζπλδπαζκώλ απαηηεί πόξνπο (κλήκε, ρξόλνο) κπνξεί λα είλαη πξαθηηθά αλέθηθηε (αθόκα θαη κε ηε ζεκεξηλή ηερλνινγία). Δπηπιένλ, νη πεξηζζόηεξνη από ηνπο ζπλδπαζκνύο πνπ παξάγνληαη «ζηα ηπθιά» είλαη θαηαδηθαζκέλνη εθ ησλ πξνηέξσλ (πνιύ πξηλ δεκηνπξγεζνύλ νη ηεξκαηηθνί θόκβνη «θύιια» ηνπ δέληξνπ) λα κελ επηιεγνύλ πνηέ σο επηζπκεηνί (ή βέιηηζηνη). Βειηηζηνπνίεζε: πξόσξνο απνθιεηζκόο νιόθιεξσλ ππνδέληξσλ από ηελ ξίδα ηνπο ρσξίο ππνινγηζκό ησλ αληίζηνηρσλ ζπλδπαζκώλ (branch and bound).

παραγφγή ηφν ζσνδσαζμών με αποκλεισμό όλφν ηφν «αδιάθορφν» σποδένηρφν 25 δεν παράγεηαι επιπλέον έλεγτος για επιθσμηηούς ή/και βέληιζηοσς ζσνδσαζμούς επιθσμηηοί ζσνδσαζμοί

Απιό παξάδεηγκα - 8 Queens Εεηνύκελν: λα βξεζεί ιύζε ζην εμήο πξόβιεκα: λα ηνπνζεηεζνύλ 8 ληάκεο ζε κηα ζθαθηέξα έηζη ώζηε λα κελ απεηινύληαη κεηαμύ ηνπο 26

Δληνπηζκόο ζύγθξνπζεο (col,row) ίδια κολώνα: col==col διαγώνιος 1: col+row==col +row 27 ίδια γραμμή: row==row (0,0) διαγώνιος 2: col-row==col -row int check(int col1,int row1,int col2,int row2) { return((col1!=col2) && (row1!=row2) && (col1+row1!=col2+row2) && (col1-row1!=col2-row2));

Γύν πξνζεγγίζεηο Πξνζέγγηζε 1 (brute force): 1. Γεκηνπξγνύκε όινπο ηνπο ζπλδπαζκνύο ζέζεσλ. 2. Γηαγξάθνπκε ηνπο ζπλδπαζκνύο όπνπ δύν ή πεξηζζόηεξεο ληάκεο απεηινύλ ε κηα ηελ άιιε. 3. Οη ζπλδπαζκνί πνπ απνκέλνπλ είλαη απνδεθηνί. Πξνζέγγηζε 2 (branch and bound - b&b): 1. Γηα θάζε λέα ληάκα πνπ ηνπνζεηνύκε, ειέγρνπκε πξνθαηαβνιηθά θαηά πόζν απεηιεί κηα από ηηο ληάκεο πνπ έρνπλ ήδε ηνπνζεηεζεί ζηε ζθαθηέξα. 2. Σε απηή ηε πεξίπησζε, ηεξκαηίδνπκε ηελ αλαδξνκή (όινη νη πεξαηηέξσ ζπλδπαζκνί είλαη κε απνδεθηνί). 3. Οη ζπλδπαζκνί πνπ κέλνπλ είλαη νη επηζπκεηνί. 28

αριθμός ζηήλης για ηις νηάμες 0<=i<n ποσ έτοσν ηοποθεηηθεί μέτρι ζηιγμής αριθμός γραμμής για ηις νηάμες 0<=i<n ποσ έτοσν ηοποθεηηθεί μέτρι ζηιγμής 29 void putnxtqueen(int cols[], int rows[], int n, int M) { αριθμός επόμενης νηάμας προς ηοποθέηηζη ηελικός αριθμός από νηάμες προς ηοποθέηηζη /* κλήση */ #define Μ 8 int main (int argc, char *argv[]) { int cols[μ],rows[μ]; putnxtqueen(cols,rows,0,μ); return(0);

Πξνζέγγηζε 1 (έιεγρνο ζην ηέινο) void putnxtqueen(int cols[], int rows[], int n, int M) { int i,j; (άζκοπη) δημιοσργία όλφν ηφν ζσνδσαζμών (θύλλφν ηοσ δένηροσ) if (n<m) { for (i=0; i<m; i++) { for (j=0; j<m; j++) { cols[n]=j; rows[n]=i; putnxtqueen(cols,rows,n+1,m); απόρριυη ζσνδσαζμού (θύλλοσ) αν σπάρτει κάποια ζύγκροσζη else { for (i=0; i<m; i++) { for (j=i; j<m; j++) { if (!check(cols[i],rows[i],cols[j],rows[j])) {return; for (i=0; i<m; i++) {printf("(%d,%d)\n",cols[i],rows[i]); εκηύπφζη αποδεκηού ζσνδσαζμού 30

Πξνζέγγηζε 2 (έιεγρνο ζηελ ηνπνζέηεζε) void putnxtqueen(int cols[], int rows[], int n, int M) { int i,j,k,ok; if (n<m) { for (i=0; i<m; i++) { for (j=0; j<m; j++) { ok = 1; for (k=0; (k<n) && (ok); k++) { ok = check(j,i,cols[k],rows[k]); if (ok) { col[n]=j; row[n]=i; putnxtqueen(cols,rows,n+1,m); έλεγτος ζύγκροσζης για ηην νέα ηοποθέηηζη j,i εκηύπφζη αποδεκηού ζσνδσαζμού else { for (i=0; i<m; i++) {printf("(%d,%d)\n",cols[i],rows[i]); 31

Βειηηζηνπνίεζε Αθόκα θαη έλαο πξσηάξεο ζθαθηζηήο, κπνξεί λα ζπκπεξάλεη όηη θάζε ληάκα πξέπεη ππνρξεσηηθά λα ηνπνζεηεζεί ζε μερσξηζηή γξακκή. Ηδέα: παξάγνπκε ηνπο ζπλδπαζκνύο ππό ηνλ πεξηνξηζκό όηη ε i-νζηή ληάκα ηνπνζεηείηαη (θάπνπ) ζηελ i-νζηή γξακκή. Ζ ιύζε αθνινπζεί ηε θηινζνθία ηεο πξνζέγγηζεο 2, αιιά απνθεύγεη κε ηδηαίηεξα απνδνηηθό ηξόπν πάξα πνιινύο κε απνδεθηνύο ζπλδπαζκνύο. Σεκείσζε: ε ζπλάξηεζε δελ ρξεηάδεηαη λα δέρεηαη πιένλ σο παξάκεηξν ηνπο αξηζκνύο γξακκήο από ηηο ληάκεο πνπ έρνπλ ηνπνζεηεζεί, αθνύ row[i]==i. 32

αριθμός ζηήλης για ηις νηάμες 0<=i<n ποσ έτοσν ηοποθεηηθεί μέτρι ζηιγμής ο αριθμός γραμμής για ηις νηάμες 0<=i<n ποσ έτοσν ηοποθεηηθεί μέτρι ζηιγμής είναι row[i]==i 33 void putnxtqueen(int cols[], int n, int M) { /* κλήση */ αριθμός επόμενης νηάμας προς ηοποθέηηζη ηελικός αριθμός από νηάμες προς ηοποθέηηζη #define Μ 8 int main (int argc, char *argv[]) { int cols[μ],rows[μ]; putnxtqueen(cols,0,μ); return(0);

Πξνζέγγηζε 3 void putnxtqueen(int cols[], int n, int M) { int i,k,ok; if (n<m) { for (i=0; i<m; i++) { ok = 1; for (k=0; (k<n) && (ok); k++) { ok=check(i,n,cols[k],k); if (ok) { col[n]=i; putnxtqueen(col,n+1,m); έλεγτος ζύγκροσζης για ηη νέα ηοποθέηηζη i,n εκηύπφζη αποδεκηού ζσνδσαζμού else { for (i=0; i<m; i++) {printf("(%d,%d)\n",cols[i],i); 34

Σρόιην Οη παξαπάλσ πξνζεγγίζεηο βξίζθνπλ όινπο ηνπο επηηξεπηνύο ζπλδπαζκνύο (ζπκπεξηιακβαλνκέλσλ θαη ηζνδύλακσλ «ζπκκεηξηθώλ» ιύζεσλ). Όηαλ απνξξίπηεηαη έλαο ζπλδπαζκόο (θύιιν ή/θαη ππνδέληξν) είλαη εγγπεκέλα κε απνδεθηόο. 35

Μνλνπάηη ζε γξάθν 36 Έλαο γξάθνο θσδηθνπνηείηαη κέζσ ελόο 2-δηάζηαηνπ πίλαθα c, όπνπ c[i][j]==1 αλ ππάξρεη αθκή από ηνλ θόκβν i ζηνλ j, δηαθνξεηηθά c[i][j]==0. Δπηζπκνύκε λα βξνύκε έλα κνλνπάηη από ηνλ θόκβν n1 πξνο έλα άιιν θόκβν n2: path(n1,n2) Πεξίπησζε εύθνινπ ηεξκαηηζκνύ: c[n1][n2]==1 Γεληθή πεξίπησζε: αλ n:[n1][n]==1 θαη path(n,n2) ηόηε ην δεηνύκελν κνλνπάηη είλαη n+path(n,n2), δηαθνξεηηθά, δελ ππάξρεη θαλέλα κνλνπάηη πνπ λα νδεγεί από n1 πξνο n2.

0 2 37 1 3 c[0][0]=0; c[0][1]=0; c[0][2]=1; c[0][3]=0; c[1][0]=1; c[1][1]=0; c[1][2]=0; c[1][3]=0; c[2][0]=0; c[2][1]=1; c[2][2]=0; c[2][3]=0; c[3][0]=0; c[3][0]=0; c[3][2]=1; c[3][3]=0;

int path(int n1, int n2) { int n; 38 if (c[n1][n2]) { return(1); else { for (n=0; n<n; n++) { if ((c[n1][n]) && path(n,n2)) { return(1); return(0);

Σρόιηα γηα ηελ πξνεγνύκελε ιύζε Ζ αλαδήηεζε ηνπ κνλνπαηηνύ γίλεηαη «ζε βάζνο» (depth first) Υπάξρεη θαη αλαδήηεζε «ζε πιάηνο». Δπηζηξέθεηαη ην πξώην κνλνπάηη πνπ ζα βξεζεί, ρσξίο λα εμεξεπλνύληαη νη ππόινηπεο πηζαλέο ιύζεηο. Γελ επηζηξέθεηαη εγγπεκέλα ε πην ζύληνκε δηαδξνκή (κόλν θαηά ηύρε, αλ απηή ηπραίλεη λα είλαη ε πξώηε δηαδξνκή πνπ βξέζεθε κέζσ ηεο αλαδξνκήο). Γελ ιακβάλνληαη ππ όςε πηζαλνί θύθινη ζηνλ γξάθν, νπόηε ππάξρεη πηζαλόηεηα αηέξκνλεο αλαδξνκήο. Ζ πινπνίεζε κπνξεί λα επεθηαζεί «ζρεηηθά» εύθνια έηζη ώζηε λα αληηκεησπηζηνύλ όιεο νη παξαπάλσ αδπλακίεο / αηέιεηεο. 39

Καηαζθεπή «δέληξνπ» ζπλδπαζκώλ 40 Πξνζέγγηζε «ζε βάζνο» (depth first): αξρίδνπκε από ηε ξίδα θαη θαηαζθεπάδνπκε / δηεξεπλνύκε ηνπο θόκβνπο αλά ππνδέληξν (από πάλσ πξνο ηα θάησ). Ζ πξνζέγγηζε ζε βάζνο κπνξεί εύθνια λα πινπνηεζεί αλαδξνκηθά ζε απηή ηελ πεξίπησζε νλνκάδεηαη θαη «αλαδξνκηθή θάζνδνο» (recursive descent). Πξνζέγγηζε «θαηά πιάηνο» (breadth first): αξρίδνπκε από ηε ξίδα θαη θαηαζθεπάδνπκε / δηεξεπλνύκε ηνπο θόκβνπο αλά επίπεδν (από αξηζηεξά πξνο ηα δεμηά). Ζ πξνζέγγηζε θαηά πιάηνο απαηηεί επηπιένλ δηαρείξηζε θαηάζηαζεο από ην πξόγξακκα γηα ηελ απνζήθεπζε ησλ θόκβσλ έηζη ώζηε λα γίλεηαη έιεγρνο κε ηε ζσζηή ζεηξά (νπξά FIFO).

41 1 4 7 2 3 5 6 8 9

42 1 2 3 4 5 6 7 8 9

43 1 6 11 βέληιζηος ζσνδσαζμός 2 3 7 10 12 13 4 5 8 9 ζσνδσαζμοί ποσ δεν ελέγτονηαι 14 15

44 1 2 3 βέληιζηος ζσνδσαζμός 4 5 6 7 8 9 ζσνδσαζμοί ποσ δεν ελέγτονηαι 10 11 12 13 14 15

Παξάδεηγκα Knapsack / Rucksack Γίλεηαη: αληηθείκελα Ο[i] κε βάξνο W[i] θαη αμία V[i]. Εεηνύκελν: λα επηιεγνύλ ηα αληηθείκελα ηα νπνία κεγηζηνπνηνύλ ηελ αμία ελόο θνξηίνπ κε κέγηζην ζπλνιηθό βάξνο έλα γλσζηό άλσ όξην maxweight. Πξνζέγγηζε 1 (brute force): θαηαζθεπή όισλ ησλ ζπλδπαζκώλ, θαη επηινγή ηνπ ζπλδπαζκνύ κε ηελ κεγαιύηεξε αμία ζηα πιαίζηα ηνπ επηηξεπηνύ βάξνπο. Πξνζέγγηζε 2 (branch & bound): όπσο 1, αιιά ζε θάζε βήκα ειέγρεηαη ην βάξνο ηνπ ζπλδπαζκνύ θαη απηόο απνξξίπηεηαη (πξόσξα) αλ ππεξβαίλεη ην όξην. Πξνζέγγηζε 3 (heuristic b&b): όπσο 2, αιιά ζε θάζε βήκα επηιέγεηαη (ακεηάθιεηα) ην αληηθείκελν κε ην κεγαιύηεξν εηδηθό βάξνο πνπ ρσξά ζην θνξηίν. 45

Με βέιηηζηεο (επξεηηθέο) ιύζεηο Μεξηθά πξνβιήκαηα είλαη δύζθνιν λα ιπζνύλ δηεμνδηθά, κε έιεγρν όισλ ησλ επηηξεπηώλ ζπλδπαζκώλ (κε b&b). Αθόκα θαη γηα «ζρεηηθά κηθξά» Ν, π.ρ. 10000, έλαο ζύγρξνλνο Ζ/Υ κπνξεί λα ρξεηαζηεί κέξεο ή θαη βδνκάδεο λα νινθιεξώζεη ηνλ ππνινγηζκό (αλ ζην κεηαμύ δελ ηνπ έρεη ήδε ζσζεί ε δηαζέζηκε κλήκε). Δπξεηηθέο κέζνδνη: εθηόο από ηα ππνδέληξα πνπ ζίγνπξα δελ νδεγνύλ ζε ιύζε, απνθιείνπκε θαη ηα ππνδέληξα πνπ πηζηεύνπκε, ζύκθσλα κε κηα «θνηλή» ινγηθή, όηη δελ ζα νδεγήζνπλ ζε θάπνηα (θαιή) ιύζε. Οη επξεζηηθέο κέζνδνη κεηώλνπλ ζεκαληηθά ηνλ αξηζκό ησλ ζπλδπαζκώλ πξνο έιεγρν, αιιά ζηελ γεληθή πεξίπησζε δελ νδεγνύλ εγγπεκέλα ζε βέιηηζηε ιύζε. 46

αποκλειζμός σποδένηρφν ποσ σίγουρα δεν οδηγούν ζε λύζη αποκλειζμός σποδένηρφν ποσ μάλλον δεν οδηγούν ζε λύζη 47 βέληιζηος ζσνδσαζμός

Σρόιην Ζ πξνζέγγηζε ζε βάζνο είλαη θαηάιιειε όηαλ όιεο νη ιύζεηο (θύιια ηνπ δέληξνπ) βξίζθνληαη ζην ίδην επίπεδν, π.ρ. 8 ληάκεο. Ζ πξνζέγγηζε θαηά πιάηνο είλαη θαηάιιειε όηαλ θάπνηεο ιύζεηο (θύιια ηνπ δέληξνπ) βξίζθνληαη πηζαλώο ζε δηαθνξεηηθό επίπεδν θαη γλσξίδνπκε όηη ν επηζπκεηόο ζπλδπαζκόο βξίζθεηαη ζην πην ςειό επίπεδν, π.ρ. πην ζύληνκν κνλνπάηη εμόδνπ ζε έλα ιαβύξηλζν. Σε απηή ηε πεξίπησζε ν αξηζκόο ησλ ζπλδπαζκώλ πνπ ειέγρνληαη κπνξεί λα είλαη θαηά πνιύ κηθξόηεξνο (ην δέληξν ησλ ζπλδπαζκώλ θόβεηαη νξηδόληηα, θάησ από ην επίπεδν ηεο ιύζεο). 48

Λίζηα σο αλαδξνκηθή δνκή Μηα ιίζηα κπνξεί λα ζεσξεζεί σο αλαδξνκηθή δνκή, όρη κόλν ζπληαθηηθά αιιά θαη νπζηαζηηθά: κηα ιίζηα είλαη είηε θελή, είηε απνηειείηαη από έλα θόκβν πνπ δείρλεη ζε κηα ιίζηα. Ζ αλαδήηεζε κπνξεί λα πινπνηεζεί αλαδξνκηθά, π.ρ. γηα ιίζηα ρσξίο ηεξκαηηθό ζηνηρείν σο εμήο: 1. Αλ ην πξώην ζηνηρείν ηεο ιίζηαο είλαη NULL, ηόηε ην ζηνηρείν πνπ αλαδεηνύκε δελ ππάξρεη. 2. Αλ ην πξώην ζηνηρείν ηεο ιίζηαο πεξηέρεη ηελ ηηκή πνπ αλαδεηνύκε, ηόηε βξέζεθε. 3. Αλ ην πξώην ζηνηρείν ηεο ιίζηαο δελ πεξηέρεη ηελ ηηκή πνπ αλαδεηνύκε, ζπλέρηζε ηελ αλαδήηεζε ζηελ ιίζηα ζηελ νπνία δείρλεη ν πξώηνο θόκβνο. 49

50 root A nxt C nxt B nxt

int list_find_rec(struct list *root, int v) { 51 if (root == NULL) { return(0); else if (root->v == v) { return(1); else { return(list_find_rec(root->nxt,v));