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

Σχετικά έγγραφα
Σχεδιαση Αλγοριθμων -Τμημα Πληροφορικης ΑΠΘ - Κεφαλαιο 9ο

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

Δροµολόγηση (Routing)

Άπληστοι Αλγόριθµοι (CLR, κεφάλαιο 17)

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

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

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

Διάλεξη 21: Γράφοι IV - Βραχύτερα Μονοπάτια σε Γράφους

Ελάχιστο Γεννητικό Δένδρο. Παράδειγμα - Αλγόριθμος Prim. Γιατί δουλεύουν αυτοί οι αλγόριθμοι;

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

Ελάχιστα Γεννητορικά ένδρα

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

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

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

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

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

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

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

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

Προβλήματα Ελάχιστου Κόστους Ροής σε Δίκτυο. Δίκτυα Ροής Ελάχιστου Κόστους (Minimum Cost Flow Networks)

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

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

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

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

Επεξεργασία Πολυµέσων. Δρ. Μαρία Κοζύρη Π.Μ.Σ. «Εφαρµοσµένη Πληροφορική» Τµήµα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Πανεπιστήµιο Θεσσαλίας

Τεχνολογία Πολυμέσων. Ενότητα # 9: Κωδικοποίηση εντροπίας Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Γ. Κορίλη Αλγόριθµοι ροµολόγησης

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΑΣΚΗΣΗ 5 Ανάπτυξη Προγράμματος Συμπίεσης/Αποσυμπίεσης Αρχείων

Δρομολόγηση (Routing)

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

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

7ο ΕΡΓΑΣΤΗΡΙΟ AAAABBBBAAAAABBBBBBCCCCCCCCCCCCCCBBABAAAABBBBBBCCCCD

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

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Βασικές Ιδιότητες και Διάσχιση Κεφάλαιο 5 ( και ) Ε. Μαρκάκης Επίκουρος Καθηγητής

Αλγόριθμοι εύρεσης ελάχιστων γεννητικών δέντρων (MST)

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

Ν. Μ. Μισυρλής. Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών. Καθηγητής: Ν. Μ. Μισυρλής 29 Μαΐου / 18

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

Βραχύτερα Μονοπάτια σε Γράφους (CLR, κεφάλαιο 25)

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

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

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

Άσκηση 1. Ψευδοκώδικας Kruskal. Παρακάτω βλέπουμε την εφαρμογή του στο παρακάτω συνδεδεμένο γράφημα.

Θεωρία Αποφάσεων και Βελτιστοποίηση

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

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

Αλγόριθμοι και πολυπλοκότητα Περιήγηση Πανεπιστημίων

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

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

Συμπίεση Δεδομένων Δοκιμής (Test Data Compression) Νικολός Δημήτριος, Τμήμα Μηχ. Ηλεκτρονικών Υπολογιστών & Πληροφορικής, Παν Πατρών

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

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

Πληροφοριακά Συστήματα Διοίκησης (ΜΒΑ) Ενότητα 2: Εφαρμογές Δικτυωτής Ανάλυσης (1 ο Μέρος)

Δρομολόγηση μιας οντότητας ανάμεσα σε δύο σημεία ενός δικτύου έτσι ώστε να ελαχιστοποιήσουμε ένα κόστος, μια διάρκεια, κτλ.

Δρομολόγηση μιας οντότητας ανάμεσα σε δύο σημεία ενός δικτύου έτσι ώστε να ελαχιστοποιήσουμε ένα κόστος, μια διάρκεια, κτλ.

Οι βασικές πράξεις που ορίζουν τον ΑΤ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες:

Συνδετικότητα γραφήματος (graph connectivity)

Δοµές Δεδοµένων. 18η Διάλεξη Ισορροπηµένα δέντρα. Ε. Μαρκάκης

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

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

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

Γράφοι. Ορολογία. Ορισµός: G = (V, E) όπου. Ορολογία (συνέχεια) γράφος ή γράφηµα (graph) V:ένα σύνολο E:µια διµελής σχέση στο V

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΗ ΑΣΚΗΣΗ 2

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Διακριτά Μαθηματικά. Ενότητα 3: Δένδρα

Network Algorithms and Complexity Παραλληλοποίηση του αλγορίθμου του Prim. Αικατερίνη Κούκιου

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

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

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

Γράφοι: κατευθυνόμενοι και μη

Κατηγορίες Συμπίεσης. Συμπίεση με απώλειες δεδομένων (lossy compression) π.χ. συμπίεση εικόνας και ήχου

Δένδρα επικάλυψης ελάχιστου κόστους και το πρόβλημα του πλανόδιου πωλητή (Traveling Salesman Problem: TSP)

Γράφοι (συνέχεια) Ο αλγόριθµος Dijkstra για εύρεση βραχυτέρων µονοπατιών Ta µονοπάτια Euler

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

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

Δένδρα επικάλ επικ υψης ελάχιστου στους

Συμπίεση χωρίς Απώλειες

4.3. Γραµµικοί ταξινοµητές

PROJECT ΣΤΟ ΜΑΘΗΜΑ ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΕΥΡΕΤΙΚΕΣ ΜΕΘΟ ΟΥΣ

Προβλήµατα Μεταφορών (Transportation)

Προβλήματα Μεταφορών (Transportation)

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

Δένδρα. Μαθηματικά (συνδυαστικά) αντικείμενα. Έχουν κεντρικό ρόλο στην επιστήμη των υπολογιστών :

Graph Algorithms. Παρουσίαση στα πλαίσια του μαθήματος «Παράλληλοι Αλγόριθμοι» Καούρη Γεωργία Μήτσου Βάλια

Γράφημα. Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα: Σύνολο κορυφών (vertex set) Σύνολο ακμών (edge set) 4 5 πλήθος κορυφών πλήθος ακμών

Βασική Εφικτή Λύση. Βασική Εφικτή Λύση

4η Γραπτή Ασκηση Αλγόριθμοι και Πολυπλοκότητα CoReLab ΣΗΜΜΥ 7 Φεβρουαρίου 2017 CoReLab (ΣΗΜΜΥ) 4η Γραπτή Ασκηση 7 Φεβρουαρίου / 38

Πρόβληµα 2 (15 µονάδες)

Ενότητα 5: Αλγόριθμοι γράφων και δικτύων

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

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

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

Μονοπάτια και Κυκλώµατα Euler. Στοιχεία Θεωρίας Γραφηµάτων (3,4) Παραδείγµατα. Κριτήρια Υπαρξης.

Στοιχεία Θεωρίας Γραφηµάτων (3)

Απαρίθµηση Μονοπατιών. Στοιχεία Θεωρίας Γραφηµάτων (3) Μονοπάτια και Κυκλώµατα Euler. Ορέστης Τελέλης

Transcript:

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

Περίληψη Επίλυση προβληµάτων χρησιµοποιώντας Greedy Αλγόριθµους Ελάχιστα Δέντρα Επικάλυψης Αλγόριθµος του Prim Αλγόριθµος του Kruskal Πρόβληµα Ελάχιστης Απόστασης Dijkstra s algorithm Συµπίεση Αρχείων Huffman Codes Επίλυσης µη γραµµικών εξισώσεων

Greedy Αλγόριθµοι Χρησιµοποιούνται περισσότερο για βελτιστοποίηση Σε κάθε βήµα, οι αλγόριθµοι αυτού του τύπου Πηγαίνουν σε µια εφικτή λύση (feasible solution) Η λύση αυτή είναι «τοπικά» βέλτιστη (locally optimal). Δεδοµένης της λύσης x k στην οποία βρίσκεται ο αλγόριθµος µετά την επανάληψη k, στην επόµενη επανάληψη θα πάει σε µια λύση στην γειτονιά της x k η οποία είναι καλύτερη απ ότι η λύση στη x k. Δεν επιστρέφουν σε προηγούµενη λύση (δεν έχουν µνήµη). Χαρακτηριστικά και Ιδιότητες των αλγορίθµων αυτών Οι αλγόριθµοι αυτού του τύπου, σε κάθε βήµα τους πηγαίνουν σε µια λύση η οποία είναι καλύτερη από την προηγούµενη. Το µεγαλύτερο πρόβληµα αυτών των αλγορίθµων είναι ότι µπορούν εύκολα να εγκλωβιστούν σε τοπικά βέλτιστές λύσεις.

Πρόβληµα υπολογισµού νοµισµάτων Υποθέστε πως υπάρχουν κέρµατα 1c, 5c, 10c. Περιγράψτε ένα αλγόριθµο για τον υπολογισµό του συνδυασµού των νοµισµάτων που πρέπει κάποιος να επιστρέψει για ρέστα έτσι που να ελαχιστοποιείται ο αριθµός των κερµάτων. Παράδειγµα: Θέλετε να επιστρέψετε 18c. Πως θα το καταφέρεται;

Αλγόριθµος change(x) N=[N10c, N5c, N1c];//coins 10c, 5c, 1c. N10c= floor(x/10); x= x 10*N10c; N5c= floor(x/5); N1c= x 5*N5c; return N; Ο αλγόριθµος δουλεύει για οποιοδήποτε συνδυασµό κερµάτων;

Πρόβληµα εγκατάστασης δικτύου ελάχιστου κόστους Υποθέστε ότι θέλετε να συνδέσετε 9 σηµεία σε ένα δίκτυο έτσι που να µπορούν όλα να επικοινωνήσουν µεταξύ τους A 5 B 6 C 3 D Ένα κόµβος µπορεί να επικοινωνήσει µε κάποιον άλλο είτε απευθείας είτε µέσω κάποιου άλλου κόµβου εφόσον υπάρχει καλώδιο που τους συνδέει. 4 E 2 7 F 1 9 G Οι αποστάσεις µεταξύ των κόµβων φαίνονται στον γράφο Το κόστος καλωδίωσης είναι 100 ευρώ το µέτρο. Πως θα συνδέσετε τους κόµβους για να ελαχιστοποιήσετε το κόστος καλωδίωσης; 8 H 7 5 I 6

Δέντρα Επικάλυψης (Spanning Trees) Δέντρο Επικάλυψης Είναι ένας γράφος που περιέχει όλες τις κορυφές ενός γράφου αλλά δεν έχει κύκλους (είναι δηλαδή δέντρο). Ελάχιστο Δέντρο Επικάλυψης Είναι το δέντρο επικάλυψης του οποίου το άθροισµα των βαρών (weights) των ακµών που συµπεριλαµβάνονται στο δέντρο επικάλυψης είναι ελάχιστο.

Αλγόριθµος του Prim A 5 4 8 B E H 6 2 7 7 5 C F I 3 1 9 D G 6 Οι κόµβοι χωρίζονται σε καταχωρηµένους και µη. Αρχικά κανένας κόµβος δεν είναι «καταχωρηµένος» και επιλέγεται τυχαία ο πρώτος κόµβος που θα καταχωρηθεί. Σε κάθε βήµα προσθέτουµε στο σύνολο των καταχωρηµένων κόµβων τον µη-καταχωρηµένο κόµβο που µπορεί να συνδεθεί µε το µικρότερο κόστος.

Αλγόριθµος του Prim Prim(G=(V,E)) VT= {v0}, ET= empty; for i=1 to V -1 Find the minimum weight edge e*=(u*,v*) such that u* in VT and v* in V-VT VT= VT U {v*}; ET= ET U {e*}; return ET;

Ορθότητα Αλγόριθµου του Prim A 5 4 8 B E H 6 2 7 7 5 C F I 3 1 9 6 D G Απόδειξη χρησιµοποιώντας επαγωγή. Στο αρχικό βήµα ο αλγόριθµος είναι ορθός αφού πρέπει να περιλαµβάνει οποιοδήποτε κόµβο. Υποθέτουµε πως το δέντρο που δηµιουργήθηκε µέχρι το βήµα k-1 είναι µέρος ενός βέλτιστου δέντρου και ελέγχουµε το δέντρο µεγέθους k που δηµιουργήθηκε βάση του αλγόριθµου. Η υπόθεση αυτή ισχύει, γιατί;

Αλγόριθµος του Kruskal A 5 4 B E 6 2 7 C F 3 1 9 D G Όλες οι ακµές ταξινοµούνται σύµφωνα µε το βάρος τους. Επιλέγονται οι πρώτες V -1 ακµές οι οποίες δεν κλείνουν κάποιο κύκλο. Edge w Edge w 8 5 6 FG 1 BC 6 EF 2 GI 6 H 7 I CD 3 CF 7 BE 4 HI 7 AB 5 EH 8 FI 5 DG 9

Αλγόριθµος του Kruskal Kruskal(G=(V,E)) sort(e); ET= empty; count= 0; while count < V -1 e= next edge in the list; if ET U {e} has no cycle ET= ET U {e}; count= count+1; return ET;

Πρόβληµα Ελάχιστης Απόστασης Δεδοµένου ενός γράφου (G,V) µε βάρη στις ακµές και µίας πηγής s υπολογίστε: Το ελάχιστο απλό µονοπάτι από τον s σε κάποιο άλλο κόµβο u. Το ελάχιστο απλό µονοπάτι από τον s σε όλους τους υπόλοιπους κόµβους. Απλό µονοπάτι: µονοπάτι χωρίς κύκλους. B 7 F 3 2 1 6 Α D 2 E H 4 1 2 2 C 4 G

Ιδιότητα Ελάχιστου Μονοπατιού A D G B E H J C F I Ποια η βέλτιστη διαδροµή E J? Υποθέστε πως η ελάχιστη διαδροµή από κάποιο κόµβο v 0 στον κόµβο v n περνά από το µονοπάτι v i, v i+1,,v j, τότε το µονοπάτι v i, v i+1,,v j, αποτελεί το ελάχιστο µονοπάτι από τον v i στον v j

Πρόβληµα Ελάχιστης Απόστασης (Dijkstra s algorithm) Οι κόµβοι χωρίζονται σε καταχωρηµένους και µη Αρχικά όλοι οι κόµβοι είναι µη καταχωρηµένοι Ορίζουµε τον παραλήπτη (ή αποστολέα) σαν ενεργό κόµβο (working node) Τον σηµαδεύουµε µε το κόστος µέχρι τον παραλήπτη (ή αποστολέα) Υπολογίζουµε το κόστος για όλους τους κόµβους που είναι συνδεδεµένοι µε τον ενεργό κόµβο. Επιλέγουµε (από τους µη καταχωρηµένους κόµβους) τον κόµβο µε το µικρότερο κόστος, τον καταχωρούµε και τον ονοµάζουµε σαν τον νέο ενεργό κόµβο. Υπολογίζουµε το κόστος για όλους τους κόµβους που είναι συνδεδεµένοι µε τον ενεργό κόµβο Επαναλαµβάνουµε το τελευταίο βήµα µέχρι να καταχωρήσουµε όλους τους κόµβους.

Πρόβληµα Ελάχιστης Απόστασης (Dijkstra s algorithm) Βρέστε το µονοπάτι µε το µικρότερο κόστος από τον A στον H B 7 F 3 3 1 6 Α D 2 E H 4 1 2 2 C 4 G

Πρόβληµα Ελάχιστης Απόστασης (Dijkstra s algorithm) Α B 7 F 3 3 1 6 D 2 E 4 1 2 2 C 4 G H B C D E F G H

Αλγόριθµοι εύρεσης ελαχίστου µονοπατιού initialization(g=(v,e), s) for every vertex v V d(v)= infty; %distance to v pr(v)= nil; %previous vertex d(s)=0; %distance to source update(u, v, w) if d(v) > d(u)+ w d(v) = d(u) + w; pr(v)= u

Αλγόριθµοι εύρεσης ελαχίστου µονοπατιού Dijkstra(G=(V,E), s) initialize(g, s); S= empty; %set of assigned vertices Q= V; %set of unassigned vertices while Q not empty u= getmin(q); %find vertex with min cost S= S {u}; for each v Adjacent(u) update(u, v, w);

Αλγόριθµοι εύρεσης ελαχίστου µονοπατιού BellmanFord(G=(V,E), s) initialize(g, s); for i=1 to V -1 for each edge (u,v) E update(u,v,w); for each edge (u,v) E if d(v)> d(u)+ w return false; return true;

Συµπίεση Αρχείων Υποθέστε ότι έχετε ένα αλφάβητο το οποίο αποτελείται από τους χαρακτήρες {A, B, C, D, -}. Υποθέστε επίσης ότι σε ένα τυχαίο κείµενο βασισµένο στο αλφάβητο αυτό οι χαρακτήρες εµφανίζονται µε την εξής συχνότητα {0.35, 0.1, 0.2, 0.2, 0.15} αντίστοιχα. Πως µπορείτε να κωδικοποιήσετε τους χαρακτήρες έτσι ώστε να ελαχιστοποιήσετε το συνολικό µήκος του αρχείου; Το ίδιο πρόβληµα εµφανίζεται επίσης στις τηλεπικοινωνίες όπου θέλετε να περιορίσετε το συνολικό µήκος του µηνύµατος που θέλετε να µεταδώσετε. Πιθανός τρόπος επίλυσης είναι οι κώδικες σταθερού µήκους, π.χ., ASCII.

Κώδικές σταθερού µήκους. Χαρακτήρας Α Β C D - Συχνότητα 0.35 0.1 0.2 0.2 0.15 Εάν χρησιµοποιήσουµε κώδικες σταθερού µήκους, τότε χρειαζόµαστε τουλάχιστον Μια πιθανή κωδικοποίηση είναι Χαρακτήρας Α Β C D - Κώδικας Δηλαδή το συνολικό µήκος ενός αρχείου µε n χαρακτήρες θα πρέπει να είναι Η αποκωδικοποίηση κωδικών µε σταθερό µήκος είναι εύκολη. Απλά παίρνουµε 3-3 bits και ελέγχουµε το αλφάβητο.

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

Κώδικες µεταβλητού µήκους Παράδειγµα 1: Υποθέστε τους πιο κάτω κώδικες Α=1, Β=01, C=001, D=0001. Πως αποκωδικοποιείτε το 10001101; Παράδειγµα 2: Υποθέστε ότι σε κάποιο αλφάβητο έχουµε τους πιο κάτω κώδικες Α=1, Β=0, C=01 και D=001. Υποθέστε ότι λαµβάνεται τον κωδικό 0001. Πως το αποκωδικοποιείτε; Το πρόβληµα στην πιο πάνω κωδικοποίηση είναι ότι ο κώδικας του B εµφανίζεται στη αρχή του κώδικα του C και D.

Κώδικες Huffman Ο κώδικας κάθε στοιχείου του αλφαβήτου αντιπροσωπεύεται από ένα φύλλο ενός δυαδικού δέντρου στο οποίο αριστερές ακµές αντιστοιχούν σε 0 bit ενώ δεξιές ακµές αντιστοιχούν σε 1 bit. Παράδειγµα: D C B A Από το δέντρο διαβάζουµε τους κώδικες Α= Β= C= D=

Αλγόριθµος Huffman Ο αλγόριθµος Huffman δηµιουργεί ένα δέντρο (Huffman tree) στο οποίο οι πιο συχνοί χαρακτήρες έχουν µικρότερο µήκος (απόσταση από τη ρίζα) και οι λιγότερο συχνοί χαρακτήρες µεγαλύτερο µήκος. Από το δέντρο µπορούµε να βρούµε τους ζητούµενους κώδικες οι οποίοι ονοµάζονται Huffman codes. Δεδοµένων των συχνοτήτων κάθε χαρακτήρα και υποθέτοντας ότι η παρουσία κάθε χαρακτήρα είναι ανεξάρτητη από τη παρουσία των άλλων χαρακτήρων, ο αλγόριθµος Huffman µας δίνει βέλτιστους κώδικες (µικρότερο µέσο µήκος).

Αλγόριθµος Huffman Αρχικοποίηση. Για κάθε χαρακτήρα δηµιουργούµε ένα κόµβο στον οποίο αναγράφετε ο χαρακτήρας και η συχνότητα εµφάνισης του. Το επόµενο βήµα επαναλαµβάνεται n-1 φορές όπου n είναι ο αριθµός των χαρακτήρων στο αλφάβητο. Βρίσκουµε τους δύο κόµβους µε τη µικρότερη συχνότητα Τους κάνουµε παιδιά ενός νέου κόµβου στο οποίο η συχνότητα είναι το άθροισµα των συχνοτήτων των παιδιών.

Παράδειγµα Αλγόριθµου Huffman Χαρακτήρας Α Β C D - Συχνότητα 0.35 0.1 0.2 0.2 0.15.1 Β.15 -.2 C.2 D.35 Α

Παράδειγµα Αλγόριθµου Huffman

Παράδειγµα Αλγόριθµου Huffman Από το δέντρο διαβάζουµε τους κώδικες Α= Β= C= D= -= Μέσο µήκος κώδικα ανά χαρακτήρα:

Επίλυση µη γραµµικών εξισώσεων µιας µεταβλητής Πώς µπορείτε να βρείτε τη λύση της µη γραµµικής εξίσωσης f(x)=0 ξεκινώντας από ένα αρχικό σηµείο x 0. Γενικός Αλγόριθµος