Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Κεφάλαιο 9ο

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Κώδικες Huffman Μέθοδος συμπίεσης δεδομένων:
Advertisements

Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές
Ο αλγόριθμος του Ukkonen Βεργούλης Θανάσης Το suffix trie Το suffix trie του string D=“book” b o o k o o k k k $ $ $ $
Ο Αλγόριθμος FP-Growth. Αλγόριθμος FP-Growth Ο αλγόριθμος χρησιμοποιεί μια συμπιεσμένη αναπαράσταση της βάσης των συναλλαγών με τη μορφή ενός FP-δέντρου.
Αλγόριθμοι και Πολυπλοκότητα
11-1 ΜΑΘΗΜΑ 12 ο Γράφοι, Διάσχιση Γράφων Υλικό από τις σημειώσεις Ν. Παπασπύρου, 2006.
Εισαγωγικές Έννοιες Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Γραφήματα & Επίπεδα Γραφήματα
Διαίρει και Βασίλευε πρόβλημα μεγέθους Ν διάσπαση πρόβλημα μεγέθους Ν-k πρόβλημα μεγέθους k.
Κοντινότεροι Κοινοί Πρόγονοι α βγ θ δεζ η π ν ι κλμ ρσ τ κκπ(λ,ι)=α, κκπ(τ,σ)=ν, κκπ(λ,π)=η κκπ(π,σ)=γ, κκπ(ξ,ο)=κ ξο κκπ(ι,ξ)=β, κκπ(τ,θ)=θ, κκπ(ο,μ)=α.
Δυναμικός Προγραμματισμός
Προσεγγιστικοί Αλγόριθμοι
Ελαφρύτατες διαδρομές TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A AA A A Συνάρτηση βάρους Κατευθυνόμενο γράφημα.
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου.
Γράφοι: Προβλήματα και Αλγόριθμοι
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι12-1 Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ο αλγόριθμος του Prim και ο αλγόριθμος του Kruskal.
Σχεδιαση Αλγοριθμων - Τμημα Πληροφορικης ΑΠΘ - Κεφαλαιο 9ο1 Άπληστοι αλγόριθμοι βελτιστοποίησης Προβλήματα βελτιστοποίησης λύνονται με μια σειρά επιλογών.
Διδάσκων: Παύλος Παυλικκάς1 Ολυμπιάδα Πληροφορικής Γράφοι – Graphs (Εισαγωγή)
Ουρά Προτεραιότητας: Heap
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Δευτέρα, 30 Μαρτίου 2015Τμ. Πληροφορικής,
Συντομότερες Διαδρομές
Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης
TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Ουρά Προτεραιότητας (priority queue) Δομή δεδομένων που υποστηρίζει.
TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Ουρά Προτεραιότητας (priority queue) Δομή δεδομένων που υποστηρίζει.
Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ - Eξάμηνο 4ο1 Μείωσε και Βασίλευε Μειώνουμε το στιγμιότυπο του προβλήματος σε ένα μικρότερο στιγμιότυπο.
Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο1 Μετασχημάτισε και Κυριάρχησε Μπορούμε να επιλύσουμε ένα πρόβλημα με μετασχηματισμό σε: b απλοποίηση.
Διερεύνηση γραφήματος. Ένας αλγόριθμος διερεύνησης γραφήματος επισκέπτεται τους κόμβους του γραφήματος με μια καθορισμένη στρατηγική, π.χ. κατά εύρος.
Ελαφρύτατες διαδρομές TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A AA A A.
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Πέμπτη, 2 Απριλίου 2015Πέμπτη, 2 Απριλίου 2015Πέμπτη, 2 Απριλίου 2015Πέμπτη, 2 Απριλίου 2015Τμ. Πληροφορικής,
TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Ουρά Προτεραιότητας (priority queue) Δομή δεδομένων που υποστηρίζει.
Ελάχιστο Συνδετικό Δέντρο
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές Κεφάλαιο 4: Συνδεσμικότητα Data Engineering Lab 1.
Υπολογιστική Πολυπλοκότητα Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό.
Λεξικό, Union – Find Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές
1 Κατανεμημένοι αλγόριθμοι για την εύρεση γεννητικών δέντρων (spanning trees) 1.Ένας σταθερός κόμβος στέλνει ένα ‘start’ μήνυμα σε κάθε γειτονική του ακμή.
Θεωρία Γραφημάτων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 15 Απριλίου 2015Τετάρτη, 15 Απριλίου 2015Τετάρτη, 15 Απριλίου 2015Τετάρτη, 15 Απριλίου 2015Τμ.
Θεωρία Γραφημάτων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές Ενότητα 4 Δ ΕΝΔΡΑ Σταύρος Δ. Νικολόπουλος 1.
Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο1 Ανάλυση Αλγορίθμων b Θέματα: Ορθότητα Χρονική αποδοτικότητα Χωρική αποδοτικότητα Βελτιστότητα b Προσεγγίσεις:
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι13-1 Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ο αλγόριθμος Dijkstra για εύρεση βραχυτέρων μονοπατιών.
Δένδρα ΘΕΩΡΙΑ ΓΡΑΦΩΝ Εργαστήριο Τεχνολογίας & Επεξεργασίας Δεδομένων Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές Κεφάλαιο 3: Δένδρα.
Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές TSP, Μέτρα κεντρικότητας, Dijkstra Data Engineering Lab.
Ελαφρύτατες διαδρομές TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A AA A A.
Δομές ΔεδομένωνΤμήμα Πληροφορικής ΑΠΘ1 Δομές Δεδομένων - DFS σε κατευθυνόμενο γράφο - Ελάχιστα Μονοπάτια - Τοπολογική Ταξινόμηση - Eλάχιστα Ζευγνύοντα.
Data Engineering Lab Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές Κεφάλαιο 3: Δένδρα 1.
Συνδεσμικότητα ΘΕΩΡΙΑ ΓΡΑΦΩΝ Εργαστήριο Τεχνολογίας & Επεξεργασίας Δεδομένων Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές Κεφάλαιο 4: Συνδεσμικότητα.
Θεωρία Γραφημάτων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές
ΤΕΙ Αθήνας: Σχολή ΤΕΦ: Τμήμα Ναυπηγικής Εφαρμογές Η/Υ στην Ναυπηγική ΙΙ ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ NA0703C39 Εξάμηνο Ζ’ Διδάσκων Κωνσταντίνος Β. Κώστας Παρουσίαση.
Άπληστοι Αλγόριθμοι. Ο Γιωρίκας, ο Κωστίκας και ο Πανίκας Σελ. 220 Kleinberg-Tardos 2.
1 ΔΙΑΣΧΙΣΗ ΓΡΑΦΗΜΑΤΩΝ. 2 Θέματα μελέτης Πρόβλημα αναζήτησης σε γραφήματα –Αναζήτηση κατά βάθος (Depth-first search – DFS) –Αναζήτηση κατά πλάτος (Breadth-first.
Θεωρία & Αλγόριθμοι Γράφων Θεωρία & Αλγόριθμοι Γράφων Εφαρμογές DFS Data Science Lab 1.
Minimum Spanning Trees1 “Ελάχιστα” συνδετικά δέντρα JFK BOS MIA ORD LAX DFW SFO BWI PVD
Γράφημα Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα:
ΕΥΡΕΣΗ ΕΛΑΧΙΣΤΩΝ ΜΟΝΟΠΑΤΙΩΝ & ΚΑΤΗΓΟΡΙΕΣ ΑΛΓΟΡΙΘΜΩΝ
Θεωρία & Αλγόριθμοι Γράφων
Δένδρα.
Διερεύνηση γραφήματος
Δένδρα Δένδρο είναι ένα συνεκτικό άκυκλο γράφημα. Δένδρο Δένδρο Δένδρο
Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο
Θεωρία & Αλγόριθμοι Γράφων Αποστάσεις
Συντομότερα Μονοπάτια
Δυναμικός Προγραμματισμός
Ουρά Προτεραιότητας (priority queue)
Ελαφρύτατες διαδρομές
ΣΤΟΙΧΕΙΑ ΘΕΩΡΙΑΣ ΓΡΑΦΗΜΑΤΩΝ II
Αναζήτηση (Εξερεύνηση) Πρώτα σε Πλάτος
Μεταγράφημα παρουσίασης:

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Κεφάλαιο 9ο Άπληστοι Αλγόριθμοι http://delab.csd.auth.gr/~manolopo/Algorithms/ Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Κεφάλαιο 9ο

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Κεφάλαιο 9ο Άπληστοι αλγόριθμοι Προβλήματα βελτιστοποίησης λύνονται με μια σειρά επιλογών που είναι: εφικτές τοπικά βέλτιστες αμετάκλητες ΔΕΝ λύνονται όλα τα προβλήματα βελτιστο-ποίησης με αυτόν τον τρόπο Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Κεφάλαιο 9ο

Εφαρμογή της άπληστης στρατηγικής Βέλτιστες λύσεις: Υπολογισμός για ρέστα Ελάχιστα ζευγνύοντα δένδρα (MST) Ελάχιστα μονοπάτια (one-to-all) Απλά προβλήματα δρομολόγησης Κώδικες Huffman Προσεγγίσεις: Πρόβλημα περιοδεύοντας πωλητή (TSP) Πρόβλημα σάκου Άλλα προβλήματα συνδυαστικής βελτιστοποίησης Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Κεφάλαιο 9ο

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Κεφάλαιο 9ο Υπολογισμός για ρέστα Έστω ότι υπάρχει «άπειρη διαθεσιμότητα»κερμάτων με αξία d1 > … > dm , και το ζητούμενο είναι να δώσουμε ρέστα αξίας n με το μικρότερο αριθμό κερμάτων. Παράδειγμα: d1 = 25c, d2 =10c, d3 = 5c, d4 = 1c and n = 48c Άπληστη μέθοδος: Η άπληστη μέθοδος Είναι βέλτιστη για κάθε n και φυσιολογικές τιμές υποδιαρέσαιων. Στη γενική περίπτωση, δεν είναι βέλτιστη (παράδειγμα δυναμικού προγραμματισμού). Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Κεφάλαιο 9ο

Ελάχιστα ζευγνύοντα δένδρα (MST) Ζευγνύον δένδρο ενός συνεκτικού γράφου G είναι ένας συνεκτικός ακυκλος υπογράφος του G που αποτελείται από όλες τις κορυφές του G Ελάχιστο ζευγνύον δένδρο ενός ζυγισμένου συνεκτικού γράφου G είναι το ζευγνύον δένδρο του G με το ελάχιστο συνολικό βάρος Παράδειγμα: 3 4 2 1 6 Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Κεφάλαιο 9ο

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Κεφάλαιο 9ο Αλγόριθμος του Prim Αρχικά το δένδρο αποτελείται από ένα κόμβο Το δένδρο μεγαλώνει κατά μια κορυφή/ακμή κάθε φορά για να προκύψει το MST Δημιουργείται μια σειρά μεγαλύτερων δένδρων T1, T2, … Σε κάθε στάδιο το δένδρο Ti+1 κατασκευάζεται από το Ti: προστίθεται η ακμή με το ελάχιστο βάρος, η οποία συνδέει μια κορυφή του δένδρου Ti με κάποια που δεν ανήκει στο Ti Επιλέγουμε από τις ακμές του κρασπέδου (fringe) – αυτό είναι το άπληστο βήμα Ο αλγόριθμος σταματά όταν έχουν επιλεγεί όλες οι κορυφές Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Κεφάλαιο 9ο

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Κεφάλαιο 9ο Παραδείγματα: 3 4 2 1 6 a e d c b 1 5 2 4 6 3 7 Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Κεφάλαιο 9ο

Κώδικας αλγορίθμου Prim Algorithm Prim(G) VT{v0} ET{} for i1 to |V|-1 do find a minimum weight edge e*=(v*,u*) among the edges (v,u) such that v Є VT and u Є (V-VT) VT  VT ∪ {u*} ET  ET ∪ {e*} return ET Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Κεφάλαιο 9ο

Σχετικά με τον αλγόριθμο του Prim Πρέπει να αποδειχθεί ότι πράγματι ο αλγόριθμος δίνει το MST Χρειάζεται μια ουρά προτεραιότητας για να βρούμε την ακμή με το ελάχιστο βάρος: χρησιμοποιούμε ένα min-heap Αποτελεσματικότητα: για γράφο με n κορυφές και m ακμές: (n–1+m) log n Συνεπώς: Θ(m log n) Υποθέτουμε αναπαράσταση με λίστες γειτνίασης και χρήση σωρού. Aν δεν χρησιμοποιηθεί λίστα γειτνίασης και σωρός, αλλά απλός αδόμητος πίνακας: Θ(n2) insertion/deletion from min-heap number of stages (min-heap deletions) number of edges considered (min-heap insertions) Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Κεφάλαιο 9ο

Αλγόριθμος του Kruskal Αρχίζουμε με ένα κενό δάσος από δένδρα Μεγαλώνουμε το MST με μια ακμή κάθε φορά στα ενδιάμεσα στάδια συνήθως έχουμε ένα δάσος από δένδρα (μη συνδεδεμένα) Σε κάθε στάδιο προσθέτουμε μια ακμή με ελάχιστο βάρος από αυτές που δεν έχουν χρησιμοποιηθεί και δεν δημιουργούν κύκλο Αρχικά οι κορυφές ταξινομούνται κατά αύξον βάρος Σε κάθε στάδιο η ακμή μπορεί να: Να επεκτείνει ένα υπάρχον δένδρο Να συνδυάσει δυο δένδρα σε ένα Να δημιουργήσει ένα νέο δένδρο Χρειάζεται ένας αποτελεσματικός τρόπος διαπίστωσης κύκλων Ο αλγόριθμος τερματίζει όταν επιλεγούν όλες οι κορυφές Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Κεφάλαιο 9ο

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Κεφάλαιο 9ο Παραδείγματα: 3 4 2 1 6 a e d c b 1 5 2 4 6 3 7 Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Κεφάλαιο 9ο

Κώδικας αλγορίθμου του Kruskal Algorithm Kruskal(G) Sort E in nondecreasing order of the weights ET{ }; k0; ecounter0 while ecounter < |V|-1 k  k+1 if ET ∪ {ek} is acyclic ET  ET ∪ {ek} ecounter  ecounter+1 return ET Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Κεφάλαιο 9ο

Σχετικά με τον αλγόριθμο του Kruskal Ο αλγόριθμος φαίνεται ευκολότερος από του Prim αλλά είναι: Δυσκολότερος στην υλοποίηση (έλεγχος κύκλων) Λιγότερο αποτελεσματικός Θ(m log m) Έλεγχος κύκλων: ένας κύκλος υφίσταται αν και μόνο αν μια ακμή συνδέει κορυφές της ίδιας συνιστώσας Αλγόριθμοι ένωσης-εύρεσης (union-find) Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Κεφάλαιο 9ο

Συντομότερα μονοπάτια - Dijkstra Συντομότερα μονοπάτια (one-to-all) : Δεδομένου ενός ζυγισμένου γράφου G, να βρεθούν τα συντομότερα μονοπάτια από μια κορυφή προς όλες τις άλλες Δεν δουλεύει με αρνητικά βάρη Εφαρμόζεται σε κατευθυνόμενους και μη γράφους Here Dijkstra’s algorithm is shown in comparison to Prim’s algorithm to emphasize that the idea is pretty much the same, but to also highlight the differences. Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Κεφάλαιο 9ο

Αλγόριθμος του Dijkstra Ο αλγόριθμος του Dijkstra είναι παρόμοιος με του Prim, με την εξής διαφορά: Αρχικά το δένδρο έχει μια κορυφή Το δένδρο μεγαλώνει με μια κορυφή/ακμή κάθε φορά Κρατούμε το συντομότερο μονοπάτι από την πηγή προς τις κορυφές του δένδρου Ti Σε κάθε στάδιο κατασκευάζουμε το Ti+1 από το Ti: προσθέτουμε την ακμή (v,w) με το ελάχιστο d(s,v)+d(v,w), όπου vЄΤi, αλλά δεν ισχύει wЄVi Επιλέγουμε από τις ακμές του κρασπέδου (fringe) – αυτό είναι το άπληστο βήμα Ο αλγόριθμος τερματίζει όταν επιλεγούν όλες οι κορυφές Here Dijkstra’s algorithm is shown in comparison to Prim’s algorithm to emphasize that the idea is pretty much the same, but to also highlight the differences. Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Κεφάλαιο 9ο

Παράδειγμα Tree vertices Remaining vertices b 4 e 3 7 6 2 5 c Παράδειγμα 4 d d Tree vertices Remaining vertices a(-,0) b(a,3) c(-,∞) d(a,7) e(-,∞) a b d 4 c e 3 7 6 2 5 4 b(a,3) c(b,3+4) d(b,3+2) e(-,∞) b c 3 6 2 5 a d e 7 4 d(b,5) c(b,7) e(d,5+4) 4 b c 3 6 2 5 a d 7 e 4 4 c(b,7) e(d,9) b c 3 6 2 5 a d e 7 4 e(d,9)

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Κεφάλαιο 9ο Παράδειγμα: a e d c b 1 5 2 4 6 3 7 Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Κεφάλαιο 9ο

Κώδικας αλγορίθμου του Dijkstra Algorithm Dijkstra(G,s) Initialize(Q) //Q: priority queue for every vertex v Є V do dv∞; pvnull; //p: προτελευταία κορυφή στο μονοπάτι προς v Insert(Q,v, dv) ds0; Decrease(Q,s,ds); VT0 //ενημέρωση αφετηρίας for i0 to |V|-1 do u*DeleteMin(Q); VT  VT∪{u*} for every vertex u in V-VT that is adjacent to u* do if du*+w(u*,u)<du dudu+w(u*,u); puu*; Decrease(Q,u,du) Αποτελεσματικότητα; Παρόμοια με αυτή του Prim Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Κεφάλαιο 9ο

Πρόβλημα Κωδικοποίησης Κωδικές Λέξεις: ακολουθία ορισμένων bits για κάθε χαρακτήρα του αλφαβήτου Δύο τύποι κωδικοποίησης: Σταθερού μήκους (fixed-length encoding) (π.χ., ASCII) Μεταβλητού μήκους (variable-length encoding) (π.χ., κώδικας Morse) Prefix-free codes -Κώδικες προθέματος (κανονικά πρέπει να λέγονται κώδικες άνευ προθέματος): καμία κωδική λέξη δεν είναι πρόθεμα μιας άλλης Πρόβλημα: Αν είναι γνωστές οι συχνότητες της εμφάνισης των χαρακτήρων, ποιος είναι ο βέλτιστος δυαδικός κώδικας προθέματος; Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Κεφάλαιο 9ο

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Κεφάλαιο 9ο Κώδικας Huffman Κάθε δυαδικό δένδρο με ετικέτες στις ακμές με ) και 1 δίνει ένα κώδικα προθέματος για τους χαρακτήρες στα φύλλα. Ένα βέλτιστο δυαδικό δένδρο που ελαχιστοποιεί το σταθμισμένο μήκος μίας κωδικής λέξης παράγεται από τον αλγόριθμο Huffman. Αλγόριθμος Huffman Αρχικοποίησε κάθε χαρακτήρα ως δένδρα μίας κορυφής Η ρίζα κάθε δένδρου έχει αποθηκευμένη τη συχνότητα του χαρακτήρα (βάρος δένδρου) Επανέλαβε n-1 φορές: Σύνδεσε τα δύο δένδρα με το μικρότερο βάρος σε ένα δένδρο (ως αριστερό και δεξί υποδένδρο αντίστοιχα). Το νέο βάρος είναι το άθροισμα των βαρών των δύο αρχικών δένδρων. Βάλε ετικέτες στις ακμές για τα αριστερά και τα δεφιά υποδένδρα 0 και 1 αντίστοιχα. Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Κεφάλαιο 9ο

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Κεφάλαιο 9ο Παράδειγμα Χαρακτήρας A B C D _ Συχνότητα 0.35 0.1 0.2 0.2 0.15 Κωδ. λέξεις 11 100 00 01 101 Μέσο πλήθος bits/χαρακτήρα: 2.25 Κωδ/ση σταθερού μήκους: 3 Λόγος συμπίεσης: (3-2.25)/3*100% = 25% Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Κεφάλαιο 9ο