Αλγόριθµοι Τύπου Μείωσης Προβλήµατος



Σχετικά έγγραφα
Αλγόριθµοι Divide-and- Conquer

Κατ οίκον Εργασία 5 Σκελετοί Λύσεων

ΕΠΛ 231 Δοµές Δεδοµένων και Αλγόριθµοι 11-1

Επίλυση Προβληµάτων µε Greedy Αλγόριθµους

Αλγόριθµοι Brute-Force και Διεξοδική Αναζήτηση

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

Ανάλυση Αλγορίθµων. Σύντοµη επανάληψη (ΕΠΛ 035).

1 Διάσχιση κατευθυνόμενων γραφημάτων

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 5: Μείωσε και Βασίλευε. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ

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

Αναζήτηση Κατά Βάθος. Επιµέλεια διαφανειών:. Φωτάκης διαφάνειες για SCC: A. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Γ7.5 Αλγόριθμοι Αναζήτησης. Γ Λυκείου Κατεύθυνσης

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

Κεφάλαιο 3. Γραφήµατα v1.0 ( ) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

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

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

Initialize each person to be free. while (some man is free and hasn't proposed to every woman) { Choose such a man m w = 1 st woman on m's list to

Βασικές Έννοιες Δοµών Δεδοµένων

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)

6η Διάλεξη Διάσχιση Γράφων και Δέντρων

Προγραµµατισµός 1 Ταξινόµηση - Αναζήτηση

Στοιχεία Αλγορίθµων και Πολυπλοκότητας

ΠΛΗ111. Ανοιξη Μάθηµα 10 ο. Γράφοι. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

auth Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

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

Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

Διάλεξη 17: Δυαδικά Δέντρα. Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

ΔΙΑΣΧΙΣΗ ΓΡΑΦΗΜΑΤΩΝ 1

Κεφάλαιο 3. Γραφήµατα v1.1 ( ) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Αναζήτηση Κατά Πλάτος

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

Βασικές Δοµές Δεδοµένων. Σύντοµη επανάληψη (ΕΠΛ 035).

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

Κεφάλαιο 3. Γραφήματα. v1.3 ( ) Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Ταξινόμηση με συγχώνευση Merge Sort

Δυναµικός Προγραµµατισµός (ΔΠ)

Αλγόριθµοι Οπισθοδρόµησης

Κεφάλαιο 3. Γραφήματα. ver. 21/12/2014. Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Αναζήτηση στους γράφους. - Αναζήτηση η κατά βάθος Συνεκτικές Συνιστώσες - Αλγόριθμος εύρεσης συνεκτικών συνιστωσών

HY380 Αλγόριθμοι και πολυπλοκότητα Hard Problems

Εισαγωγή στους Αλγόριθµους. Αλγόριθµοι. Ιστορικά Στοιχεία. Ο πρώτος Αλγόριθµος. Παραδείγµατα Αλγορίθµων. Τι είναι Αλγόριθµος

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

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

Αναδροµή (Recursion) ύο παρεξηγήσεις. Σκέψου Αναδροµικά. Τρίγωνο Sierpinski Μη αναδροµικός ορισµός;

Κατ οίκον Εργασία 5 Σκελετοί Λύσεων

Ορθότητα Χωρική αποδοτικότητα. Βελτιστότητα. Θεωρητική ανάλυση Εμπειρική ανάλυση. Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

Απλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλή

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ταξινόµηση Mergesort Κεφάλαιο 8. Ε. Μαρκάκης Επίκουρος Καθηγητής

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

Δοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης

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

Αναζήτηση Κατά Πλάτος

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

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 7

Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΑΣΚΗΣΗ 4 Σωροί, Γράφοι

Αλγόριθμοι Γραφημάτων

Δοµές Δεδοµένων. 11η Διάλεξη Ταξινόµηση Quicksort και Ιδιότητες Δέντρων. Ε. Μαρκάκης

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

ΗΜΥ 325: Επαναληπτικές Μέθοδοι. Διδάσκων: Χρίστος Παναγιώτου

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

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων

Οι πράξεις που χρειάζονται για την επίλυση αυτών των προβληµάτων (αφού είναι απλές) µπορούν να τεθούν σε µια σειρά και πάρουν µια αλγοριθµική µορφή.

Προγραµµατισµός. Αναδροµή (1/2)

Λυσεις προβλημάτων τελικής φάσης Παγκύπριου Μαθητικού Διαγωνισμού Πληροφορικής 2007

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Αρχές Ανάλυσης Αλγορίθµων Κεφάλαιο 2. Ε. Μαρκάκης Επικ. Καθηγητής

Αναζήτηση Κατά Πλάτος

Δυναμικές Δομές Δεδομένων Λίστες Δένδρα - Γράφοι

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 3: Συναρτήσεις

Αφηρημένες Δομές Δεδομένων. Στοίβα (Stack) Υλοποίηση στοίβας

ιαφάνειες παρουσίασης #11

ΠΡΟΛΟΓΟΣ. Θεσσαλονίκη, Μάρτιος Οι συγγραφείς. Κ. Παπαρρίζος, Ν. Σαμαράς, Α. Σιφαλέρας.

Αναζήτηση σε Γράφους. Μανόλης Κουμπαράκης. ΥΣ02 Τεχνητή Νοημοσύνη 1

Δυαδικά Δένδρα Αναζήτησης, Δένδρα AVL

Αναζήτηση Κατά Πλάτος

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

Επίλυση Προβλημάτων 1

Διάλεξη 18: Γράφοι I - Εισαγωγή

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

Διορθώσεις σελ

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

auth Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

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

ΚΕΦΑΛΑΙΟ 12: Θεωρία υπολογισµών

Σχεδίαση Αλγορίθμων -Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο

11.1 Συναρτήσεις. ΚΕΦΑΛΑΙΟ 11: Θεωρία υπολογισµών

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 2: Ανάλυση Αλγορίθμων. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ

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

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

Ενότητα 3: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ

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

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

Διδάσκων: Κωνσταντίνος Κώστα

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

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις

Διάλεξη 18: Γράφοι I Εισαγωγή

Transcript:

Αλγόριθµοι Τύπου Μείωσης Προβλήµατος

Περίληψη Αλγόριθµοι Τύπου Μείωσης Προβλήµατος ( Decrease and Conquer ) Μείωση κατά µια σταθερά (decrease by a constant) Μείωση κατά ένα ποσοστό (decrease by a constant factor) Μείωση κατά µεταβλητό µέγεθος (variable-sizedecrease)

Αλγόριθµοι Μείωσης Προβλήµατος κατά µια Σταθερά Γενική Μεθοδολογία Αντί να λύσουµε το πιο δύσκολο πρόβληµα µεγέθους n, λύνουµε το πιο εύκολο πρόβληµα µεγέθους n-m. Συνήθως το m=1. Από τη λύση του µικρότερου προβλήµατος µπορούµε να βρούµε τη λύση του προβλήµατος µεγέθους n. Απλό Παράδειγµα: Υπολογίστε τη συνάρτηση a n power(a, n) if(n = l) return a; else return power(a, n-1)*a;

Προβλήµατα Ταξινόµησης Είσοδος: Λίστα A[0,,n-1] Έξοδος: Ταξινοµηµένη λίστα A[0,,n-1] InsertionSort: Βασική Ιδέα Υποθέτουµε πως τα πρώτα k στοιχεία της λίστας είναι ταξινοµηµένα και δηµιουργούµε µια ταξινοµηµένη λίστα µε k+1 στοιχεία.

Προβλήµατα Ταξινόµησης Είσοδος: Λίστα A[0,,n-1] Έξοδος: Ταξινοµηµένη λίστα A[0,,n-1] insertionsort(a[0,,n-1]) for i=0 to n-1 new= A[i]; j=i-1; while j>=0 and A[j]> new A[j+1]= A[j]; j= j-1; A[j+1]= new;

Απόδοση InsertionSort() insertionsort(a[0,,n-1]) for i=0 to n-1 new= A[i]; j=i-1; while j>=0 and A[j]> new A[j+1]= A[j]; j= j-1; A[j+1]= new; Χειρότερη Περίπτωση: Καλύτερη Περίπτωση:

Εξερεύνηση Γράφων (Tree Traversal) Δεδοµένου ενός γράφου, πως µπορεί κάποιος να επισκεφτεί όλους τους κόµβους του γράφου. Αυτό είναι ένα πρόβληµα το οποίο παρουσιάζεται συχνά σε γράφους. Μπορεί να υπάρξουν πολλές λύσεις. Θα µελετηθούν δύο τρόποι που εµπίπτουν κάτω από την κατηγορία «µείωσης» του προβλήµατος κατά µια σταθερά (ένα). Η βασική ιδέα είναι ότι το πιο δύσκολο πρόβληµα εξερεύνησης γράφου µε n κόµβους «σπάζει» σε ένα πρόβληµα για n-1 κόµβους αφού πρώτα επισκεφτούµε τον αµέσως επόµενο κόµβο. Με το ίδιο σκεπτικό θα µπορούσε κάποιος να κατατάξει τους αλγόριθµους αυτούς κάτω από την κατηγορία των greedy αλγορίθµων.

Depth-First Search (DFS) και Breadth- First Search (BFS) Η Γενική προσέγγιση του DFS είναι αφού επισκεφτεί ένα κόµβο, να ψάξει για τον αµέσως επόµενο γειτονικό κόµβο. Πολύ γρήγορα ο αλγόριθµος «αποµακρύνεται» από ένα κόµβο, πριν επισκεφτεί όλους τους γείτονες. Υλοποιείται αναδροµικά ή µε στοίβα. Η γενική προσέγγιση του BFS είναι να επισκεφτεί όλους τους γείτονες ενός κόµβου πριν «αποµακρυνθεί». Υλοποιείτε µε ουρά Οι δύο αλγόριθµοι έχουν την ίδια απόδοση διαφέρουν στην σειρά µε την οποία θα επισκεφτούν τους κόµβους. Εφαρµογές: Έλεγχος συνεκτικότητας, έλεγχος για τυχόν βρόγχους, έλεγχος για «τρωτά» σηµεία, κλπ.

DFS DFS(G=<V,E>) for all v in V if v.visited= false; dfs(v) dfs(v) v.visited= true; for w= 1 to wn if w.visited= false; dfs(w)

DFS: Παράδειγµα dfs(v) Α C F E v.visited= true; for w= 1 to wn D B if w.visited= false; dfs(w) Στοίβα

BFS BFS(G=<V,E>) for all v in V if v.visited= false; bfs(v) bfs(v) v.visited= true; while Q not empty for w= 1 to wn if w.visited= false; w.visited= true; Q.enqueue(w); Q.dequeue(Q.head);

BFS: Παράδειγµα bfs(v) Α C F E v.visited= true; while Q not empty for w= 1 to wn D B if w.visited= false; w.visited= true; Q.enqueue(w); Q.dequeue(Q.head);

BFS: Παράδειγµα 2 bfs(v) 1 Α 1 C 1 1 F 1 E 1 v.visited= true; while Q not empty for w= 1 to wn D 1 Γράφος µε βάρη 1 B if w.visited= false; w.visited= true; Q.enqueue(w); Q.dequeue(Q.head);

BFS: Παράδειγµα 3 1 Α D 3 E 1 1 C 2 F 1 1 1 B Γράφος µε ακέραια βάρη

Τοπολογική Ταξινόµηση Πρόβληµα: Δεδοµένου ενός κατευθυνόµενου γράφου, υπάρχει τρόπος να «ταξινοµήσουµε» όλους τους κόµβους έτσι ώστε εάν υπάρχει ακµή από τον κόµβο u στον v, στην «ταξινοµηµένη» σειρά, ο u να εµφανίζεται πριν από τον v; Παραδείγµατα: Α Β Α Β C D C D

Τοπολογική Ταξινόµηση Θεώρηµα: Το πρόβληµα της τοπολογικής ταξινόµησης έχει λύση εάν και µόνον αν ο κατευθυνόµενος γράφος που περιγράφει το πρόβληµα δεν έχει κύκλους (κατευθυνόµενος άκυκλος γράφος directed acyclic graph (dag)). Εφαρµογές τοπολογικής ταξινόµησης: Προαπαιτούµενα µαθήµατα Χρονοπρογραµµατισµός (scheduling) Διεργασιών σε υπολογιστή Εργασιών για την συµπλήρωση µεγάλων έργων. Εξειδικευµένες λύσεις Critical Path Method (CPM) PERT (Program Evaluation and Review)

Λύση µε DFS dfs(v) Α C F E v.visited= true; for w= 1 to wn D Στοίβα B if w.visited= false; dfs(w)

Λύση µε DFS dfs(v) Α C F E v.visited= true; for w= 1 to wn D Στοίβα B if w.visited= false; dfs(w)

Τοπολογική Ταξινόµηση: Λύση βασισµένη σε µείωση κατά ένα Βασική Ιδέα: Σε κάθε βήµα ψάχνουµε για κύκλο σε ένα γράφο ο οποίος είναι κατά ένα µικρότερος από ότι ο προηγούµενος. Από τον µεγαλύτερο γράφο, αφαιρούµε ένα κόµβο στον οποίο δεν καταλήγει πάνω του καµιά ακµή καθώς και όλες τις ακµές που ξεκινούν από το εν λόγω κόµβο. Παράδειγµα:

Δηµιουργία όλων των πιθανών υποσυνόλων και permutations Πρόβληµα: Σχηµατίστε όλα τα πιθανά υποσύνολα (power set) που µπορούµε να δηµιουργήσουµε από ένα σύνολο n στοιχείων. Πρόβληµα: Σχηµατίστε όλες τις πιθανές διατάξεις (permutations) τις οποίες µπορούµε να δηµιουργήσουµε από ένα σύνολο n στοιχείων. Από τη φύση τους τα προβλήµατα αυτά δεν µπορούν να έχουν «αποδοτική» λύση! Γιατί; Οι διάφοροι συνδυασµοί και διατάξεις δηµιουργούνται «σειριακά» οπόταν πολλές φορές είναι επιθυµητό να µην υπάρχουν µεγάλες εναλλαγές από το ένα υποσύνολο στο επόµενο ή τη µια διάταξη στην επόµενη.

Power Set Διάνυσµα n στοιχείων όπου το κάθε στοιχείο µπορεί να πάρει τη τιµή 0 (εάν το στοιχείο δεν περιλαµβάνεται στο υποσύνολο) και 1 (εάν περιλαµβάνεται) 1 2 n Πιθανά υποσύνολα για n=5: 1 2 3 4 5 1 2 3 4 5 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 Πόσα πιθανά υποσύνολα;

Permutations Διάνυσµα n στοιχείων όπου το κάθε στοιχείο µπορεί να πάρει τη τιµή ενός από τα στοιχεία του συνόλου. 1 2 n Πιθανά permutations για n=5: 1 2 3 4 5 1 5 2 3 4 1 2 3 5 4 1 2 5 3 4 5 1 2 3 4 Πόσα πιθανά υποσύνολα;

Permutations: Αλγόριθµος βασισµένος σε µείωση κατά ένα Υποθέστε πως ξέρουµε πώς να δηµιουργήσουµε όλα τα permutations για n-1, πως µπορούµε να δηµιουργήσουµε τα permutations για n; Απλά τοποθετούµε το νέο στοιχείο µεταξύ όλων των στοιχείων από τις υπάρχουσες διατάξεις n=1 1 n=3 3 1 2 3 2 1 n=2 1 2 1 3 2 2 3 1 2 1 1 2 3 2 1 3 Ο αλγόριθµος Johnson-Trotter δηµιουργεί όλα τα permutations χωρίς να πρέπει να δηµιουργήσει τα n-1, n-2, 1, permutations και σε κάθε βήµα αλλάζουν µόνο 2 στοιχεία θέση.

Αλγόριθµοι µείωσης του προβλήµατος κατά ένα ποσοστό Γενική Μεθοδολογία Αντί να λύσουµε το πιο δύσκολο πρόβληµα µεγέθους n, λύνουµε το πιο εύκολο πρόβληµα µεγέθους n/m. Συνήθως το m=2. Από τη λύση του µικρότερου προβλήµατος µπορούµε να βρούµε τη λύση του προβλήµατος µεγέθους n. Πολύ αποδοτικοί αλγόριθµοι (αναζήτηση σε δυαδικό δέντρο)! Απλό Παράδειγµα: Υπολογίστε τη συνάρτηση a n

Κάλπικο νόµισµα Υποθέστε ότι έχετε n νοµίσµατα εκ των οποίο το ένα κάλπικο. Κάθε νόµισµα ζυγίζει w γραµµάρια ενώ το κάλπικο ζυγίζει q<w γραµµάρια. Υποθέστε πως έχετε στη διάθεση σας µία ζυγαριά. Πως µπορείτε να εντοπίσετε το κάλπικο νόµισµα κάνοντας λιγότερα από n ζυγίσµατα; Πόσα ζυγίσµατα χρειάζεστε;

Κάλπικο νόµισµα Πόσα ζυγίσµατα χρειάζεστε; findcoin(c[1,,n]) if(n = l) return C[]; %fake found f=floor(n/2); P1=C[1,,f]; P2=C[f+1,,2f]; P3=C[n]-C[2f]; X= weight(p1, P2); if X=1 return findcoin(p2); %P1 weights more if X=0 return P3; %P1 & P2 weigh the same if X=-1 return findcoin(p1); %P2 weights more

Πολλαπλασιασµός Ακεραίων σε Υλικό (Hardware) Πως µπορεί κάποιος να πολλαπλασιάσει δύο ακέραιους αριθµούς m, n; Υποθέστε ότι το n είναι άρτιο, τότε Υποθέστε ότι το n είναι περιττό, τότε Κάποιος µπορεί να υλοποιήσει ένα πολλαπλασιαστή µε µόνο αθροίσµατα και µετατοπίσεις!

Επίλυση µη γραµµικών εξισώσεων µιας µεταβλητής Πώς µπορείτε να βρείτε τη λύση της πιο κάτω µη γραµµικής εξίσωσης στο διάστηµα [a,b] Υποθέστε πως µας ενδιαφέρουν µόνο τα πιο κάτω σενάρια Βρείτε ένα αλγόριθµο που να προσεγγίζει τη λύση

Bisection Method: Divide-and-Conquer solve(f(),a,b) x=(a+b)/2; fx=f(x); if fx=0 return x; if fx*f(a)>0 return solve(f,x,b); return solve(f,a,x); Είναι ορθός ο αλγόριθµος; Πότε τερµατίζει;

Bisection Method: Divide-and-Conquer solve(f(),a,b,e,iter,n) x=(a+b)/2; if (b-a)<e or iter>n return x; fx=f(x); if fx=0 return x; if fx*f(a)>0 return solve(f,x,b,e,iter+1,n); return solve(f,a,x,e,iter+1,n); Πως µεταβάλλεται το µέγιστο δυνατό σφάλµα του αλγορίθµου από επανάληψη σε επανάληψη.

False Position Method: Divide-and- Conquer Εξίσωση της ευθείας που περνά από τα σηµεία (a,f a ), (b,f b ): Υποψήφια λύση Στη συνέχεια ελέγχουµε τη τιµή της συνάρτησης στο σηµείο x και συνεχίζουµε ανάλογα την αναζήτηση. Ο αλγόριθµος αυτός εµπίπτει στην κατηγορία µείωσης του προβλήµατος αλλά κατά µεταβλητό µέγεθος (variable size decrease). Μπορείτε να σκεφτείτε «αντίστοιχο» τρόπο µε τον οποίο να µεταβάλετε το αλγόριθµο αναζήτησης σε δυαδικά δέντρα (binary search);