Δρομολόγηση Και Πολύχρωματισμός. Γραφημάτων ΚΑΡΑΓΕΩΡΓΟΣ ΤΙΜΟΘΕΟΣ Α.Μ 1026

Σχετικά έγγραφα
ΥΛΟΠΟΙΗΣΗ ΑΛΓΟΡΙΘΜΩΝ ΓΙΑ ΔΡΟΜΟΛΟΓΗΣΗ ΚΑΙ ΠΟΛΥ-ΧΡΩΜΑΤΙΣΜΟ ΜΟΝΟΠΑΤΙΩΝ ΣΕ ΓΡΑΦΗΜΑΤΑ

Edge-coloring σε διμερή πολυγραφήματα

Τομές Γραφήματος. Γράφημα (μη κατευθυνόμενο) Συνάρτηση βάρους ακμών. Τομή : Διαμέριση του συνόλου των κόμβων σε δύο μη κενά σύνολα

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

Θεωρία Γραφημάτων 2η Διάλεξη

Θεωρία Γραφημάτων 10η Διάλεξη

Θεωρία Γραφημάτων 2η Διάλεξη

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

Θεωρία Γραφημάτων 6η Διάλεξη

3η Σειρά Γραπτών Ασκήσεων

Διμερή γραφήματα και ταιριάσματα

Φροντιστήριο 11 Λύσεις

u v 4 w G 2 G 1 u v w x y z 4

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

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

Αλγόριθμοι και πολυπλοκότητα: 4 η σειρά ασκήσεων ΣΗΜΜΥ - Ε.Μ.Π.

d(v) = 3 S. q(g \ S) S

για NP-Δύσκολα Προβλήματα

OPTICAL WAVELENGTH ROUTING ON DIRECTED FIBER TREES

Σειρά Προβλημάτων 1 Λύσεις

Κατευθυνόµενα γραφήµατα. Στοιχεία Θεωρίας Γραφηµάτων (1) Πολυγραφήµατα (Multigraphs)

Πανεπιστήμιο Στερεάς Ελλάδας Τμήμα Πληροφορικής Εξάμηνο ΣΤ ΘΕΩΡΙΑ ΓΡΑΦΩΝ

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

Προσεγγιστικοί Αλγόριθμοι για NP- ύσκολα Προβλήματα

Αλγόριθμοι για ανάθεση συχνοτήτων και έλεγχο αποδοχής κλήσεων σε κυψελικά ασύρματα δίκτυα

Θεωρία Γραφημάτων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές

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

3η Σειρά Γραπτών Ασκήσεων

Θεωρία Γραφημάτων 9η Διάλεξη

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

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

Φροντιστήριο #8 Ασκήσεις σε Γράφους 16/5/2017

S A : N G (S) N G (S) + d S d + d = S

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

Προσεγγιστικοί Αλγόριθμοι για NP- ύσκολα Προβλήματα

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

Μη κατευθυνόµενα γραφήµατα. Στοιχεία Θεωρίας Γραφηµάτων (1) Υπογραφήµατα.

Θεωρία Γραφημάτων 8η Διάλεξη

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

ΑΣΚΗΣΗ 1 Για τις ερωτήσεις 1-4 θεωρήσατε τον ακόλουθο γράφο. Ποιές από τις παρακάτω προτάσεις αληθεύουν και ποιές όχι;

Μέγιστη ροή. Κατευθυνόμενο γράφημα. Συνάρτηση χωρητικότητας. αφετηρίακός κόμβος. τερματικός κόμβος. Ροή δικτύου. με τις ακόλουθες ιδιότητες

Μέγιστη ροή. Κατευθυνόμενο γράφημα. Συνάρτηση χωρητικότητας. αφετηρίακός κόμβος. τερματικός κόμβος. Ροή δικτύου. με τις ακόλουθες ιδιότητες

Θεωρία Γραφημάτων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές

Ταιριάσματα. Γράφημα. Ταίριασμα (matching) τέτοιο ώστε κάθε κορυφή να εμφανίζεται σε το πολύ μια ακμή του

Φροντιστήριο #9 Ασκήσεις σε Γράφους 18/5/2018

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

Κουτσιούμπας Αχιλλέας U. Adamy, C. Ambuehl, R. Anand, T. Erlebach

2 ) d i = 2e 28, i=1. a b c

... a b c d. b d a c

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Γραφήματα. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Κατευθυνόμενα γραφήματα. Μαθηματικά Πληροφορικής 6ο Μάθημα. Βρόχοι. Μη κατευθυνόμενα γραφήματα. Ορισμός

Επίπεδα Γραφήματα : Προβλήματα και Υπολογιστική Πολυπλοκότητα

Διάλεξη 7: X Y Σχήμα 7.2: Παράδειγμα για το Πόρισμα 7.2, όπου: 1 = {1, 2, 5}, 2 = {1, 2, 3}, 3 = {4}, 4 = {1, 3, 4}. Θ

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

Φροντιστήριο #8 Ασκήσεις σε Γράφους 24/5/2016

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

Τίτλος Μαθήματος: Θεωρία Γραφημάτων. Ενότητα: Εισαγωγή σε βασικές έννοιες. Διδάσκων: Λέκτορας Xάρης Παπαδόπουλος. Τμήμα: Μαθηματικών

4η Γραπτή Ασκηση Αλγόριθμοι και Πολυπλοκότητα CoReLab ΣΗΜΜΥ 3/2/2019 CoReLab (ΣΗΜΜΥ) 4η Γραπτή Ασκηση 3/2/ / 37

Μέγιστη Ροή Ελάχιστη Τομή

Βασικές Έννοιες Θεωρίας Γραφημάτων

q(g \ S ) = q(g \ S) S + d = S.

Βασικές Έννοιες Θεωρίας Γραφημάτων

Το Πρόβλημα της Πινακοθήκης (The Art Gallery Problem)

ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

Κατευθυνόμενα γραφήματα. Μαθηματικά Πληροφορικής 6ο Μάθημα. Βρόχοι. Μη κατευθυνόμενα γραφήματα. Ορισμός

Γέφυρες σε Δίκτυα. Μας δίνεται ένα δίκτυο (κατευθυνόμενο γράφημα) αφετηριακός κόμβος. Γέφυρα του (με αφετηρία τον ) :

ΠΛΗ 20, 4 η ΟΣΣ: Βασικές Έννοιες Θεωρίας Γραφημάτων

ΠΛΗ 20, 4 η ΟΣΣ: Βασικές Έννοιες Θεωρίας Γραφημάτων

Διατάξεις με επανάληψη: Με πόσους τρόπους μπορώ να διατάξω r από n αντικείμενα όταν επιτρέπονται επαναληπτικές εμφανίσεις των αντικειμένων; Στην αρχή

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

Πληροφορική 2. Αλγόριθμοι

Θεωρία Γραφημάτων 11η Διάλεξη

Διάλεξη 4: Θεωρία Γραφημάτων Γραφέας: Σ. Κ. Διδάσκων: Σταύρος Κολλιόπουλος συνεκτικά γραφήματα (συνέχεια) Πρόταση 4.1 Δύο μπλοκ ενός

Διάλεξη 4: Απόδειξη: Για την κατεύθυνση, παρατηρούμε ότι διαγράφοντας μια κορυφή δεν μπορούμε να διαχωρίσουμε τα u και v. Αποδεικνύουμε

Το Πρόβλημα της Πινακοθήκης (The Art Gallery Problem)

Άσκηση 3 (ανακοινώθηκε στις 14 Μαΐου 2018, προθεσμία παράδοσης: 8 Ιουνίου 2018, 12 τα μεσάνυχτα).

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

ΠΛΗ 20, 4 η ΟΣΣ: Βασικές Έννοιες Θεωρίας Γραφημάτων

Θεωρία Γραφημάτων: Ορολογία και Βασικές Έννοιες

Θεωρία Γραφημάτων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές

w S n lim (n 1)! = x(x + q)(x + q + q 2 ) (x + q + q q n 1 ),

ΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΠΟΛΥΠΛΟΚΟΤΗΤΑ Φεβρουάριος 2005 Σύνολο μονάδων: 91

Λύσεις 4ης Σειράς Ασκήσεων

Μη γράφετε στο πίσω μέρος της σελίδας

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

Αλγόριθμοι Προσέγγισης για NP-Δύσκολα Προβλήματα

Το πρόβλημα μονοδρόμησης (The One-Way Street Problem)

jτο πλήθος των ταξιδιών που κάνει η αεροσυνοδός µέχρι την j ηµέρα. Σχηµατίζω µία ακολουθία που αποτελείται από τα a.

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

Διαίρει και Βασίλευε. πρόβλημα μεγέθους Ν. διάσπαση. πρόβλημα μεγέθους k. πρόβλημα μεγέθους Ν-k

2. Να γράψετε έναν αριθμό που είναι μεγαλύτερος από το 3,456 και μικρότερος από το 3,457.

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

Μέγιστη Ροή Ελάχιστη Τομή


Αλγόριθμοι Ταξινόμησης Μέρος 4

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

Εισαγωγή στην Επιστήμη των Υπολογιστών

Chapter 9: NP-Complete Problems

Ασκήσεις μελέτης της 4 ης διάλεξης. ), για οποιοδήποτε μονοπάτι n 1

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές

Transcript:

Δρομολόγηση Και Πολύχρωματισμός Μονοπατιών Γραφημάτων ΚΑΡΑΓΕΩΡΓΟΣ ΤΙΜΟΘΕΟΣ Α.Μ 1026

Εισαγωγή. Το πρόβλημα με το οποίο θα ασχοληθούμε εδώ είναι γνωστό σαν: Δρομολόγηση και Πολύ-χρωματισμός Διαδρομών (Routing and Path Multi-Coloring Problem - RPMC): δοθέντος ενός μηκατευθυνόμενου γραφήματος G(E, V), μιας λίστας ζευγαριών κόμβων από το V και ενός αριθμού διαθέσιμων χρωμάτων w, καθορίστε μονοπάτια που συνδέουν τους κόμβους των δοσμένων ζευγαριών και χρωμάτων (ανάμεσα στο 1 και στο w), έτσι ώστε το κόστος: max μ(e,c) eεe 1 c=w να είναι ελάχιστο, όπου μ(e,c) είναι η πολλαπλότητα του χρώματος c στην ακμή e (δηλαδή ο αριθμός των μονοπατιών που χρησιμοποιούν την ακμή e και χρωματίστηκαν με το χρώμα c).

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

Πολύ-χρωματισμός σε Αλυσίδες.

Αλυσίδες Βήμα 1 ο : Για να κάνουμε όλα τα βάρη των ακμών ακέραια πολλαπλάσια του w προσθέτουμε μερικά μονοπάτια μήκους ένα (όπου χρειάζεται). Ο αριθμός των παραπάνω μονοπατιών για μια ακμή e είναι w - ( L(e,P) mod w ). Το βήμα αυτό υλοποιείται σε χρόνο Ο(m+n*w).

Υλοποίηση. Για τα μονοπάτια χρησιμοποιούμε την εξής δομή: struct path{ int begin; int end; int color; }P[MAX]; Για να βρω σε ποια μονοπάτια θα προσθέσω ακμές πρέπει να βρω το βάρος των ακμών στην αλυσίδα: Load[i] = Load[i-1] + beg[i] - end[i];

Αλυσίδες Συνέχεια Βήμα 2 ο : Όσο υπάρχει μονοπάτι p 1 που τελειώνει και μονοπάτι p 2 που αρχίζει στον ίδιο κόμβο, τα ενώνουμε για να κατασκευάσουμε ένα μεγαλύτερο μονοπάτι. Συμβολίζουμε με Ρ τη λίστα με τα μονοπάτια που προκύπτουν. Το βήμα αυτό υλοποιείται σε χρόνο Ο(m+n*w).

Υλοποίηση. Χρειαζόμαστε δύο βοηθητικούς πίνακες λιστών. Στη μία λίστα βάζουμε τα μονοπάτια που αρχίζουν σε ένα κόμβο και στην άλλη αυτά που τελειώνουν, πράγμα που το κάνουμε για όλους τους κόμβους. Χρησιμοποιώ την δομή: typedef struct liststr{ int pathid; struct liststr *next; }*list; list B[MAX], E[MAX];

Υλοποίηση Συνέχεια. Επίσης χρειαζόμαστε ένα βοηθητικό πίνακα LongPath[] ο οποίος θα αντιστοιχίζει κάθε μονοπάτι του Ρ με το αντίστοιχο μεγάλο μονοπάτι. Διατρέχω τις λίστες και, αν δεν τελειώνει κάποιο μονοπάτι στον κόμβο που είμαστε, δίνουμε μια τιμή στον LongPath[] κατά αύξουσα σειρά. Αν όμως τελειώνει, τότε η τιμή που θα πάρει ο πίνακας είναι η τιμή που έχει ο LongPath[] για το μονοπάτι που τελειώνει.

Αλυσίδες Συνέχεια Βήμα 3 ο : Για κάθε κόμβο υ που είναι τελικό σημείο μονοπατιού, το Ρ περιέχει είτε μονοπάτια που αρχίζουν στον υ είτε μονοπάτια που τελειώνουν στον υ. Και στις δύο περιπτώσεις ο αριθμός αυτών των μονοπατιών είναι ακέραια πολλαπλάσια του w. Τα χωρίζουμε σε συλλογές από w στοιχεία με αυθαίρετο τρόπο. Συμβολίζουμε το σύνολο με όλες τις συλλογές μονοπατιών που αρχίζουν (τελειώνουν) με Β (Ε αντίστοιχα). Το βήμα αυτό υλοποιείται σε χρόνο Ο(m +n).

Υλοποίηση. Χρησιμοποιώ τους προηγούμενους βοηθητικούς πίνακες λιστών στα καινούρια «μεγάλα» μονοπάτια. Για κάθε στοιχείο του πίνακα Β (Ε) ελέγχω τη λίστα και, αν η λίστα έχει w στοιχεία, τότε αυτά ανήκουν σε μία συλλογή, αν έχει k*w, τότε έχουμε κ συλλογές. Τα αποτελέσματα για τα μονοπάτια που αρχίζουν (τελειώνουν) τα βάζω στον πίνακα GroupB (GroupE).

Αλυσίδες Συνέχεια Βήμα 4 ο : Κατασκευάζουμε ένα διμερές γράφημα Η = (Β,Ε,Α). Κάθε μονοπάτι στο Ρ ανήκει σε ακριβώς δύο συλλογές, σε μια που αρχίζει και σε μια που τελειώνει. Για κάθε μονοπάτι στο Ρ υπάρχει μία ακμή στο Α που ενώνει την συλλογή που αρχίζει και την συλλογή που τελειώνει. Άρα, το Η είναι ένα w-κανονικό διμερές γράφημα. Το βήμα αυτό υλοποιείται σε χρόνο Ο(m +n).

Υλοποίηση. Για το διμερές γράφημα χρησιμοποιούμε έναν πίνακα από διπλά συνδεδεμένες λίστες. Χρησιμοποιούμε την εξής δομή: typedef struct setstr{/*struct for the bipartite graph.*/ int JoinNode; int EdgeLoad; int PositionNumber; int B_Color[MAX]; struct setstr *VtoV; struct setstr *VtoH1; struct setstr *VtoH2; struct setstr *next; struct setstr *prev; }*set;

Υλοποίηση Συνέχεια. Πριν κάνουμε την εισαγωγή, πρέπει να ταξινομήσουμε τα GroupB και GroupE, πρώτα ως προς GroupE και μετά ως προς GroupΒ. Αυτό το κάνουμε για να έχουμε σε γειτονικές θέσεις τους ίδιους αριθμούς στο GroupE. Η ταξινόμηση γίνεται με χρήση του Counting sort σε γραμμικό χρόνο.

Υλοποίηση Συνέχεια. Αφού βάλουμε τα στοιχεία στον πίνακα λιστών, ο οποίος αποτελεί το σύνολο V1 διμερούς γραφήματος, πρέπει να φτιάξουμε και το σύνολο V2. Αυτό το σύνολο είναι μια επανάληψη πληροφορίας, αλλά μας είναι χρήσιμο παρακάτω. Για κάθε κόμβο του V1 έχουμε και έναν δείκτη που δείχνει στον αντίστοιχο κόμβο του V2.

Αλυσίδες Συνέχεια Βήμα 5 ο : Χρωματίζουμε τις ακμές του Η με w χρώματα χρησιμοποιώντας έναν κατάλληλο αλγόριθμο. Σε κάθε μονοπάτι του Ρ αναθέτουμε το χρώμα της αντίστοιχης ακμής του Η. Με χρήση του αλγορίθμου των Cole και Hopcroft το βήμα απαιτεί χρόνο Ο(ΕlogV).

Αλυσίδες Συνέχεια Βήμα 6 ο : Σε κάθε μονοπάτι του Ρ ανατίθεται το χρώμα του αντίστοιχου (μεγάλου) μονοπατιού του Ρ. Το βήμα αυτό υλοποιείται σε χρόνο Ο(m+n*w).

Χρωματισμός ακμών σε διμερή γραφήματα.

Χρωματισμός. Αν ο μέγιστος βαθμός του γραφήματος είναι περιττός, βρίσκουμε ένα ταίριασμα που καλύπτει τους κόμβους με το μέγιστο βαθμό, χρωματίζουμε με ένα χρώμα τις ακμές του ταιριάσματος και στη συνέχεια να σβήνουμε τις ακμές αυτές από το γράφημα. Μειώνουμε τον αριθμό των χρωμάτων. Στη συνέχεια κάνουμε ένα Euler Split. Κάνουμε το ίδιο για τα γραφήματα που παίρνουμε από το Euler Split κάθε φορά πρώτα στο μικρότερο γράφημα. Ο αλγόριθμος απαιτεί Ο(ΕlogV) χρόνο.

Ταίριασμα. Ο Αλγόριθμος τρέχει σε Ο(ΕLogV). Για να βρούμε ένα ταίριασμα που καλύπτει τους κόμβους με μέγιστο βαθμό δουλεύουμε ως εξής: Αν ο μέγιστος βαθμός του γραφήματος είναι ένα τότε το γράφημα είναι το ζητούμενο ταίριασμα. Αλλιώς πραγματοποιείται ένα Partition του γραφήματος. Οι μεγιστοβάθμιοι κόμβοι καθενός από τα δυο γραφήματα που προκύπτουν περιέχουν τους μεγιστοβάθμιους του αρχικού) Στη συνέχεια ο αλγόριθμος εκτελείται πάλι για το γράφημα με τις λιγότερες ακμές.

Partition Αν ο μέγιστος Βαθμός του γραφήματος είναι άρτιος τότε κάνουμε ένα Euler split και το αποτέλεσμα είναι το ζητούμενο Partition.

Partition Συνέχεια. Αν όμως ο μέγιστος βαθμός είναι περιττός τότε: κρατάμε ένα σύνολο Μ με τους μεγιστοβάθμιους κόμβους. Κάνουμε ένα Euler Split και παίρνουμε δύο νέα γραφήματα. Τώρα κάποιο από αυτά τουλάχιστο τους μισούς μεγιστοβάθμιους του Μ που έχουν περιττό βαθμό. Αυτούς τους κόμβους τους βάζουμε στο σύνολο Μ1 και στο σύνολο Μ2 βάζουμε το Μ-Μ1. Τώρα, μέχρι το Μ2 να γίνει κενό εμείς πρέπει να κάνουμε Euler split στο γράφημα με το μη περιττό μεγιστοβάθμιο κόμβο. Μετά από το Euler split χρησιμοποιούμε την συνάρτηση Union για να ενώσουμε τα προηγούμενα γραφήματα με τα καινούρια.

Euler Split Euler Split ενός διμερούς γραφήματος είναι ένα ζευγάρι διμερών γραφημάτων των οποίων οι ακμές προέρχονται από μία διαμέριση των ακμών του αρχικού γραφήματος σε ανοιχτά και κλειστά μονοπάτια, έτσι ώστε ο κάθε κόμβος με περιττό βαθμό είναι στο τέλος ακριβώς ενός ανοιχτού μονοπατιού και κάθε ζυγός δεν είναι στο τέλος κανενός ανοιχτού μονοπατιού. Εμείς κατασκευάσαμε έναν αλγόριθμο για πολυγραφήματα ο οποίος απαιτεί χρόνο Ο(Ε).

Υλοποίηση. Κάνουμε αντιγραφή του V1 σε δύο πίνακες λιστών τους Η1, Η2. Βάζοντας πολλαπλότητα 0 σε κάθε κόμβο. Στην δομή που εξετάσαμε προηγουμένως υπάρχουν ακόμη δύο δείκτες, οι VtoΗ1 και VtoΗ2. Κάθε κόμβος του V1 πρέπει να συνδεθεί με τον αντίστοιχο κόμβο στα Η1 και Η2. Με αυτό τον τρόπο όταν βρίσκω την κατάλληλη πολλαπλότητα που πρέπει να μπει σε κάθε κόμβο πηγαίνω κατευθείαν και βάζω την αντίστοιχη πολλαπλότητα. Όταν τελειώσει το Euler Split πρέπει να ελέγξω αν στα δύο γραφήματα που φτιάξαμε υπάρχουν κόμβοι με πολλαπλότητα 0 αν ναι πρέπει να τους διαγράψουμε.

Υλοποίηση Συνέχεια. Αρχίζουμε από έναν κόμβο με περιττό βαθμό: Αν η ακμή που θα διασχίσουμε έχει πολλαπλότητα 2κ+1, έστω από τη μεριά του V1 βάζω στο Η1 πλευρά πολλαπλότητας κ+1 και στο Η2 πλευρά πολλαπλότητας κ και αλλάζω μεριά, δηλαδή από το V1 πάω στο V2. Αν η ακμή που θα διασχίσουμε έχει πολλαπλότητα 2κ, τότε ενεργούμε όπως στην παραπάνω περίπτωση, αλλά δεν αλλάζουμε μεριά και συνεχίζουμε από το V1. Και στις δύο περιπτώσεις διαγράφουμε την ακμή και την συμμετρική της σε Ο(1). Στη συνέχεια ψάχνουμε για άλλον κόμβο με περιττό βαθμό και ακολουθούμε τα παραπάνω βήματα. Αν δεν υπάρχει κόμβος με περιττό βαθμό, τότε επιλέγουμε έναν κόμβο με άρτιο βαθμό.

Δεύτερος αλγόριθμος ταιριάσματος. Η ιδέα του αλγορίθμου είναι να σβήσουμε ορισμένες ακμές από το γράφημα και να αυξήσουμε την πολλαπλότητα σε άλλες κρατώντας όμως σε όλους τους κόμβους τον ίδιο βαθμό που είχαν πριν. Αυτό το πετυχαίνουμε βρίσκοντας κύκλους στο αρχικό γράφημα. Για να βρούμε κύκλους κάνουμε μια DFS διέλευση. Όταν βρούμε έναν κύκλο αυξάνουμε και μειώνουμε εναλλάξ κατά την ίδια ποσότητα τις πολλαπλότητες των ακμών του κύκλου. Η DFS διέλευση συνεχίζεται από την κορυφή του κύκλου. Αφού τελειώσουμε στη συνέχεια εφαρμόζουμε τον πρώτο αλγόριθμο στο νέο γράφημα.

Δεύτερος αλγόριθμος ταιριάσματος. Συνέχεια. Όπως αλλάζουμε τις πολλαπλότητες στο γράφημα από την DFS διέλευση, μπορεί να δημιουργηθούν νέοι κύκλοι με ακμές μεγαλύτερης πολλαπλότητας οπότε πρέπει πάλι να κάνουμε DFS κοκ. Εμείς έχουμε γραφήματα με πολλαπλότητα μεγαλύτερη του ένα. Οπότε αναλύουμε την πολλαπλότητα σε άθροισμα δυνάμεων του δύο (κάθε δύναμη του δύο είναι ένα επίπεδο). Πρέπει να κάνουμε DFS για κάθε δύναμη του δύο που είναι μικρότερη ή ίση του μεγίστου βαθμού του γραφήματος.

Δεύτερος αλγόριθμος ταιριάσματος. Συνέχεια. Ο σκοπός που γίνεται η παραπάνω DFS διέλευση είναι ώστε το γράφημα που θα προκύψει να έχει λίγες ακμές με μεγάλη πολλαπλότητα. Έτσι ώστε όταν καλέσουμε μετά τον πρώτο αλγόριθμο για το ταίριασμα αυτό να γίνει πιο γρήγορα μιας και το Euler split που χρησιμοποιείται θα κατατάξει πιο γρήγορα τις ακμές. Ο χρόνος που απαιτεί ο αλγόριθμος είναι Ο(Ε+VlogV(logD) 2 ) που είναι πάντα τουλάχιστο τόσο καλό όσο το Ο(ΕlogV) πρώτου αλγορίθμου.

Δρομολόγηση και Πολύχρωματισμός σε Δακτυλίους.

Δακτύλιοι PMC. Ορίζουμε το clockwise span (μέτρημα με την φορά του ρολογιού) d(υ) του κόμβου υ να είναι η μέγιστη απόσταση (με κατεύθυνση σύμφωνα με τη φορά του ρολογιού) από τον υ προς τελευταίο κόμβο κάθε μονοπατιού στο Ρυ. Αν το Ρυ είναι κενό τότε d(υ) = 0. Πρώτα ο αλγόριθμος υπολογίζει το clockwise span για όλους τους κόμβους και μετονομάζει τους κόμβους έτσι ώστε ο νέος κόμβος 0 να έχει το ελάχιστο clockwise span. Αντί για d(0) γράφουμε d για συντομία. Μετά ο αλγόριθμος μετατρέπει το δοσμένο στιγμιότυπο δακτυλίου σε στιγμιότυπο αλυσίδας (G,P,w). To γράφημα αλυσίδα G περιέχει n+d+1 κόμβους αριθμημένους από το 0 έως το n+d.

Δακτύλιοι Συνέχεια Για κάθε μονοπάτι <i, j>ερ, αν i<j, τότε και το Ρ περιέχει το <i, j>, αλλιώς το Ρ περιέχει το <i,j+n> Η πολυπλοκότητα του αλγορίθμου είναι ίδια με αυτή του αλγορίθμου για αλυσίδες, μιας και ο υπολογισμός του clockwise span και οι μετασχηματισμοί μπορούν να επιτευχθούν σε χρόνο Ο(m+n).

Δακτλυλιοι RPMC Ο αλγόριθμος για RPMC κάνει ένα routing ελαχίστων μονοπατιών, δηλαδή επιλέγει το μικρότερο από δύο εναλλακτικά μονοπάτια. Αν και τα δύο είναι ίσα, τότε επιλέγουμε ένα τυχαία. Στη συνέχεια χρησιμοποιεί τον αλγόριθμο για PMC για να χρωματίσει το αποτέλεσμα των μικρότερων μονοπατιών. Η επιλογή των μικρότερων μονοπατιών απαιτεί Ο(m) χρόνο.

Πολύ-χρωματισμός σε Αστέρες

Αστέρες Βήμα 1 ο : Αναθέτουμε μια αυθαίρετη διεύθυνση σε κάθε μονοπάτι στο Ρ.

Αστέρες Συνέχεια Βήμα 2 ο : Για κάθε κόμβο υ: τα εξερχόμενα μονοπάτια out υ (σύμφωνα με την διεύθυνση που δόθηκε στο βήμα 1), διαιρούνται σε [out υ /w] συλλογές με το πολύ w στοιχεία με αυθαίρετο τρόπο. ομοίως, τα εισερχόμενα μονοπάτια in υ, χωρίζονται σε [in υ /w] συλλογές.

Αστέρες Συνέχεια Βήμα 3 ο : ένα διμερές γράφημα Η=(V out, V in, Α) κατασκευάζεται. Για κάθε μονοπάτι στο Ρ υπάρχει μία ακμή στο Α που συνδέει την συλλογή που αρχίζει και την συλλογή που τελειώνει. Άρα το Η είναι ένα διμερές γράφημα βαθμού το πολύ w.

Αστέρες Συνέχεια Βήμα 4 ο :Πετυχαίνεται χρωματισμός ακμών στο Η. Σε κάθε μονοπάτι ανατίθεται το αντίστοιχο χρώμα της ακμής στο Η.

Αστέρες Συνέχεια Όλα τα βήματα εκτός του 4ου απαιτούν Ο(m) χρόνο. Το 4ο βήμα όπως ήδη αναφέρθηκε με χρήση του αλγορίθμου των Cole και Hopcroft το βήμα απαιτεί χρόνο Ο(ΕlogV).